articles:qemu_kvm

QEMU/KVM/libvirt

CPUの仮想化支援が有効になっていて、カーネルモジュールがロードされていること。

grep -E 'svm|vmx' /proc/cpuinfo
lsmod | grep kvm

仮想化環境の設定確認

virt-host-validate

ハイパーバイザの提供機能

virsh capabilities

ゲスト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.0state="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>

ゲストが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ネットワークはブリッジインタフェース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-destroynet-startで仮想ネットワークの再起動が必要になる。

参考: https://jamielinux.com/docs/libvirt-networking-handbook/appendix/dhcp-host-entries.html

複数ホストにまたがる仮想ネットワークを構築。

CentOS 7での例

  • 最終更新: 2023-04-04 06:27
  • by nabium