ハードウェア仮想化

**ハードウェア仮想化**（ハードウェアかそうか、）とは、ソフトウェアを使用してコンピュータのリソースを仮想マシンと呼ばれる個別の分離されたエンティティに分割することである。つまり、完全なハードウェアプラットフォーム、コンポーネントの特定の論理的抽象化、またはさまざまなオペレーティングシステム (OS) の実行に必要な機能のみとしてのコンピュータの仮想化である。ハードウェア仮想化により、同一または異なるOSの複数のコピーをコンピュータ上で実行することができ、異なる仮想マシンのアプリケーションが互いに干渉し合うのを防ぐことができる。仮想化は、コンピューティングプラットフォームの物理的特性をユーザーから隠し、代わりに抽象的なコンピューティングプラットフォームを提示する。当初、仮想化を制御するソフトウェアは「制御プログラム」と呼ばれていたが、「ハイパーバイザ」または「仮想マシンモニター」という用語が徐々に好まれるようになった。

## 概念
「仮想化」という用語は、1960年代に、実験的なIBM M44/44Xシステムに由来する仮想マシン（「疑似マシン」と呼ばれることもある）を指すために造られた。仮想マシンの作成と管理は、最近では「プラットフォーム仮想化」または「サーバ仮想化」と呼ばれている。

プラットフォームの仮想化は、ホストソフトウェア（制御プログラム）によって特定のハードウェアプラットフォーム上で実行される。ホストソフトウェアは、ゲストソフトウェア用にシミュレートされたコンピュータ環境である仮想マシン（VM）を作成する。ゲストソフトウェアはユーザーアプリケーションに限定されない。多くのホストは、完全なOSを実行できる。ゲストソフトウェアは、物理ハードウェア上で直接実行されているかのように実行されるが、いくつかの注意点がある。物理システムリソース（ネットワークアクセス、ディスプレイ、キーボード、ディスクストレージなど）へのアクセスは、通常、ホストプロセッサやシステムメモリへのアクセスよりも厳しく管理される。仮想化ホストによって実装されたハードウェアアクセスポリシーに応じて、ゲストは特定の周辺機器へのアクセスを制限されたり、デバイスのネイティブ機能の一部に限られたりすることがよくある。

仮想化は、ハイパーバイザの実行に必要なリソースと、物理マシンでネイティブに実行する場合と比較して仮想マシンでのパフォーマンスの低下の両方で、パフォーマンスの低下を招くことがよくある。

## 仮想化の理由
* サーバ統合の場合、CPUやハードドライブなどのより多くの（コストのかかる）ハードウェアリソースの必要性を減らすために、多くの小さな物理サーバが1つの大きな物理サーバに置き換えられる。ハードウェアは仮想環境に統合されているが、通常、OSは統合されていない。代わりに、物理サーバで実行されている各OSは、仮想マシン内で実行されている個別のOSに変換される。これにより、大規模サーバはそのような多くの「ゲスト」仮想マシンを「ホスト」できる。これは、物理から仮想（P2V）への変換として知られている。
* サーバの統合は、機器のメンテナンスに関連する機器と人件費の削減に加えて、エネルギー消費とテクノロジーの環境生態学的セクターにおける世界的なフットプリントを削減するという追加の利点もある。たとえば、一般的なサーバは425で実行される&nbsp;W とVMwareは、最大15：1のハードウェア削減率を見積もっている。
* 仮想マシン（VM）は、物理マシンよりもリモートサイトから簡単に制御および検査でき、VMの構成はより柔軟である。これは、カーネル開発や、最新のハードウェアをサポートしていないレガシーOSの実行など、OSコースの指導に非常に役立つ。
* 事前にハードウェアを購入しなくても、必要に応じて新しい仮想マシンをプロビジョニングできる。
* 仮想マシンは、必要に応じて、ある物理マシンから別の物理マシンに簡単に再配置できる。たとえば、顧客に行く営業担当者は、物理コンピュータを輸送することなく、デモソフトウェアを備えた仮想マシンをラップトップにコピーできる。同様に、仮想マシン内のエラーはホストシステムに害を及ぼさないため、ラップトップでOSがクラッシュするリスクはない。
* この再配置の容易さにより、仮想マシンは、再生されたエネルギー源や障害のあるエネルギー源の影響を心配することなく、災害復旧シナリオで簡単に使用できる。

ただし、複数のVMが同じ物理ホストで同時に実行されている場合、各VMは、他のVMによってシステムに課せられるワークロードに大きく依存するさまざまな不安定なパフォーマンスを示す可能性がある。この問題は、仮想マシン間の一時的な分離のための適切なインストール手法によって対処できる。

プラットフォームの仮想化にはいくつかのアプローチがある。

仮想化のユースケースの例：

* ホストOSでサポートされていない1つ以上のアプリケーションの実行：必要なゲストOSを実行している仮想マシンは、ホストOSを変更せずに、目的のアプリケーションの実行を許可できる。
* 代替OSの評価：ホストOSを変更せずに、新しいOSをVM内で実行できる。
* サーバの仮想化：物理サーバのハードウェアリソースをより完全に活用するために、単一の物理サーバで複数の仮想サーバを実行できる。
* 特定の環境の複製：仮想マシンは、使用する仮想化ソフトウェアに応じて、複製して複数のホストにインストールするか、以前にバックアップしたシステム状態に復元することができる。
* 保護された環境の作成：マルウェアの調査や動作の悪いソフトウェアのインストールなど、VMで実行されているゲストOSが修復に費用効果の低い方法で損傷した場合、VMは害を及ぼすことなく単純に破棄される可能性がある。ホストシステム、およびゲストの再起動時に使用されるクリーンコピー。

## 完全仮想化

完全仮想化では、仮想マシンは十分なハードウェアをシミュレートして、同じ命令セット用に設計された変更されていない「ゲスト」OSを分離して実行できるようにする。このアプローチは、VMファミリの前身であるIBM CP-40およびCP-67で1966年に開拓された。

## ハードウェア支援仮想化
ハードウェア支援仮想化では、ハードウェアは、仮想マシンモニターの構築を容易にし、ゲストOSを分離して実行できるようにするアーキテクチャサポートを提供する。ハードウェア支援仮想化は、最初の仮想マシンOSであるVM / 370で使用するために、1972年にIBM System / 370に最初に導入された。

2005年と2006年に、インテルとAMDは仮想化をサポートするための追加のハードウェアを提供した。サン・マイクロシステムズ（現在のオラクル）は、2005年にUltraSPARCTシリーズプロセッサに同様の機能を追加した。

2006年、第1世代の32ビットおよび64ビットのx86ハードウェアサポートが、ソフトウェア仮想化よりもパフォーマンス上の利点を提供することはめったになかった。

## 準仮想化
準仮想化では、仮想マシンは必ずしもハードウェアをシミュレートする必要はないが、代わりに（またはさらに）変更することによってのみ使用できる特別なAPIを提供する「ゲスト」OS。これを可能にするには、「ゲスト」OSのソースコードが利用可能である必要がある。ソースコードが利用可能な場合は、機密性の高い命令をVMM APIの呼び出しに置き換えて（例：「cli」と「vm_handle_cli（）」）、OSを再コンパイルして新しいバイナリを使用するだけで十分である。ハイパーバイザへのこのシステムコールは、TRANGOおよびXenでは「ハイパーバイザコール」と呼ばれる。これは、VM下のIBMのCMSでDIAG（「診断」）ハードウェア命令を介して実装される（これがハイパーバイザという用語の由来だった）。

## OSレベルの仮想化
OSレベルの仮想化では、物理サーバはOSレベルで仮想化され、複数の分離された安全な仮想化サーバを単一の物理サーバで実行できるようにする。「ゲスト」OS環境は、ホストシステムと同じOSの実行中のインスタンスを共有する。したがって、同じカーネルを使用して「ゲスト」環境を実装し、特定の「ゲスト」環境で実行されているアプリケーションは、それをスタンドアロンシステムと見なす。

## ハードウェア仮想化ディザスタリカバリ
ディザスタリカバリ（DR）計画は、ハードウェア仮想化プラットフォームの優れた方法と見なされることがよくある。仮想化環境のDRは、通常のビジネス運用を混乱させるさまざまな状況で高い可用性を確保できる。ハードウェア仮想化プラットフォームの継続的な運用が重要な状況では、ディザスタリカバリ計画により、ハードウェアのパフォーマンスとメンテナンスの要件を確実に満たすことができる。ハードウェア仮想化ディザスタリカバリ計画には、以下に説明する方法を含むさまざまな方法によるハードウェアとソフトウェアの両方の保護が含まれる。

; ソフトウェアデータの長期アーカイブニーズのためのテープバックアップ
: この一般的な方法は、データをオフサイトに保存するために使用できるが、データの回復は困難で時間のかかるプロセスになる可能性がある。テープバックアップデータは、保存されている最新のコピーと同じくらい良好である。テープバックアップ方法では、バックアップデバイスと継続的なストレージ資料が必要になる。
; ファイル全体とアプリケーションのレプリケーション
: この方法の実装には、通常同じサイトでのアプリケーションとデータファイルストレージのレプリケーション用の制御ソフトウェアとストレージ容量が必要になる。データは別のディスクパーティションまたは別のディスクデバイスに複製され、ほとんどのサーバであるケジュールされたアクティビティになる可能性があり、データベースタイプのアプリケーションでより多く実装される。
; ハードウェアとソフトウェアの冗長性
: この方法は、2つの異なる地理的領域でハードウェアとソフトウェアの複製を複製することにより、ハードウェア仮想化ソリューションに最高レベルのディザスタリカバリ保護を保証する。

## 脚注

## 外部リンク
* 仮想化の概要
* Xen and the Art of Virtualization 、ACM、2003、著者グループによる
* Linux仮想化ソフトウェア