工具:libvirt 和 virsh/virt-manager¶
先决条件¶
验证 libvirt 默认网络是否正在运行¶
在通过 libvirt 启动虚拟机之前,请验证 libvirt 的 default 网络已启动。此网络必须处于活动状态,虚拟机才能连接到网络。启动此网络将创建一个 Linux 网桥(通常称为 virbr0)、iptables 规则和作为 DHCP 服务器的 dnsmasq 进程。
要验证 libvirt 的 default 网络是否已启用,请使用 virsh net-list 命令并验证 default 网络是否处于活动状态
# virsh net-list
Name State Autostart
-----------------------------------------
default active yes
如果网络未激活,请通过以下方式启动它
# virsh net-start default
使用 virt-manager X11 GUI¶
如果您计划在可以运行 X11 应用程序的机器上创建虚拟机镜像,最简单的方法是使用 virt-manager GUI,它可以在基于 Fedora 和基于 Debian 的系统上作为 virt-manager 软件包安装。此 GUI 包含一个嵌入式 VNC 客户端,可让您查看并与客户机的图形控制台进行交互。
如果您在无头服务器上构建镜像,并且您的本地机器上有一个 X 服务器,您可以使用 ssh X11 转发来启动 virt-manager 以访问 GUI。由于 virt-manager 直接与 libvirt 交互,您通常需要 root 权限才能访问它。如果您可以直接以 root 身份(或具有与 libvirt 交互权限的用户)通过 ssh 登录,请执行
$ ssh -X root@server virt-manager
如果您用于 ssh 登录服务器的帐户没有运行 libvirt 的权限,但具有 sudo 权限,请执行
$ ssh -X user@server
$ sudo virt-manager
注意
传递给 ssh 的 -X 标志将启用通过 ssh 的 X11 转发。如果这不起作用,请尝试将其替换为 -Y 标志。
单击左上角的 创建新虚拟机 按钮,或转到 。然后,按照说明操作。
您将看到一系列对话框,允许您指定有关虚拟机的信息。
注意
使用 qcow2 格式镜像时,您应该勾选 安装前自定义配置 选项,进入磁盘属性并明确选择 qcow2 格式。这可确保虚拟机磁盘大小正确。
使用 virt-install 并通过本地 VNC 客户端连接¶
如果您不想使用 virt-manager(例如,您不想在服务器上安装依赖项,您的本地没有运行 X 服务器,或者通过 SSH 的 X11 转发不起作用),您可以使用 virt-install 工具通过 libvirt 启动虚拟机,并从安装在您本地机器上的 VNC 客户端连接到图形控制台。
由于 VNC 是一种标准协议,因此有多个可用的客户端实现了 VNC 规范,包括 TigerVNC(多个平台)、TightVNC(多个平台)、RealVNC(多个平台)、Chicken (Mac OS X)、Krde (KDE)、Vinagre (GNOME)。
以下示例展示了如何使用 qemu-img 命令创建一个空镜像文件,以及使用 virt-install 命令启动一个使用该镜像文件的虚拟机。以 root 身份执行
# qemu-img create -f qcow2 /tmp/centos.qcow2 10G
# virt-install --virt-type kvm --name centos --ram 1024 \
--disk /tmp/centos.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=centos7.0 \
--location=/data/isos/CentOS-7-x86_64-NetInstall-1611.iso
Starting install...
Creating domain... | 0 B 00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
KVM 虚拟机监控程序以 libvirt 名称 centos 启动虚拟机,分配 1024 MB 内存。虚拟机还具有一个与 /data/isos/CentOS-7-x86_64-NetInstall-1611.iso 文件关联的虚拟 CD-ROM 驱动器,以及一个存储在主机 /tmp/centos.qcow2 中的 10 GB 本地 qcow2 格式硬盘。它配置网络以使用 libvirt 默认网络。有一个 VNC 服务器正在监听所有接口,libvirt 不会尝试自动启动 VNC 客户端,也不会尝试显示文本控制台 (--no-autoconsole)。最后,libvirt 将尝试优化 CentOS 7 发行版运行的 Linux 客户机的配置。
注意
当使用 libvirt default 网络时,libvirt 会将虚拟机的接口连接到名为 virbr0 的网桥。有一个由 libvirt 管理的 dnsmasq 进程,它将在 192.168.122.0/24 子网中分发 IP 地址,并且 libvirt 具有用于该子网 IP 地址进行 NAT 的 iptables 规则。
运行 osinfo-query os 命令以查看一系列允许的 --os-variant 选项。
使用 virsh vncdisplay vm-name 命令获取 VNC 端口号。
# virsh vncdisplay centos
:1
在上面的示例中,客户机 centos 使用 VNC 显示 :1,对应于 TCP 端口 5901。您应该能够将运行在本地机器上的 VNC 客户端连接到远程机器上的显示 :1 并逐步完成安装过程。