最佳实践

概述

这里的最佳实践,主要是使用 Libvirt 工具集对虚拟机的全生命周期进行管理。比如创建、修改、删除虚拟机。

最常用的工具是 virt-install、virsh 命令

通过 libvirt 远程管理虚拟机

通过 TCP 连接

参考:

systemctl stop libvirtd.service

/etc/libvirt/libvirtd.conf 文件中添加 auth_tcp="none"

让 libvirtd 监听本地 TCP 端口

  • systemctl enable libvirtd-tcp.socket --now

systemctl start libvirtd.service

最后使用 virsh -c qemu+tcp://192.168.1.66/system 即可连接到远程 libvirtd

通过 SSH 连接

virsh -c qemu+ssh://root@192.168.1.166/system

配置URI别名

为了简化管理员的工作,可以在 libvirt 客户端配置文件中设置 URI 别名。对于 root 用户,配置文件为 /etc/libvirt/libvirt.conf;对于任何非特权用户,配置文件为 $XDG_CONFIG_HOME/libvirt/libvirt.conf。在此文件中,可以使用以下语法来设置别名

uri_aliases = [
  "hail=qemu+ssh://root@hail.cloud.example.com/system",
  "sleet=qemu+ssh://root@sleet.cloud.example.com/system",
]

URI 别名应该是由字符 a-Z0-9_- 组成的字符串。 = 后面可以是任何 libvirt URI 字符串,包括任意 URI 参数。 URI 别名将应用于任何打开 libvirt 连接的应用程序,除非它已显式地将 VIR_CONNECT_NO_ALIASES 参数传递给 virConnectOpenAuth。如果传入的 URI 包含允许的别名字符集之外的字符,则不会尝试别名查找。

创建虚拟机

详见 virt-install 命令中的应用示例

为 Domain 添加/移除磁盘

设定几个变量

# 将要操作的虚拟机
export DOMAIN="tj-test-common-kvm"
# 将要附加的存储设备
export SOURCE_DEVICE="/var/lib/libvirt/images/test-data.qcow2"
export TARGET_DEVICE="vdb"

先创建一个 qcow2 文件,然后使用这个文件进行测试

  • qemu-img create -f qcow2 -o size=10G ${SOURCE_DEVICE}

为 tj-test-common-kvm 添加一块磁盘,使用 /var/lib/libvirt/images/test-data.qcow2 文件

virsh attach-disk ${DOMAIN} ${SOURCE_DEVICE} \
--driver qemu --subdriver qcow2 \
--target ${TARGET_DEVICE} --targetbus virtio \
--cache none \
--persistent

将会生成如下 xml

    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/var/lib/libvirt/images/test-data.qcow2'/>
      <target dev='vdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
    </disk>

将 tj-test-common-kvm 虚拟机中的 vdb 设备分离

  • virsh detach-disk ${DOMAIN} ${TARGET_DEVICE} --persistent

为 Domain 设置引导设备

编辑 xml 文件,修改 boot 元素的 dev 属性为 cdrom,从硬盘启动就是 hd。

  <os>
    <type arch='x86_64' machine='pc-q35-6.2'>hvm</type>
    <boot dev='cdrom'/>
  </os>

为 Domain 设置 CDROM

编辑 xml 文件,指定 source 元素的 file 属性。若不存在 source 元素,则手动添加即可。

    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/iso/iKuai8_x64_3.7.6_Build202309081651.iso'/>
      <target dev='sda' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>