仮想マシン(VM)とは、ハードウェアの代わりにソフトウェアを使用してプログラムを実行し、アプリケーションを導入する物理コンピューターの仮想表現またはエミュレーションです。
VMを導入した企業は、単一の物理マシンのメモリー、CPU、ネットワーク・インターフェース、ストレージなどのリソースを基にして、別々のオペレーティング・システムで動く複数のマシンを1台のデバイス上で仮想的に動作させることができます。
VMは通常ゲストと呼ばれます。「ホスト」マシンと呼ばれる物理マシン上で、1台以上の「ゲスト」マシンが動作します。VMテクノロジーには、仮想サーバー、仮想サーバー・インスタンス(VSI)、仮想プライベート・サーバー(VPS)が含まれます。
グローバルマーケットインサイト(GMI)のレポートでは、仮想マシン市場規模は、2023年に95億米ドルを超えました。クラウド・コンピューティングの導入は今後も着実に進み、2024年から2032年の間に同市場は年平均成長率(CAGR)約12%で拡大するとGMIは予測しています。企業が拡張性、柔軟性、コスト効率を求めてクラウドへの移行を進める中で、クラウド・プロバイダーは仮想マシンとその他の重要なテクノロジー(コンテナなど)を統合し、一貫したITインフラストラクチャーの提供を続けています。
仮想化は、物理的なコンピューター・ハードウェアをより効率的に利用するためのものであり、クラウド・コンピューティングの基礎となります。
仮想化を可能にしているのは、仮想マシン・モニター(VMM)とも呼ばれるハイパーバイザーです。この軽量のソフトウェア層が、共存して動作する複数の仮想マシンを管理します。
仮想化の誕生は1964年までさかのぼります。IBMはこの年、IBM System/360向けの実験的なタイムシェアリング研究プロジェクトとしてCP-40を設計・導入しました。CP-40は、後にCP-67、さらにはUnixへと進化して、複数のユーザーが同時に利用できるコンピューター・ハードウェアを実現し、仮想マシンの礎を築きました。
IBMは1972年8月2日、多くの人が最初の仮想マシンと認識しているVM/370と、初めて仮想メモリーをサポートしたSystem/370メインフレームをロールアウトしました。
1998年、VMware はx86オペレーティング・システムを開発しました。これによって、単一のマシンを複数の仮想マシンに分割し、それぞれ別のオペレーティング・システムを実行できるようになりました。同社が1999年に発売したVM Workstation 1.0は、ユーザーが1台のPC上で複数のオペレーティング・システムを仮想マシンとして稼働できる初の商用製品でした。
現在では、仮想化はエンタープライズ・グレードのITインフラストラクチャーにとって標準的な手法であり、クラウド・コンピューティングの経済的側面を後押ししています。企業は仮想化を利用することでキャパシティーの使用率を向上させ、コストを削減できます。デスクトップ環境、オペレーティング・システム、ストレージ・ハードウェア、データセンターをはじめ、あらゆるITインフラストラクチャーは仮想化が可能です。
仮想化の土台を支えているのはハイパーバイザー・テクノロジーです。このソフトウェア層を物理コンピューターや物理サーバー(ベアメタル・サーバーともいう)の上に配置することによって、その物理マシンのハードウェアと、オペレーティング・システムやアプリケーションとを分離できます。これらの仮想マシンは、サーバー自体のリソース(メモリー、RAM、ストレージなど)をハイパーバイザーの管理のもとで共有しながら、オペレーティング・システムやアプリケーションを独立して稼働できます。基本的に、ハイパーバイザーは交通整理の警官のような役割を果たし、仮想マシンにリソースを割り当てて、仮想マシン同士の干渉が起きないようにします。
ハイパーバイザーには、主に次の2つのタイプがあります。
仮想マシンは、ハイパーバイザーの扱いに基づく分類のほかに、システム仮想マシン(完全仮想マシンともいう)とプロセス仮想マシンという2つのカテゴリに大きく分かれます。
システムVMは、土台にある物理マシンのリソースを共有しながら、複数の仮想マシンが別々のオペレーティング・システムを実行できます。一方、プロセス仮想マシン(アプリケーション仮想マシンともいう)は、OSの中で1つのアプリケーションを実行し、単一のプロセスをサポートします。Javaでコンパイルされたプログラムを実行するJava仮想マシンはプロセスVMの例です。
VMは従来の物理ハードウェアに比べて数多くのメリットがあります。
1台の物理コンピューター上で複数のVMを動かせることから、別のOSを稼働する必要が生じるたびに新しいサーバーを購入する必要がありません。したがって、既に所有している個々のハードウェアから、より多くのリターンを得ることが可能となり、資本支出と運用支出に関連するITコストを大幅に削減できます。
VMはソフトウェア・ベースであるため、新しいVMを簡単にスピンアップできます。ワークロードの新たなニーズが生じたときに、ハードウェア・ベースの新しい環境をプロビジョニングするよりも迅速なスケールアップが可能です。
企業はネットワーク内の物理コンピューター間で必要に応じてVMを再配置できます。この機能を利用して、コンピューティング能力に余裕のあるサーバーにワークロードを割り当てることができます。さらに、オンプレミス環境とクラウド環境の間でVMを移動することも可能です。自社のデータセンターとクラウド・サービス・プロバイダーの間でコンピューティング・リソースを共有するハイブリッドクラウドのシナリオで役立ちます。
物理サーバーにOSをインストールするよりも、VMを作成する方が速くて簡単です。OSをインストール済みのVMのクローンを作成できるからです。開発者やソフトウェア・テスターは、新たに発生したタスクを処理するための新しい環境をオンデマンドで作成できます。
VMは、ハードウェア上で直接動作するオペレーティング・システムと比べて、いくつかの点でセキュリティーの向上につながります。VMファイルを外部のプログラムでスキャンし、悪意のあるソフトウェアが含まれていないか検査できます。また、VMのスナップショットを任意の時点で作成しておき、VMがマルウェアに感染した場合にはスナップショット作成時の状態を復元できます。つまり、VMは実質的に以前の状態に戻すことが可能です。VMは迅速かつ簡単に作成できることから、侵害を受けたVMを直ちに削除して再作成することも可能で、マルウェア感染から素早く復旧できます。
ワークロードやアプリケーションの実行に必要な物理サーバーの数が減ることから、エネルギー消費を大幅に削減して、環境への影響を抑えることができます。
VMには多くのメリットがある一方で、考慮すべきデメリットもいくつかあります。
VMは、ホスト・コンピューターで使用できるハードウェア・リソースに依存します。リソースが限られていると、パフォーマンスや処理効率が低下する可能性があります。
仮想マシンの設定や管理は時に複雑です。仮想マシンのセットアップと保守には、技術的な知識とノウハウを備えたチームが必要となります。
複数のVMが1台の物理コンピューターに依存している場合に、単一障害点が発生するリスクがあります。
企業のIT管理者とユーザーの双方にとって、VMには次のような幅広い用途があります。
仮想マシンは主に9つの種類に分けることができます。
VMwareは、x86マイクロプロセッサー・アーキテクチャーの仮想化製品を初めて発売した企業であり、仮想化市場のリーダーです。VMwareはタイプ1とタイプ2のハイパーバイザーやVMソフトウェアを企業向けに提供しています。
ほとんどのハイパーバイザーは、Windows OSをゲストとして実行するVMをサポートしています。MicrosoftのハイパーバイザーであるHyper-Vは、Windowsオペレーティング・システムの一部として提供されています。Hyper-Vをインストールしたときに作成される親パーティションには、Hyper-V自体とプライマリーのWindows OSが含まれており、両者はハードウェアへの特権アクセスが可能です。Windowsゲストを含むその他のオペレーティング・システムは子パーティションで動作し、親パーティションを通じてハードウェアと通信します。
GoogleのAndroid OSは、モバイル・デバイスやコネクテッド・ホーム・デバイスで広く採用されているオープンソースのOSです。
Android OSは、これらのデバイスで一般的に使われているARMプロセッサー・アーキテクチャーでのみ動作します。愛好家やAndroidゲーマー、ソフトウェア開発者の中には、AndroidをPCで動かしたいと考える人もいますが、これは問題をはらんでいます。PCではまったく異なるx86プロセッサー・アーキテクチャーが使われており、ハードウェア仮想化のハイパーバイザーはVMとCPUの間で命令を受け渡すだけだからです。こうしたハイパーバイザーは命令セットが異なるプロセッサー間での命令の変換は行いません。
この問題に対処する方法の1つは、ソフトウェアでARMアーキテクチャーを再現するエミュレーターを使用することです。ShashlikやGenymotionなどのさまざまなプロジェクトがあります。それ以外の選択肢としては、Androidをx86アーキテクチャーに移植するAndroid-x86プロジェクトがあります。これを実行するには、タイプ2ハイパーバイザーであるVirtualBoxを使用する仮想マシンとしてAndroid-x86プログラムをインストールする必要があります。さらに別の選択肢として、ホストのLinux OSのカーネル上でAndroidオペレーティング・システムを動かすAnboxもあります。
Appleは、Appleのハードウェア上でのみmacOSシステムの実行を許可しています。したがって、Apple以外のハードウェアにおいては、macOSをVMで実行することや、エンドユーザー使用許諾契約のもとで使用することはできません。一方、Macのハードウェア上でタイプ2ハイパーバイザーを使用して、macOSがゲストとして動作するVMを作成することはできます。
AppleはiOSオペレーティング・システムを厳重に管理し、iOSデバイス上でのみ実行を許可していることから、iOSをVMで動かすことはできません。
iOS VMに最も近い存在は、統合開発環境であるXcodeに同梱されているiPhoneシミュレーターです。iPhoneシステム全体をソフトウェアでシミュレートしています。
Javaプラットフォームは、ソフトウェア開発言語であるJavaで記述されたプログラムの実行環境です。「一度書けば、どこでも実行できる」というJavaのスローガンは、あらゆるJavaプログラムはあらゆるJavaプラットフォーム上で動かせるという意味です。そのために、JavaプラットフォームにはJava仮想マシン(JVM)が含まれています。
Javaプログラムでは、JVM向けの命令形式であるバイト・コードが使われています。JVMはこのバイト・コードをマシン・コードにコンパイルします。マシン・コードは、ホスト・コンピューターが使用する最も低水準の言語です。JavaプラットフォームのJVMが生成するマシン・コードの命令セットは、基盤のコンピューティング・プラットフォームのプロセッサーの種類に応じて決まります。コンピューティング・プラットフォームが変わればマシン・コードも変わります。
このように、JVMはOS全体を動かすものではなく、他のVMのようなハイパーバイザーを使用しません。代わりに、アプリケーション・レベルのソフトウェア・プログラムを変換し、特定のハードウェアで実行できるようにします。
JVMと同様、Python VMはハイパーバイザー上で実行されず、ゲストOSも含まれません。それはPythonで書かれたプログラムをさまざまなCPU上で実行できるようにするためのツールです。
Javaと同様に、Pythonはプログラムをバイトコードと呼ばれる中間形式に変換し、実行可能なファイルに保存します。プログラムが実行されると、Python VMはバイトコードを高速に実行するためにマシンコードに変換します。
Linuxは、多くのVMで使用される典型的なゲストOSです。これはVMの実行に使用される典型的なホストOSでもあり、独自のハイパーバイザーであるカーネルベースの仮想マシン(KVM)も備えています。オープンソース・プロジェクトではありますが、KVMはRed Hat®が所有しています。
Ubuntuは、Canonicalによって作成されたLinuxディストリビューションです。デスクトップ・バージョンとサーバー・バージョンがあり、VMとしてインストールできます。ユーザーはUbuntuを、Microsoft Hyper-V上のゲストOSとしてデプロイできます。これは、Hyper-Vの拡張セッション・モードで適切に動作する最適化されたバージョンのUbuntuデスクトップを提供し、WindowsホストとUbuntu VM間の緊密な統合を実現します。これには、クリップボードの統合、動的なデスクトップのサイズ変更、共有フォルダー、ホスト・デスクトップとゲスト・デスクトップ間のマウスの移動のサポートが含まれます。
パブリックまたはマルチテナント仮想マシンは、複数のユーザーが共通の物理インフラストラクチャーを共有する仮想マシンです。このモデルは、仮想マシンをプロビジョニングするための最もコスト効率が高く、スケーラブルなアプローチです。ただし、マルチテナント環境には、セキュリティーやコンプライアンスにおいて厳格な義務を課している組織が好む、いくつかの分離特性が欠けています。
シングルテナント仮想マシンの2つのモデルは、専用ホストと専用インスタンスです。
従量課金制モデルでは、仮想マシンの初期費用はかからず、ユーザーは使用した分だけを支払うことになります。顧客は、プロバイダーとインスタンスのタイプに応じて、時間単位または秒単位で支払います。
VMの最も低コストのモデルである一時インスタンスまたはスポット・インスタンスは、プロバイダーの余剰容量(ただしプロバイダーはいつでも再利用できる)を利用します。一時インスタンス/スポット・インスタンスは、常に稼働状態である必要がないアプリケーションや、他のモデルを使うとかなり高額になってしまうアプリケーションでの利用に適しています。
従量課金制モデルとは異なり、予約ケースには、通常1年から3年という明確な契約期間が設定されていますが、大幅な割引も適用されます。
通常、ユーザーは物理サーバーの総コストを支払い、さらにプロバイダーが専用サーバーに提供する上乗せ分(通常は時間単位または月単位)を支払うことになります。
Bare Metal Serverでは、生のハードウェア、電力、分離がすべてです。これらはシングルテナントの物理サーバーであり、ハイパーバイザー・サイクル(仮想化ソフトウェア)がまったくなく、単一の顧客専用(自分専用)となります。
データ集約型アプリケーションや法規制への準拠義務など、パフォーマンスと隔離を優先するワークロードは、通常、特に長期間にわたって展開する場合、Bare Metal Serverに最適です。
エンタープライズ・リソース・プログラム(ERP)、顧客関係管理(CRM)、サプライチェーン管理(SCM)、電子商取引および金融サービス・アプリケーションは、ベア・メタル・サーバーに最適なワークロードのほんの一例です。
対照的に、ワークロードが最大限の柔軟性と拡張性を必要とする場合は、ベアメタル・ハードウェアにハイパーバイザーを備えて仮想マシンを作成する方が適しています。仮想マシンは、サーバーの容量と使用率を向上させます。これらは、あるVMから別のVMへのデータの移動、データ・セットのサイズ変更、動的なワークロードの分割に最適です。
コンテナを理解する最も簡単な方法は、従来の仮想マシン(VM)との違いを知ることです。従来の仮想化では、オンプレミスでもクラウドでも、ハイパーバイザーを使用して物理ハードウェアを仮想化します。各VMには、ゲストOS、OSの実行に必要なハードウェアの仮想コピー、アプリケーション、関連するライブラリと依存関係が含まれます。
基盤となるハードウェアを仮想化する代わりに、コンテナはオペレーティングシステム(通常はLinux)を仮想化します。各コンテナには、アプリケーションとそのライブラリ、依存関係のみが含まれます。ゲストOSがないため、コンテナは軽量で、高速で、ポータブルです。
コンテナと Kubernetes(コンテナを管理するオープンソースのコンテナ・オーケストレーション・プラットフォーム)は、現代のクラウド・ネイティブ・アーキテクチャーとマイクロ・サービス・アーキテクチャーの事実上の基本単位となっています。コンテナは一般的にステートレス・サービスに関連付けられていますが、組織はそれらをステート・フルサービスにも使用できます。コンテナは、パブリック・クラウド、プライベート・クラウド、および従来のオンプレミス設定で一貫して実行できるため、ハイブリッド・クラウドのシナリオでは標準です。組織は、今日はプライベート・クラウドでアプリケーションを実行するとしても、明日は別のプロバイダーのパブリック・クラウドでそれをデプロイする必要があるという場合もあります。コンテナ化アプリケーションは、チームが現代のITの多様なソフトウェア環境に対応するために必要な柔軟性を提供します。
注意すべき重要な点ですが、企業はコンテナと仮想マシンと共存させることができます。たとえば、多くの企業はVMベースのインフラストラクチャーを持っているため、VMでコンテナを実行するのが一般的です。
企業はアプリケーションを実行するコンテナを選択し、仮想マシンによって基盤となるインフラストラクチャーを提供することができます。この方法では、コンテナの移植性と速度が、仮想マシンのセキュリティーと組み合わせられます。別のシナリオでは、金融機関はデータベース・システムにVMを使用し、リソースの分離により厳重なセキュリティーを確保し、消費者向けモバイル・アプリのようなフロントエンド・アプリケーションにはコンテナを使用することができます。
ブログ記事「コンテナと仮想マシン:その違いとは」でさらに詳しく説明しています。
次のビデオでは、コンテナ化の基本と、それをVMの使用とどのように比較できるかを詳しく説明します。
仮想マシンとクラウド・プロバイダーの選択は、ワークロードのニーズと予算要件、その他の重要な要素を検討することから始まります。以下に示すのは、仮想マシン・サービス・プロバイダーを選択する際に考慮すべき10の事項です。
IBM Cloud Virtual Server for VPCは、IBM Cloud Virtual Private Cloud上に構築されたIntel x86、IBM Z、IBM LinuxONEの仮想マシンのファミリーです。
IBM Cloud 専用サーバーは、無制限の無料バックホール・トラフィックと広範なカスタマイズ・オプションを備えたスケーラブルなWebホスティング・ソリューションを提供します。
IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。