====== 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での例]]