工具: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 标志。

单击左上角的 创建新虚拟机 按钮,或转到 文件 ‣ 新建虚拟机。然后,按照说明操作。

_images/virt-manager.png

您将看到一系列对话框,允许您指定有关虚拟机的信息。

注意

使用 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 并逐步完成安装过程。