KVMとHyper-Vの違いを理解することは、組織のハードウェア資源の最適化を目的とした仮想化環境を構築する際に欠かせません。このブログ記事では、KVMとHyper-Vが何であるかを簡単に説明し、その後、この2つのハイバイザーを比較します。
比較評価の主な点は以下の通りです。
- スケーラビリティとパフォーマンス
- マネージメントツール
- メモリー供給オプション
- セキュリティ機能
- ライブミigレーション機能
KVMハイバイザーとは何か?
KVMは、Kernel-based Virtual Machineの略称であり、Linuxカーネル内のオープンソースの完全仮想化ソリューションです。KVMはx86プロセッサで動作し、ユーザーにハイバイザー機能を提供し、仮想化環境を構築することができます。
Kernel-based Virtual Machineハイバイザーは、Linuxのバージョン2.6.20以降の新しい版とともに2007年に最初にリリースされました。KVMはLinux、Windows、macOS、HaikuなどのさまざまなOSをサポートし、ハードウェアアシステンション仮想化の機能を提供します。同じソリューションは、Windows、OpenBSD、FreeBSDなどのその他のシステムにたいていはparavirtualizationを提供します。
KVMは、CPUがハードウェアアシステンション仮想化をサポートしているLinuxマシンのほとんどに使用できます。KVMをインストールするには、Linuxソフトウェアリポジトリから必要なパッケージをダウンロードすることが必要であり、kvm-qemuとマネージメントツール(オプション)も必要です。
最も一般的なKVMベースの仮想化マネージメントツールには、Oracle Linux Virtualization Manager、Proxmox VE、Red Hat Virtualization Managerがあります。
Hyper-Vとは何か?
Hyper-Vは、VMおよび仮想環境の作成と使用を可能にする、Microsoftのネイティブハイパーバイザーです。Hyper-Vは、Windows OSのx86-64システムで実行できます。
Microsoft Hyper-Vは最初にWindows Server 2008の一部としてリリースされました。このハイパーバイザーは、Windows Serverシステムのオプションのダウンロード可能なコンポーネントです。さらに、Hyper-Vには、機能が制限された無料のスタンドアロンエディションがあり、CLI(コマンドラインインターフェース)のみをサポートしています。
Hyper-Vを使用すると、お互いに隔離された仮想マシンのセットを取得できます。これは、特定の親(ルート)および子パーティショニングによるものです。ハードウェアに直接アクセスできる親パーティションが、仮想化管理スタックを実行します。その後、このパーティションは、ゲストオペレーティングシステムをホストする子パーティションを作成します。
KVM vs Hyper-V:詳細な比較
Hyper-VとKVMの比較で一般的な違いを強調したので、さらに詳細をご紹介します。以下の情報を確認して、ニーズに最適なソリューションを選択できます。
拡張性とパフォーマンス
拡張性とパフォーマンスは、KVMとHyper-Vの比較においておそらく最も重要な点です。良いニュースは、ここでの競争は引き分けになることです – Hyper-VとKVMの両方が高いパフォーマンスを提供し、優れた拡張性を備えています。
KVM仮想化ソフトウェアは、オープンソースのLinuxカーネルに基づいています。これは、KVMが幅広いハードウェアで正常に実行できることを意味します。同じLinuxカーネルにより、高い効率性と操作速度が実現されます。
KVMの開源の性質は、状況による問題に時間と労力を要するトラブルシューティングにつながる場合があります。しかし、KVMのオンライン知識ベースは十分であり、解決策を素早く見つけることができます。
一方、Hyper-VはWindows Server OSと一緒に搭載されたマイクロソフトの独自のハイパーバイザであり、利用可能なハードウェアの大多数で最大のパフォーマンスを提供するよう最適化されています。Hyper-Vの拡張性により、ホスト上で複数のVMを実行し、需要に応じて仮想の作業負荷を拡大することで、ITインフラストラクチャを最高の効率で使用することができます。
Hyper-Vの主要な欠点は、Windows以外のOSへのサポートが限られていることです。管理の複雑さや潜在的な互換性问题と組み合わせると、必要な技術経験がない場合、Hyper-Vの利用は困難な場面もあります。
管理ツール
Hyper-VとKVMは異なる基盤に向けて設計されているため、管理ツールも異なります。
Hyper-Vの管理には、Windows PowerShell CLIを使用できます。GUI付きの解決策を望む場合は、Windows Admin CenterまたはHyper-V Managerを使用することができます。
さらに、組織は、Microsoftが提供するネイティブな_Enterprise_-グレード管理ツール、System Center Virtual Machine Manager (VMM) for Hyper-Vから多くの利点を得ることができます。管理者は通常、便利で情報豊富なインフラストラクチャビューと拡張性機能のため、VMMをHyper-V環境を管理するために好みます。ただし、Virtual Machine Managerを使用するには専用のライセンスを購入する必要があります。
あなたはCLIだけでKVM管理タスクをすべて行うことができます。Hyper-VをPowerShell経由で行うのと同じです。しかし、KVMインフラストラクチャーを管理するためにグラフィックインターフェースを好む人は、Morpheus、virt-manager、Cloonixなどを試すことができます。他にもいろいろあります。
Hyper-VとKVMは重要な特徴を共に持っています:それは豊富なハードウェアの互換性リストで、素晴らしい柔軟性を提供します。
KVMでは、どのようなストレージ(直接接続されたストレージやネットワーク接続されたストレージを含む)を効果的に使用することができます。一方、Hyper-VはWindowsがサポートするどのようなストレージでも動作します。VMファイルをNASやネットワーク共有に保存する予定がある場合は、サーバーメッセージブロックプロトコル3.0を設定する必要があることを覚えておいてください。
メモリー割り当てのオプション
メモリー使用の柔軟性は、KVMとHyper-Vが共有するもう一つの利点です。どちらのハイパーバイザーも通常のメモリーやNUMA(非一貫的なメモリーアクセス)を同様に良く使用することができます。
しかし、KVMとHyper-Vの動的メモリー割り当てについての違いを指摘することが価値があります。Hyper-Vでは、動的メモリー機能により、仮想マシンは現在のVMのニーズに応じてメモリー使用量を調整することができます。ニーズは設定されたメモリーボリュームの限界を超えることはありません。動的メモリー割り当てを使用することで、管理者は1台のホスト上でより多くのVMを運用することができます。
KVMハイパーバイザはメモリーの超過割り当ても可能にしています。しかし、この機能の実装はHyper-Vとは多少異なっています。KVM仮想マシンはLinux OS下でホスト上で動作する個別のプロセスです。したがって、VMには事前に割り当てられたメモリーボリュームはありません。オペレーティングシステムは、仮想マシン間でメモリーを要求に基づいて分配します。簡単に言えば、KVM仮想化ソフトウェアは、必要に応じて各仮想マシンにメモリーブロックを割り当てます。
もしKVMホストが物理メモリー不足に直面した場合、システムは一部のメモリーページをスワップに送信します。RAMの自由容量はその後、需要に応じて増加し、ホストシステムのメモリーオーバーコミットを可能にします。
セキュリティ機能
KVMとHyper-Vの比較においてセキュリティ能力については、どちらのソリューションも機敏なセキュリティ機能を持っており、組織のデータと環境の保護を確実にするために使用できます。
KVMの場合、VMの隔離とセキュリティは2つのソリューションの機能に由来します。最初の1つはSELinux(セキュリティ強化Linux)で、仮想マシン周りにセキュリティ境界を設定します。sVirt(セキュア仮想化)は、ゲストVMのMAC(必須アクセス制御)セキュリティを可能にし、SELinuxの機能を追加し、仮想セキュリティに対する人間のエラーの影響を減らします。
Hyper-Vは、单一的な脆弱性があったノードより前に環境を保護するために仮想マシンを隔離することもできます。また、第2世代のHyper-V VMで利用可能なSecure Boot機能は、起動時に未許可のOS、ドライバーやファームウェアの実行を防止する助けとなります。Hyper-Vの追加のセキュリティ機能には、サブネット全体のトラフィック暗号化、Guarded Fabric(アンチマルウェアセキュリティモデル)、そして保護されたVMが含まれます。
ライブVM移行機能
KVMとHyper-Vの両方で利用可能な機能は、ライブマイグレーションです。この機能を使用すると、管理者はVMの操作を中断せずにVMを異なるサーバーに移動することができます。
ライブマイグレーションは、生産の継続性とサービスの可用性をサポートするために組織にとって役立ちます。たとえば、主要なバーチャル化ホストでの計画的なハードウェアメンテナンスが予定されている場合、重要なVMを第2のサーバーに移動することができます。このようにして、組織のワークフローや操作を中断せずにメンテナンスを実施することができます。
また、場合によっては、ホストにはVMを元々作成したときと同じくらいの十分なリソースがなくなることがあります。たとえば、VMが使用中に「大きく」なりすぎて、全体のホストのパフォーマンスに影響を与えることがあります。ホストパフォーマンスを最適化する最良の方法は、VMを停止せずに別のホストに移動するためにハイパーバイザーのライブマイグレーション機能を使用することです。
KVMとHyper-V間の変換
必要であれば、KVM仮想マシンをHyper-V環境で動作させるように変換したり、その逆もできます。以下はKVMとHyper-V間の変換に関するガイドです。
KVMからHyper-Vへの変換
KVM仮想マシンをHyper-V環境で使用可能なものに変換することは、以下の3ステップで行います:
- qemu-ingをインストール。
- KVM仮想マシンのディスクイメージをHyper-V形式に変換するには、以下のコマンドを使用します:
qemu-img.exe convert sourcefile.qcow2 -O vhdx -o subformat=dynamic destinationfile.vhdx
このコマンドでは、sourcefileはソースVMディスクファイル名であり、destinationfileは変換後に得たい新しいディスクファイル名です。
- Hyper-Vで新しい仮想マシンを作成し、変換済みのディスクイメージをアタッチします。
Hyper-VからKVMへの変換
Hyper-V VMをKVM環境に変換するには、以下を行います:
- 変換するHyper-V VMを停止します。それからVMを選択し、Hyper-V ManagerでExportをクリックします。
- VMファイルの格納先の宛先リポジトリを指定します。
- エクスポートされたVMのプロセッサコア、メモリ、MACを記録します。
- 対象の仮想マシンのVHDXファイルをKVM環境にコピーします。
- KVMホスト上でvirt-v2vをインストールします。
- 以下のコマンドを使用してVHDXをQCOW2に変換します:
sudo virt-v2v -i disk sourcefile.vhdx -o local -of qcow2 -os targetfile
- 変換が完了した後、ゲストOSに注意してください。
- KVM環境で新しい仮想マシンを作成するためにVMMを使用します。
- 既存のディスクイメージをインポートを選択し、次へをクリックします。
- vhdx-sdaファイルを見つけ、必要なOSを指定します。その後、次へを押します。
- 新しいVMの初期設定を完了します:メモリ、CPU、VM名を設定し、KVMのネットワーク設定を指定します。その後、適用をクリックします。
- MACなどの特定のオプションをここで設定します。その後、ウィンドウの上部からインストール開始を選択します。
コストの考慮
組織の予算は、IT環境に関するどの選択肢の基盤となり、KVM対Hyper-Vの決定も例外ではありません。価格については、KVMは明らかな利点を持っています:オープンソースのソリューションであり、無料で使用できます。また、管理ツールや機能モジュールも追加料金なしでダウンロードおよびインストールできます。Microsoft Hyper-Vモジュールも無料で利用できます。しかし、ニュアンスは、MicrosoftがHyper-V仮想環境を実行するためにWindows Serverをアップグレードすることを推奨していることです。
結論
KVMとHyper-Vの最終的な選択は、組織の特定のニーズと予算に依存します。Windows VMを使い慣れたエコシステムで実行する必要があり、プロプライエタリなサポートされたソリューションを手に入れるために資金を割り当てる覚悟がある場合は、Hyper-Vが適切なオプションです。一方、オープンソースのソリューションの設定と調整に追加の努力を惜しまない覚悟がある場合、KVMは管理、セキュリティ、拡張性、機能の面でほぼ同等の能力と経験を無料で提供できます。