KVM日常使用

第1章 磁盘文件格式介绍

资料参考:http://www.cnblogs.com/feisky/archive/2012/07/03/2575167.html

1.1 硬盘格式分类

  • 全镜像格式:特点是设置多大就是多大,写入速度快,方便转换为其他格式,性能最优,但是占用空间大。典型代表为raw格式。
  • 稀疏格式:特点是支持压缩、快照、镜像,更小的存储空间(即用多少占多少)。典型代表为qcow2格式。
提示:硬盘格式可以通过qemu-img管理,详情参看qemu-img –help。

1.2 raw和qcow2的简单区别

  • raw不支持快照
  • qcow2支持快照
注意:快照必须关闭虚拟机后操作。

1.3 磁盘格式操作命令

1.3.1 格式转换

[root@CentOS7-GUI ~]# qemu-img create -f raw /server/kvm_data/test.raw 1G # 创建测试raw磁盘
# raw转换为qcow2格式
[root@CentOS7-GUI ~]# cd /server/kvm_data
[root@CentOS7-GUI kvm_data]# ls
test.raw
[root@CentOS7-GUI kvm_data]# qemu-img convert -c -f raw -O qcow2 test.raw test.qcow2 # 格式转换
[root@CentOS7-GUI kvm_data]# ls
test.qcow2 test.raw
# qcow2转换为raw格式,此时不支持压缩即不支持-c参数
[root@CentOS7-GUI kvm_data]# rm -f test.raw
[root@CentOS7-GUI kvm_data]# ls
test.qcow2
[root@CentOS7-GUI kvm_data]# qemu-img convert -f qcow2 -O raw test.qcow2 test.raw
[root@CentOS7-GUI kvm_data]# ls
test.qcow2 test.raw

1.3.2 检查虚拟磁盘

[root@CentOS7-GUI ~]# qemu-img check /server/kvm_data/test.qcow2
No errors were found on the image.
Image end offset: 262144
[root@CentOS7-GUI ~]# qemu-img info /server/kvm_data/test.qcow2
image: /server/kvm_data/test.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

第2章 克隆虚拟机

2.1 注意事项

2.1.1 CentOS6克隆虚拟机注意事项

  • 清除网卡配置文件的UUID和MAC地址,否则克隆后网卡错乱
  • 清空 /etc/udev/rules.d/70-persistent-net.rules ,否则克隆后网卡错乱
  • 最后关闭虚拟机,在虚拟机中使用halt命令关机

2.1.2 CentOS7克隆虚拟机注意事项

  • 清除网卡配置文件的UUID和MAC地址(不清除网卡也能启动)
  • 关机克隆

2.2 克隆虚拟机

2.2.1 本机间克隆

  • 通过复制磁盘文件克隆虚拟机的两要素(尤其适用于异机的静态迁移):
  • 导出xml文件
  • 导出磁盘文件
  • 手动修改配置文件注意事项:
  • 直接修改虚拟机的xml文件不生效,需要用virsh edit<虚拟机名>修改
  • 修改xml后reboot重启不生效,因为宿主机的进程没关闭,新的配置文件不会重新加载,必须关机再开启。

2.2.1.1 克隆前关机

[root@moban ~]# shutdown -h now # 关闭KVM虚拟机
Connection to 192.168.122.84 closed by remote host.
Connection to 192.168.122.84 closed.
[root@CentOS7-GUI ~]# virsh list --all # 查看KVM虚拟机状态
Id Name State
----------------------------------------------------
- CentOS7.2-moban shut off

2.2.1.2 复制模板机虚拟磁盘

[root@CentOS7-GUI ~]# cp /server/kvm_data/moban.qcow2 /server/kvm_data/clone.qcow2

2.2.1.3 导出XML

[root@CentOS7-GUI ~]# virsh dumpxml CentOS7.2-moban > /etc/libvirt/qemu/CentOS7.2-clone.xml

2.2.1.4 修改XML文件

[root@CentOS7-GUI ~]# uuidgen # 获取虚拟磁盘UUID值
ebefe196-7d06-4b94-8ba9-5135b8d0be25
[root@CentOS7-GUI ~]# vim /etc/libvirt/qemu/CentOS7.2-clone.xml
2 <name>CentOS7.2-clone</name>
3 <uuid>ebefe196-7d06-4b94-8ba9-5135b8d0be25</uuid>
34 <source file='/server/kvm_data/clone.qcow2'/>
67 <mac address='52:54:00:df:fa:2e'/>
# 或
[root@CentOS7-GUI ~]# sed -i.bak "2s#CentOS7.2-moban#CentOS7.2-clone#;3s#.*#<uuid>`uuidgen`</uuid>#;s#moban.qcow2#clone.qcow2#;s#^.*<mac address=.*/># <mac address='52:54:00:df:fa:2e'/>#" /etc/libvirt/qemu/CentOS7.2-clone.xml
提示:直接修改虚拟机的XML文件不生效,需要使用virsh edit <虚拟机名称>修改;
修改XML后reboot重启不生效,因为宿主机的进程没关闭,新的配置文件不会加载,必须关机再开。

2.2.1.5 导入XML文件

[root@CentOS7-GUI ~]# virsh define /etc/libvirt/qemu/CentOS7.2-clone.xml
Domain CentOS7.2-clone defined from /etc/libvirt/qemu/CentOS7.2-clone.xml

2.2.1.6 启动克隆的虚拟机

[root@CentOS7-GUI ~]# virsh start CentOS7.2-clone
[root@CentOS7-GUI ~]# virsh list
Id Name State
----------------------------------------------------
3 CentOS7.2-clone running

[root@CentOS7-GUI ~]# virsh list --all
Id Name State
----------------------------------------------------
3 CentOS7.2-clone running
- CentOS7.2-moban shut off

图片[1]|KVM日常使用|leon的博客

第3章 制作虚拟机快照

3.1 创建快照注意事项

  • 磁盘格式要为qcow2
  • 关机做快照最好,开机也能做快照
  • 虚拟机迁移的时候要提前删除所有快照,否则迁移后无法使用virsh查看快照,容易导致磁盘文件损坏和出错
  • 模板虚拟机不要创建快照,否则通过模板虚拟机克隆后新虚拟机会有模板机的快照,并且无法通过virsh命令查看,浪费虚拟机磁盘文件空间

Tips:最优快照制作方式:创建初始磁盘后,关机将磁盘复制并重命名后保留初始磁盘文件作为快照使用。

3.2 使用virsh操作快照

Tips:使用此方法建立的快照在虚拟机迁移后使用snapshot-list命令无法显示快照内容,容易导致误以为没有快照,从而重复创建快照,导致迁移出错,推荐使用qemu-img方式创建快照。

3.2.1 创建快照

[root@CentOS7-GUI ~]# virsh snapshot-create-as CentOS7.2-clone CentOS7.2-clone_shot1
Domain snapshot CentOS7.2-clone_shot1 created

3.2.2 查看快照列表

[root@CentOS7-GUI ~]# virsh snapshot-list CentOS7.2-clone
Name Creation Time State
------------------------------------------------------------
CentOS7.2-clone_shot1 2017-10-23 17:11:29 +0800 running

3.2.3 查看快照信息

[root@CentOS7-GUI ~]# virsh snapshot-info CentOS7.2-clone CentOS7.2-clone_shot1
Name: CentOS7.2-clone_shot1
Domain: CentOS7.2-clone
Current: yes
State: running
Location: internal
Parent: -
Children: 0
Descendants: 0
Metadata: yes

3.2.4 还原快照

[root@CentOS7-GUI ~]# virsh snapshot-revert CentOS7.2-clone CentOS7.2-clone_shot1

3.2.5 删除快照

[root@CentOS7-GUI ~]# virsh snapshot-delete CentOS7.2-clone CentOS7.2-clone_shot1
Domain snapshot CentOS7.2-clone_shot1 deleted

3.3 使用qemu-img创建快照

注意:使用此方法时必须要关机再进行操作,否则会导致映像文件损坏。

【语法】

[root@kvm kvm]# qemu-img snapshot --help
snapshot [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename
Parameters to snapshot subcommand:
      'snapshot' is the name of the snapshot to create, apply or delete
      '-a' applies a snapshot (revert disk to saved state)
      '-c' creates a snapshot
      '-d' deletes a snapshot
      '-l' lists all snapshots in the given image

3.3.1 创建磁盘内置快照

[root@kvm ~]# qemu-img snapshot -c nginx /kvm/CentOS7.4-Fpm.qcow2

3.3.2 查看磁盘快照信息

[root@kvm ~]# qemu-img snapshot -l /kvm/CentOS7.4-Fpm.qcow2
# 或
[root@kvm ~]# qemu-img info /kvm/CentOS7.4-Fpm.qcow2
image: /kvm/CentOS7.4-Fpm.qcow2
file format: qcow2
virtual size: 100G (107374182400 bytes)
disk size: 3.8G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         fpm                       0 2018-08-11 16:19:20   00:00:00.000
2         nginx                     0 2018-12-13 16:57:20   00:00:00.000
3         nginx                     0 2018-12-16 15:55:11   00:00:00.000
Format specific information:
    compat: 1.1
    lazy refcounts: false

3.3.3 还原快照

[root@kvm ~]# qemu-img snapshot -a fpm /kvm/CentOS7.4-Fpm.qcow2

3.3.4 删除快照

[root@kvm kvm]# qemu-img snapshot -d 3 CentOS7.4-Fpm.qcow2      # 此处-d参数后面接的是快照ID
[root@kvm kvm]# qemu-img info /kvm/CentOS7.4-Fpm.qcow2
image: /kvm/CentOS7.4-Fpm.qcow2
file format: qcow2
virtual size: 100G (107374182400 bytes)
disk size: 3.8G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         fpm                       0 2018-08-11 16:19:20   00:00:00.000
2         nginx                     0 2018-12-13 16:57:20   00:00:00.000
Format specific information:
    compat: 1.1
    lazy refcounts: false

第4章 KVM桥接模式

4.1 什么是网桥

默认KVM的网络是NAT模式,如果需要KVM的网络同宿主机同网段则需要桥接网卡。

Bridge方式即虚拟网桥的网络连接方式,使客户机和子网里面的机器能够互相通信,可以使虚拟机成为网络中具有独立IP的主机。

桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机,网桥多用于高级设置,特别是主机多个网络接口的情况。

图片[2]|KVM日常使用|leon的博客

4.2 配置宿主机网桥

4.2.1 生成网桥配置文件br0

[root@CentOS7-GUI ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-br0}

4.2.2 配置网卡文件eth0

[root@CentOS7-GUI ~]# cat>/etc/sysconfig/network-scripts/ifcfg-eth0<<EOF
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
EOF

4.2.3 配置网桥文件br0

[root@CentOS7-GUI ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=br0
UUID=e18df07e-683e-440b-8612-b2e7d4367d36
DEVICE=br0
ONBOOT=yes
IPADDR=10.0.0.201
PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
# 或
[root@CentOS7-GUI ~]# sed -i.bak 's#Ethernet#Bridge#;s#eth0#br0#g' /etc/sysconfig/network-scripts/ifcfg-br0

4.2.4 重启网络服务

[root@CentOS7-GUI ~]# systemctl restart network

4.2.5 查看网络情况

[root@CentOS7-GUI ~]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 10.0.0.201 netmask 255.255.255.0 broadcast 10.0.0.255
        inet6 fe80::20c:29ff:fec8:7fc1 prefixlen 64 scopeid 0x20<link>
        ether 00:0c:29:c8:7f:c1 txqueuelen 0 (Ethernet)
        RX packets 18275 bytes 1116962 (1.0 MiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 15687 bytes 7668379 (7.3 MiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 00:0c:29:c8:7f:c1 txqueuelen 1000 (Ethernet)
        RX packets 85880 bytes 39422386 (37.5 MiB)
        RX errors 0 dropped 16 overruns 0 frame 0
        TX packets 74735 bytes 54644178 (52.1 MiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 172.16.1.201 netmask 255.255.255.0 broadcast 172.16.1.255
        inet6 fe80::20c:29ff:fec8:7fcb prefixlen 64 scopeid 0x20<link>
        ether 00:0c:29:c8:7f:cb txqueuelen 1000 (Ethernet)
        RX packets 4 bytes 240 (240.0 B)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 125 bytes 15153 (14.7 KiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
        inet 127.0.0.1 netmask 255.0.0.0
        inet6 ::1 prefixlen 128 scopeid 0x10<host>
        loop txqueuelen 0 (Local Loopback)
        RX packets 12 bytes 636 (636.0 B)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 12 bytes 636 (636.0 B)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
        ether 52:54:00:96:67:4e txqueuelen 0 (Ethernet)
        RX packets 272 bytes 34209 (33.4 KiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 323 bytes 38541 (37.6 KiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether fe:54:00:df:fa:2e txqueuelen 500 (Ethernet)
        RX packets 13 bytes 1734 (1.6 KiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 991 bytes 53178 (51.9 KiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@CentOS7-GUI ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29c87fc1 no eth0
virbr0 8000.52540096674e yes virbr0-nic vnet0

4.3 更改网桥的方式

4.3.1 新创建虚拟机时

创建虚拟机时将virt-install的--network network=default参数改为--network bridge=br0

[root@CentOS7-GUI ~]# virt-install --virt-type=kvm --name=CentOS7.2-moban --vcpus=1 -r 1024 -c /server/tools/CentOS-7-x86_64-DVD-1511.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/server/kvm_data/moban.qcow2,size=20
,format=qcow2

4.3.2 对已经创建的主机修改成网桥模式

修改虚拟机配置文件:

[root@CentOS7-GUI ~]# vim /etc/libvirt/qemu/CentOS7.2-moban.xml
73 <interface type='bridge'> # network修改为bridge
74 <mac address='52:54:00:df:fa:2d'/>
75 <source network='br0'/> # default修改为br0
76 <model type='virtio'/>
77 <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
78 </interface>

4.3.3 给虚拟机添加新网桥网卡

[root@CentOS7-GUI ~]# virsh attach-interface CentOS7.2-clone --type bridge --source br0
Interface attached successfully

添加网卡后使用8.2的方式设置桥接网卡或使用ip命令直接添加IP即可。

[root@moban ~]# #ip address add 10.0.0.2/24 dev ens8 # ip 会自动消失

第5章 KVM图形界面管理

图片[3]|KVM日常使用|leon的博客

图片[4]|KVM日常使用|leon的博客

图片[5]|KVM日常使用|leon的博客

 

温馨提示:本文最后更新于2022-12-20 20:57:55,已超过483天没有更新。某些文章具有时效性,若文章内容或图片资源有错误或已失效,请联系站长。谢谢!
转载请注明本文链接:https://blog.leonshadow.cn/763482/139.html
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享