KVM(Kernel-based Virtual Machine)
基礎
完全仮想化技術のひとつ
- 1 つの物理サーバのハードウェア全般を抽象化し、そのうえで OS を動作させる
- OS は自分が仮想環境上にあることを認識しない
仮想化ソフトの一分機能しか持っていないため、QEMU というソフトウェアと併用
- KVM を利用して QEMU 上で動作するゲスト OS のプログラムを直接物理 CPU で可動できるようになるため、ゲスト OS の実行が高速化される
- QEMU のデメリットを解消
- KVM を利用して QEMU 上で動作するゲスト OS のプログラムを直接物理 CPU で可動できるようになるため、ゲスト OS の実行が高速化される
注意
- 仮想化支援機構をもつ CPU でしか利用不可
- 例
- Intel VT-x
- AMD-V
virtio
- 仮想環境向けデバイスドライバ
- 仮想化ソフトによるデバイスエミュレーション処理をバイパスして、ホスト OS のドライバに接続する機能を提供
- => エミュレーション処理が省略されて処理が高速
- ブロック入出力用ドライバ
virtio-blk
- ネットワークドライバ
virtio-net
virt-manager 実行すると文字化けする
# yum install "vlgothic-p-fonts"
構築
- カーネルパラメータ net.ipv4.ip_forward を 1 に設定
Utility
QEMU guest agent (qemu-ga)
ホスト上からゲスト OS の情報を取得
プロセス
root 12108 0.0 0.1 25044 892 ? Ss 11月07 0:00 /usr/bin/qemu-ga --method=virtio-serial --path=/dev/virtio-ports/org.qemu.guest_agent.0 --blacklist=guest-file-open,guest-file-close,guest-file-read,guest-file-write,guest-file-seek,guest-file-flush,guest-exec,guest-exec-status -F/etc/qemu-ga/fsfreeze-hook
IP アドレスの取得
$ virsh qemu-agent-command your-domain-name '{"execute":"guest-network-get-interfaces"}'