1.背景:
现在需要将三台kvm虚拟机从Centos7.2物理机上迁移到Centos6.6物理机上。 系统可以正常导入,操作略过。
2.报错信息:
磁盘文件qcow2不能正常使用,报错如下:
virsh # attach-disk dlw1 /kvm/dlw/dlw1_01.qcow2 vdb --cache=none --subdriver=qcow2
error: Failed to attach disk
error: internal error unable to execute QEMU command '__com.redhat_drive_add': 'drive-virtio-disk1' uses a qcow2 feature which is not supported by this qemu version: QCOW version 3
3.错误分析:
已有磁盘文件dlw1_01.qcow2,在Centos6.6上新建一个磁盘文件dlw1_02.qcow2:
# qemu-img create -f qcow2 dlw1_02.qcow2 100G
Formatting 'dlw1_02.qcow2', fmt=qcow2 size=107374182400 encryption=off cluster_size=65536
对比两个qcow2文件
# file dlw1_0*
dlw1_01.qcow2: Qemu Image, Format: Qcow (v3), 107374182400 bytes
dlw1_02.qcow2: Qemu Image, Format: Qcow , Version: 2
4.错误原因推测+处理:
原因是7.2下的qemu-img版本较高为1.5.3,生成的qcow2文件版本也较高, 而6.6系统下的qemu-img版本较低为0.12.1,对应的qcow2文件版本也较低。 高版本的qcow2文件并不能在低版本的系统中使用,需要在7.2的系统下使用命令将qcow2降级
# cp dlw1_01.qcow2 dlw.qcow2
# qemu-img amend -f qcow2 -o compat=0.10 dlw.qcow2
将dlw.qcow2文件拷贝到6.6系统下,
进行对比
# file dlw1_0*
dlw1_01.qcow2: Qemu Image, Format: Qcow (v3), 107374182400 bytes
dlw1_02.qcow2: Qemu Image, Format: Qcow , Version: 2
# file dlw.qcow2
dlw.qcow2: Qemu Image, Format: Qcow , Version: 2
发现降级后的qcow2文件与在6.6上生成的qcow2文件属性一样,将它attach上虚拟机,检测是否可用
# virsh attach-disk dlw1 /kvm/dlw/dlw.qcow2 vdb --cache=none --subdriver=qcow2
Disk attached successfully
连接dlw1虚拟机,检查发现,磁盘已经成功添加:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 100G 0 disk
├─vda1 252:1 0 500M 0 part /boot
└─vda2 252:2 0 99.5G 0 part
├─centos-root 253:0 0 91.6G 0 lvm /
└─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
vdb 252:16 0 100G 0 disk
├─vdb1 252:17 0 95G 0 part /var/lib/ceph/osd/ceph-0
└─vdb2 252:18 0 5G 0 part
同样将我另外两台虚拟机dlw2,dlw3的磁盘也再次添加上。
5.总结:
为什么我在迁移虚拟机的同时,非要把磁盘也顺带上呢,主要是因为我的三台虚拟机搭建的ceph,一个磁盘对应一个osd,虽然这些磁盘里并没有数据,但是如果原先的磁盘不能用了,我还得花时间,删osd,重新添加磁盘,重新添加osd。
问题解决后,看看迁移后虚拟机上我的ceph状态
# ceph -s
cluster dda136ed-37da-46c6-ab9d-a9c43f97b44a
health HEALTH_OK
monmap e1: 3 mons at {dlw1=172.16.13.21:6789/0,dlw2=172.16.13.22:6789/0,dlw3=172.16.13.23:6789/0}
election epoch 90, quorum 0,1,2 dlw1,dlw2,dlw3
mgr active: dlw2 standbys: dlw3, dlw1
osdmap e71: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds,require_kraken_osds
pgmap v13869: 576 pgs, 5 pools, 32768 kB data, 15 objects
220 MB used, 284 GB / 284 GB avail
576 active+clean