完全仮想化の概要とストレージ・ネットワーク完全仮想化技術の詳細解説
![](https://thinkit.co.jp/sites/default/files/styles/main_image_730x/public/main_images/ren_ti_virtualization_main_0.jpg?itok=pOTHSabe)
はじめに
今回は、「完全仮想化」について述べていきます。具体的には完全仮想化の特徴やCPUの仮想化支援機能、ストレージとネットワークの仮想化について、詳細を見ていきます。
完全仮想化の概要
前回でも説明した通り、Intelのx86アーキテクチャの完全仮想化が発達し、今日のクラウドでの仮想マシン構築が一般的になってきました。完全仮想化(フル仮想化)は、コンピュータシステムのリソースを仮想化する技術であり、1台の物理マシン上で複数の仮想マシン(VM)を実行できます。完全仮想化では、仮想マシンは独立したゲストOSを実行し、ゲストOSは実際のハードウェアを模倣した仮想ハードウェア環境で動作します。
完全仮想化は、以下の特徴を持ちます。
- 仮想化層:
仮想マシンモニター(VMM)またはハイパーバイザと呼ばれる仮想化層が、物理ハードウェアとゲストOSの間に存在します。ハイパーバイザは物理ハードウェアリソースを管理し、それらを各仮想マシンに割り当てます。 - 独立性:
各仮想マシンは、他の仮想マシンから独立して実行されます。これにより、複数の異なるOSやアプリケーションを同時に実行できます。 - インタフェースエミュレーション:
完全仮想化では、実際のハードウェアとは異なる仮想ハードウェアが提供できます。これにより、ゲストOSは特定の物理ハードウェアに依存しません。 - 設定の柔軟性:
完全仮想化では、仮想マシンのリソース(CPU、メモリ、ストレージ、ネットワーク)を動的に割り当て可能です。これにより、リソースの効率的な使用とシステムのスケーラビリティが向上します。 - 移植性とバックアップ:
仮想マシンは、物理マシンから別の物理マシンに簡単に移動できます。また、仮想マシンのスナップショットを取得し、バックアップや復元を容易にします。
完全仮想化の欠点は、仮想化層のハイパーバイザやエミュレーション層でオーバーヘッドが発生するため、パフォーマンス低下の可能性が若干あることです。
現在では1物理マシンに複数CPUを持つことが一般的となっているため、物理マシンあたりで動作する仮想マシンを多くすることで、仮想マシンを集約化しています。
CPUによる仮想化支援機能
CPUの仮想化支援機能とは、ハードウェアレベルで仮想化をサポートする技術であり、仮想マシンのパフォーマンスとセキュリティを向上させる目的で開発されました。CPUの仮想化支援機能は、主にIntel社とAMD社によって提供されています。
- Intel VT-x(Intel Virtualization Technology):
Intelプロセッサに搭載されている仮想化支援技術です。VT-xは、ゲストOSの命令を直接実行できるようにすることで、仮想マシンのパフォーマンスを向上させます。また、リングプロテクションと呼ばれるセキュリティ機能を強化し、ホストOSとゲストOS間のセキュリティを確保します。 - AMD-V(AMD Virtualization):
AMDプロセッサに搭載されている仮想化支援技術です。AMD-Vも、Intel VT-xと同様にゲストOSの命令を直接実行可能にすることで、仮想マシンのパフォーマンスを向上させます。また、セキュリティの強化やリソース管理の改善にも寄与します。
CPUの仮想化支援機能を使用することで、以下のような利点があります。
- パフォーマンスの向上:
仮想化支援機能によりゲストOSの命令がCPUで直接実行されるため、従来のソフトウェアエミュレーションよりも高速に動作します。 - 安全性の向上
:仮想化支援機能は、ホストOSとゲストOS間のセキュリティを強化し、ゲストOSがホストOSや他のゲストOSに影響を与えることを防ぎます。 - より簡単な仮想マシン管理:
仮想化支援機能を使用すると、仮想マシンの起動やシャットダウン、スナップショットの取得などが容易になります。
CPUの仮想化支援機能は、仮想化ソフトウェアと連携し、仮想環境の効率性とパフォーマンスを向上させます。
メモリ仮想化技術によるページマッピング
CPUの仮想化支援機能を利用したページマッピングは、ハードウェアアシスト型のメモリ仮想化技術です。これにより、仮想マシンの仮想アドレスを物理アドレスに効率的に変換できるようになります。
通常、OSは仮想アドレス空間を物理アドレス空間へ変換するために、ページテーブルというデータ構造を使用します。しかし、仮想環境では、仮想マシンのゲストOSが持つ仮想アドレス(ゲスト仮想アドレス)を、物理アドレスではなくホストOSが管理する仮想アドレス(ホスト仮想アドレス)に変換する必要があります。そして、ホストOSはホスト仮想アドレスを物理アドレスへ変換するために、再度ページテーブルを使用します。この二段階のアドレス変換を「シャドウページテーブル」と呼びますが、性能上のオーバーヘッドが発生するという問題があります。
CPUの仮想化支援機能によるページマッピングでは、インテルのExtended Page Table(EPT)やAMDのNested Page Table(NPT)、またはRapid Virtualization Indexing(RVI)といったハードウェアアシスト技術を利用します。これにより、一度のアドレス変換で、ゲスト仮想アドレスを物理アドレスへ直接変換できるようになります。
![](/sites/default/files/article_node/ren_ti_virtualization_02_02.png)
EPTを使用したページング
「ハイパーバイザの作り方~ちゃんと理解する仮想化技術~ 第2回 Intel VT-xの概要とメモリ仮想化」より引用
ハードウェアアシスト型のメモリ仮想化技術によるページマッピングの主な利点は、以下の通りです。
- 性能の向上:
ハードウェアアシスト型のメモリ仮想化技術を利用することで、シャドウページテーブルによる二段階のアドレス変換のオーバーヘッドが削減され、メモリアクセス性能が向上します。 - 管理の簡素化:
ハードウェアがアドレス変換を担当することで、ホストOSのページテーブル管理が簡素化され、仮想化環境の運用管理が容易になります。 - セキュリティの向上:
ハードウェアアシスト型のメモリ仮想化技術は、仮想マシンごとに独立したアドレス空間を持つため、他の仮想マシンのメモリにアクセスすることが困難になり、セキュリティが向上します。 - スケーラビリティの向上:
ハードウェアアシスト型のメモリ仮想化技術を利用することで、より多くの仮想マシンを効率的にサポートできるため、仮想化環境のスケーラビリティが向上します。 - 互換性の向上:
ハードウェアアシスト型のメモリ仮想化技術は、ゲストOSに対する変更が不要であるため、さまざまなOSやアプリケーションとの互換性が向上します。
ストレージの仮想化
ストレージの仮想化は、ストレージリソースの効率的な管理とパフォーマンスの向上を目的とした技術です。ストレージ仮想化では、物理的なストレージデバイスを複数の仮想デバイスに分割し、それらを異なる仮想マシン(VM)に割り当てます。これにより、ストレージリソースの利用効率が向上し、容易にスケーラブルな環境が構築できます。
ストレージデバイスの仮想化を使用するには、主に以下の2つの方法があります。
- ブロックレベルのストレージ:
ブロックレベルのストレージは、物理ストレージデバイスのブロックを使用します。これにより、物理ストレージの容量を柔軟に割り当て、仮想マシンに割り当てられます。この場合、ファイル競合を解決できないため、1つの仮想マシンに1つのブロックストレージを割り当てます。ブロックレベルでSAN(Storage Area Network)を使用するには、iSCSIなどのプロトコルが利用されます。 - ファイルレベルのストレージ:
ファイルレベルのストレージ仮想化では、物理ストレージ上のファイルを仮想マシンに割り当てます。これにより、複数の仮想マシンが同じファイルシステムを共有でき、データ管理やバックアップが容易になります。ファイルレベルでSANを使用するには、NFS(Network File System)やSMB(Server Message Block)などのプロトコルが利用されます。
ストレージデバイスの仮想化支援による主な利点は、以下の通りです。
- 効率的なリソース利用:
ストレージ仮想化により、物理ストレージの容量を柔軟に割り当てることができ、リソースの無駄を削減できます。また、仮想化によって複数の仮想マシンでストレージリソースを共有できるため、データの重複を減らし、全体のストレージ利用効率が向上します。 - 容易なスケーラビリティ:
ストレージ仮想化により、ストレージリソースを追加や削除する際の手間が軽減され、スケーラブルな環境が構築できます。これにより、ビジネスの成長や変化に対応しやすくなります。 - 高い可用性とデータ保護:
ストレージ仮想化は、データの冗長性を確保しやすくなります。これにより、障害が発生した場合でも迅速に復旧できる高い可用性が実現されます。また、バックアップやデータのレプリケーションが容易になるため、データ保護も向上します。 - 管理の簡素化:
ストレージ仮想化により、複数の物理ストレージデバイスを統合管理できるため、運用管理の効率化が図られます。また、仮想マシンのストレージ容量を柔軟に変更できるため、ストレージのプロビジョニングや再構成が簡単になります。 - パフォーマンスの最適化:
ストレージ仮想化では、I/O負荷の分散やキャッシング機能を利用して、ストレージのパフォーマンスを最適化できます。これにより、アプリケーションの応答時間が短縮され、全体のシステムパフォーマンスが向上します。 - コスト削減:
ストレージ仮想化により、物理ストレージデバイスの購入や管理にかかるコストを削減できます。また、電力消費や冷却費用の削減にも繋がり、TCO(Total Cost of Ownership)の低減が実現できます。
ネットワークの仮想化
ネットワークの仮想化は、物理的なネットワークリソースを複数の仮想ネットワークに分割し、仮想マシン(VM)間の通信を効率化する技術です。ネットワーク仮想化は、仮想マシン間のネットワーク接続を簡単に設定・管理でき、スケーラビリティやセキュリティを向上させます。
ネットワークの仮想化としては、以下のような技術があります。
- 仮想スイッチ(vSwitch):仮想スイッチは、物理ネットワークスイッチの機能を仮想化したもので、仮想マシン間の通信を管理します。仮想スイッチは仮想環境内でネットワークトラフィックを転送し、VLANやQoSなどのネットワーク機能を提供します。仮想スイッチに物理NICをアタッチすることで、物理NICのオーバーロード機能を使用可能になります。物理NICのオーバーロード機能は、ネットワーク通信のいくつかの処理を物理NIC側に任せることで、パフォーマンスが向上します。
- 仮想NIC(vNIC):
仮想NICは、仮想マシンに割り当てられる仮想ネットワークインタフェースカードです。vNICを利用することで、仮想マシンが仮想スイッチや物理ネットワークに接続できます。仮想NICは、物理NICと同様にIPアドレスやMACアドレスを持ち、ネットワークの設定や管理が可能です。 - ネットワークファンクション仮想化(NFV):
ネットワークファンクション仮想化は、従来の専用ハードウェアで提供されていたネットワーク機能(ルータ、ファイアウォール、ロードバランサーなど)を、仮想化技術を用いてソフトウェア化するものです。NFVによって、ネットワーク機能の迅速な展開やスケーラビリティが向上し、運用コストの削減が可能になります。
ネットワークの仮想化による主な利点は、以下の通りです。
- 柔軟なネットワーク構成:
ネットワーク仮想化により、物理ネットワークに依存しない柔軟なネットワーク構成が可能になります。これにより、仮想マシンの迅速なデプロイやネットワーク設定の変更が容易になります。 - セキュリティの向上:
ネットワーク仮想化では、仮想マシン間の通信を独立した仮想ネットワーク上で行うため、セキュリティが向上します。また、仮想ファイアウォールや仮想ルーターなどのネットワークファンクションを利用して、より細かいアクセス制御やセキュリティポリシーの適用が可能になります。 - 運用管理の効率化:
ネットワーク仮想化により、複数の物理ネットワークデバイスを統合管理できるため、運用管理の効率化が図られます。また、仮想化技術を用いた自動化やオーケストレーションによって、ネットワークのプロビジョニングや再構成が簡単になります。 - コスト削減:
ネットワーク仮想化により、物理ネットワークデバイスの購入や管理にかかるコストを削減できます。また、ネットワークファンクション仮想化(NFV)によって、専用ハードウェアを必要としないソフトウェアベースのネットワーク機能が利用できるため、運用コストも削減されます。 - スケーラビリティの向上:
ネットワーク仮想化は、仮想ネットワークの迅速な展開や拡張を可能にします。これにより、ビジネスの成長や変化に対応しやすくなり、スケーラビリティが向上します。
おわりに
今回は、完全仮想化について解説しました。完全仮想化による仮想マシンを実用化するためには、CPUの仮想化支援機能をはじめ、使用するデバイスを仮想化する必要がありました。これらをうまく使用することで、仮想マシンの利点である、柔軟性、コスト削減、運用効率、スケーラビリティの向上につながっています。
次回は、仮想マシンを利用してサービスを提供する「IaaS」について説明します。お楽しみに。