Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
「KVM vs QEMU」で検索すると、両者を競合する仮想化技術として扱ったフォーラムの議論や比較ガイドが多くヒットします。実際には、これらは代替品ではなく、同一の仮想化スタック内で連携して動作する相補的なコンポーネントです。
両者の関係を簡単に例えるなら、KVMはエンジン、QEMUは車体と考えてください。エンジンが動力を供給し、車体がそれを利用可能にします。
両者が組み合わさることで、高速かつ柔軟な仮想化ソリューションが実現されます。
KVMとQEMUの違いを理解するには、それぞれの役割を把握する必要があります。よく併用されますが、仮想化スタックの中で担う役割は異なります。
Kernel‑based Virtual Machine(KVM)は、Linuxカーネルに組み込まれたオープンソースの仮想化モジュールです。Linuxをハイパーバイザーとして機能させ、ハードウェア支援仮想化により仮想マシンを実行可能にします。
KVMはIntel VT‑xまたはAMD‑VといったCPU仮想化拡張機能に依存します。CPUとメモリリソースの仮想化に特化し、ゲストOSに対してネイティブに近いパフォーマンスを提供します。
Quick Emulator(QEMU)は、ユーザー空間で動作するオープンソースのマシンエミュレーター兼仮想化ツールです。プロセッサ、ストレージデバイス、ネットワークインターフェース、入力デバイスなどのハードウェアコンポーネントをエミュレートすることで仮想マシンを作成・管理します。
KVMとは異なり、QEMUはソフトウェアのみで異なるCPUアーキテクチャをエミュレート可能です。例えばx86ホスト上でARM OSを実行できるため、クロスプラットフォーム開発やテストに適しています。
以下の表はKVMとQEMUの主な違いをまとめたものです。
| 機能 | KVM | QEMU |
|---|---|---|
| 種別 | カーネル仮想化モジュール | マシンエミュレーター |
| 動作領域 | Linuxカーネル空間 | ユーザー空間 |
| 主な役割 | CPU仮想化 | ハードウェア・デバイスのエミュレーション |
| ハードウェアアクセラレーション | あり | オプション |
| アーキテクチャ間対応 | 限定的 | 強力 |
| パフォーマンス | 高い | KVMなしでは低い |
| 代表的な利用用途 | 本番環境での仮想化 | テスト・エミュレーション |
QEMUはソフトウェアエミュレーション単体で動作可能ですが、ハードウェア支援仮想化と比べるとパフォーマンスが大幅に低下します。本番環境では通常、QEMUはKVMと組み合わせて完全な仮想化スタックを構成します。QEMUが仮想マシンを作成・管理し、KVMがCPU実行を高速化してネイティブに近いパフォーマンスを実現します。
仮想化の処理フローは概ね以下の通りです。
ゲストOSがディスクやネットワークインターフェースといった仮想ハードウェアにアクセスする際、QEMUがデバイスをエミュレートし、KVMがCPU実行を高速化します。この役割分担により、仮想マシンは柔軟性と高パフォーマンスを両立できます。
古いドキュメントやコミュニティフォーラムを読む際、多くのLinuxユーザーがqemu‑kvmとqemu‑system‑x86_64の違いに戸惑います。
qemu‑system‑x86_64はx86_64システム向けの標準QEMUバイナリです。-enable‑kvmや-accel kvmなどのオプションでKVMアクセラレーションを有効にしない限り、既定ではソフトウェアエミュレーションで動作します。
歴史的にqemu‑kvmはKVMサポートをQEMUに統合した独立プロジェクトでした。現在のほとんどのLinuxディストリビューションではKVMサポートがQEMU本体に同梱されており、qemu‑kvmはKVMを有効にしたqemu‑system‑x86_64へのシンボリックリンクまたはラッパーとなっています。
libvirt、virt‑manager、Proxmox、OpenStackといったツールはKVM/QEMUスタックの上位層に位置します。これらはKVMやQEMUを置き換えるものではなく、API、コマンドラインツール、GUIを提供することで仮想マシンのデプロイと管理を簡素化します。
virt‑managerのようなツールは、裏側で必要なコマンドを生成しVM設定を自動化します。QEMUとKVMは仮想化処理の各部分をそれぞれ担うことで連携します。
QEMUの担当範囲:
KVMの担当範囲:
KVMとQEMUのパフォーマンスを比較する際、両者は競合技術ではない点を理解する必要があります。パフォーマンスの差は、KVMとQEMUのどちらを選ぶかではなく、KVMによるハードウェアアクセラレーションが有効かどうかに依存します。
KVMを使用しない場合、QEMUは完全にソフトウェアエミュレーションに依存します。内蔵のTiny Code Generator(TCG)により、実行時にゲストCPU命令をホスト向け命令に変換します。
メリット:
デメリット:
KVMを有効にすると、Intel VT‑xまたはAMD‑V仮想化拡張機能を用いてCPU命令がホストプロセッサ上で直接実行されます。これにより仮想化のオーバーヘッドが大幅に削減され、ネイティブに近いパフォーマンスが得られます。
メリット:
デメリット:
本番環境ではQEMUとKVMはほぼ常に組み合わせて使用されます。QEMUが仮想マシンの管理とハードウェアデバイスのエミュレーションを行い、KVMがCPUとメモリの仮想化を高速化します。
仮想マシンのパフォーマンスは環境の設定にも左右されます。主な要因は以下の通りです。
KVM/QEMU、VMware ESXi、Hyper‑V、VirtualBoxはいずれも仮想マシンを実行できますが、アーキテクチャ、パフォーマンス、利用シナリオが異なります。
| プラットフォーム | ハイパーバイザー種別 | 最適な用途 | 主な特徴 |
|---|---|---|---|
| KVM/QEMU | タイプ1(Linuxベース) | Linux本番サーバー、クラウドプラットフォーム | オープンソース、ネイティブに近いパフォーマンス、高い柔軟性 |
| VMware ESXi | タイプ1 | エンタープライズデータセンター | 成熟したエコシステム、高度な管理機能、商用ライセンス |
| Hyper‑V | タイプ1 | Windows環境 | Windows ServerおよびActive Directoryと強固に統合 |
| VirtualBox | タイプ2 | デスクトップ向け開発・テスト | 使いやすい、クロスプラットフォーム、パフォーマンスは低め |
VMware ESXiやHyper‑Vと比較すると、KVM/QEMUはLinuxに直接統合されたオープンソースの仮想化スタックです。プロプライエタリなライセンスコストをかけずに高パフォーマンスを求めるクラウドプロバイダーや企業で広く採用されています。
VirtualBoxは用途が異なります。ホスト型ハイパーバイザーであり、パフォーマンスよりも使いやすさを優先しているため、本番ワークロードではなく開発、テスト、学習に適しています。
Linuxベースの仮想化インフラストラクチャを構築する組織では、ハードウェア支援仮想化、柔軟性、ネイティブに近いパフォーマンスを兼ね備えるKVM/QEMUが一般的に選択されます。
KVM/QEMUのワークロードを別プラットフォームへ移行したり、VMwareからLinuxベースのスタックへ統合したりする際、手動でエクスポートし長時間のダウンタイムを許容する必要はありません。クロスプラットフォーム移行に特化したツールを使用するのが安全な手段であり、そこで活躍するのがi2Migrationです。
i2MigrationはInfo2softが提供する、物理、仮想、クラウド環境をまたいでシステムとデータを移行するツールです。KVM、VMware、Hyper‑Vといったハイパーバイザー間の異種環境移行に対応するよう設計されています。主な機能は以下の通りです。
ハイパーバイザー間でVMを移行する場合も、併せてデータベースを移行する場合も、i2Migrationは長時間のダウンタイムなしで移行を実現します。
Info2softはデータレジリエンス向けの他のツールも提供しています。移行後の継続的な保護には、i2Availabilityがディザスタリカバリ向けのリアルタイムレプリケーションを提供し、i2Backupが仮想・物理環境を対象とした集中バックアップを実現します。
Q1:KVMとQEMUは同じものですか?
いいえ。KVMはハードウェア支援仮想化を提供するLinuxカーネルの仮想化モジュールであり、QEMUは仮想マシンを作成・管理しハードウェアをエミュレートするユーザー空間のアプリケーションです。
両者は別個の技術であり、通常は単一の仮想化スタックとして連携して動作します。
Q2:QEMUはKVMなしで動作できますか?
はい。QEMUはKVMを使用せず、完全にソフトウェアエミュレーションモードで動作可能です。ただし、すべてのゲストCPU命令をソフトウェアで変換する必要があるため、ハードウェアアクセラレーションを有効にした場合と比べてパフォーマンスが大幅に低下します。
Q3:KVMはQEMUなしで動作できますか?
技術的には可能ですが、単体では動作しません。KVMは仮想マシンを作成・管理するためのユーザー空間アプリケーションを必要とします。
KVMカーネルモジュールを利用できる仮想化ツールは他にも存在しますが、QEMUが圧倒的に広く使用されています。
Q4:KVMはタイプ1ハイパーバイザーですか、タイプ2ハイパーバイザーですか?
KVMはLinuxカーネルに組み込まれ、ハードウェア支援仮想化により仮想マシンを実行するため、一般的にタイプ1ハイパーバイザーとみなされます。
Linux自体がホストOSとして動作し続ける点からハイブリッド方式と記述されることもありますが、実務上は広くタイプ1ハイパーバイザーに分類されます。
Q5:qemu‑kvm と qemu‑system‑x86_64 の違いは何ですか?
qemu‑system‑x86_64はx86_64システム上で仮想マシンを実行するための標準QEMUバイナリです。最新のほとんどのLinuxディストリビューションにおいて、qemu‑kvmはKVMアクセラレーションを有効にしてqemu‑system‑x86_64を起動するシンボリックリンクまたはラッパーに過ぎません。
Q6:KVMとQEMUを使用するためにlibvirtは必要ですか?
いいえ。libvirtを使用せず、コマンドラインから直接KVMおよびQEMUを実行できます。ただし、仮想マシンを手動で設定するのは複雑なため、多くの管理者がデプロイと管理を簡素化するためにlibvirtをvirt‑managerなどのツールと共に使用しています。
KVMとQEMUは競合する技術ではありません。KVMがカーネルレベルでCPU仮想化を処理し、QEMUがVMの実行に必要なデバイスとハードウェアをエミュレートします。
両者が組み合わさることで、直接操作する場合でもlibvirt、virt‑manager、Proxmox、OpenStackといったツール経由で操作する場合でも、Linux本番環境向けの大半の仮想化スタックの基盤が形成されます。
この関係を理解することで、QEMU/KVMがVMware、Hyper‑V、VirtualBoxと比較してどのような位置づけにあるかも明確になります。Linuxインフラストラクチャを活用している企業にとって柔軟で高パフォーマンスな選択肢です。プラットフォーム間の移行を予定している場合は、Info2softのi2Migrationが長時間のダウンタイムなしで環境をまたいだシステムおよびデータの移行を支援します。