场景介绍:在一个生产环境中,A和B两个集群都是同构的FileStore集群,能不能不采用将数据全读出再写入这种方式,完成A集群数据到B集群数据的迁移?数据量20T,可以停机维护,不能搬服务器,因为老集群还有人用,新集群另一波人用,可以拔磁盘,用磁盘把数据带过去,分布在不同机器上几十T的数据,每个设备上都可以提供冗余盘,可以用来搬数据,求靠谱迁移方案。谢谢大家
另外网上群友说的一个大致思路。
1. 停掉所有OSD;
2. 将OSD上的PG导出到备份盘,一个PG就是一个文件。
2.1 启动OSD恢复业务,老集群可以继续使用。
3. 将备份盘搬到新机房
4. 在新机房建一个新的存储集群,要求:
a) ceph fsid 一致
b) 创建同样pg_num的业务迁移池。
c)容量足够,服务器能插上备份盘
5. 停掉新集群所有OSD,设置nobackfill, 开始倒入PG
5.1 ceph-objectstore-tool remove 掉所有的PG
5.2 ceph-objectstore-tool import 所有备份盘的PG,到任意本服务器上的OSD上都行,OSD启动后,会扫描自身的PG,如果不属于自己,会backfill到crush算出的正确的OSD上。
6. 导入完毕,启动所有OSD,开始数据回迁。
收起采用增加节点的方法
(1)首先打通新老机房的网络环境
(2)然后在新机房增加建立老机房的相同数量的osd节点和mds节点(这些都是标准的做法)
(3)然后,停止老机房的osd节点,让系统把数据同步到新的机房节点osd去
(4)最后,停止老机房的master节点
缺点,需要两套设备
变通方法,一个个迁移,很麻烦
(2.1)关闭老机房的一个osd,把磁盘转移到新的机房重新拉起osd,以此类推;
(3.1)对mds节点也采用这个办法,前提,mds不是一个