创建完成虚拟机后,需要对虚拟机进行基础管理学习

virsh list #查看虚拟机列表 改命令只能查看正在运行或挂起的虚拟机

KVM 虚拟机查看bios时间 kvm查看虚拟机列表_KVM 虚拟机查看bios时间

 

 

 如果需要查看所有的虚拟机需要添加--all 参数

KVM 虚拟机查看bios时间 kvm查看虚拟机列表_配置文件_02

 

 

 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