ハードウェアリソースを効率よく活用できる仮想化技術。
中でもKVM(Kernel-based Virtual Machine)は、Linuxに最適化された仮想化技術で、Linuxカーネル 2.6.20以降から標準搭載されています。
本記事では、仮想化技術の中でもKVMに焦点を当て、その仕組みや機能について紹介します。
Unix/LinuxをVPSで利用するなら
ミライサーバー
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す
目次
KVMとは
KVMの概要
KVM (Kernel-based Virtual Machine)は、LinuxのKernelの一部として組み込まれているオープンソースの仮想化技術です。
KVMを使用することで、Linux をハイパーバイザーとして動作させ、複数の独立した仮想マシンを稼働させることができます。
また、この仮想マシンでは、Linuxに限らずWindowsなどさまざまなOSのマシンを稼働できます。
1台の物理サーバーを、複数の利用者で共用することができるため稼働効率がよく、またKVMがオープンソースで費用がかからないため、レンタルサーバー会社など多くのサービスで利用されています。
2022.11.03
Linuxでできること5選。初心者向けに具体例を交えて解説
Linuxは世界中で使われているOSです。しかし、初めてLinuxという単語を聞く人や、LinuxがOSであることを知っているものの...
KVMの仕組み
KVMは、物理サーバーのハードウェアの上で仮想マシンが動く「ハイパーバイザー」型です。
物理サーバー上で稼働するLinux Kernelの中でKVMが動作し、ゲストOS(仮想マシン)を稼働させます。
KVMでは、Intel VT-xやAMD-VなどのCPUに搭載されている仮想化支援機能を利用して、仮想化を実現します。
【KVMの構成】
KVMはLinux Kernelの中で動作するため、仮想マシンが利用するハードウェアはLinuxで対応しているものがそのまま利用できます。
KVMの特徴
KVMには、大きく以下の特徴があります。
- 仮想化支援機能に対応したCPUが必要
- 独自のハイパーバイザーを持たず、Linuxの機能をそのまま使える
それぞれの特徴について、詳しく見ていきます。
仮想化支援機能を有するCPUが必要
KVMは、ハードウェアそのものを仮想化し、ゲストOSには変更を加えずに仮想化を実現する「完全仮想化」を実現します。
これにより、Windowsなど直接OSに手を加えられないものも動作させることができます。
KVMでは、CPUの仮想化支援機能を使って完全仮想化を実現しています。
仮想化支援機能は、Intel VT-xやAMD-Vなどがあります。
例えば、Intel系CPUであれば、Core i3以上(Core i5やCore i7)、Xeonプロセッサなどが対応しています。
このため、KVMを使用する場合は、仮想化支援機能をもつCPUが必要です。
完全仮想化の実現には、他にもQEMUのようなソフトウェア(エミュレーター)を使用する方法もあります。
この場合、ゲストOSに手を加えられるため最適化による性能向上が期待できますが、ゲストOSに手を加えられないOSは動かせられません。
LinuxはOSをカスタマイズできるため、一部の処理のみ準仮想化で動かすなど、完全仮想化と準仮想化の両方のメリットが活用できるようになっています。
【KVMとQEMU両方を利用した構成】
独自のハイパーバイザーを持たず、Linuxの機能をそのまま使える
KVMはLinuxをハイパーバイザーとしているため、ハードウェアを制御する処理もLinuxのものがそのまま使えます。
つまり、ホストOSのLinuxに対応していれば、KVM上で稼働するゲストOSもそのハードウェアが利用できるということです。
特別なソフトウェアの準備なしに最新のLinuxを利用できるため、導入や管理の容易さというメリットは見逃せません。
また、OSが持つメモリ管理やプロセススケジューリングの機能など、Linuxの機能をそのまま利用できるにもかかわらず、KBM自体は非常にシンプルな構成という特徴もあります。
例えば同じく仮想化を実現するVMwareでは、独自のハイパーバイザーを使っているため、ハードウェアを利用する場合もそのハイパーバイザーに対応したデバイスドライバが必要です。
この点が、KVMと他の仮想化ソフトウェアとの大きな違いの1つです。
KVMの機能
KVMはLinuxに備わっているため、Linuxで利用できるものはKVMでも利用できます。
ここでは、KVMで利用できる機能について紹介します。
リソース制御
KVMでは、仮想マシンはLinuxプロセスとして動作するため、Linuxの機能により仮想マシンに割り当てるCPUやメモリなどのリソースを柔軟に配分できます。
例えば、cgroupの機能により、割り当てる仮想CPUの数を細かく制御できます。
また、メモリもLinuxの機能を利用して管理し、仮想マシンごとに占有メモリを割り当てることができます。
これにより、メモリ使用量が少ない仮想マシンがあれば、空いているメモリを他の仮想マシンに割り当てる、といった制御も可能です。
ストレージ管理
KVMでは、仮想マシンにディスク領域を割り当てる方法として2つの方法がとれます。
1つは事前に必要な領域を割り当てる方法で、ディスクのフラグメンテーションを防ぐことで高速に動作します。
もう1つはオンデマンドで割り当てる方法です。
これはある程度容量を事前に予約しておいて、必要になったら割り当てることで、ディスクリソースを有効に活用できます。
また、仮想マシンが利用できるストレージは、ローカルディスクの他NFSやiSCSI、DRBDを使ってネットワークミラーリングも利用可能です。
DRBDとは、複数の物理サーバーでディスクをリアルタイムにレプリケート(複製)し、ストレージの冗長化を実現するソフトウェアのことで、可用性を向上できます。
仮想ネットワーク(仮想ブリッジ)
KVMでは、仮想ネットワークとして仮想ブリッジが利用できます。
これにより、仮想マシンはホストの物理ネットワークインタフェースを共有でき、外部IPアドレスも最小ですみます。
また、仮想マシン間の通信も可能なほか、NATの利用も可能です。
例えば、今まで物理ホスト5台あったとすると、外部向けのIPアドレスが5つ、ネットワークインタフェースカード(NIC)やケーブルもそれぞれ5つ必要です。
この5台を全て仮想マシンにして1台の物理マシンに集約すれば、外部向けのIPアドレスは1つ、NICやケーブルは不要になります。
ライブマイグレーション
KVMは、稼働中の仮想マシンを他のホストに移動することができる「ライブマイグレーション」機能が備わっています。
例えば、ハードウェア障害やメンテナンスなどでホストを停止せざるを得ない場合、そのホスト上で動いている仮想マシンを止めることなく他のホストに移動できます。
まとめ
本記事では、Linuxに標準搭載されている仮想化技術「KVM」について解説しました。
「仮想化支援機能に対応したCPUが必要」という制限はあるものの、Linux標準機能であり、オープンソースであるため、誰でも簡単に利用できます。
また、完全自動化であるためさまざまなOSを稼働でき、Linuxの機能をそのまま利用できるという点も大きな特長です。
仮想化技術を実際に使ってみたいという方は、KVMを試してみてはいかがでしょうか。
2022.10.20
Linuxディストリビューションを比較!特徴や違いは?
世界中で広く使われているオープンソースOSといえば、Linuxですよね。Linuxとは厳密にはカーネル(OSの核)を指し、カーネルに...
2022.08.25
UnixとLinuxの違いとは。OSの特徴を初心者向けに解説
サーバー向けOS(オペレーティングシステム)として代表的なものにUnixとLinuxがあります。この2つは非常に似ていますが...
UnixやLinuxのVPSならミライサーバー
ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。
ミライサーバーのVPSでは、高速処理が可能なSSDを全プランに搭載しています。
OSは、UbuntuやDebian、AlmaLinuxなどの豊富なラインアップから選択することができます。
2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。