«

virsh-日常管理和配置以及虚拟磁盘格式转换和快照管理

指尖二进制 • 1 年前 • 803 次点击 • KVM


[TOC]

一:kvm虚拟机的virsh日常管理和配置

1:libvirt软件提供virsh命令
列表:virsh list --all
开机:virsh start
关机:virsh shutdown
拔电源关机:virsh destroy
重启:virsh reboot

2:导入导出虚机配置及删除
虚拟机由两个文件组成:磁盘文件和配置文件
导出配置dumpxml例子:virsh dumpxml centos7>centos7.xml
删除virsh undefine centos7 推荐:先拔电源destroy,在删除undefine
导入配置virsh define centos7.xml
修改配置edit(自带语法检查)

[root@kvm-01 ~]# virsh dumpxml centos7>/opt/centos7.xml #导出虚机配置文件
[root@kvm-01 ~]# virsh destroy centos7 #拔电源
[root@kvm-01 ~]# virsh undefine centos7 #删除虚机
[root@kvm-01 ~]# virsh list --all  #再次查看就没有centos7实例了
[root@kvm-01 ~]# virsh define /opt/centos7.xml   #导入配置
[root@kvm-01 ~]# virsh list --all  #再次查看恢复了

3:重命名
domrename(低版本不支持)必须关机状态下操作

[root@kvm-01 ~]# virsh shutdown centos7
[root@kvm-01 ~]# virsh domrename centos7 web
Domain successfully renamed
[root@kvm-01 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     web                            shut off

4:挂起
suspend,挂起之后到vnc控制界面输入任何字符都无法输入

[root@kvm-01 ~]# virsh suspend web

5:恢复
resume,恢复之后解锁

[root@kvm-01 ~# virsh resume web

6:查询vnc端口号
vncdisplay

[root@kvm-01 ~]# virsh vncdisplay web
:0

vnc可以使用长的10.0.0.11:5900还可以使用短的10.0.0.0:0去连接

7:kvm虚机开机自启动
下面两种方法哪一种都行

[root@kvm-01 ~]# virsh autostart web
[root@kvm-01 ~]# ln -s /etc/libvirt/qemu/web.xml /etc/libvirt/qemu/autostart/

前提:systemctl enable libvirtd(libvirtd服务开机自启动)
开机自启动的本质就是创建一个软件接到/etc/libvirt/qemu/autostart/目录下面

[root@kvm-01 ~]# ll /etc/libvirt/qemu/autostart/web.xml 
lrwxrwxrwx 1 root root 25 May  2 08:57 /etc/libvirt/qemu/autostart/web.xml -> /etc/libvirt/qemu/web.xml

8:kvm虚机取消开机自启动
autostart --disable

[root@kvm-01 ~]# virsh autostart --disable web
[root@kvm-01 ~]# rm -rf /etc/libvirt/qemu/autostart/web.xml 

9:xshell-console登录,代替vnc

[root@kvm-01 opt]# virsh console web #默认无法登录的,没有配置console 波特率。
centos7的kvm虚拟机:
[root@kvm-01 ~]# ssh 192.168.122.43
root@192.168.122.43's password:
Last login: Sat May  2 08:58:48 2020 from gateway
[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8" #115200=波特率,n8=8位
[root@localhost ~]# reboot

测试
[root@kvm-01 ~]# virsh console web
Connected to domain web
Escape character is ^]  # 到这里之后敲回车

CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64

localhost login: root # 输入账号
Password:  #输入密码
Last login: Sat May  2 08:59:03 from gateway

[root@localhost ~]# logout

CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64

localhost login:  # ctrl + ] # 退出
[root@kvm-01 ~]#

10:模拟磁盘分区满了,迁移虚拟机到其它的磁盘分区
直接mv移动磁盘文件到新的分区下面

[root@kvm-01 ~]# mv /opt/centos01.raw /data/

再次启动的时候会报错(还是会去/opt/下面寻找磁盘文件)

[root@kvm-01 ~]# virsh start web
error: Failed to start domain web
error: Cannot access storage file '/opt/centos01.raw': No such file or directory

既然找不到磁盘文件很具推断应该应该修改配置文件/etc/libvirt/qemu/centos7.xml
当打开这个文件之后都会有提示让使用virsh edit centos7去修改。

[root@kvm-01 ~]# virsh edit web
   <source file='/opt/centos01.raw'/>  修改成   <source file='/data/centos01.raw'/>

[root@kvm-01 ~]# virsh start web  #再次启动成功
Domain web started

[root@kvm-01 ~]# virsh dumpxml web|grep raw  #验证,能看到磁盘路径ok
      <driver name='qemu' type='raw'/>
      <source file='/data/centos01.raw'/>

二:kvm虚拟机虚拟磁盘格式转换和快照管理

raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输。假设:总10G占用10G
qcow2: cow(copy on write)占用空间小,支持快照,性能比raw差一点,方便传输。假设:总10G占用2G

如下两条命令安装的格式不一样。一个raw一个qcow2。

[root@kvm-01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos01.raw,format=raw,size=10 --cdrom /opt/CentOS-7.6-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
[root@kvm-01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos01.qcow2,format=raw,size=10 --cdrom /opt/CentOS-7.6-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

1:磁盘工具的常用命令
qemu -img info,create,resize,convert
1.1:查看虚拟磁盘信息:info

[root@kvm-01 ~]# qemu-img info /data/centos01.raw
image: /data/centos01.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.4G

1.2:创建一块qcow2格式的虚拟硬盘:create

[root@kvm-01 ~]# qemu-img create -f qcow2 /data/centos02.qcow2 1G
Formatting '/data/centos02.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off

[root@kvm-01 ~]# qemu-img info /data/centos02.qcow2
image: /data/centos02.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

1.3:调整磁盘磁盘容量:resize(qcow2不支持减少磁盘容量,raw支持)

[root@kvm-01 ~]# qemu-img resize /data/centos02.qcow2 +1G
Image resized.
[root@kvm-01 ~]# qemu-img info /data/centos02.qcow2 #再次查看virtual size变成2G为ok。
image: /data/centos02.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 260K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

1.4:raw转qcow2并使用qcow2文件启动:
qemu-img convert -f raw -O qcow2 oldboy.raw oldboy.qcow2 convert [-f fmt] [-O output_fmt]
filename output_filename -c 压缩 virsh edit web01:

[root@kvm-01 ~]# qemu-img convert -f raw -O qcow2 /data/centos01.raw /data/centos01.qcow2
[root@kvm-01 ~]# ll -h /data/
total 3.4G
-rw-r--r-- 1 root root 1.4G May  2 09:09 centos01.qcow2
-rw------- 1 qemu qemu  10G May  2 09:09 centos01.raw
-rw-r--r-- 1 root root 257K May  2 09:09 centos02.qcow2

验证
[root@kvm-01 ~]# virsh edit web
<driver name='qemu' type='raw'/> 修改为:<driver name='qemu' type='qcow2'/>
<source file='/data/centos01.raw'/> 修改为:<source file='/data/centos01.qcow2'/>

[root@kvm-01 ~]# virsh start web  #启动实例
[root@kvm-01 ~]# ll -h /data/centos01.qcow2 
-rw-r--r-- 1 qemu qemu 1.4G May  2 09:11 /data/centos01.qcow2
[root@kvm-01 ~]# ssh 192.168.122.43  #测试ssh登录也可以使用vnc测试
root@192.168.122.43's password: 
[root@localhost ~]# dd if=/dev/zero of=test.raw bs=500M count=1
[root@localhost ~]# exit
[root@kvm-01 ~]# ll -h /data/centos01.qcow2  #qcow2格式用多少占多少
-rw-r--r-- 1 qemu qemu 1.8G May  2 09:12 /data/centos01.qcow2

当在虚机删除500M文件之后空间也不会释放,因为只能扩大不能缩小。
[root@localhost ~]# rm -rf test.raw

2:快照管理
创建快照virsh snapshot-create-as --name env_ok web

[root@kvm-01 ~]# virsh snapshot-create web #默认时间戳为名字
Domain snapshot 1588382090 created

[root@kvm-01 ~]# virsh snapshot-create-as --name env_ok web #指定名字为env_ok
Domain snapshot env_ok created

查看快照virsh snapshot-list web
[root@kvm-01 ~]# virsh snapshot-list web
 Name                 Creation Time             State
------------------------------------------------------------
 1588382090           2020-05-02 09:14:50 +0800 running
 env_ok               2020-05-02 09:15:03 +0800 running

删除快照virsh snapshot-delete web --snapshotname 1588382090
[root@kvm-01 ~]# virsh snapshot-delete web --snapshotname 1588382090
Domain snapshot 1588382090 deleted

还原快照virsh snapshot-revert web --snapshotname env_ok
[root@kvm-01 ~]# virsh snapshot-revert web --snapshotname env_ok

raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中
[root@localhost ~]# rm -rf test.raw
还没收到回复