第3章对KVM虚拟机进行基本管理 当虚拟机安装完成之后,就要对虚拟机进行管理,管理KVM虚拟机有两种方法,一种是图形管理工具virtmanager,另一种就是命令行工具virsh命令,它们都是通过调用libvirt API来实现虚拟化管理。本章将具体讲解对虚拟机的基本管理,包括启动、关闭、暂停虚拟机,以及对虚拟机的网卡、硬盘、CPU、内存等进行管理。 学习目标:  掌握使用virsh命令来对虚拟机进行基本管理。  掌握虚拟机的一些进阶管理。 3.1使用virsh对虚拟机进行基本的管理 virsh命令提供了两种模式,一种是交互式,一种是非交互式。交互模式是在命令行提示符下输入virsh命令,按Enter键后就可以在交互模式下进行操作,另一种是没有交互的,直接在Linux提示符下进行操作,本书基本上采用的是非交互式。下面主要讲解对虚拟机进行基本管理的命令。 (1) 查看虚拟机。如图31所示,virsh list只能显示运行的虚拟机,要查看所有虚拟机就需加一个all选项。 图31查看虚拟机 (2) 启动虚拟机。如图32所示,start命令用于启动虚拟机,后面接虚拟机的名字。 图32启动虚拟机 (3) 关闭虚拟机。如图33所示,shutdown命令后面加上虚拟机的名字是一种正常关闭操作系统的方法。 图33关闭虚拟机 (4) 关闭虚拟机。如图34所示,destroy命令则是直接拔掉虚拟机电源进行关闭。 图34强制关闭虚拟机 (5) 挂起虚拟机。如图35所示,使用suspend命令后面加上虚拟机的名字,挂起(也是暂停)虚拟机。 图35挂起虚拟机 (6) 恢复虚拟机。如图36所示,resume命令后面加上虚拟机的名字,恢复挂起的状态,也是唤醒虚拟机。 图36恢复虚拟机 (7) 设置自启动虚拟机。如图37所示,autostart命令后面加上要自启动的虚拟机的名字,此时虚拟机随物理机启动而启动。 图37自启动虚拟机 (8) 查看虚拟机的信息。如图38所示,dominfo命令后面加上虚拟机的名字,就可以查看此虚拟机的相关信息,如CPU的名字、UUID、状态、CPU个数、内存、是否自启动等信息。 图38查看CPU相关信息 (9) 删除虚拟机。如图39所示,undefine命令后面接虚拟机的名字,此时虚拟机在虚拟机管理器里面查不到了。 图39删除虚拟机 (10) 删除虚拟机,并删除磁盘镜像文件。如图310所示,在图39的基础上,加上storage选项,将删除虚拟的磁盘镜像文件。 图310删除虚拟机并删除磁盘镜像文件 (11) 删除虚拟机,并删除所有磁盘文件。如图311所示,在图39的基础上加上removeallstorage选项,将删除虚拟机的同时,删除虚拟机的所有磁盘文件。 图311删除虚拟机并删除所有磁盘文件 (12) 禁止虚拟机的自启动。如图312所示,在自启动配置的基础上加上disable选项,此虚拟机随着主机启动,不启动此虚拟机。 图312禁止虚拟机的自启动 (13) 显示虚拟机当前的配置文件。如图313所示,在dumpxml命令后加上虚拟机的名字,将显示此虚拟机的配置文件。 图313显示虚拟机的配置文件 3.2对虚拟机进行进阶管理 3.2.1给虚拟机添加网卡 通过virsh命令也同样可以给虚拟机添加网卡,其步骤如下: (1) 在虚拟机里面查看当前虚拟机的IP地址,发现只有一块网卡eth0,如图314所示。 图314查看虚拟机的网卡 (2) 在宿主机上查看网卡信息,如图315所示,domiflist后面接上虚拟机的名字,发现也只有一块网卡vnet0。 图315查看虚拟机vm01的网卡 (3) 使用virsh命令添加一块网卡,如图316所示,attachinterface后面接上虚拟机的名字,network是网络类型,default是此虚拟机的网络源,default网络默认是NAT连网方式,persistent选项则是永久的意思,也就是意味着重启虚拟机后此网卡还会生效。 图316给虚拟机vm01添加网卡 (4) 在虚拟机里查看网卡,如图317所示,发现此时多了一块网卡ens10。 图317查看网卡 3.2.2给vm01添加磁盘 当虚拟机的存储容量不够时,就可以通过下面的方法来进行添加磁盘,具体操作步骤如下: (1) 在宿主机上查看虚拟机的磁盘信息,如图318所示,发现虚拟机vm01只有一块磁盘vda,磁盘对应的文件是vm01.qcow2。 图318查看虚拟机磁盘情况 (2) 通过dd命令生成大小为500MB的文件来作为虚拟机的磁盘文件,也可以通过qemuimg命令来生成磁盘文件,如图319所示,并使用attachdisk命令将新生成的磁盘添加到虚拟机vm01中,作为虚拟机的vdb,vd为virtual disk,b代表第二块磁盘。 图319给虚拟机vm01添加新的磁盘 (3) 在虚拟机里也可以通过lsblk命令查看新的磁盘,如图320所示。 图320查看磁盘 3.2.3修改CPU与内存 调整CPU与内存的大小有三种方法,包括配置文件、图形、命令的方式,下面具体来进行介绍。 方法一: 通过修改配置文件的方式来调整CPU与内存的大小,具体步骤如下: (1) 使用lscpu命令查看CPU,如图321所示,发现当前只有一个CPU。 图321查看CPU的个数 (2) 通过free命令查看内存的大小,如图322所示,发现内存为992MB。 图322查看内存大小 (3) 通过virsh edit命令修改配置文件,调整CPU与内存大小,如图323所示。 图323修改虚拟机的配置文件 (4) 通过图323的命令打开虚拟机的配置文件后,修改内存与CPU的大小,如图324所示,将内存修改为2048MB,将CPU修改为2个,此时需要注意的是CPU与内存的大小是不能超过宿主机的。 图324修改CPU与内存的大小 (5) 重启虚拟机,让其生效,如图325所示,但是需要注意的是一定要先关机,再启动才会生效,直接重启是不会生效的。 图325重启虚拟机vm01 (6) 重启后查看CPU与内存,如图326所示,发现CPU现在是2个,内存为1953MB(有点误差,是正常范围可接受的)。 图326查看CPU与内存的大小 方法二: 通过图形的方式来调整CPU与内存的大小,具体步骤如下: (1) 打开虚拟机vm01图形界面中的详情页,如图327所示,选中CPUs面板,可以查看当前CPU与最大CPU的配置,也可以修改其值来调整CPU的个数。 图327调整CPU参数 (2) 选择详情页的Memory面板,如图328所示,也可以调整当前分配内存大小与最大分配内存的大小。 图328调整内存参数 方法三: 通过命令的方式来调整CPU与内存的大小,具体步骤如下: (1) 调整CPU大小,如图329所示,查看到只有一个CPU。 图329查看CPU个数 (2) 设置CPU的个数,如图330所示,将最大允许分配的CPU个数设置为2个,config是修改配置文件,也就意味着重启还会生效。 图330设置允许分配的CPU的个数 (3) 调整CPU的个数,如图331所示,给虚拟机的CPU在线调整至2个,也就意味着立即生效,需要注意的是在线调整CPU个数是不能超过最大的CPU个数。减少CPU必须重启生效,并且不能在线减少CPU。 图331调整CPU的个数 (4) 设置内存,如图332所示,设置最大内存为4096MB, config选项同样意味着将写入配置文件,重启之后还将生效。 图332调整最大允许分配给虚拟机的内存大小 (5) 查看虚拟机的信息,如图333所示,发现现在最大内存约为4GB,当前内存还是约为1GB。 图333查看内存的大小 (6) 调整当前内存的大小,如图334所示,将当前内存调整到2048MB,其中current选项意味着当前的意思,调整后,通过dominfo进行查看,发现当前内存已调整到2GB了。 图334调整当前内存大小 3.3本章实验 3.3.1实验目的 掌握使用virsh命令来对KVM虚拟机进行基本管理。 掌握KVM虚拟机的一些进阶管理,包括磁盘、网络、CPU与内存等。 3.3.2实验环境 在安装好KVM的宿主机node1上去管理虚拟机VM01。 3.3.3实验拓扑 实验拓扑图如图335所示。 GuestOS(RHEL7) GuestOS(RHEL7) vm01 vm01 RHEL7(KVM) RHEL7(KVM) RHEL7 node1 node2 storage VMware Workstation Windows 10 Hardware 图335实验拓扑图 3.3.4实验内容 如图335所示,在安装好KVM的宿主机node1上去管理虚拟机VM01。一是使用virsh命令对虚拟机VM01执行基本操作,包括查看虚拟机、开机、关机、暂停、唤醒、删除等。二是使用virsh命令对虚拟机VM01执行进阶操作,包括添加一块磁盘、一块网卡,以及调整VM01的CPU与内存大小。 说一说: 在调整CPU的三种方法中,你认为哪一种方法最好用?为什么?