menu icon

仮想マシン(VM)

仮想化コンピューティング環境を構築するためのテクノロジーであり、クラウド・コンピューティング第1世代の基盤でもある、仮想マシン(VM)の概要を説明します。

仮想マシン(VM)とは

仮想マシンとは、物理コンピューターの仮想表現であり、エミュレーションです。仮想マシンはゲストと呼ばれることが多く、ゲストが実行される物理マシンはホストと呼ばれます。

仮想化(英語)では、単一の物理マシン上に、オペレーティング・システム(OS)とアプリケーションを独自に持つ複数の仮想マシンを作成することができます。VMは物理コンピューターと直接やり取りできません。その代わりに、VMとその基盤となる物理ハードウェアとの間の調整を行うために、ハイパーバイザー(英語)と呼ばれる軽量のソフトウェア層が必要です。ハイパーバイザーは、プロセッサー、メモリー、ストレージなどの物理コンピューティング・リソースを各VMに割り振ります。各VMを他のVMと分離して、相互に干渉しないようにします。

このテクノロジーは、仮想サーバー、仮想サーバー・インスタンス(VSI)、仮想プライベート・サーバー(VPS)などの呼称もありますが、この記事では単に仮想マシンと呼ぶことにします。

仮想化の仕組み

物理コンピューターまたはサーバー(ベアメタル・サーバーとも呼ばれます)上でハイパーバイザーを使用することにより、物理コンピューターは、オペレーティング・システムとアプリケーションをハードウェアから切り離すことができます。そして、物理コンピューター自体をいくつかの独立した「仮想マシン」に分けることができます。

新しい仮想マシンはそれぞれ、独自のオペレーティング・システムとアプリケーションを独立して実行することができるようになりますが、ベアメタル・サーバーの元のリソースを共有しています。ハイパーバイザーが管理するこのようなリソースには、メモリー、RAM、ストレージなどがあります。

以下の動画では、仮想化の基本を説明しています(5:20)。また、「仮想化の5つのメリット」(英語)の記事もご覧ください。

ハイパーバイザーは交通警官のように機能して、さまざまな新しい各仮想マシンに対して、ベアメタルのリソースの誘導や割り振りを行い、互いに妨害しないようにします。

ハイパーバイザーには、主に2つのタイプがあります。

タイプ1のハイパーバイザーは、物理ハードウェア(通常はサーバー)上で直接実行され、OSの代わりとなります。通常は、別のソフトウェア製品を使用して、ハイパーバイザー上にVMを作成して操作します。VMwareのvSphereのような一部の管理ツールでは、VMにインストールするゲストOSを選択できます。

1つのVMを他のVMのテンプレートとして使用し、それを複製して新しいVMを作成できます。必要に応じて、ソフトウェア・テスト、実動データベース、開発環境など、さまざまな目的のために複数のVMテンプレートを作成することができます。

タイプ2のハイパーバイザーは、ホストOS内でアプリケーションとして実行されます。通常、単一ユーザーのデスクトップやノートブックのプラットフォームで使用されます。タイプ2のハイパーバイザーでは、VMを手動で作成してから、そのVMにゲストOSをインストールします。ハイパーバイザーを使用して、物理リソースをVMに割り振り、使用できるプロセッサー・コアとメモリーの量を手動で設定できます。ハイパーバイザーの機能によっては、グラフィックス用の3Dアクセラレーションのようなオプションを設定することもできます。

ハイパーバイザーの概要全般については、「ハイパーバイザー: 完全ガイド」(英語)をご覧ください。

VMの利点とメリット

VMが従来の物理ハードウェアよりも優れたメリットを提供する領域がいくつかあります。

  • リソース使用率とROIの向上: 複数のVMが単一の物理コンピューター上で実行されるため、お客様は、別のOSの実行が必要になるたびに新しいサーバーを購入する必要はなく、既に所有しているハードウェアの一部を活用してより多くの利益を得られます。
  • スケール: クラウド・コンピューティングを使用すると、同じ仮想マシンの複数のコピーを簡単に実装して、負荷の増加にうまく対処することができます。
  • 移植性: VMは、必要に応じてネットワーク内の物理コンピューターの間で再配置できます。これにより、予備のコンピューティング能力を持つサーバーにワークロードを割り振ることができます。VMは、オンプレミス環境とクラウド環境の間でも移動できるので、データセンターとクラウド・サービス・プロバイダーの間でコンピューティング・リソースを共有するハイブリッドクラウドのシナリオで役立ちます。
  • 柔軟性: VMを作成するのは、物理サーバー上にOSをインストールするよりも迅速かつ簡単です。既にOSがインストールされているVMを複製できるからです。開発者やソフトウェア・テスト担当者は、新しいタスクが発生すると、それを処理するために新しい環境をオンデマンドで作成できます。
  • セキュリティー: VMは、ハードウェア上で直接実行されているオペレーティング・システムと比べて、いくつかの点でセキュリティーを向上させます。1台のVMは1つのファイルであるため、外部プログラムによるスキャンによって、悪意のあるソフトウェアを検出できます。任意の時点でVMの全体のスナップショットを作成しておくと、マルウェアに感染した場合でもその状態に復元することができ、実質的にVMをすぐに元に戻せます。VMは迅速かつ簡単に作成できるため、侵害されたVMを完全に削除して素早く再作成することも可能になり、マルウェア感染から速やかに復旧できます。

VMのユースケース

VMには、企業のIT管理者とユーザーの両方にとって、さまざまな使用方法があります。以下に、いくつかのオプションをご紹介します。

  • クラウド・コンピューティング: 過去10年以上にわたって、VMはクラウドにおけるコンピュートの基本的なユニットであり、さまざまなタイプのアプリケーションやワークロードの実行・拡張を可能にしてきました。
  • DevOpsのサポート: VMは、企業の開発者をサポートするための優れた方法です。開発者は、ソフトウェア開発やテスト・プロセスの設定を使用してVMテンプレートを構成できます。静的ソフトウェア・テストなどの特定のタスク(自動化された開発ワークフローでのステップなど)のためにVMを作成できます。これはすべて、DevOpsツールチェーン(英語)の合理化に役立ちます。
  • 新規オペレーティング・システムのテスト: VMを使用すると、基本のOSに影響を与えることなく、デスクトップ上で新しいオペレーティング・システムを試用できます。
  • マルウェアの調査: VMは、悪意のあるプログラムをテストするために新しいマシンを頻繁に必要とするマルウェアの研究者にとって便利です。
  • 非互換のソフトウェアの実行: ある1つのOSを使用する一方で、別のOSでのみ使用可能なプログラムを必要とする場合があります。好例の1つとして、音声認識ソフトウェアのDragonがあります。ベンダーのNuance社は、この製品のmacOSバージョンを廃止しました。しかし、VMware FusionやParallelsなど、デスクトップ仮想化機能を持つハイパーバイザーを実行すれば、VMでWindowsを実行して、Windowsバージョンのソフトウェアを使用することができます。
  • 安全なブラウズ: ブラウズに仮想マシンを使用すると、感染を心配することなくサイトを訪問することができます。ご使用のマシンのスナップショットを取得しておき、各ブラウズ・セッションの後でロールバックすることができます。これは、タイプ2のデスクトップ・ハイパーバイザーを使用して、ユーザー自身でセットアップできるものです。あるいは、管理者がサーバー上にある一時仮想デスクトップを提供することもできます。

VMのタイプ

このセクションでは、さまざまなタイプの仮想マシンについて説明します。

  • Windows仮想マシン
  • Android仮想マシン
  • Mac仮想マシン
  • iOS仮想マシン
  • Java仮想マシン
  • Python仮想マシン
  • Linux仮想マシン
  • VMware仮想マシン
  • Ubuntu仮想マシン

Windows仮想マシン

多くのハイパーバイザーは、Windows OSをゲストとして実行するVMをサポートします。Microsoft社のHyper-Vハイパーバイザーは、Windowsオペレーティング・システムの一部として提供されます。インストールされると、ハイパーバイザー自体と基本のWindows OSの両方を含む親パーティションが作成されて、それぞれがハードウェアへの特権アクセスを取得します。Windowsゲストを含むその他のオペレーティング・システムは、親パーティションを介してハードウェアと通信する子パーティションで実行されます。

Android仮想マシン

Google社のオープンソースであるAndroid OS(英語)は、モバイル・デバイスや、家庭用エンターテイメント・デバイスなどの接続されたホーム・デバイスで一般的なものです。Android OSは、これらのデバイスに共通するARMプロセッサー・アーキテクチャー上でのみ実行されますが、マニアやAndroidのゲーマー、またはソフトウェア開発者は、これをPC上で実行したいと思うことがあります。

これには問題があります。PCはまったく異なるx86プロセッサー・アーキテクチャー上で稼働し、ハードウェア仮想化ハイパーバイザーは、VMとCPUの間の命令を受け渡すだけであり、異なる命令セットを持つプロセッサー向けに変換を行うことはありません。この問題に対処するためにさまざまなプロジェクトがあります。

ShashlikやGenymotionなどの一部のプロジェクトでは、ソフトウェア内でARMアーキテクチャーを再作成するエミュレーターを使用します。1つの選択肢であるAndroid-x86プロジェクトでは、代わりにAndroidをx86アーキテクチャーに移植します。これを実行するには、VirtualBoxタイプ2ハイパーバイザーを使用して、Android-x86プログラムを仮想マシンとしてインストールする必要があります。別の選択肢であるAnboxは、ホストLinux OSのカーネル上でAndroidオペレーティング・システムを実行します。

Mac仮想マシン

Apple社はmacOS システムをAppleのハードウェア上でのみ実行することを許可しており、Apple以外のハードウェア上でVMとして、あるいはそのエンド・ユーザーの使用許諾契約の下で実行することを禁止しています。Macハードウェア上ではタイプ2のハイパーバイザーを使用して、macOSゲストのVMを作成することができます。

iOS仮想マシン

現在iOSをVMで実行することはできません。Apple社はiOSオペレーティング・システムを厳密に管理しており、iOSデバイス以外での実行を許可していません。

iOS VMに一番近いのは、Xcodeの統合開発環境と共に出荷されているiPhoneのシミュレーターです。これはソフトウェアでiPhoneのシステム全体をシミュレートしています。

Java仮想マシン

Javaプラットフォームは、Javaソフトウェア開発言語で記述されたプログラムの実行環境です。Javaでは「一度書けば、どこでも実行できる」機能が約束されていました。これは、Javaプラットフォームを実行するどのハードウェア上でも、Javaプログラムを実行できることを意味していました。この実現のために、JavaプラットフォームにはJava仮想マシン(JVM)が組み込まれています。

Javaプログラムには、JVM用の命令であるバイトコードが含まれています。JVMはこのバイトコードをマシン・コードにコンパイルします。これは、ホスト・コンピューターで使用される最も低水準の言語です。1つのコンピューター・プラットフォームのJavaプラットフォーム内のJVMは、プロセッサーが要求するマシン・コードに基づいて、別のプラットフォームのJVMに対して異なるマシン・コード命令セットを作成します。

そのため、JVMはOS全体を実行せず、他のVMと同じようにはハイパーバイザーを使用しません。代わりに、アプリケーション・レベルのソフトウェア・プログラムを特定のハードウェア上で実行するように変換します。

Javaの詳細については、「Java: 完全ガイド」(英語)をご覧ください。

Python仮想マシン

JVMと同様に、Python VMはハイパーバイザー上で実行されず、ゲストOSを含んでいません。これはPythonプログラミング言語で書かれたプログラムを、さまざまなCPUで実行できるようにするツールです。

Javaと同様に、Pythonはそのプログラムをバイトコードと呼ばれる中間形式に変換してからファイルに格納して、実行の準備をします。プログラムの実行時に、Python VMは高速実行のためにバイトコードをマシン・コードに変換します。

Linux仮想マシン

Linuxは、多くのVMで使用される一般的なゲストOSです。これはVMを実行するために使用される一般的なホストOSでもあります。また、カーネル・ベースの仮想マシン(KVM)と呼ばれる独自のハイパーバイザーもあります。主流のLinuxカーネルには、2007年以来KVMが含まれています。これはオープンソース・プロジェクトですが、KVMを開発した元の会社は現在Red Hat社が所有しています。

VMware仮想マシン

VMware社は初期の仮想化ソフトウェア・ベンダーであり、現在はタイプ1とタイプ2のハイパーバイザーとVMソフトウェアの両方を企業のお客様に提供する、人気のあるプロバイダーとなっています。

VMware: 完全ガイド」(英語)には、VMwareのすべてについての包括的な概要が記載されています。

Ubuntu仮想マシン

Ubuntuは、Canonical社が製作したLinuxディストリビューションです。デスクトップ版とサーバー版があり、どちらもVMとしてインストールできます。Ubuntuは、Microsoft Hyper-VにゲストOSとして実装できます。これにより、Hyper-Vの拡張セッション・モードでうまく機能するUbuntuデスクトップの最適化されたバージョンが提供され、WindowsホストとUbuntu VMの間の緊密な統合が実現されます。この統合には、クリップボード統合、動的デスクトップのサイズ変更、共有フォルダー、およびホストとゲスト・デスクトップの間でのマウスの移動に対するサポートが含まれています。

マルチテナントとシングルテナント

クラウド・コンピューティングにおいて、仮想マシンは通常、シングルテナントとマルチテナントの形態で提供されます。

パブリック、つまりマルチテナントの仮想マシンは、複数のユーザーが共通の物理インフラストラクチャーを共有する仮想マシンです。これは、仮想マシンをプロビジョニングするための最も費用対効果の高い、拡張が容易なアプローチです。しかし、厳密なセキュリティーまたはコンプライアンスの要件を持つ組織が望む、分離機能の特性が足りません。

シングルテナント仮想マシンの2つのモデルは、専用ホストと専用インスタンスです。

専用ホストは、物理マシン全体をレンタルし、そのマシン、そのハードウェア、およびそのマシンにインストールされているすべてのソフトウェアに対する持続的なアクセスと制御を維持するものです。このモデルは、ハードウェアの柔軟性と透明性、ワークロード制御と配置を最大限提供します。また、特定の個人所有のライセンス・ソフトウェアにもいくつかの利点を提供します。

専用インスタンスは、(専用ホストと同じ)シングルテナントの分離機能と、ワークロード配置に対する制御を提供しますが、特定の物理マシンとは結合していません。例えば、専用インスタンスは再起動されると、新しい物理マシンで起動されることもあります。個々のアカウント専用のマシンではありますが、新しいマシン、つまり物理的に異なる場所に配置される可能性があります。

仮想マシンの料金体系モデル

クラウド内の仮想マシンで最も一般的な料金体系モデルは、従量制課金(時間単位または秒単位)、一時/スポット・インスタンス、予約済みインスタンス、専用ホストです。

  • 従量制課金: 従量制課金モデルでは、仮想マシンに対する先行コストがなく、ユーザーは単に使用した分を支払うだけです。通常、プロバイダーとインスタンス・タイプに応じて、時間または秒単位で請求されます。
  • 一時/スポット・インスタンス: VMの最低コスト・モデルである一時/スポット・インスタンスは、プロバイダーの余剰容量を活用しますが、プロバイダーによってインスタンスが回収される可能性が常にあります。これらは通常、常時オンにする必要がないアプリケーションや、他のモデルでは法外に高いコストがかかるアプリケーションに便利です。
  • 予約済みインスタンス: 従量制課金モデルとは異なり、予約済みのインスタンスは、通常は1年から3年の間の明示的な期間のコミットメントを伴いますが、大幅な割引も組み合わされます。
  • 専用ホスト: 専用ホストの場合、ユーザーは通常、すべての物理サーバーのコストを負い、プロバイダーが専用サーバーに提供する増加量の単位(通常は時間単位または月単位)で請求されます。

仮想マシンとベアメタル・サーバー

物理マシン(ベアメタル・サーバーとも呼ばれる)と比較した上で仮想マシンを選ぶには、競合する機能よりも、何がいつ必要かを把握することが重要です。

ベアメタル・サーバーでは、未加工のハードウェア、電源、独立性が提供されます。ベアメタル・サーバーは、ハイパーバイザー・サイクル(仮想化ソフトウェア)がまったくないシングルテナントの物理サーバーであり、完全に単一のお客様に専用のものです。

データ集約型のアプリケーションや法規制遵守要求など、パフォーマンスと隔離の優先度が高いワークロードには、一般にベアメタル・サーバーが最も適しています(特に長期間にわたり実装される場合)。

e-コマース、ERP、CRM、SCM、および金融サービスのアプリケーションは、ベアメタル・サーバーに理想的なワークロードの一部にすぎません。

ベアメタル・ハードウェア上にハイパーバイザーを配置して仮想マシンを作るのはどんな場合でしょうか? ワークロードが最大限の柔軟性と拡張性を要求する場合です。

仮想マシンでは、容易にサーバーの容量を上げて、使用効率を高めることができます。1つの仮想マシンから別の仮想マシンにデータを移動したり、データ・セットをサイズ変更したり、動的ワークロードを分割するのに理想的です。

仮想マシンとコンテナ

コンテナ(英語)を理解する最も簡単な方法は、従来の仮想マシン(VM)とどのように異なるかを理解することです。従来の仮想化(英語)では、オンプレミスでもクラウドでも、ハードウェアを仮想化するためにハイパーバイザー(英語)が活用されます。このため各VMには、ゲストOS、OSの実行に必要なハードウェアの仮想コピー、アプリケーションとそれに関連するライブラリーや依存関係が含まれます。

基盤となるハードウェアを仮想化する代わりに、コンテナはオペレーティング・システム(通常はLinux)を仮想化するので、個々のコンテナにはアプリケーションとそのライブラリーおよび依存関係のみ が含まれます。ゲストOSが存在しないことが、コンテナが非常に軽量であり、高速で移植性が高い理由です。

コンテナと、それらを管理するオーケストレーション・エンジンであるKubernetesは、最新のクラウドネイティブ・アーキテクチャーとマイクロサービス・アーキテクチャーに適しています。コンテナは通常ステートレス・サービスと関連付けられますが、ステートフル・サービスにも使用することができます。

コンテナは、ラップトップ、クラウド、従来型のオンプレミスITにわたって一貫性のある方法で実行できるため、ハイブリッドクラウドのシナリオにおいても一般的なものになりつつあります。

ブログ「コンテナとVM: その違いとは」(英語)で詳しく説明されています。

以下の動画では、Sai Vennamがコンテナ化の基礎と、VMの使用との比較について、詳しく説明します(8:09)。

仮想マシンのプロバイダーを選択する方法

仮想マシンとクラウド・プロバイダーの選択は、何を必要としているかを把握していれば難しくはありません。仮想マシンがワークロードのニーズとビジネス予算に適合する必要があるのは当然のことですが、他の要因もユーザーと仮想化環境との間で重要な役割を果たします。以下に、仮想マシンのサービス・プロバイダーを選択する際に考慮すべき10項目を示します。

  • 信頼できるサポート - 電話、Eメール、チャットによる24時間365日の顧客サポートがあることを確認します。これらのサポートがなければ適切なサービス・プロバイダーとは言えません。ITの重大な状況に際してサポート担当者とやり取りできる体制が整っていることは重要です。また、どのクラウド・プロバイダーがオンサイト・サポートにより多くのサービスを提供しているかに注意することも重要です。
  • マネージド・オプション - クラウド・プロバイダーはマネージドと非マネージドの両方のソリューションを提供していますか? お客様が仮想化テクノロジーに精通していない場合は、セットアップ、保守、継続的なパフォーマンス・モニターに責任を負うプロバイダーを検討してください。
  • ソフトウェア統合 - 仮想マシンの環境は他のコンポーネントと適切に連携していますか? オペレーティング・システム、サード・パーティー・ソフトウェア、オープンソース・テクノロジー、アプリケーションは、お客様がビジネス全体にわたってより多くのソリューションを提供するのに役立ちます。業界で最も使用されているソフトウェア・サプライヤーへのサポートと強固なパートナーシップの両方を備えた仮想マシン・プロバイダーが理想的でしょう。注:ベンダーの囲い込みは回避しましょう。
  • 高品質のネットワークとインフラストラクチャー - 新しい仮想マシンが実行されるインフラストラクチャーは、どの程度新しいものですか? これには、信頼できるベアメタル・サーバー、最新のデータセンター、ネットワーク・バックボーンが含まれます。クラウド・プロバイダーは、最先端のハードウェアと高速ネットワーキング・テクノロジーを契約の一部として提供できなければなりません。
  • ロケーションの近接性 - データがユーザーの近くにあるほど、レイテンシー、セキュリティー、タイムリーなサービス提供において、問題が起きる可能性は低くなります。分散データセンターとPOPロケーションの優れたグローバル・ネットワークは、最も必要な時に最も必要な場所にデータがあるようにするために重要です。
  • バックアップとリカバリー - 予期しない事態に直面しても仮想マシンを稼働させ続けるために、クラウド・プロバイダーはどんな計画を持っていますか? そのプロバイダーは仮想化環境に追加のバックアップや冗長性オプションを提供しますか? 連続稼働は、慎重に検討する必要がある要件です。
  • 拡張容易性 - 仮想マシンのスピンアップ、スピンダウン、予約、一時停止、更新をどのぐらい迅速かつ簡単に行えますか? 仮想マシンの拡張性について、最も期待されるキーワードは「オンデマンド」です。
  • 多様なCPU構成 - 構成が多いほど、適合性が高まります。あらゆる仮想マシンの構成が、あらゆる使用時期のあらゆるワークロードに適合するわけではありません。シングルテナントとマルチテナントの両方の要件に対応する、多様な構成パッケージを提供する仮想マシン・プロバイダーを探すようにしましょう。
  • セキュリティー層 - セキュリティー層について、プロバイダーには子細に何度でも問い合わせましょう。ビジネス・データは、特に機密性の高いお客様情報を扱う場合に、最も高価な通貨だと言えます。プライベート・ネットワーク回線、連邦政府データセンターのオプション、標準装備の暗号化機能、規制コンプライアンス標準への適合は、最も価値ある資産を保護するために不可欠です。
  • シームレスな移行のサポート - ITの優先順位が高まる一方であることは、誰もが認識しています。仮想マシン・プロバイダーは、ハイブリッド環境、オンプレミス環境、オフプレミス環境の間でのお客様のリフト・アンド・シフトを支援できる必要があります。完全なデータの取り込み、ネットワーク経由/アプリケーション主導の移行オプションについて検討しましょう。

仮想マシンとIBM Cloud

IBM Cloudは、さまざまな技術と料金体系のオプションに基づいて、お客様独自のVMを構成して実行する機会を提供します。必要なコンピューティング能力、メモリー、ローカル・ストレージ、GPU機能に基づいて、VMの技術プロファイルを選択して、お客様固有のワークロードに合わせてシステムを調整することができます。IBM Cloud for VMwareソリューションを使用して、VMware VMを管理することもできます。

セキュリティー要件とコンプライアンス要件に適合するように、パブリック・ノードまたはプライベート・ノードから選択できます。プライベートのシングルテナント・サービスは、世界中の19カ国の60を超えるIBMデータセンターから、お客様が選択した専用ホスト上に置くことができます。

お客様の料金体系のニーズに合わせて、用意された実装オプションの中から選択してください。事前に設定された時間を予約するパブリックVMインスタンスは、予約しないシステムの場合よりも低コストです。あるいは、一時的なワークロードを処理するために、スポットの市場の料金体系に基づくVMを選択することもできます。

また、IBM Cloudでは、お客様のワークロード要件に合わせて、仮想サーバーとベアメタル・リソースをミックス・アンド・マッチすることもできます。

さらに詳細を見るには、IBM Cloudのページにアクセスして、IBMidを登録してください。