需求
在公有云多个IDC的情况下,有时候需要把底层的volume从一个区迁移到另一个区,由于我们底层都使用的是ceph系统,所以这里的迁移方案是基于ceph RBD的。
操作
source区操作
获取cinder volume的id
1
2$ cinder list --all | grep tst-vol
| 8097de58-343e-4070-8e83-f7c5541bd26b | 3c9fd84b60694c40bcfeaf1fb4ed3c13 | available | tst-vol2 | 10 | sata | false |- cinder volume id: 8097de58-343e-4070-8e83-f7c5541bd26b
- cinder volume size: 10G
- cinder volume type: sata
根据volume的类型,获取其对应的ceph pool
普通型:volumes
高性能:volumes_hp我们系统对volume做了分类,对应不同的Ceph pool,底层使用不同性能的磁盘
通过命令可以看到ceph里存的volume
rbd ls -p <volumes/volumes_hp> | grep <volume id>
例如:
1
2$ rbd ls -p volumes | grep 8097de58-343e-4070-8e83-f7c5541bd26b
volume-8097de58-343e-4070-8e83-f7c5541bd26b通过rbd export 命令导出数据
rbd export -p <volumes/volumes_hp> <image-name> <path file>
例如:
1
rbd export -p volumes volume-8097de58-343e-4070-8e83-f7c5541bd26b backup.volume-8097de58-343e-4070-8e83-f7c5541bd26b
即把volume数据保存到文件:backup.volume-8097de58-343e-4070-8e83-f7c5541bd26b
这里命令:
ls -l
查看备份文件的大小为10G
但是实际文件size没有10G大小,真实size与volume写入的数据多少有关系,通过命令:du -sh <volume file>
可看到文件真实size,一般比volume真实size多3-4GB
存储volume数据文件的fs类型对文件大小也有影响通过linux的tar命令还可以对数据进行压缩,但这个时间比较长,10G的真实数据,压缩时间约为10分钟,压缩后的size约为 3.2G。
不同压缩算法用的时间和压缩比都不一样,根据实际情况挑选
destination区操作
destination区创建云硬盘
在新的服务区,主机恢复后,创建一个新的同类型的云硬盘,用上面的1,2,3步骤找到对应的image-name
比如对应的image-name为:volume-8c4cc416-b667-4cf2-8a7c-9ff29a23666b
通过rbd命令删除这个image
rbd rm -p <volume pool> <volume id>
例如:
1
rbd rm -p volumes volume-8c4cc416-b667-4cf2-8a7c-9ff29a23666b
不删除的话,没法执行下一步的数据导入
然后通过命令导入数据
rbd import -p <volumes/volumes_hp> <path file> <image-name>
例如:
1
rbd import -p volumes backup.volume-8097de58-343e-4070-8e83-f7c5541bd26b volume-8c4cc416-b667-4cf2-8a7c-9ff29a23666b
正常attach新的云硬盘到主机即可