最新の仮想化機能

どのハイパーバイザーが優れているかについての最近の議論の後、特定の名前を参照せずに現代の仮想化システムの機能を書き出すというアイデアが生まれました。 これは「誰が優れているか」の比較ではなく、「仮想化で何ができるか」という質問に対する答えです。産業用仮想化の可能性の一般的な概要です。

コード実行


ハイパーバイザーは仮想マシンを完全に制御するため、マシンのプロセスを具体的に制御できます。

さまざまな仮想化システムは、コードを実行するためのいくつかの方法を提供します(完全なエミュレーションは産業用仮想化では使用されないため、リストには含まれていません)。


実際には、準仮想化ドライバーはHVMとバイナリ書き換え(ゲストツールと呼ばれることが多い)の両方で使用されます。 準仮想化がパフォーマンスにおいて他のすべての方法よりも大幅に優れているのは、I / O操作です。

例外なく、すべてのハイパーバイザーは仮想マシンでサスペンド/一時停止操作を実行できます。 このモードでは、ディスクのメモリデータの保存と「回復」(再開)後の作業の継続により、マシンの動作が中断されます。

一般的な機能は、 移行の概念です。つまり、あるコンピューターから別のコンピューターへの仮想マシンの転送です。 シャットダウンせずにオフライン(1台のコンピューターでオフ、2台目のコンピューターでオン)およびオンライン(通常、ライブと呼ばれる、「ライブマイグレーション」)が発生します。 実際には、あるマシンでサスペンドし、データ転送プロセスを最適化して別のマシンで再開することを使用して実装されます(最初にデータが転送され、次にマシンがサスペンドされ、移行が開始された時点から変更されたデータが転送され、その後、新しいマシンが新しいホストで開始されます)。

また、xenaでは、2台以上のホスト(Remus)で1台のマシンを並列実行する技術が約束されています(そして、ほとんど製品に導入されているようです)。これにより、サーバーの1つに障害が発生しても、中断/再起動せずに仮想マシンを継続できます。

メモリ管理


従来の仮想化モデルでは、ゲストマシンに一定量のメモリを割り当てることを想定しており、変更はオフになった後にのみ可能です。

最新のシステムでは、ゲストシステムのRAM容量を手動または自動で変更する機能を実装できます。

次のメモリ管理方法を使用できます。


周辺機器


一部のハイパーバイザーでは、仮想マシンが実際の機器(さらに、異なる仮想マシン、異なる機器)にアクセスできます。

また、コンピューター上にない機器を含む機器をエミュレートすることもできます。 最も重要なデバイス-ネットワークアダプターとドライブは別々に考慮されます。 その他:ビデオアダプター(3Dを含む)、USB、シリアル/パラレルポート、タイマー、ウォッチドッグ。

これを行うには、次のテクノロジーのいずれかを使用します。


ネットワーク機器


ネットワークデバイスは通常、3番目または2番目の抽象化レベルで実装されます。 作成された仮想ネットワークインターフェイスには、仮想マシンとハイパーバイザー/制御ドメイン/仮想化プログラムの2つの端があります。 ゲストからのトラフィックは変更されずに所有者に送信されます(再送信、一致する速度などのダンスなし)。 そして、かなり重大な困難が始まります。

現時点では、第3レベル(たとえば、openvzなどのIPアドレスレベル)でネットワークインターフェイスをエミュレートするシステムを除いて、他のすべてのシステムは次の機能セットを提供します。

一部の仮想化システムは、仮想マシンのネットワークインターフェースを物理ネットワークインターフェースと仮想スイッチの存在でブリッジする場合を分離します。

一般的に、仮想マシンのネットワークは、移行中に特定の頭痛の種を示します。 インターフェイスブリッジングを備えた既存のすべての製品システムは、1つのネットワークセグメントでのみマシンの透過的なライブマイグレーションを可能にし、トラフィックスイッチングのポート変更について上位スイッチに通知するための特別なトリック(偽ARP)が必要です。

現時点では、かなり興味深いシステムが開発されています-オープンフローコントローラへのパケットのパスを決定するタスクを可能にするオープンvSwitch-仮想ネットワークの機能を大幅に拡張する可能性があります。 ただし、オープンフローとvSwitchは少し外れています(少し後で説明します)。

ディスク(ブロック)デバイス


これは、仮想マシンの2番目の重要なマイルストーンです。 ハードディスク(より正確には、情報を保存するためのブロックデバイス)は、重要な仮想化の2番目のコンポーネントであり、おそらく最初のコンポーネントです。 ディスクサブシステムのパフォーマンスは、仮想化システムのパフォーマンスを評価するために重要です。 プロセッサとメモリの大きなオーバーヘッド(オーバーヘッド)は、ディスク操作のオーバーヘッドよりも穏やかに経験されます。

最新の仮想化システムには、いくつかのアプローチがあります。 1つ目は、完成したファイルシステムを仮想マシンに提供することです。 同時にオーバーヘッドはゼロになる傾向があります(openvzに固有)。 2番目-ブロックデバイスのエミュレーション(スマートコマンドやSCSIコマンドなどのryushechekなし)。 仮想マシンのブロックデバイスは、物理デバイス(ディスク、パーティション、論理ボリュームLVM)またはファイル(ループバックデバイスを介して、またはファイルの「内部」でブロック操作を直接エミュレートすること)にバインドされます。

追加機能は、ハイパーバイザーによるネットワークストレージの使用です。この場合、移行プロセスは非常に簡単です。1台のホストでマシンを一時停止し、2台目のホストを継続します。 ホスト間でデータを転送しません。

さらに、基本レベルのブロックデバイスがそれをサポートしていれば(LVM、ファイル)、ほとんどのシステムは、外出先で仮想ブロックデバイスのサイズを変更する機能を提供します。 これは一方で非常に便利であり、ゲストOSは他方でこれに対して完全に準備されていません。 もちろん、すべてのシステムは、オンザフライブロックデバイス自体の追加/削除をサポートしています。

重複排除機能は通常、基盤となるブロックデバイスプロバイダーに割り当てられますが、たとえば、openvzでは「コンテナーテンプレート」を使用するコピーオンライトモードを使用でき、XCPでは相互にコピーオンライトの依存関係を持つブロックデバイスのチェーンを作成できます。 これにより、生産性が低下する一方で、スペースを大幅に節約できます。 もちろん、多くのシステムでは、オンデマンドでディスクスペースを割り当てることができます(VMWare、XCPなど)-ブロックデバイスに対応するファイルは、スパースとして作成されます(または、「スキップ」空スペースをサポートする特定の形式を持ちます)。

ディスクへのアクセスは、速度、あるデバイス(または仮想マシン)に対する他のデバイスの優先度によって制御できます。 VMWareは、I / O操作の数を制御する素晴らしい機会を発表しました。これにより、すべてのゲストへのサービス提供にわずかな遅延が生じ、ゲストの混乱が最も遅くなります。

専用ディスクデバイスは複数のゲスト間で共有でき(GFSなど、これに対応したファイルシステムを使用している場合)、共有ストレージを使用してクラスターを簡単に実装できます。

ハイパーバイザーがゲストのメディアへのアクセスを完全に制御するため、ディスクのスナップショット(および仮想マシン自体)を作成し、スナップショットのツリーを構築することが可能になります(仮想マシンの状態もこれらのスナップショットに含まれます)車)。

同様に、バックアップが実装されます。 バックアップを実装する最も簡単な方法は、バックアップシステムのディスクをコピーすることです。これは通常のボリューム、ファイル、またはLVパーティションであり、外出先も含めて簡単にコピーできます。 Windowsの場合、通常、バックアップの準備の必要性をシャドウコピーに通知する機会が与えられます。

ハイパーバイザーとゲスト間の相互作用


一部のシステムでは、ゲストシステムとハイパーバイザー(より正確には管理OS)の間に通信メカニズムが提供され、ネットワークの操作性に関係なく情報を送信できます。

ゲストシステムの「自己移行」に関する実験的な開発(製品の準備ができていません)があります。

相互互換性


ハイパーバイザー間の相互作用を標準化する作業が進行中です。 たとえば、XVA形式は、仮想マシンをエクスポート/インポートするためのプラットフォームに依存しない形式として提案されています。 VHD形式は、同じ拡張子を持つ複数の互換性のない形式ではない場合、ユニバーサルであると主張できます。

ほとんどの仮想化システムは、競合他社の仮想マシンを「変換」する機能を提供します。 (ただし、外出先で異なるシステム間でマシンを移行できるライブマイグレーションの単一システムは表示されず、このトピックに関するスケッチも表示されませんでした)。

経理


ほとんどのハイパーバイザーは、何らかの形式のホスト負荷推定メカニズム(現在の値とこれらの値の履歴を表示)を提供します。 一部は、ティック、iops、メガバイト、ネットワークパケットなどの絶対数の形式で消費されたリソースを正確に説明する機能を提供します。 (私が知る限り、これはXenのみで、文書化されていない機能の形でのみです)。

協会と管理


ほとんどの最新世代のシステムでは、負荷管理用のインフラストラクチャを提供するか、インフラストラクチャ内の各サーバーに既製の負荷管理サービスをすぐに提供することにより、複数の仮想化マシンを単一の構造(クラウド、プールなど)に結合できます。 これは、最初に「次の車をどこから開始するか」を自動的に選択することによって、次にホストを均等にロードするようにゲストを自動的に移行することによって行われます。 同時に、共有ネットワークストレージを使用する場合、最も単純なフォールトトレランス(高可用性)もサポートされます-多数の仮想マシンを持つ1つのホストが停止した場合、仮想マシンはインフラストラクチャの一部である他のホストで実行されます。

いずれかのシステムのいくつかの重要な機能を見逃した場合、たとえば、

Source: https://habr.com/ru/post/J101447/


All Articles