1、查看虚拟机列表
查看正在运行的虚拟机,默认只能查看正在运行的虚拟机域,如果想查看所有加 --all
[root@kvm01 ~]# virsh list --all
例:
[root@kvm01 ~]# virsh list
Id Name State
----------------------------------------------------
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- centos7.0 shut off
- test01 shut off
2、查看虚拟机详细信息 域
[root@kvm01 ~]# virsh dominfo test01
例:
[root@kvm01 ~]# virsh dominfo test01
Id: -
Name: test01
UUID: abd881cd-e07c-448a-86ae-1f539a2080dc
OS Type: hvm
State: shut off
CPU(s): 1
Max memory: 1048576 KiB
Used memory: 1048576 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
3、虚拟机域的开关机
开机
[root@kvm01 ~]# virsh start test01
关机(温柔的关机)
[root@kvm01 ~]# virsh shutdown test01
强制关机(类似于拔电源)
[root@kvm01 ~]# virsh destroy test01
例:
[root@kvm01 ~]# virsh start test01
Domain test01 started
[root@kvm01 ~]# virsh shutdown test01
Domain test01 is being shutdown
[root@kvm01 ~]# virsh start test01
Domain test01 started
[root@kvm01 ~]# virsh destroy test01
Domain test01 destroyed
4、导出配置(备份)
[root@kvm01 ~]# virsh dumpxml test01 > test01bak.xml
例:
[root@kvm01 ~]# virsh dumpxml test01 > test01bak.xml
[root@kvm01 ~]# ls
test01bak.xml
一个完整KVM域,生成之后会有两个文件。
1)磁盘文件,在部署之处已经指定
2)xml配置文件,默认在/etc/libvirt/qemu/
5、删除虚拟机
[root@kvm01 ~]# virsh undefine test01
例:
[root@kvm01 ~]# virsh undefine test01
Domain test01 has been undefined
PS: 删除虚拟机域的操作,会删除虚拟机域的xml配置文件,而磁盘文件则需要手动删除。
6、根据配置文件恢复虚拟机
[root@kvm01 ~]# virsh define test01bak.xml
例:
[root@kvm01 ~]# virsh define test01bak.xml
Domain test01 defined from test01bak.xml
思考:能否根据test01的xml配置文件和磁盘文件,生成新的虚拟机:test02.
思路:有虚拟机域所需要的xml配置文件,和磁盘文件,即可以生产新的虚拟机域,如果需要注意,xml配置文件和之前的xml配置文件如果有冲突的地方,需要作出修改。1、名字 2、disk (修改) | 3、UUID 4、mac地址(删除)
实践:
[root@kvm01 ~]# cp /etc/libvirt/qemu/test01.xml /etc/libvirt/qemu/test02.xml
[root@kvm01 ~]# cp /kvm-vm/test01.raw /kvm-vm/test02.raw
[root@kvm01 ~]# vim /etc/libvirt/qemu/test02.xml
<name>test02</name> #修改
<uuid>abd881cd-e07c-448a-86ae-1f539a2080dc</uuid> dd
<source file='/kvm-vm/test02.raw'/> #修改
<mac address='52:54:00:1b:e8:b9'/> dd
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- centos7.0 shut off
- test01 shut off
[root@kvm01 ~]# virsh define /etc/libvirt/qemu/test02.xml
Domain test02 defined from /etc/libvirt/qemu/test02.xml
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- centos7.0 shut off
- test01 shut off
- test02 shut off
[root@kvm01 ~]# virsh start test02
Domain test02 started
扩展:根据test01虚拟机域,生成一个新的虚拟机域test03。
要求:test01和test03公用一个磁盘文件。
问:是否能成功?
如果可以,那么,在test01虚拟机域中创建一个test.txt文件,请问在test03中,能查看到该文件吗?
7、修改配置文件(自带语法检查)
需求: 把 test01磁盘文件的名称修改为test1.raw
[root@kvm01 ~]# virsh edit test01
例:
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
3 test02 running
4 test01 running
- centos7.0 shut off
[root@kvm01 ~]# virsh destroy test01
Domain test01 destroyed
[root@kvm01 ~]# virsh destroy test02
Domain test02 destroyed
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- centos7.0 shut off
- test01 shut off
- test02 shut off
[root@kvm01 ~]# mv /kvm-vm/test01.raw /kvm-vm/test1.raw
[root@kvm01 ~]# virsh start test01
error: Failed to start domain test01
error: Cannot access storage file '/kvm-vm/test01.raw': No such file or directory
[root@kvm01 ~]# virsh edit test01
<source file='/kvm-vm/test1.raw'/> #修改
[root@kvm01 ~]# virsh start test01
Domain test01 started
[root@kvm01 ~]# virsh list
Id Name State
----------------------------------------------------
5 test01 running
8、虚拟机的重命名(7.2以上)
[root@kvm01 ~]# virsh domrename test02 test03
例:
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- centos7.0 shut off
- test01 shut off
- test02 shut off
[root@kvm01 ~]# virsh domrename test02 test03
Domain successfully renamed
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- centos7.0 shut off
- test01 shut off
- test03 shut off
[root@kvm01 ~]# virsh start test03
Domain test03 started
9、查看虚拟机对应的VNC端口
[root@kvm01 ~]# virsh vncdisplay test1
:0 #默认不加端口,指定的也是:0,也就是5900
:0==== 5900
:1==== 5901 #以此类推
注意:
1、注意虚拟机的防火墙对应端口是否开启
2、如果虚拟机使用qemu连接进去的话,那么vnc就不可用。
例:
[root@kvm01 ~]# virsh start test01
Domain test01 started
[root@kvm01 ~]# virsh vncdisplay test01
:0
[root@kvm01 ~]# ifconfig ens33
ens33: 192.168.1.150
10、挂起虚拟机
[root@kvm01 ~]# virsh suspend test01 #挂起
[root@kvm01 ~]# virsh resume test01 #恢复
例:
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
9 test01 running
- centos7.0 shut off
- test03 shut off
[root@kvm01 ~]# virsh suspend test01
Domain test01 suspended
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
9 test01 paused
- centos7.0 shut off
- test03 shut off
[root@kvm01 ~]# virsh resume test01
Domain test01 resumed
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
9 test01 running
- centos7.0 shut off
- test03 shut off
11、开机自启
[root@kvm01 ~]# virsh autostart test01
[root@kvm01 ~]# virsh autostart --disable test01 #取消开机自启
例:
[root@kvm01 ~]# virsh autostart test01
Domain test01 marked as autostarted
[root@kvm01 ~]# virsh dominfo test01
Id: 9
Name: test01
UUID: abd881cd-e07c-448a-86ae-1f539a2080dc
OS Type: hvm
State: running
CPU(s): 1
CPU time: 25.3s
Max memory: 1048576 KiB
Used memory: 1048576 KiB
Persistent: yes
Autostart: enable
Managed save: no
Security model: none
Security DOI: 0
[root@kvm01 ~]# reboot
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
1 test01 running
- centos7.0 shut off
- test03 shut off
[root@kvm01 ~]# virsh autostart --disable test01
Domain test01 unmarked as autostarted
[root@kvm01 ~]# virsh dominfo test01
Id: 1
Name: test01
UUID: abd881cd-e07c-448a-86ae-1f539a2080dc
OS Type: hvm
State: running
CPU(s): 1
CPU time: 23.7s
Max memory: 1048576 KiB
Used memory: 1048576 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
12、console登录KVM虚拟机域
在KVM域里添加
[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0" #注意: ttyS0是ttyS零
[root@localhost ~]# reboot
就可以在虚拟机直接使用console命令登录kvm虚拟机域
[root@kvm01 ~]# virsh console test01
virsh console命令 虽然可以在终端直接登录kvm虚拟机域,但在xshell终端里,如果使用console编辑配置文件,会出现显示错乱的情况。
例:
[root@kvm01 ~]# virsh console test01
Connected to domain test01
Escape character is ^] #ctrl+]退出
[root@kvm01 ~]# virsh list
Id Name State
----------------------------------------------------
1 test01 running
[root@kvm01 ~]#
[root@kvm01 ~]# virsh vncdisplay test01
:0
# 在KVM域里添加
[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0" #注意: ttyS0是ttyS零
[root@localhost ~]# reboot
[root@kvm01 ~]# virsh console test01
Connected to domain test01
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64
localhost login: root
Password:
Last login: Thu Aug 13 05:34:11 on tty1
[root@localhost ~]#