RAID-1 和常规驱动器移除(使用 RAID-1 作为备份措施)

RAID-1 和常规驱动器移除(使用 RAID-1 作为备份措施)

使用 mdadm 的 2 个分区(一个在笔记本电脑的内部硬盘上,一个在外部硬盘上)的 RAID-1 是一个好主意吗?

如果两个驱动器都存在,我希望系统作为 RAID-1 工作;如果拔下外部硬盘,我希望系统作为常规卷(降级 RAID-1)工作;当我再次插入外部硬盘时,我希望系统快速重新同步。

问题:

  1. 这是不是一个好主意?
  2. 写入意图位图是否足以完成这项任务或者我还需要别的东西?
  3. 我是否应该考虑在文件系统级别执行此操作(3b.如果是,怎么做?)。

基本要求是:

  1. 当我重新添加外部驱动器时快速重新同步(前提是我没有更改该分区)。
  2. 如果我不是在写入/重新同步操作期间移除驱动器,则移除的驱动器上的数据或多或少是一致的。

如果我在重新同步期间移除驱动器,我预计数据会有些不一致,但当我重新添加驱动器时,预计重新同步会快速完成。例如,我希望剩余的驱动器跟踪更改的内容(可能有很多更改),并且仅同步那些需要的部分。

答案1

我认为这不是一个好主意。你最多只能防止物理/电子驱动器问题,而且你只有一个备份副本,而这个副本在刷新时非常容易受到攻击。

如果另一个驱动器或整个机器出现故障,在重新同步期间,主驱动器可能会停止运行,而“备份”驱动器的文件系统可能会部分更新(即可能严重损坏)。这是大多数备份解决方案包含多个备份的原因之一(另一个关键原因是,您可以在更新另一个备份时离线(最好是异地)至少有一个备份),但更糟糕的是,RAID 重新同步不是将会感知文件系统,因此将无法采取任何措施来确保部分重新同步使文件系统处于接近一致的状态(例如,它可能在相关日志块之前同步写入的数据等)。

如果你以这种方式对整个系统进行 RAID,那么写入意图写入性能损失也可能非常显著(参见以下帖子http://blog.ganneff.de/blog/2008/01/30/write-intent-bitmaps-considere.html),但如果您仅对没有太多写入活动的文件系统进行 RAID,那么这可能不是您的问题。

sync如果您确实使用此技术,请确保在强制弹出驱动器之前运行。

您是否考虑过使用 rsync 来更新备份文件系统?在您的解决方案的最佳情况下,这会比较慢(因为即使没有任何变化,也需要对文件大小和日期进行全面扫描,如果文件系统包含许多文件,这可能会很重要),但通常足够快,并且肯定会比 RAID 驱动程序决定是否需要的完全重新同步更快。

答案2

看起来基于 external_HDD 的 RAID-1 阵列想法可行。

阵列开始退化并使用写入意图位图跟踪它的变化。

当我连接外部硬盘时,我的udev脚本会检测到一个分区适合我的阵列并添加它。它会同步(如果没有更改,则立即同步),然后加速读取访问。

当我断开外部硬盘(包括突然移除)时,另一个udev脚本会记录该驱动器已被移除并且阵列再次降级。

然而,写入性能有明显下降,但对于这种用途来说是可以接受的。

另一个优点是,我可以临时格式化该分区以供其他用途,然后将其带回阵列(完全重建)。

答案3

我发现的一个问题是,已移除的外部硬盘上的文件系统可能处于无法挂载的状态,尽管具有日志功能等的现代文件系统确实可以减轻这种风险。

但是如果您使用的是 mdadm,我可以假设您使用的是某种版本的 Linux,因此建议您改用 rsync。这样会很快,因为只会复制更改过的文件,并且还允许您使用脚本在外部硬盘上创建一个包含当前日期的文件夹,然后在其下创建内部硬盘的完整备份,但将文件与之前的备份进行硬链接,这样只为新数据使用空间。这样,您就可以轻松恢复内部硬盘上可能已删除的文件。

相关内容