4.2. 演示:使用命令行实用程序创建和管理客户机
为了展示如何在 CLI 中执行虚拟化任务,本章节将提供一个演示新的客户机虚拟机创建位置,在其上安装操作系统,然后客户端则使用 CLI 命令与之交互和管理。
4.2.1. 安装
下面创建一个名为
guest1-rhel7
的新 guest,并从 Red Hat Enterprise Linux 7 Workstation ISO 镜像启动操作系统安装。此镜像可 在客户门户网站上 获得,在本示例中,它目前位于 ~/Downloads/
文件夹中。客户机分配有两个虚拟 CPU、2048 MB RAM 和 8 GB 磁盘空间。
# virt-install --name guest1-rhel7 --memory 2048 --vcpus 2 --disk size=8 --cdrom /home/username/Downloads/rhel-workstation-7.4-x86_64-dvd.iso --os-variant rhel7
Starting install...
Allocating 'guest1-rhel7.qcow2' | 8.0 GB 00:00:00
这会在 virt-viewer 应用程序中启动图形 Anaconda 安装程序。有关安装的详情,请查看 安装指南。
注意
在无法访问图形界面的主机系统中,可以使用 基于文本的 Anaconda 安装客户机操作系统,使用类似如下的 virt-install 命令:
# virt-install -name rhel7anaconda-guest -r 1024 --location=/home/jherrman/Downloads/rhel-workstation-7.4-x86_64-dvd.iso --disk size=8 --nographics --extra-args="console=tty0 console=ttyS0,115200n8"
如果安装成功完成,命令行会显示以下内容:
Domain creation completed. Restarting guest.
现在可以将任何需要的配置提供给客户端。但是,为了安全地管理客户机设置,建议先关闭 guest。
# virsh shutdown guest1-rhel7
Domain guest1-rhel7 is being shutdown
4.2.2. 附加设备
要使客户机检测并使用连接到主机的 USB 设备,本例中的 Samsung 手机首先使用主机上的 lsusb 命令来检索设备的 ID。
# lsusb
[...]
Bus 003 Device 007: ID 04e8:6860 Samsung Electronics Co., Ltd Galaxy (MTP)
之后,使用主机上的首选文本编辑器为设备创建 XML 文件,本例中为
samsung_USB_device.xml
,在其中输入供应商和产品 ID。
# vim samsung_USB_device.xml
<hostdev mode='subsystem' type='usb' managed='yes'> <source> <vendor id='0x04e8'/> <product id='0x6860'/> </source> </hostdev>
最后,使用 virsh attach-device 命令将设备附加到客户机。
# virsh attach-device guest1-rhel7 --file samsung_USB_device.xml --config
Device attached successfully
注意
也可以将设备附加到运行的 guest。为此,请使用
--live
选项。
4.2.3. 与客户机交互
要开始使用 guest1-rhel7 虚拟客户机,请先启动它。
# virsh start guest1-rhel7
Domain guest1-rhel7 started
根据您的主机系统是否有图形显示,您可以使用 virt-viewer 应用程序与客户机交互,或使用 SSH shell。
- 在带有图形显示的系统中,使用 virt-viewer :
# virt-viewer guest1-rhel7
之后,您可以与 virt-viewer 窗口中的屏幕输出(如使用物理机上的 OS GUI)进行交互。例如,您可以使用 Subscription Manager 应用程序注册 Red Hat Enterprise Linux 客户机操作系统: - 如果主机或客户机具有纯文本接口,请使用 SSH。这需要知道客户机的 IP 地址。如果您不知道 IP 地址,可以使用 virsh domifaddr 命令获取它。
# virsh domifaddr guest1-rhel7 Name MAC address Protocol Address ------------------------------------------------------------------------------- vnet0 52:54:00:65:29:21 ipv4 10.34.3.125/24 # ssh root@10.34.3.125 root@10.34.3.125's password: Last login: Wed Jul 19 18:27:10 2017 from 192.168.122.1 [root@localhost ~]#
注意要使 virsh domifaddr 正常工作,客户机必须在网络上运行并可访问,并且可能 需要激活 QEMU 客户机代理。之后,您可以像在客户机机器上使用终端一样与主机终端交互。例如,您可以使用 subscription-manager 实用程序注册 Red Hat Enterprise Linux 客户机操作系统:[root@localhost ~]# subscription-manager register Registering to: subscription.rhsm.redhat.com:443/subscription Username: username@sample.com Password: The system has been registered with ID: 30b5e666-67f9-53bb-4b90-c2a88e5be789
4.2.4. 诊断
显示客户端状态的常规信息:
# virsh dominfo guest1-rhel7
Id: 1
Name: guest1-rhel7
UUID: ec0c0122-fb63-4a54-b602-5cf84f5e2dfd
OS Type: hvm
State: running
CPU(s): 2
CPU time: 33.4s
Max memory: 2097152 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: unconfined_u:unconfined_r:svirt_t:s0:c102,c792 (enforcing)
4.2.5. 创建快照
要备份客户机的状态,您可以使用 virsh snapshot-create 命令。
# virsh snapshot-create guest1-rhel7
Domain snapshot 1500563241 created
您可以显示您当前的快照和每个快照的 XML 设置。
# virsh snapshot-list guest1-rhel7 Name Creation Time State ------------------------------------------------------------ 1500563241 2017-07-20 17:07:21 +0200 shutoff # virsh snapshot-dumpxml guest1-rhel7 1500563241 <domainsnapshot> <name>1500563241</name> <state>shutoff</state> <creationTime>1500563241</creationTime> <memory snapshot='no'/> <disks> <disk name='vda' snapshot='internal'/> [...]
之后可能会加载这个快照,将客户机恢复到保存的快照中的状态。
# virsh snapshot-revert guest1-rhel7 --snapshotname 150056324