====== QEMU/KVM/libvirt ======
{{tag>qemu-kvm libvirt}}
RedHat Enterprise Linux 7(日本語)
* [[https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide|仮想化スタートガイド]]
* [[https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide|仮想化の導入および管理ガイド]]
RedHat Enterprise Linux 8(日本語)
* [[https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/configuring_and_managing_virtualization|仮想化の設定および管理]]
QEMU/KVM
* https://www.qemu.org/
* https://www.linux-kvm.org/
libvirt
* https://libvirt.org/
* https://libvirt.org/formatdomain.html
準仮想化ドライバ
* https://www.linux-kvm.org/page/Virtio
SPICE VMの画面表示、Windowsクライアントあり
* https://www.linux-kvm.org/page/SPICE
* http://spice-space.org/
===== 必要条件 =====
CPUの仮想化支援が有効になっていて、カーネルモジュールがロードされていること。
grep -E 'svm|vmx' /proc/cpuinfo
lsmod | grep kvm
===== インストール =====
* [[qemu_kvm_on_rocky8|Rocky Linux 8/AlmaLinux 8]]
* [[qemu_kvm_on_centos7|CentOS 7]]
* [[qemu_kvm_over_hyperv|QEMU/KVM over Hyper-V(Nested Virtualization)]]
=== 仮想化環境の設定確認 ===
virt-host-validate
=== ハイパーバイザの提供機能 ===
virsh capabilities
===== 仮想マシンの作成/変更 =====
* [[using_virt_install|virt-installのオプション]]
* [[install_kvm_guest_without_gui|コンソール環境でゲストOSをインストール]]
* [[clone_virt_guests|仮想マシンのクローン]]
* [[using_virt_resize|virt-resizeによるディスクサイズ拡張の実行例]]
===== ゲスト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 --
* https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/chap-qemu_guest_agent
* https://libvirt.org/formatdomain.html#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
refclock PHC /dev/ptp0 poll 2
...
systemctl restart chronyd
chronyc sources
* https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/chap-kvm_guest_timing_management#sect-KVM_guest_timing_management-Host-guest-time-sync
* https://opensource.com/article/17/6/timekeeping-linux-vms
===== 仮想マシンの操作 =====
virshのヘルプ
virsh help [コマンド]
仮想マシンの一覧
virsh list --all
実行中仮想マシンの一覧
virsh list
仮想マシンの起動
virsh start
仮想マシンのシャットダウン
virsh shutdown
仮想マシンの強制終了
virsh destroy
仮想マシンの削除
virsh undefine
rm /var/lib/libvirt/images/.qcow2
仮想マシンのコンソールに接続
virsh console
仮想マシンのIPアドレス表示
virsh domifaddr
仮想マシンのスナップショット作成
virsh snapshot-create-as --name <スナップショット名>
仮想マシンのスナップショット削除
virsh snapshot-delete --snapshotname <スナップショット名>
仮想マシンのスナップショット適用
virsh snapshot-revert --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 '' --live --config --parent-index 0
削除は
virsh net-update default delete ip-dhcp-host '' --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で接続 ====
複数ホストにまたがる仮想ネットワークを構築。
[[connect_kvm_hosts_with_vxlan|CentOS 7での例]]