KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理。

1.  查看KVM虚拟机配置文件及运行状态

(1) KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/

autostart目录是配置kvm虚拟机开机自启动目录。 

fd7e73c0ce330a92248c9b3dcc8917c6.png-wh_

(2) virsh命令帮助

# virsh -help

或直接virsh命令和,再执行子命令。如下所示。

[root@node1 ~]# virsh   
欢迎使用 virsh,虚拟化的交互式终端。 

输入:'help' 来获得命令的帮助信息   
'quit' 退出 

virsh # help   
……

(3) 查看kvm虚拟机状态

# virsh list --all

8d6465daa466938c35e0a153430edd73.png-wh_

2.  KVM虚拟机开机

# virsh start CentOS6.5-01

ad5ff1101464f3554d03884dc3a3753e.png-wh_

3. KVM虚拟机关机或断电

(1) 关机

默认情况下virsh工具不能对linux虚拟机进行关机操作,linux操作系统需要开启与启动acpid服务。在安装KVM linux虚拟机必须配置此服务。

# chkconfig acpid on   
# service acpid restart

virsh关机

# virsh shutdown CentOS6.5-01

ebc882998c43cdf2b977e82f4b7b3a57.png-wh_

(2) 强制关闭电源

# virsh destroy Ser08R2-01

4d994aa7329c7743349d6212ed0567c7.png-wh_

4. 通过配置文件启动虚拟机

# virsh create /etc/libvirt/qemu/Ser08R2-01.xml

# virsh create /etc/libvirt/qemu/CentOS6.5-01.xml

1cc2e7e52b526a59563c34258c7260db.png-wh_

5. 配置开机自启动虚拟机

# virsh autostart CentOS6.5-01

autostart目录是kvm虚拟机开机自启动目录,可以看到该目录中有KVM配置文件链接。

3059c042a66a16da2da41180f8f8a0b7.png-wh_

6. 导出KVM虚拟机配置文件

# virsh dumpxml Ser08R2-01 > /etc/libvirt/qemu/Ser08R2-02.xml 

KVM虚拟机配置文件可以通过这种方式进行备份。

b334ba21c8b665801ff88c9d33736d09.png-wh_

7. 添加与删除KVM虚拟机

(1)  删除kvm虚拟机

# virsh undefine Ser08R2-01

说明:该命令只是删除wintest01的配置文件,并不删除虚拟磁盘文件。如下图所示。

2cb6cbb6463a0b3229873ab029bd34dc.png-wh_

(2)  重新定义虚拟机配置文件

通过导出备份的配置文件恢复原KVM虚拟机的定义,并重新定义虚拟机。

# mv /etc/libvirt/qemu/Ser08R2-02.xml /etc/libvirt/qemu/Ser08R2-01.xml 

# virsh define /etc/libvirt/qemu/Ser08R2-01.xml 

99a5995481a87df3a65b3631930c477d.png-wh_

8. 编辑KVM虚拟机配置文件

# virsh edit Ser08R2-01

virsh edit将调用vi命令编辑/etc/libvirt/qemu/Ser08R2-01.xml配置文件。也可以直接通过vi命令进行编辑,修改,保存。

可以但不建议直接通过vi编辑。

f68e934863ea0177551faba7d3ae2f54.png-wh_

[root@node1 qemu]# vim /etc/libvirt/qemu/Ser08R2-01.xml

<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE 
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit Ser08R2-01
or other application using the libvirt API.
-->

<domain type='kvm'>
  <name>Ser08R2-01</name>
  <uuid>9814b16e-d573-ace0-7bb3-b206fc66b8e1</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>2</vcpu>
  <os>
    <type arch='x86_64' machine='rhel6.6.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/data/kvm/Ser08R2-01.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' 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='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:cd:11:41'/>
      <source bridge='br0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5911' autoport='no' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
  </devices>
</domain>

9. virsh console 控制台管理linux虚拟机

# virsh console oeltest01 

10. 其它virsh命令

(1) 挂起服务器

# virsh suspend CentOS6.5-01 

ccac7a39f768c9338e3d77a8f639ee97.png-wh_

(2) 恢复服务器

# virsh  resume CentOS6.5-01 

7be2bef954ca6c5c4a5db6db704d0dd4.png-wh_

virsh命令丰富。可以执行各种维护任务,本文只是从维护与管理的角度例举了常用的命令,为该命令的使用提供一个思路。