KVM(ケーブイエム)とは | 意味や読み方など丁寧でわかりやすい用語解説

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

作成日: 更新日:

読み方

日本語表記

ケーブイエム (ケイブイエム)

英語表記

KVM (ケイブイエム)

用語解説

KVMはKernel-based Virtual Machineの略称であり、Linuxオペレーティングシステム(OS)のカーネルを、仮想化を実現するためのハイパーバイザーとして機能させるためのソフトウェア技術である。具体的には、Linuxカーネルにロードされるモジュール群として提供され、物理的なコンピュータ(ホストマシン)上で、複数の独立した仮想マシン(ゲストマシン)を動作させることを可能にする。KVMは、物理的なハードウェアリソースを仮想化し、各仮想マシンにCPU、メモリ、ストレージなどを割り当てる役割を担う。この技術はオープンソースソフトウェアとして開発されており、誰でも無償で利用できる。その高いパフォーマンスと安定性から、小規模なサーバー集約から、OpenStackに代表されるような大規模なクラウドコンピューティング基盤まで、幅広い分野で採用されている。KVMはLinuxカーネルに統合されているため、多くの主要なLinuxディストリビューションに標準で組み込まれており、Linux環境において最も一般的な仮想化ソリューションの一つとなっている。

KVMの仕組みを理解する上で重要な点は、それがLinuxカーネルの一部として動作するということである。従来の仮想化ソフトウェアの多くが、ホストOS上で動作する一つのアプリケーションであったり、あるいは独自のOSとして動作するものであったのに対し、KVMはLinuxカーネルそのものをハイパーバイザーに変貌させる。これにより、Linuxカーネルが本来持っているメモリ管理、プロセススケジューリング、デバイスドライバといった成熟した機能を、仮想化環境の管理にそのまま活用できる。このアーキテクチャは、KVMに高い効率性と安定性をもたらす要因となっている。KVMの性能を支えるもう一つの核となる技術が、CPUに搭載されているハードウェア仮想化支援機能の活用である。Intel社のIntel VT(VT-x)やAMD社のAMD-Vといった機能がこれにあたる。KVMはこれらの機能を直接利用することで、仮想マシン上で実行される命令の多くを、ホストOSを介さずに物理CPUで直接処理させる。これにより、ソフトウェアによるエミュレーションで発生するオーバーヘッドを大幅に削減し、仮想マシンはネイティブに近いパフォーマンスで動作することが可能となる。したがって、KVMを利用するためには、CPUがこれらのハードウェア仮想化支援機能をサポートしていることが前提条件となる。

ただし、KVMが単独で担当するのは、主にCPUとメモリの仮想化処理である。ディスク、ネットワークインターフェース、グラフィックカードといったI/Oデバイスの仮想化(エミュレーション)は、QEMUという別のオープンソースソフトウェアと連携して実現するのが一般的である。QEMUは元々、完全なシステムエミュレータとして開発されたソフトウェアだが、KVMと組み合わせることで、KVMが高速なCPU・メモリ実行を担い、QEMUが多様なハードウェアデバイスのエミュレーションを担うという、効率的な役割分担が成立する。この「KVM/QEMU」という組み合わせが、今日のKVM環境の事実上の標準となっている。さらに、VirtIOと呼ばれる準仮想化ドライバをゲストOSにインストールすることで、I/O性能を飛躍的に向上させることもできる。これは、ゲストOSが自身が仮想環境で動作していることを認識し、ハイパーバイザーと最適化された通信を行うための専用ドライバである。KVMの大きな利点として、オープンソースであることに起因する柔軟性とコスト効率が挙げられる。特定のベンダーに依存することなくシステムを構築でき、ライセンス費用も発生しない。Linuxカーネルを基盤としているため、Linuxがサポートする膨大な種類のハードウェア上で動作し、既存のLinux環境の知識やツールを活かした運用が可能である。管理面では、libvirtという共通のAPIライブラリを介して、コマンドラインツール(virsh)やグラフィカルな管理ツール(Virtual Machine Managerなど)から仮想マシンを操作できる。このlibvirtは、KVMだけでなくXenやVMwareなど他のハイパーバイザーもサポートしており、管理の一元化に貢献する。

KVMは、今日のITインフラにおいて極めて重要な役割を果たしている。企業のデータセンターでは、物理サーバーのリソースを有効活用するためのサーバー仮想化基盤として広く利用されている。また、Google Cloud PlatformやAmazon Web Servicesといった巨大なパブリッククラウドサービスの基盤技術としても活用されていると言われている。さらに、開発者がアプリケーションの開発やテストを行うための独立した環境を迅速に提供する手段としても不可欠である。コンテナ技術の普及に伴い、コンテナをKVMベースの軽量仮想マシン内で実行し、セキュリティと分離性を強化するような新しい利用形態も登場している。このように、KVMはLinuxカーネルの堅牢性とオープンソースの柔軟性を両立させた、現代の仮想化技術を代表する存在であると言える。