- 1. virt-viewer
- 2. virt-install
- 3. virt-top
- 4. libguestfs
1. virt-viewer
virt-viewer是“Virtual Machine Viewer”(虚拟机查看器)工具的软件包和命令行工具名称,它是一个显示虚拟化客户机的图形界面的工具。
virt-viewer使用GTK-VNC或SPICE-GTK作为它的显示能力,使用libvirt API去查询客户机的VNC或SPICE服务器端的信息。
virt-viewer经常用于替换传统的VNC客户端查看器,因为后者通常不支持x509认证授权的SSL/TLS加密,而virt-viewer是支持的。
在RHEL 7.3系统中查看virt-viewer的RPM包信息,命令行如下:
[root@kvm-host ~]# rpm -q virt-viewer
virt-viewer-2.0-11.el7.x86_64
virt-viewer的使用语法如下:
virt-viewer [OPTION...] -- DOMAIN-NAME|ID|UUID
virt-viewer连接到的客户机可以通过客户机的名称、域ID、UUID等表示来唯一指定。virt-viewer还支持“-c URI”或“--connection URI”参数来指定连接到远程宿主机上的一个客户机,当然远程连接时一些必要的认证还是必需的。
关于virt-viewer工具更多详细的参数和解释,可以通过“man virt-viewer”命令查看使用手册。
在图形界面的一个终端中,用“virt-viewer centos7u2-1”连接到本地宿主机上名为“centos7u2-1”的客户机,其显示效果如图4-18所示。 
在virt-viewer打开的客户机窗口中(见图4-18),其工具栏的“File”菜单下有保存屏幕快照的功能,“View”菜单下有使用全屏和放大(或缩小)屏幕的功能,“Send key”菜单下可以向客户机发送一些特殊的按键(如Ctrl+Alt+Del、Ctrl+Alt+F2等)。
2. virt-install
virt-install是“Virt Install”工具的命令名称和软件包名称(在RHEL 6.x系统中,包名是python-virtinst)。
virt-install命令行工具为虚拟客户机的安装提供了一个便捷易用的方式,它也是用libvirt API来创建KVM、Xen、LXC等各种类型的客户机,同时,它也为virt-manager的图形界面创建客户机提供了安装系统的API。virt-install工具使用文本模式的串口控制台和VNC(或SPICE)图形接口,可以支持基于文本模式和图形界面的客户机安装。virt-install中使用到的安装介质(如光盘、ISO文件)可以存放在本地系统上,也可以存放在远程的NFS、HTTP、FTP服务器上。virt-install支持本地的客户机系统,也可以通过“--connect URI”(或“-c URI”)参数来支持在远程宿主机中安装客户机。使用virt-install中的一些选项(--initrd-inject、--extra-args等)和Kickstart文件,可以实现无人值守的自动化安装客户机系统。
在RHEL中,virt-install工具存在于“virt-install”RPM包中,查询的命令行如下:
[root@kvm-host ~]# rpm -q virt-install
virt-install-1.4.0-2.el7.noarch
使用virt-install命令启动一个客户机的安装过程,其命令行操作如下:
[root@kvm-host ~]# virt-install --connect qemu:///system --name centos7u2-3 --memory 1024 --disk path=/var/lib/libvirt/images/centos7u2-3.img,size=10 --network network:default --cdrom /var/lib/libvirt/images/CentOS7.2.iso --os-variant rhel7 --graphics vnc

Starting install...
Creating domain... | 0 B 00:00:00
上面virt-install的命令行参数中,“--connect”用于连接到本地或远程的Hypervisor(无该参数时,默认连接本地Hypervisor);“--memory”用于配置客户机的内存大小(单位是MB);“--disk”用于配置客户机的磁盘镜像文件,其中path属性表示路径,size属性表示磁盘大小(默认单位为GB);“--cdrom”用于指定用于安装的ISO光盘镜像文件;“--os-variant rhel7”表示客户机是RHEL 7类型的系统(virt-install会根据这个值自动优化一些安装配置);“--graphics vnc”表示使用VNC图形接口连接到客户机的控制台。关于virt-install工具的更多更详细参数配置,可以通过“man virt-install”命令查看相应的帮助文档。
在示例中使用VNC接口连接到客户机,会默认virt-viewer自动打开客户机的控制台,如图4-19所示。
3. virt-top
virt-top是一个用于展示虚拟化客户机运行状态和资源使用率的工具,它与Linux系统上常用的“top”工具类似,而且它的许多快捷键和命令行参数的设置都与“top”工具相同。
virt-top也是使用libvirt API来获取客户机的运行状态和资源使用情况的,所以只要是libvirt支持的Hypervisor,就可以用virt-top监控该Hypervisor上的客户机状态。
在RHEL 7.3系统上,virt-top命令就是在名为virt-top的RPM包中用命令行查看:
[root@kvm-host ~]# rpm -q virt-top
virt-top-1.0.8-8.el7.x86_64
直接运行“virt-top”命令后,将会显示出当前宿主机上各个客户机的运行情况,其中包括宿主机的CPU、内存的总数,也包括各个客户机的运行状态、CPU、内存的使用率,如图4-20所示。关于virt-top工具的更多更详细参数配置,可以通过“man virt-top”命令查看相应的帮助文档。
4. libguestfs
libguestfs是用于访问和修改虚拟机的磁盘镜像的一组工具集合。libguestfs提供了访问和编辑客户机中的文件、脚本化修改客户机中的信息、监控磁盘使用和空闲的统计信息、P2V、V2V、创建客户机、克隆客户机、备份磁盘内容、格式化磁盘、调整磁盘大小等非常丰富的功能。
libguestfs支持大部分的主流客户机操作系统,如:CentOS、Fedora、Ubuntu、Windows等操作系统;
libguestfs除了支持KVM虚拟机,它甚至支持VMware、Hyper-V等非开源的虚拟机。
同时,libguestfs还提供了一套C库以方便被链接到自己用C/C++开发的管理程序之中。它还有对其他很多流程编程语言(如:Python)的绑定,让开发者可以方便地使用libgeustfs提供的功能构建自己的虚拟机磁盘镜像管理程序。
在RHEL 7.3系统上,查看libguestfs的常用工具在一个名为libguestfs-tools的RPM包中,可以使用如下命令查看:
[root@kvm-host ~]# rpm -q libguestfs-tools libguestfs-tools-c
libguestfs-tools-1.32.7-3.el7.noarch
libguestfs-tools-c-1.32.7-3.el7. x86_64
libguestfs-tools提供了很多工具,可以分别对应不同的功能和使用场景,如:
- virt-ls用于列出虚拟机中的文件,
- virt-copy-in用于往虚拟机中复制文件或目录,
- virt-copy-out用于从虚拟机往外复制文件或目录,
- virt-resize用于调整磁盘大小,
- virt-cat用于显示虚拟机中的一个文件的内容,
- virt-edit用于编辑虚拟机中的文件,
- virt-df用于查看虚拟机中文件系统空间使用情况,
等等。
下面演示virt-df、virt-copy-out命令来操作一个Linux客户机:
[root@kvm-host ~]# virt-df -d centos7u2-1
Filesystem 1K-blocks Used Available Use%
centos7u2-1:/dev/sda1 508588 105328 403260 21%
centos7u2-1:/dev/centos/root 18307072 9764840 8542232 54%

[root@kvm-host ~]# virt-copy-out -d centos7u2-1 /tmp/test-linux.txt /tmp

[root@kvm-host ~]# cat /tmp/test-linux.txt
Hi. This is a text file in a Linux guest.
virt-copy-in -a disk.img file|dir [file|dir ...] /destination
virt-copy-in -d domain file|dir [file|dir ...] /destination
参考: http://libguestfs.org/virt-copy-in.1.html
libguestfs的一些工具用于Windows客户机镜像的操作时,需要先安装libguestfs-winsupport这个软件包;
当使用guestmount来挂载Windows镜像时,还需要安装ntfs-3g软件包(可以到EPEL中找RPM,也可以自行编译安装)。下面是使用virt-ls、virt-cat命令对Windows客户机操作的演示:
[root@kvm-host ~]# virt-ls -d win2012 / #查看Windows中系统盘C盘目录
Documents and Settings
PerfLogs
Program Files
Program Files (x86)
ProgramData
my-test.txt

[root@kvm-host ~]# virt-cat -d win2012 /my-test.txt
Hi. This is a text file inside a Windows guest.
本节演示的命令中,使用的是“-d centos7u2-1”来指定对哪一个客户机进行操作,这里的客户机都是在运行状态的;
也可以使用“-a /images/centos7u2.qcow2”这样的选项来指定一个镜像文件进行操作。