创建完成虚拟机后,需要对虚拟机进行基础管理学习
virsh list #查看虚拟机列表 改命令只能查看正在运行或挂起的虚拟机
如果需要查看所有的虚拟机需要添加--all 参数
virsh start XXXX #开启虚拟机
virsh shutdown XXX #关闭虚拟机,这属于正常关机;
virsh destory XXX #关闭虚拟机,非正常关机;类似于拔电源;
一个磁盘文件,一个配置文件就可以完整表示一个虚机,根据创建虚机时的命令可知,磁盘文件存放在/opt下,配置文件保存于/etc/libvirt/qemu/路径下
[root@KVM03-10 opt]# cd /etc/libvirt/qemu/
[root@KVM03-10 qemu]# ll
total 8
-rw-------. 1 root root 4229 Aug 26 11:18 centos7.3.xml #配置文件
drwx------. 3 root root 42 Aug 26 09:58 networks
[root@KVM03-10 qemu]# cd /opt/
[root@KVM03-10 opt]# ll
total 5509500
-rw-------. 1 root root 10737418240 Aug 26 22:36 centos2.1.raw #磁盘文件
-rw-r--r--. 1 qemu qemu 4379901952 Apr 27 20:56 CentOS-7.3-x86_64-DVD-1611.iso
[root@KVM03-10 opt]#
备份配置文件的命令 virsh dumpxml XXX #配置文件格式是xml,直接用该命令讲会把该命令打印到屏幕,可追加到指定文件 >> /tmp/centos7.3
<domain type='kvm'>
<name>centos7.3</name>
<uuid>a9c5fb0f-9f5f-4f0b-87ca-06f4b6dfc62c</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='custom' match='exact' check='partial'>
<model fallback='allow'>Broadwell-noTSX-IBRS</model>
<feature policy='require' name='md-clear'/>
<feature policy='require' name='spec-ctrl'/>
<feature policy='require' name='ssbd'/>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/opt/centos2.1.raw'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>
<interface type='network'>
<mac address='52:54:00:db:81:f8'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target type='isa-serial' port='0'>
<model name='isa-serial'/>
</target>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<input type='tablet' bus='usb'>
<address type='usb' bus='0' port='1'/>
</input>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='16384' heads='1' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</memballoon>
<rng model='virtio'>
<backend model='random'>/dev/urandom</backend>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</rng>
</devices>
</domain>
通过配置文件和磁盘文件就可以实现虚机在另一处启动,这个过程就与在共享存储的情况下,虚机迁移的过程类似。换句话说,虚机迁移的时候只要保证这两个文件一致就可以实现迁移,只不过问题在与如何这两个文件的快速生效,也就关乎着虚机热迁移过程中的丢包情况。
virsh undefine XXX #首先删除某一虚拟机,然后将利用之前的虚机配置文件回复虚拟机。删除虚拟机必须在关机情况下进行,这过程与vmware workstation上虚机的工作流程类似,不允许在开机状态下对虚机进行销毁操作。
在磁盘文件中会定义该虚机的配置文件存放位置,如果位置不一致,将导致虚机恢复失败;
[root@KVM03-10 opt]# cat /tmp/centos7.3.xml | grep centos
<name>centos7.3</name>
<source file='/opt/centos2.1.raw'/>
[root@KVM03-10 opt]#
导入命令:virsh define XXX.xml
[root@KVM03-10 opt]# virsh define /tmp/centos7.3.xml
Domain centos7.3 defined from /tmp/centos7.3.xml
[root@KVM03-10 opt]#
执行undefine命令后会将/etc/libvirt/qemu/centos7.3.xml的配置文件删除,重新创建的时候又会在libvirt服务中增加对应配置文件。该文件不能手动导入,必须用命令!
[root@KVM03-10 opt]# ll /etc/libvirt/qemu/
total 8
-rw-------. 1 root root 4229 Aug 26 23:13 centos7.3.xml
drwx------. 3 root root 42 Aug 26 09:58 networks
[root@KVM03-10 opt]#
但是在很多情况下,导入的虚机可能会存在存放路径不一致、配置文件名称更改、磁盘文件移动位置等情况,如我把磁盘文件名称修改为centos.raw,重新导入就会报错。
[root@KVM03-10 opt]# mv centos2.1.raw centos.raw
[root@KVM03-10 opt]# ll
total 5509500
-rw-r--r--. 1 qemu qemu 4379901952 Apr 27 20:56 CentOS-7.3-x86_64-DVD-1611.iso
-rw-------. 1 root root 10737418240 Aug 26 22:36 centos.raw
[root@KVM03-10 opt]# virsh list --all
Id Name State
----------------------------------------------------
- centos7.3 shut off
[root@KVM03-10 opt]# virsh undefine centos7.3
Domain centos7.3 has been undefined
[root@KVM03-10 opt]# virsh list --all
Id Name State
----------------------------------------------------
[root@KVM03-10 opt]# cat /tmp/centos7.3.xml | grep centos
<name>centos7.3</name>
<source file='/opt/centos2.1.raw'/>
[root@KVM03-10 opt]# ll -h
total 5.3G
-rw-r--r--. 1 qemu qemu 4.1G Apr 27 20:56 CentOS-7.3-x86_64-DVD-1611.iso
-rw-------. 1 root root 10G Aug 26 22:36 centos.raw
[root@KVM03-10 opt]# virsh define centos7.3
error: Failed to open file 'centos7.3': No such file or directory
[root@KVM03-10 opt]#
这个时候的修复方法有两种:
第一种:因为知道该虚机的配置文件在哪,/etc/libvirt/qemu/centos7.3.xml,所以可以通过将通过vim 的形式直接去修改配置文件
[root@KVM03-10 opt]# vi /etc/libvirt/qemu/centos7.3.xml
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/opt/centos2.1.raw'/>
……………………
第二种:通过virsh edit XXX命令修改。推荐使用该方法,该命令自带检查buff,
[root@KVM03-10 opt]# virsh edit centos7.3
error: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng
Element domain failed to validate attributes
Failed. Try again? [y,n,i,f,?]: #yes no ignore force help