QEMU/KVM/libvirt
RedHat Enterprise Linux 7(日本語)
RedHat Enterprise Linux 8(日本語)
QEMU/KVM
libvirt
準仮想化ドライバ
SPICE VMの画面表示、Windowsクライアントあり
必要条件
CPUの仮想化支援が有効になっていて、カーネルモジュールがロードされていること。
grep -E 'svm|vmx' /proc/cpuinfo lsmod | grep kvm
インストール
仮想化環境の設定確認
virt-host-validate
ハイパーバイザの提供機能
virsh capabilities
仮想マシンの作成/変更
ゲストOSの設定
QEMUゲストエージェントのインストール
ゲストOSにqemu-guest-agent
をインストールするだけ。
yum install qemu-guest-agent systemctl enable qemu-guest-agent --now
ホストからゲストの状態を確認。
virsh dumpxml centos7-origin | xpath domain/devices/channel
出力でorg.qemu.guest_agent.0
がstate="connected"
ならOK。
Found 1 nodes: -- NODE -- <channel type="unix"> <source mode="bind" path="/var/lib/libvirt/qemu/channel/target/domain-28-centos7-origin/org.qemu.guest_agent.0" /> <target type="virtio" name="org.qemu.guest_agent.0" state="connected" /> <alias name="channel0" /> <address type="virtio-serial" controller="0" bus="0" port="1" /> </channel>
仮想PTPハードウェアクロックによるホストとの時刻同期
ゲストがCentOS 7.5以降(Kernel 4.11以降)なら、仮想PTPでNTPより正確にホストと時刻同期できる。
modprobe ptp_kvm ls /dev/ptp* echo ptp_kvm > /etc/modules-load.d/ptp_kvm.conf
vi /etc/chrony.conf
- /etc/chrony.conf
refclock PHC /dev/ptp0 poll 2 ...
systemctl restart chronyd chronyc sources
仮想マシンの操作
virshのヘルプ
virsh help [コマンド]
仮想マシンの一覧
virsh list --all
実行中仮想マシンの一覧
virsh list
仮想マシンの起動
virsh start <VM名>
仮想マシンのシャットダウン
virsh shutdown <VM名>
仮想マシンの強制終了
virsh destroy <VM名>
仮想マシンの削除
virsh undefine <VM名> rm /var/lib/libvirt/images/<VM名>.qcow2
仮想マシンのコンソールに接続
virsh console <VM名>
仮想マシンのIPアドレス表示
virsh domifaddr <VM名>
仮想マシンのスナップショット作成
virsh snapshot-create-as <VM名> --name <スナップショット名>
仮想マシンのスナップショット削除
virsh snapshot-delete <VM名> --snapshotname <スナップショット名>
仮想マシンのスナップショット適用
virsh snapshot-revert <VM名> --snapshotname <スナップショット名>
仮想ネットワーク
デフォルトNATネットワークのDHCP設定
デフォルトNATネットワークはブリッジインタフェースvirbr0
を使用。
192.168.122.1:53
でLISTENしているdnsmasqがDHCPサーバ。
IPアドレスの割り当て範囲は192.168.122.2
から192.168.122.254
、デフォルトのリース期間は一時間。
DNSレコードとも連携していて、DHCPのオプションでDNSサーバも公告している。
ネットワークの状態確認、設定の表示
virsh net-list virsh net-dumpxml default
リース状態の表示
virsh net-dhcp-leases default
リース状態は/var/lib/libvirt/dnsmasq/virbr0.status
に保存されている。
固定リースの追加
MACアドレスが52:54:00:c6:f6:57
の仮想マシンにIPv4アドレス192.168.122.200
を固定で割り当てる。
virsh net-update default add-last ip-dhcp-host '<host mac="52:54:00:c6:f6:57" ip="192.168.122.200"/>' --live --config --parent-index 0
削除は
virsh net-update default delete ip-dhcp-host '<host mac="52:54:00:c6:f6:57" ip="192.168.122.200"/>' --live --config --parent-index 0
virsh net-edit
でも追加削除できるが、net-destroy
とnet-start
で仮想ネットワークの再起動が必要になる。
参考: https://jamielinux.com/docs/libvirt-networking-handbook/appendix/dhcp-host-entries.html
2台のホストをOpen vSwitch無しのVXLANで接続
複数ホストにまたがる仮想ネットワークを構築。