无需重新同步即可迁移DRBD设备至其他底层设备并移除加密层的方案咨询
无需重新同步即可迁移DRBD设备至其他底层设备并移除加密层的方案咨询
嘿,你的核心思路是对的——用dd把DRBD逻辑设备的数据迁移到新的无加密虚拟磁盘,再重新配置DRBD,确实能避免跨WAN全量同步的麻烦。不过得注意几个关键细节,确保整个过程安全不丢数据,毕竟2TB的量折腾起来太费时间了:
第一步:确保DRBD数据完全一致且静止
在动手复制前,必须让DRBD集群处于完全同步、无IO的状态,不然复制出来的数据会有问题:
- 在原Primary节点卸载btrfs文件系统:
umount /path/to/your-btrfs-mount-point - 把该节点的DRBD角色切换为Secondary:
drbdadm secondary drbd0 - 等待两个节点的DRBD状态都变成
UpToDate,用命令确认:drbdadm status drbd0,看到两边都显示UpToDate再继续。
第二步:准备新的虚拟磁盘
在QNAP虚拟化平台给两个Debian节点都添加一块新的VirtIO磁盘(比如/dev/vdc),容量要满足两个条件:
- 不小于原DRBD逻辑设备(
/dev/drbd0)的大小 - 额外留出几十MB空间给DRBD的元数据(默认DRBD会在磁盘末尾预留元数据区,不用精确计算,比原盘大100MB就够)
第三步:复制DRBD数据到新磁盘
选其中一个节点(比如原Secondary节点,或者已经切换为Secondary的原Primary)执行复制操作,用dd就行,加个大区块参数和进度显示会更高效:
dd if=/dev/drbd0 of=/dev/vdc bs=1M status=progress
如果怕dd中途中断,也可以用ddrescue,它能断点续传:
ddrescue /dev/drbd0 /dev/vdc /var/log/drbd-rescue.log
复制完成后,在另一个节点执行完全相同的复制操作——这一步很关键,让两个节点的新磁盘都有一模一样的btrfs数据,之后DRBD只需要同步增量,不用全量。
第四步:重新配置DRBD并启动
- 在两个节点上修改DRBD配置文件(通常在
/etc/drbd.d/下,比如drbd0.res),把原来指向LUKS解密设备的device字段改成新的/dev/vdc,比如:resource drbd0 { protocol C; meta-disk internal; on node1 { device /dev/drbd0; disk /dev/vdc; # 这里改成新磁盘 address 192.168.1.10:7788; } on node2 { device /dev/drbd0; disk /dev/vdc; # 另一个节点同样修改 address 192.168.1.11:7788; } } - 在两个节点上为新磁盘创建DRBD元数据:
drbdadm create-md drbd0,执行时会提示是否覆盖磁盘末尾,确认就行——这只会在磁盘末尾创建DRBD元数据,不会破坏前面的btrfs数据。 - 启动DRBD服务:
systemctl start drbd,然后检查状态:drbdadm status drbd0,你会看到DRBD只会同步少量增量数据(如果复制期间有数据变化的话),而不是全量2TB。 - 把其中一个节点设为Primary:
drbdadm primary drbd0,然后重新挂载btrfs文件系统:mount /dev/drbd0 /path/to/your-btrfs-mount-point
额外注意事项
- 复制完成后先别急着删除原LUKS磁盘和配置,先运行几天确认新的DRBD集群稳定,再清理旧设备。
- 如果跨WAN的节点复制数据太慢,可以考虑把新磁盘拆下来(物理机场景)或者用QNAP的磁盘克隆功能先在本地克隆,再把磁盘移到远程节点,这样能节省跨WAN的复制时间。
- 操作前最好给原DRBD设备做个快照(QNAP虚拟化支持快照的话),以防万一出问题能快速回滚。
备注:内容来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

