第 3 章 创建虚拟机
要在 RHEL 9 中创建虚拟机(VM),请使用命令行界面(CLI)或 RHEL 9 web 控制台。
3.1. 使用命令行界面创建虚拟机
要使用命令行在 RHEL 9 上创建虚拟机(VM),请使用 virt-install
工具。
先决条件
- 虚拟化已在您的主机系统中启用。
- 您有足够的系统资源来分配给虚拟机,如磁盘空间、RAM 或 CPU。根据虚拟机的预期任务和工作负载,推荐的值可能会有很大不同。
操作系统(OS)安装源可存在于本地或者网络中。可以是以下之一:
- 安装介质的 ISO 镜像
现有虚拟机安装的磁盘镜像
警告在 RHEL 9 中无法从主机 CD-ROM 或者 DVD-ROM 设备安装。当使用 RHEL 9 中的任何虚拟机安装方法时,如果选择了 CD-ROM 或者 DVD-ROM 作为安装源,则安装将失败。如需更多信息,请参阅红帽知识库。
另请注意,红帽只对 一组有限的客户机操作系统 提供支持。
- 可选:对于快速、简单的配置安装,可以使用 Kickstart 文件。
流程
要创建虚拟机并启动其操作系统安装,请使用 virt-install
命令以及以下强制参数:
-
--name
: 新机器的名称 -
--memory
:分配的内存量 -
--vcpus
:分配的虚拟 CPU 数 -
--disk
:分配的存储的类型和大小 -
--cdrom
或--location
:操作系统安装源的类型和位置
根据所选安装方法,所需选项和值可能会有所不同。请参阅以下命令的示例:
以下命令创建一个名为 demo-guest1 的虚拟机,它从本地存储在 /home/username/Downloads/Win10install.iso 文件中的 ISO 镜像安装 Windows 10 OS。此虚拟机还可分配 2048 MiB RAM 和 2 个 vCPU,为虚拟机自动配置 80 GiB qcow2 虚拟磁盘。
# virt-install \ --name demo-guest1 --memory 2048 \ --vcpus 2 --disk size=80 --os-variant win10 \ --cdrom /home/username/Downloads/Win10install.iso
以下命令创建一个名为 demo-guest2 的虚拟机,它使用 /home/username/Downloads/rhel9.iso 镜像从 live CD 运行 RHEL 9 OS。没有为这个虚拟机分配磁盘空间,因此在此会话中所做的更改不会被保留。另外,虚拟机被分配 4096 MiB RAM 和 4 个 vCPU。
# virt-install \ --name demo-guest2 --memory 4096 --vcpus 4 \ --disk none --livecd --os-variant rhel9.0 \ --cdrom /home/username/Downloads/rhel9.iso
以下命令创建一个名为 demo-guest3 的 RHEL 9 虚拟机,它连接到现有磁盘镜像 /home/username/backup/disk.qcow2。这和在不同的机器间物理地移动硬盘驱动器类似,因此 demo-guest3 可用的操作系统和数据由之前处理镜像的方式决定。另外,这个虚拟机还会分配 2048 MiB RAM 和 2 个 vCPU。
# virt-install \ --name demo-guest3 --memory 2048 --vcpus 2 \ --os-variant rhel9.0 --import \ --disk /home/username/backup/disk.qcow2
请注意,在导入磁盘镜像时,强烈建议使用
--os-variant
选项。如果没有提供,创建虚拟机的性能将会受到负面影响。以下命令创建一个名为 demo-guest4 的虚拟机,它从
http://example.com/OS-install
URL 安装。要使安装成功启动,URL 必须包含可正常工作的操作系统安装树。另外,操作系统使用 /home/username/ks.cfg kickstart 文件自动进行配置。此虚拟机还可分配 2048 MiB RAM、2 个 vCPU 和 160 GiB qcow2 虚拟磁盘。# virt-install \ --name demo-guest4 --memory 2048 --vcpus 2 --disk size=160 \ --os-variant rhel9.0 --location http://example.com/OS-install \ --initrd-inject /home/username/ks.cfg --extra-args="inst.ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8"
另外,如果您要在 ARM 64 主机上的 RHEL 9 上托管 demo-guest4,请包含以下行,以确保 kickstart 文件安装
kernel-64k
软件包:%packages -kernel kernel-64k %end
以下命令创建一个名为 demo-guest5 的虚拟机,它以纯文本模式从
RHEL9.iso
镜像文件安装,而无需图形。它将客户端控制台连接到串行控制台。虚拟机有 16384 MiB 内存、16 个 vCPU 和 280 GiB 磁盘。当通过慢速网络连接连接到主机时这种安装很有用。# virt-install \ --name demo-guest5 --memory 16384 --vcpus 16 --disk size=280 \ --os-variant rhel9.0 --location RHEL9.iso \ --graphics none --extra-args='console=ttyS0'
以下命令创建一个名为 demo-guest6 的虚拟机,其与 demo-guest5 有相同的配置,但位于 192.0.2.1 远程主机上。
# virt-install \ --connect qemu+ssh://root@192.0.2.1/system --name demo-guest6 --memory 16384 \ --vcpus 16 --disk size=280 --os-variant rhel9.0 --location RHEL9.iso \ --graphics none --extra-args='console=ttyS0'
以下命令创建一个名为 demo-guest-7 的虚拟机,它的配置与 demo-guest5 相同,但对于其存储,它使用 IBM Z DASD mediated 设备
mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8
,并为其分配设备号1111
。# virt-install \ --name demo-guest7 --memory 16384 --vcpus 16 --disk size=280 \ --os-variant rhel9.0 --location RHEL9.iso --graphics none \ --disk none --hostdev mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8,address.type=ccw,address.cssid=0xfe,address.ssid=0x0,address.devno=0x1111,boot-order=1 \ --extra-args 'rd.dasd=0.0.1111'
请注意,可以使用
virsh nodedev-list --cap mdev
命令来检索可用于安装的介质设备的名称。
验证
- 如果成功创建虚拟机,则使用虚拟机的图形控制台打开 virt-viewer 窗口并启动客户端操作系统安装。
故障排除
如果
virt-install
失败,且出现cannot find default network
错误:确定
libvirt-daemon-config-network
软件包已安装:# {PackageManagerCommand} info libvirt-daemon-config-network Installed Packages Name : libvirt-daemon-config-network [...]
验证
libvirt
默认网络是否处于活动状态,并且已配置为自动启动:# virsh net-list --all Name State Autostart Persistent -------------------------------------------- default active yes yes
如果没有,激活默认网络并将其设置为 auto-start:
# virsh net-autostart default Network default marked as autostarted # virsh net-start default Network default started
如果激活默认网络失败并显示以下错误,则代表还没有正确安装
libvirt-daemon-config-network
软件包。error: failed to get network 'default' error: Network not found: no network with matching name 'default'
要解决这个问题,请重新安装
libvirt-daemon-config-network
:# {PackageManagerCommand} reinstall libvirt-daemon-config-network
如果激活默认网络失败并显示类似如下的错误,则默认网络子网和主机上现有接口之间出现了冲突。
error: Failed to start network default error: internal error: Network is already in use by interface ens2
要解决这个问题,请使用
virsh net-edit default
命令,并将配置中的192.0.2.*
值改为主机上未被使用的子网。
其它资源
-
您系统上的
virt-install (1)
手册页 - 使用 web 控制台创建虚拟机并安装客户机操作系统
- 克隆虚拟机