RAID 级别 1 之 2 网络块设备

RAID 级别 1 之 2 网络块设备

我目前有 2 个 500 GB 硬盘的 RAID 级别 1。RAID 由服务器 1 管理,驱动器位于 2 个不同的服务器中。

一旦我设置好 RAID,它就运行良好,但是,在随机时间,连接似乎会断开,mdadm 会将其标记为故障,即使我使用带有 -persist 选项的 nbd-client;mdadm 也拒绝将该驱动器视为正常驱动器。将断开连接的驱动器重新放入 RAID 阵列的唯一方法是:
mdadm -r /dev/md0 /dev/nbd1
mdadm -a /dev/md0 /dev/nbd1

我的问题是,它会导致网络上 500GB 的完全重新同步。
我对这个问题有两个疑问:

有没有办法告诉 mdadm 不要完成完全重新同步,因为它在断开连接之前确实完成了重新同步,所以我看不出它执行完全重新同步的充分理由?

我是否最好使用 rsync,因为我需要的只是我写入/删除的任何数据的备份?我建议这样做,因为 rsync 据称只传输增量(或更改)数据,而不是 mdadm 似乎正在做的事情。

答案1

哇,我已经很久没有听说有人使用 NBD 了。

您是否考虑过使用DRBD反而?

它是特征包括网络故障自动恢复和差异重新同步。


更好的是,走向主线

答案2

赞同使用 DRBD 的建议,因为这正是它设计的场景。您还可以屏蔽本地磁盘错误 - 如果本地磁盘发生故障,DRBD 可以从远程磁盘提供块,这样操作系统就知道它仍然有一个功能齐全的磁盘。

DRBD 还具有必要的基础设施,以优于使用简单的软件 RAID 解决方案的方式管理故障转移和一致性。

答案3

虽然我永远不会考虑在 NBD 上做网络 RAID 1,并且我是 DRBD 的忠实粉丝,将其用于所有“HA 存储”,但您的问题中有一点适用于其他 mdadm 情况。您说:

有没有办法告诉 mdadm 不要完成完全重新同步

是的,有。检查mdadm(8) 中的“写入意图位图”——基本上,这是 mdadm 记住哪些块处于同步状态并仅重新同步它不知道是否最新的块的一种方式。在您的情形下,我仍然会使用 DRBD,但对于大型本地 RAID 集,它在崩溃后也能提供很大帮助。

答案4

是的,RAID 是这种情况下不合适的技术。您要么使用 rsync,要么看看正在开发的一些分布式文件系统。

相关内容