仮想マシン(VM)とは
仮想マシンとは、物理コンピューターの仮想表現であり、クラウド・コンピューティングの第1世代のコンピュート・ユニットです。
黒と青の背景画像
仮想マシン(VM)とは

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

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

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

仮想化の仕組み

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

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

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

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

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

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

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

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

VMのメリット

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

  • リソース使用率とROIの向上:複数のVMが単一の物理コンピューター上で実行されるため、お客様は、別のOSの実行が必要になるたびに新しいサーバーを購入する必要はなく、既に所有しているハードウェアの一部を活用してより多くの利益を得られます。 

  • スケールクラウド・コンピューティング(英語)を使用すると、同じ仮想マシンの複数のコピーを簡単に実装して、負荷の増加にうまく対処することができます。  

  • 移植性:VMは、必要に応じてネットワーク内の物理コンピューターの間で再配置できます。  これにより、予備のコンピューティング能力を持つサーバーにワークロードを割り振ることができます。 VMは、オンプレミス環境とクラウド環境の間でも移動できるので、データセンターとクラウド・サービス・プロバイダーの間でコンピューティング・リソースを共有するハイブリッドクラウドのシナリオで役立ちます。  

  • 柔軟性:VMの作成は、すでにOSがインストールされているVMを複製できるため、物理サーバー上にOSをインストールするよりも迅速かつ容易に行えます。  開発者やソフトウェア・テスト担当者は、新しいタスクが発生すると、それを処理するために新しい環境をオンデマンドで作成できます。

  • セキュリティー:VMでは、ハードウェア上で直接稼働しているオペレーティング・システムに比べ、いくつかの面でセキュリティーが向上しています。  1台のVMは1つのファイルであるため、外部プログラムによるスキャンによって、悪意のあるソフトウェアを検出できます。 任意の時点でVMの全体のスナップショットを作成しておくと、マルウェアに感染した場合でもその状態に復元することができ、実質的にVMをすぐに元に戻せます。 VMは迅速かつ簡単に作成できるため、侵害されたVMを完全に削除して素早く再作成することも可能になり、マルウェア感染から速やかに復旧できます。
VMのユースケース

VMには、企業のIT管理者とユーザーの両方にとって、さまざまな使用方法があります。

クラウド・コンピューティング:過去10年以上にわたって、VMはクラウドにおけるコンピュートの基本的なユニットであり、さまざまなタイプのアプリケーションやワークロードの実行・拡張を可能にしてきました。

 

DevOpsのサポート:VMは、企業の開発者をサポートするための優れた方法です。開発者は、ソフトウェア開発やテスト・プロセスの設定を使用してVMテンプレートを構成できます。  静的ソフトウェア・テストなどの特定のタスク(自動化された開発ワークフローでのステップなど)のためにVMを作成できます。 これはすべて、DevOpsツールチェーンの合理化に役立ちます。

 

新規オペレーティング・システムのテスト:VMを使用すると、基本のOSに影響を与えることなく、デスクトップ上で新しいオペレーティング・システムを試用できます。

 

マルウェアの調査:VMは、悪意のあるプログラムをテストするために新しいマシンを頻繁に必要とするマルウェアの研究者にとって便利です。

 

互換性のないソフトウェアの実行:通常使用しているOSではない、別のOSでのみ利用可能なプログラムが必要となることがあります。  好例の1つとして、音声認識ソフトウェアのDragonがあります。 ベンダーのNuance社は、この製品のmacOSバージョンを廃止しました。 しかし、VMware FusionやParallelsなど、デスクトップ仮想化機能を持つハイパーバイザーを実行すれば、VMでWindowsを実行して、Windowsバージョンのソフトウェアを使用することができます。

安全なブラウジング:仮想マシンをブラウジングに使用することで、ウイルス感染を心配することなくWebサイトを訪問することができます。  ご使用のマシンのスナップショットを取得しておき、各ブラウズ・セッションの後でロールバックすることができます。 これは、タイプ2のデスクトップ・ハイパーバイザーを使用して、ユーザー自身でセットアップできるものです。 あるいは、管理者がサーバー上にある一時仮想デスクトップを提供することもできます。

VMのタイプ

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の料金体系モデル

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

  • 従量制課金:従量制課金モデルでは、仮想マシンに対する先行コストがなく、ユーザーは単に使用した分を支払うだけです。通常、プロバイダーとインスタンス・タイプに応じて、時間または秒単位で請求されます。

  • 一時/スポット・インスタンス:VMの最低コスト・モデルである一時/スポット・インスタンスは、プロバイダーの余剰容量を活用しますが、プロバイダーによってインスタンスが回収される可能性が常にあります。 これらは通常、常時オンにする必要がないアプリケーションや、他のモデルでは法外に高いコストがかかるアプリケーションに便利です。

  • 予約済みインスタンス:従量制課金モデルとは異なり、予約済みのインスタンスは、通常は1年から3年の間の明示的な期間のコミットメントを伴いますが、大幅な割引も組み合わされます。

  • 専用ホスト:専用ホストの場合、ユーザーは通常、すべての物理サーバーのコストを負い、プロバイダーが専用サーバーに提供する増加量の単位(通常は時間単位または月単位)で請求されます。
仮想マシンとベアメタル・サーバー

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

 

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

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

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

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

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

仮想マシンとコンテナ

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

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

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

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

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

次の動画では、コンテナ化の基礎と、VMの使用との比較について詳しく説明しています。

仮想マシン・プロバイダーの選択

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

信頼できるサポート。 電話、Eメール、チャットによる24時間365日の顧客サポートがあることを確認します。これらのサポートがなければ適切なサービス・プロバイダーとは言えません。 ITの重大な状況に際してサポート担当者とやり取りできる体制が整っていることは重要です。 また、どのクラウド・プロバイダーがオンサイト・サポートにより多くのサービスを提供しているかに注意することも重要です。

マネージド・オプション。 クラウド・プロバイダーはマネージドと非マネージドの両方のソリューションを提供していますか。 お客様が仮想化テクノロジーに精通していない場合は、セットアップ、保守、継続的なパフォーマンス・モニターに責任を負うプロバイダーを検討してください。

ソフトウェア統合。 仮想マシンの環境は他のコンポーネントと適切に連携していますか。 オペレーティング・システム、サード・パーティー・ソフトウェア、オープンソース・テクノロジー、アプリケーションは、お客様がビジネス全体にわたってより多くのソリューションを提供するのに役立ちます。 業界で最も使用されているソフトウェア・サプライヤーへのサポートと強固なパートナーシップの両方を備えた仮想マシン・プロバイダーが理想的でしょう。 注:ベンダーの囲い込みは回避しましょう。

高品質のネットワークとインフラストラクチャー。 新しい仮想マシンが実行されるインフラストラクチャーは、どの程度新しいものですか。 これには、信頼できるベアメタル・サーバー、最新のデータセンター、ネットワーク・バックボーンが含まれます。 クラウド・プロバイダーは、最先端のハードウェアと高速ネットワーキング・テクノロジーを契約の一部として提供できなければなりません。

ロケーションの近接性。 データがユーザーの近くにあるほど、遅延、セキュリティー、タイムリーなサービス提供において、問題が起きる可能性は低くなります。 分散データセンターとPOPロケーションの優れたグローバル・ネットワークは、最も必要な時に最も必要な場所にデータがあるようにするために重要です。

バックアップとリカバリー。 お考えのクラウド・プロバイダーは、予期しない障害が発生した場合でもお客様の仮想マシンが引き続き稼働できるようにするために、どのような計画を持っていますか。 そのプロバイダーは仮想化環境に追加のバックアップや冗長性オプションを提供しますか。 連続稼働は、慎重に検討する必要がある要件です。

拡張容易性。 仮想マシンのスピンアップ、スピンダウン、予約、一時停止、更新をどのぐらい迅速かつ簡単に行えますか。 仮想マシンの拡張性について、最も期待されるキーワードは「オンデマンド」です。

多様なCPU構成。 構成が多いほど、適合性が高まります。 あらゆる仮想マシンの構成が、あらゆる使用時期のあらゆるワークロードに適合するわけではありません。 シングルテナントとマルチテナントの両方の要件に対応する、多様な構成パッケージを提供する仮想マシン・プロバイダーを探すようにしましょう。

セキュリティー層。 セキュリティー層について、プロバイダーには子細に何度でも問い合わせましょう。 ビジネス・データは、特に機密性の高いお客様情報を扱う場合に、最も高価な通貨だと言えます。 プライベート・ネットワーク回線、連邦政府データセンターのオプション、標準装備の暗号化機能、規制コンプライアンス標準への適合は、最も価値ある資産を保護するために不可欠です。

シームレスな移行のサポート。 ITの優先順位が高まる一方であることは、 誰もが認識しています。 仮想マシン・プロバイダーは、ハイブリッド環境、オンプレミス環境、オフプレミス環境の間でのお客様のリフト・アンド・シフトを支援できる必要があります。 完全なデータの取り込み、ネットワーク経由/アプリケーション主導の移行オプションについて検討しましょう。

関連ソリューション
IBM Cloud

IBM CloudはRed Hatとともに、市場をリードするセキュリティー、企業向けの拡張性、オープン・イノベーションを提供し、クラウドとAIの可能性を最大限に引き出します。

IBM Cloudの詳細はこちら
VMwareソリューション

IBM Cloud for VMware Solutionsは、VMwareワークロードをオンプレミス環境からIBM Cloud環境に移行する場合に役立つよう設計されています。

IBM Cloud for VMware Solutionsの詳細はこちら
仮想サーバー

IBM Cloud Virtual Serversは、オンデマンドのプロビジョニングと拡張を行う、パブリックおよび専用の仮想サーバーであり、月単位と時間単位の請求オプションがあります。

Virtual Serversの詳細はこちら
参考情報 クラウド・コンピューティングとは

クラウド・コンピューティングは、ITインフラストラクチャーをユーティリティーに変換して、オンプレミスにインストールして保守する必要なしに、インターネット経由でコンピューティング・リソースとアプリケーションに「プラグイン」できるようにします。

ハイブリッドクラウドとは

ハイブリッドクラウドでは、パブリッククラウド・サービス、プライベートクラウド・サービス、オンプレミスのインフラストラクチャーが1つの分散コンピューティング環境に統合されます。

DevOpsとは

DevOpsは、ソフトウェア開発チームとIT運用チームの作業を統合して自動化し、高品質なソフトウェアを迅速に提供できるようにします。

詳細情報はこちら

IBM Cloud® Virtual Server for VPCでは、IBM Cloud上で利用できる優れたネットワーク速度と安全性、ソフトウェア定義ネットワーキング・リソースを備えた、短時間でプロビジョニングされるコンピュート容量が提供されます。 IBM Cloud Virtual Server for VPCは、IBM Cloud Virtual Private Cloud(VPC)上に構築され、強力な第2世代Intel® Xeon®プロセッサーを搭載した、開発者にとって使いやすいインフラストラクチャーであり、アジャイルなパブリッククラウド環境で、事前設定されたインスタンス・プロファイル、迅速なデプロイメント、プライベート・ネットワーク制御により、最新のワークロードをより短時間で簡単に実行するために役立ちます。 マルチテナントまたは専用テナントを選択してからGPUを追加し、時間単位の従量課金制を利用できます。

IBM Cloud Virtual Server for VPCの詳細はこちら