Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

QEMU(キューエムユー)とは | 意味や読み方など丁寧でわかりやすい用語解説

QEMU(キューエムユー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

キューエムユー (キューエムユー)

英語表記

QEMU (キューエムユー)

用語解説

QEMUは、Quick EMUlatorの略称で、主にシステムエミュレータと仮想化ハイパーバイザという二つの役割を持つオープンソースの仮想化ソフトウェアである。システムエミュレータとしてのQEMUは、コンピュータシステム全体をソフトウェアで模倣する機能を提供する。これにより、ホストマシンとは異なるCPUアーキテクチャを持つゲストオペレーティングシステム(OS)を実行できる。例えば、Intel製CPUを搭載したPC上で、ARM製CPU向けに設計されたOSやアプリケーションを動作させることが可能になる。これは命令セットレベルでの変換を行うため、実行速度はネイティブ環境よりも遅くなるが、その高い汎用性が特徴である。

一方、仮想化ハイパーバイザとしてのQEMUは、ホストマシンとゲストOSが同じCPUアーキテクチャの場合に、CPUが持つ仮想化支援機能(Intel VT-xやAMD-Vなど)を利用して、高速な仮想化環境を提供する。このモードでは、QEMUはハードウェアの周辺機器(ネットワークカード、ディスクコントローラ、USBコントローラなど)のエミュレーションを担当し、CPUとメモリの仮想化はLinuxカーネルに統合されたKVM(Kernel-based Virtual Machine)といったカーネルモジュールに任せる。QEMUとKVMが連携することで、ほぼネイティブに近い性能で仮想マシンを実行できるため、現在のサーバー仮想化やデスクトップ仮想化の分野で広く利用されている。

QEMUの詳細な機能について説明する。システムエミュレータとしてのQEMUは、仮想マシン上で動作するゲストOSから見て、実際のハードウェアと全く同じように振る舞う仮想的なCPU、メモリ、ディスクコントローラ、ネットワークインターフェースコントローラ(NIC)、グラフィックカードといった様々なハードウェアコンポーネントをソフトウェア的に再現する。これにより、ゲストOSはホストマシンの物理ハードウェアについて何も知ることなく、自身が設計されたハードウェア環境上で動作しているかのように振る舞う。この機能は、特に異なるアーキテクチャ間でのソフトウェア開発やテストにおいて非常に有用である。例えば、組み込みシステム開発でARMベースのデバイス向けにソフトウェアを開発する際に、x86ベースのPC上でそのソフトウェアの動作検証を行える。

仮想化ハイパーバイザとしてのQEMUは、KVMなどのカーネル機能と連携することで真価を発揮する。このモードでは、QEMUはゲストOSのI/O処理(ディスクアクセスやネットワーク通信など)を仲介し、仮想デバイスとして提供する。例えば、仮想マシンがディスクにアクセスしようとすると、QEMUはその要求を受け取り、ホストOS上のファイル(ディスクイメージファイル)への書き込みや読み込みに変換して実行する。これにより、ゲストOSは物理的なディスクに直接アクセスしているかのように振る舞いながらも、その実態はホストOSのファイルシステム上にあるファイル操作として処理される。この柔軟性により、一つの物理マシン上で複数の仮想マシンを独立して動作させることが可能となり、リソースの効率的な利用やシステムの分離を実現する。

QEMUはまた、ライブマイグレーションやスナップショットといった高度な機能もサポートしている。ライブマイグレーションは、稼働中の仮想マシンを停止することなく、別の物理ホストマシンへ移行させる技術である。この機能は、システムメンテナンスや負荷分散の際に非常に重要であり、サービスを中断することなくインフラを柔軟に運用できる。スナップショット機能は、仮想マシンの状態を保存し、特定のポイントにロールバックすることを可能にする。これは開発やテスト、セキュリティ研究などでの作業効率を向上させる。

QEMUの最大のメリットは、その高い汎用性とオープンソースである点にある。様々なCPUアーキテクチャのエミュレーションをサポートし、多種多様なハードウェアを仮想化できるため、非常に幅広い用途に対応可能である。また、完全にオープンソースであるため、誰でも自由に利用、改変、再配布ができ、コミュニティによる活発な開発が継続されている。これにより、常に最新の技術動向に対応し、新しいハードウェアやOSのサポートが追加されている。デメリットとしては、エミュレーションモードでのパフォーマンスが低いこと、そして設定がやや複雑であることが挙げられる。特に初心者の場合、コマンドラインオプションが多岐にわたるため、初期設定に手間取ることがあるかもしれない。しかし、その強力な機能と柔軟性は、システム開発者や運用管理者にとって非常に価値の高いツールである。

関連コンテンツ