Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Emma

「KVM vs QEMU」が誤解を招く質問である理由

「KVM vs QEMU」で検索すると、両者を競合する仮想化技術として扱ったフォーラムの議論や比較ガイドが多くヒットします。実際には、これらは代替品ではなく、同一の仮想化スタック内で連携して動作する相補的なコンポーネントです。

両者の関係を簡単に例えるなら、KVMはエンジン、QEMUは車体と考えてください。エンジンが動力を供給し、車体がそれを利用可能にします。

  • KVMはLinuxカーネルのコンポーネントで、ハードウェア支援仮想化を有効にし、仮想マシンが物理CPUに効率的にアクセスできるようにします。
  • QEMUはユーザー空間上で動作し、仮想マシンの作成・管理を行い、ハードウェアをエミュレートします。

両者が組み合わさることで、高速かつ柔軟な仮想化ソリューションが実現されます。

KVMとQEMUとは何か

KVMとQEMUの違いを理解するには、それぞれの役割を把握する必要があります。よく併用されますが、仮想化スタックの中で担う役割は異なります。

what is kvm and qemu in hypervisior

KVMとは

Kernel‑based Virtual Machine(KVM)は、Linuxカーネルに組み込まれたオープンソースの仮想化モジュールです。Linuxをハイパーバイザーとして機能させ、ハードウェア支援仮想化により仮想マシンを実行可能にします。

KVMはIntel VT‑xまたはAMD‑VといったCPU仮想化拡張機能に依存します。CPUとメモリリソースの仮想化に特化し、ゲストOSに対してネイティブに近いパフォーマンスを提供します。

QEMUとは

Quick Emulator(QEMU)は、ユーザー空間で動作するオープンソースのマシンエミュレーター兼仮想化ツールです。プロセッサ、ストレージデバイス、ネットワークインターフェース、入力デバイスなどのハードウェアコンポーネントをエミュレートすることで仮想マシンを作成・管理します。

KVMとは異なり、QEMUはソフトウェアのみで異なるCPUアーキテクチャをエミュレート可能です。例えばx86ホスト上でARM OSを実行できるため、クロスプラットフォーム開発やテストに適しています。

主な相違点一覧

以下の表はKVMとQEMUの主な違いをまとめたものです。

機能 KVM QEMU
種別 カーネル仮想化モジュール マシンエミュレーター
動作領域 Linuxカーネル空間 ユーザー空間
主な役割 CPU仮想化 ハードウェア・デバイスのエミュレーション
ハードウェアアクセラレーション あり オプション
アーキテクチャ間対応 限定的 強力
パフォーマンス 高い KVMなしでは低い
代表的な利用用途 本番環境での仮想化 テスト・エミュレーション

KVMとQEMUの連携動作

QEMUはソフトウェアエミュレーション単体で動作可能ですが、ハードウェア支援仮想化と比べるとパフォーマンスが大幅に低下します。本番環境では通常、QEMUはKVMと組み合わせて完全な仮想化スタックを構成します。QEMUが仮想マシンを作成・管理し、KVMがCPU実行を高速化してネイティブに近いパフォーマンスを実現します。

仮想化の処理フローは概ね以下の通りです。

  1. ゲストOS:仮想マシン内部で動作するOSが命令を発行します。
  2. QEMU(ユーザー空間):仮想ディスク、デバイスエミュレーション、ハードウェア設定を含め、仮想マシンを作成・管理します。
  3. KVM(カーネル空間):ハードウェア仮想化拡張機能を利用し、CPU命令を実行しメモリを効率的に管理します。
  4. 物理ハードウェア:ホストのCPUとメモリを使用してワークロードを実行します。

ゲストOSがディスクやネットワークインターフェースといった仮想ハードウェアにアクセスする際、QEMUがデバイスをエミュレートし、KVMがCPU実行を高速化します。この役割分担により、仮想マシンは柔軟性と高パフォーマンスを両立できます。

qemu‑kvm と qemu‑system‑x86_64 の違い

古いドキュメントやコミュニティフォーラムを読む際、多くのLinuxユーザーがqemu‑kvmqemu‑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とProxmoxの位置づけ

libvirtvirt‑manager、Proxmox、OpenStackといったツールはKVM/QEMUスタックの上位層に位置します。これらはKVMやQEMUを置き換えるものではなく、API、コマンドラインツール、GUIを提供することで仮想マシンのデプロイと管理を簡素化します。

ヒント: コマンドラインからQEMUを直接操作するのは複雑です。virt‑managerのようなツールは、裏側で必要なコマンドを生成しVM設定を自動化します。

役割分担

QEMUとKVMは仮想化処理の各部分をそれぞれ担うことで連携します。

QEMUの担当範囲:

  • 仮想ディスクデバイスおよびコントローラー
  • 仮想ネットワークインターフェース
  • BIOSおよびUEFIファームウェアのエミュレーション
  • 仮想マシンの作成と設定
  • ハードウェアおよびデバイスのエミュレーション

KVMの担当範囲:

  • ハードウェア支援によるCPU仮想化
  • ゲストCPU命令の直接実行
  • メモリの仮想化と管理

KVM vs QEMUのパフォーマンス:実際に何が変わるのか

KVMとQEMUのパフォーマンスを比較する際、両者は競合技術ではない点を理解する必要があります。パフォーマンスの差は、KVMとQEMUのどちらを選ぶかではなく、KVMによるハードウェアアクセラレーションが有効かどうかに依存します。

QEMUのパフォーマンス(KVM無効時)

KVMを使用しない場合、QEMUは完全にソフトウェアエミュレーションに依存します。内蔵のTiny Code Generator(TCG)により、実行時にゲストCPU命令をホスト向け命令に変換します。

メリット:

  • 複数のCPUアーキテクチャに対応しており、クロスプラットフォーム開発、テスト、デバッグに適しています。
  • ハードウェア仮想化が利用できない環境でもゲストOSを実行可能です。

デメリット:

  • ソフトウェアによる命令変換によりCPUオーバーヘッドが大きく発生します。
  • ハードウェア支援仮想化と比べパフォーマンスが大きく低下し、大半の本番ワークロードには不向きです。

KVMのパフォーマンス(ハードウェアアクセラレーション有効時)

KVMを有効にすると、Intel VT‑xまたはAMD‑V仮想化拡張機能を用いてCPU命令がホストプロセッサ上で直接実行されます。これにより仮想化のオーバーヘッドが大幅に削減され、ネイティブに近いパフォーマンスが得られます。

メリット:

  • 仮想化オーバーヘッドが小さく、ネイティブに近いCPUパフォーマンスを発揮します。
  • エンタープライズ向けワークロードやクラウド環境でリソースを効率的に利用できます。

デメリット:

  • ホストCPUがハードウェア仮想化をサポートしている必要があります。
  • アーキテクチャをまたいだエミュレーションには対応しません。例えばx86ホスト上でARMゲストを実行することはできません。

本番環境におけるQEMU+KVMのパフォーマンス

本番環境ではQEMUとKVMはほぼ常に組み合わせて使用されます。QEMUが仮想マシンの管理とハードウェアデバイスのエミュレーションを行い、KVMがCPUとメモリの仮想化を高速化します。

仮想マシンのパフォーマンスは環境の設定にも左右されます。主な要因は以下の通りです。

  • CPU割り当て:NUMAノードなどのホストのトポロジーに合わせて仮想CPUを配置し、スケジューリングのオーバーヘッドとレイテンシを削減します。
  • メモリ設定:メモリ消費量の多いワークロードでは必要に応じてHugePagesを使用し、メモリ管理の効率を向上させます。
  • VirtIOドライバー:完全エミュレートされたストレージ・ネットワークデバイスをVirtIO準仮想化ドライバーに置き換え、I/Oオーバーヘッドを抑えて処理能力を向上させます。

KVM/QEMU と VMware、VirtualBoxの比較

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が一般的に選択されます。

i2MigrationによるVM移行の簡素化

KVM/QEMUのワークロードを別プラットフォームへ移行したり、VMwareからLinuxベースのスタックへ統合したりする際、手動でエクスポートし長時間のダウンタイムを許容する必要はありません。クロスプラットフォーム移行に特化したツールを使用するのが安全な手段であり、そこで活躍するのがi2Migrationです。

i2MigrationはInfo2softが提供する、物理、仮想、クラウド環境をまたいでシステムとデータを移行するツールです。KVM、VMware、Hyper‑Vといったハイパーバイザー間の異種環境移行に対応するよう設計されています。主な機能は以下の通りです。

  • マシン全体移行:ブロックレベルとファイルレベルのレプリケーションを組み合わせ、本番ワークロードを停止させずにシステム全体を移行。P2V、V2V、ハイブリッドクラウドシナリオに対応。
  • レガシーOS対応:古いWindowsおよびLinuxバージョンでも移行を成功させ、混在環境を単一の仮想化スタックに統合する場面で有用です。
  • データベース移行:リドゥログ解析によりほぼリアルタイムでセマンティックレベルのレプリケーションを実行し、移行中のデータベースワークロードの整合性を維持します。
  • 効率的かつ安全な転送:圧縮、AES/SM4暗号化、中断再開転送に対応し、遠隔地への大規模移行を高速かつ安定的に実行します。

ハイパーバイザー間で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を実行できます。ただし、仮想マシンを手動で設定するのは複雑なため、多くの管理者がデプロイと管理を簡素化するためにlibvirtvirt‑managerなどのツールと共に使用しています。

まとめ

KVMとQEMUは競合する技術ではありません。KVMがカーネルレベルでCPU仮想化を処理し、QEMUがVMの実行に必要なデバイスとハードウェアをエミュレートします。

両者が組み合わさることで、直接操作する場合でもlibvirtvirt‑manager、Proxmox、OpenStackといったツール経由で操作する場合でも、Linux本番環境向けの大半の仮想化スタックの基盤が形成されます。

この関係を理解することで、QEMU/KVMがVMware、Hyper‑V、VirtualBoxと比較してどのような位置づけにあるかも明確になります。Linuxインフラストラクチャを活用している企業にとって柔軟で高パフォーマンスな選択肢です。プラットフォーム間の移行を予定している場合は、Info2softのi2Migrationが長時間のダウンタイムなしで環境をまたいだシステムおよびデータの移行を支援します。

概要は準備中です

関連記事

目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}