LinuCレベル2 201試験の出題範囲「2.05.1 仮想マシンの仕組みとKVM」の技術的内容についての解説をまとめました。
重要度 3 概要 基本的な仮想マシンの仕組みについて理解し、KVMを導入して仮想マシンの実行環境を構築できる。 詳細 仮想マシンの基本について知っている。ホスト型とハイパーバイザー型(KVM, VirtualBox, Xen)コンピューターリソース(CPU、メモリ、ストレージ、ネットワーク)の仮想化KVMを導入し、仮想マシンが稼働するための環境構築および設定ができる。QEMU仮想化支援技術(vmxとsvm)/proc/cpuinfo, lscpuKVMモジュール(kvm-intelとkvm-amd)libvirtdvirt-managerネットワークの構成(bridge-utils)

仮想マシンの概要
仮想マシンは、一台の物理的なサーバーに対して複数のOSが使えるようにしたときの複数のOSがインストールされている仮想的なマシン(コンピュータ)のことです。
以下のLinuC公式サイトの記事が仮想マシンをわかりやすくまとめています。



ハイパーバイザーの概要
ハイパーバイザーの説明をLinuCの公式サイトから引用します。
コンピューティングにおける仮想化技術の一つに「仮想マシン」があります。仮想マシンは、物理的なサーバーと同等の機能・動作を再現(エミュレート)した仮想的なハードウェア環境のことです。この機能を実現するのが、「ハイパーバイザー」と呼ばれるソフトウェアです。
ハイパーバイザーは、ハードウェア上で直接動作する「Type1(ネイティブ型)」と、ハードウェアのOS(ホストOS)上で稼働するアプリケーションが仮想マシンを再現する「Type2(ホスト型)」の二種類に分けられます。代表的なものとしては以下があります。

ハイパーバイザーをサーバーにインストールし、ハイパーバイザー上で仮想マシンを複数ビルドすることでサーバーを仮想化して動作させます。
KVMの概要
KVMはLinuxカーネルの拡張モジュールとして動作するLinuxのハイパーバイザーです。
KVMは、Kernel-based Virtual Machineの略で、Linuxカーネルの拡張モジュールとして動作します。
CPUごとにモジュールが開発されていて
- kvm-intel(Intel社製CPU用)
- kvm-amd(AMD社製CPU用)
の二種類のカーネルモジュールが提供されています。

KVMのセットアップなどの詳細は以下のLinuC公式記事が参考になります。

Intel VT(Intel Virtualization Technology)やAMD-V(AMD Virtualization)
Intel VT(Intel Virtualization Technology)やAMD-V(AMD Virtualization)などは、CPUが持っている仮想化支援機能です。仮想化ソフトが担う一部の処理をCPUが担うことで仮想化処理を高速化させる特徴があります。
CPUが仮想化支援機能をサポートしているかどうかを調べるには、lscpu(エルエス シーピーユー)コマンドや「/proc/cpuinfo」ファイルを確認します。
$ lscpu
$ cat /proc/cpuinfo

「/proc/cpuinfo」ファイルを確認する場合は「flags」に”vmx”(Intel VT)または”svm”(AMD-V)があることをgrepコマンド等を使用して確認します。
$ cat /proc/cpuinfo | grep vmx
$ cat /proc/cpuinfo | grep svm
QEMUによるKVMの管理
QEMUはオープンソースのハードウェアエミュレータです。
QEMUは、ゲストOSからの入出力I/O(ディスク、ネットワーク)を仮想化する機能を提供するエミュレータです。KVMがメモリや仮想CPUを、QEMUがディスクやネットワークインターフェースなどの仮想ハードウェアを提供します。処理をそれぞれ分担することでパフォーマンスの向上を図っています。


参考資料



