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