ProxmoxVEについて知識を深めるために、自分なりの言葉にして学習していきます。
なるべく誰でも分かりすく伝わるように・・・
以下を参考にしながら学習していきます。
- 書名:Proxmox VEサーバー仮想化 導入実践ガイド
https://book.impress.co.jp/books/1124101030
今回
- QEMU ゲストエージェント(qemu-guest-agent、以下ゲストエージェント)あり/なしで、Proxmox から見える情報や挙動がどう変わるかを確認する
- ゲストエージェントが「なくても VM は動くが、あると何が便利になるのか」を体感する
※VMのゲストOSはUbuntu Desktopです。
QEMU(キューエミュ)とは
- KVM/QEMU = Proxmox が VM を動かすために使っている“仮想マシンエンジン”
- Proxmox ホスト上で動いていて、Ubuntu や Windows などのゲストOSを実際に起動させている部分
- ユーザが直接 QEMU コマンドを叩かなくても、Proxmox が裏側で全部よしなにやってくれる
- QEMU ゲストエージェント(qemu-guest-agent)
- ゲストOS(Ubuntu)の中で動く 小さなサービス
- Proxmox からゲストOSに対して
- IP アドレスを教えてもらう
- きれいなシャットダウンをお願いする
- バックアップ前にファイルシステムを一瞬フリーズしてもらう などの「細かい会話」をするための 通訳役
手順
Proxmoxのゲストエージェントを有効化する
導入前の状態を確認する
- Proxmox 管理画面で、ゲストエージェントを入れたい VM を選択する
- [コンソール] をクリックして、Ubuntu にログインする
- Ubuntu のターミナルで
ip aを実行し、ゲストOSの IP アドレス をメモしておく
ゲストOSにqemu-guest-agent を入れる
- Ubuntuのターミナルで下記を実行
apt-get install qemu-guest-agent
systemctl start qemu-guest-agent
systemctl enable qemu-guest-agent
確認コマンド
systemctl status qemu-guest-agent
active (running)になっていればOK
- VMをシャットダウン→起動
ゲストエージェントをいれてないVMとの比較
IPアドレスの表示
シャットダウン時の比較
-
ゲストOS側からシャットダウン(Ubuntu Desktop のメニュー/poweroff)
- ゲストOS自身がプロセス終了・ファイルシステムのアンマウントなどを行ってから電源を切る、一番「普通の OS の落とし方」
- ラボ用途・台数が少ないうちは、この方法だけでも十分安全に運用できる
-
Proxmoxの「シャットダウンボタン」
-
ゲストエージェントなし
- Proxmox から VM に対して ACPI の「電源ボタン押下」イベント を送るだけ
- ゲストOS側が「電源ボタンでシャットダウンする」設定なら落ちるが、OS が固まっている場合などは反応しないこともある(最悪、強制停止になる)
-
ゲストエージェントあり
- Proxmox が QEMU ゲストエージェント経由で OS に直接シャットダウンを依頼 (イメージとしては systemctl poweroff をゲストOS側で実行してもらう感じ)
- 複数 VM をまとめて停止したり、バックアップ処理と連携して自動でシャットダウンさせたい場合に便利
-
#普段はゲストOS(Ubuntu Desktop)側からシャットダウンしておけば十分だけど、
将来的に Proxmox 側から一括で VM を停止したり、バックアップと連携させたい場合は、
QEMU ゲストエージェントを入れておくと安心して自動化しやすくなる
その他
バックアップ時の比較
バックアップ時にファイルシステムをフリーズさせる処理などにも QEMU ゲストエージェントが使われますが、これについては別の記事で整理する予定です。
VirtIO(ヴァーチオ)
VirtIO は、KVM / QEMU(Proxmox など)で動く VM 用に設計された共通の「仮想ハードウェア」の規格 です。
物理マシンを真似した古いデバイス(IDE ディスクや e1000 NIC など)ではなく、VM 専用のディスク/NIC を使うことで、
ディスク I/O やネットワークを「速く・無駄なく」動かすことを目指しています。
-
ホスト側(Proxmox / KVM / QEMU)
- VM に対して「VirtIO ディスク」「VirtIO NIC」などの 専用の仮想デバイス を見せる
-
ゲストOS側(Ubuntu / Windows など)
- その VirtIO デバイスと会話するためのドライバ(VirtIO ドライバ) が必要
- Linux(Ubuntu など)はカーネルに VirtIO ドライバを含んでいることが多く、
Proxmox 側で VirtIO を選ぶだけでそのまま使えるケースが多い - Windows は標準で VirtIO ドライバを持っていないため、
virtio-win.isoからドライバを追加インストールする必要がある
つまり、
ホスト側では「VM 向けの専用仮想ハード(VirtIO デバイス)」を用意し、
ゲストOS側ではその規格に対応した VirtIO ドライバでしゃべる
ゲストOSがWindowsの場合
※ ゲストOSを Windows にする場合は、別途ライセンスやボリューム契約などの前提条件が絡んでくるため、本記事では扱いません。
- QEMU ゲストエージェントは、Ubuntu のように apt install ... ではなく、Windows 用のインストーラ(MSI)を実行してインストール します。
Proxmox 側で「QEMU Guest Agent を有効化」する操作は同じですが、ゲストOS内での導入はコマンドではなく セットアップウィザードで行うイメージ です。 - Windowsの場合は、標準の ISO には VirtIO ドライバが入っていないため、virtio-win.iso を VM にマウントして、インストールウィザード中にドライバを追加インストールする必要があります。



