使用分区或直接使用整个磁盘创建 mdadm 阵列有什么区别

使用分区或直接使用整个磁盘创建 mdadm 阵列有什么区别

mdadm有人可以向我解释一下,使用分区或直接使用整个磁盘创建阵列有什么区别吗?假设我打算使用整个驱动器。

想象一下以两种方式创建的 RAID6:

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

或者:

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

这两种变体有什么区别以及可能出现的问题?

例如,我指的是此类阵列上的可靠性或可管理性或恢复操作等。

答案1

最重要的区别是它允许您增加磁盘更换的灵活性。下面更详细地介绍了它以及许多其他建议。

人们应该考虑使用一个分区而不是整个磁盘。这应该是设置阵列的一般建议,并且在将来需要进一步更换磁盘时肯定可以让您免去一些麻烦。

最重要的论据是:

来自不同制造商的磁盘(甚至来自同一制造商的“相同”容量的不同型号)不一定具有完全相同的磁盘大小,即使是最小的大小差异,也会阻止您用更新的磁盘替换故障磁盘如果第二个小于第一个。分区可以解决这个问题;

关于为什么使用不同制造商的磁盘的旁注: 磁盘会发生故障,这不是“如果”的问题,而是“何时”的问题。同一制造商和同一型号的磁盘具有相似的属性,因此在相同的条件和使用时间下,一起出现故障的可能性更高。所以建议使用不同厂家、不同型号的硬盘,特别是不同批次的硬盘(如果购买同一厂家、同一型号的硬盘,可以考虑从不同的商店购买)。当使用同批次的磁盘时,更换磁盘后恢复时发生第二块磁盘故障的情况并不罕见。你当然不希望这种事发生在你身上。

所以建议:

1)对磁盘进行分区将与使用容量稍小比总体磁盘空间(例如,我有一个 2TB 磁盘的 RAID5 阵列,我故意对它们进行分区,每个磁盘浪费了大约 100MB)。然后,使用每个 /dev/sd?1 来组成阵列 - 这将增加一个安全裕度,以防新的替换磁盘的空间小于创建阵列时用于组装阵列的原始磁盘的空间;

2)使用不同厂家的磁盘;

3) 如果不同制造商不适合您,请使用不同型号的磁盘;

4)使用不同批次的磁盘;

5) 在磁盘出现故障之前主动更换磁盘,而不是同时更换全部磁盘。这可能有点偏执,实际上取决于您所拥有的数据的关键程度。我曾经使用过的磁盘的年龄相差 6 个月;

6) 定期进行备份(始终进行备份,无论您是否使用阵列)。 Raid 的用途与备份不同。阵列可确保您的高可用性,备份可让您恢复丢失的文件(包括意外删除或被病毒损坏的文件,使用阵列无法保护您免受病毒损坏的一些示例)。

OBS:除了所有不可忽视的如上所述,使用 /dev/sd 之间没有更多的技术差异吗?与 /dev/sd?#.

祝你好运

答案2

另一个重要的论点是,一些主板可能会删除您的 RAID 超级块如果您使用整个磁盘设备,并且在将磁盘添加到曾经是 GPT 设备的 RAID 阵列时没有非常小心地擦除它们。

当我的华擎主板的 UEFI 导致我的 RAID 无法使用时,我经历了惨痛的教训:

为了防止这种情况发生,请始终在sgdisk --zap要用于全设备 RAID 的以前的 GPT 格式磁盘上运行。

wipefs -a 也可能有效在将设备添加到磁盘之前擦除所有剩余的分区信息(不仅是 GPT)。


也就是说,仅使用分区似乎是减少这种情况发生的最佳实践

我从来不知道什么是真实的争论是为了这种最佳实践(除了 @Marcelo 的回答解释它可以处理稍微不同大小的磁盘)。现在我明白了。

顺便说一句,如果您遇到这种情况,您的数据不会丢失。您很可能只需要sgdisk --zap设备,然后使用例如重新创建 RAID mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd(mdadm 会告诉您它已经检测到过去的数据,并询问您是否要继续重新使用该数据)。我尝试了多次并且有效,但我仍然建议您在执行此操作之前进行备份。

答案3

有几篇文章引用了使用整个设备作为 RAID 成员而不是分区的问题,这里有一个。我可以确认情况确实如此。

因此,如果您使用整个设备创建 RAID(例如,/dev/sda, /dev/sdb, ... 而不是/dev/sda1, /dev/sdb1, ...),则 RAID 设备在重新启动后不会重新组装,即使您将配置保存在mdadm.conf.主板固件也有可能覆盖或删除 RAID 超级块。在我的设置中,运行mdadm --assemble --scan --verbose无法让我恢复 RAID 设置,并且 RAID 超级块似乎不可用。

答案4

将磁盘而不是分区一起组成 RAID,然后再对 RAID 进行分区的情况并不罕见。特别是,大多数硬件 RAID 控制器甚至无法读取分区表,因此它们总是在整个磁盘上操作。但软件 RAID 也可以实现同样的效果。如果配置正确,软件 RAID 将在重新启动时正常重新组装。当然,请确保磁盘上没有留下任何以前的分区表的痕迹。这一点尤其重要,因为许多磁盘在交付时都已预先格式化,并且许多工具(软件 RAID、文件系统等)往往会在开始时留下“空扇区”,而以前分区表的这些痕迹可以保留在其中。

当您设置 RAID 时,购买一两个额外的磁盘作为备用也是值得的。如果任何磁盘发生故障,您可以快速更换它,这在 RAID5 或两磁盘 RAID1 中尤其重要,在单个磁盘发生故障后,您将没有冗余,直到故障磁盘被更换并且 RAID 已完成重新同步。通过拥有完全匹配的备用磁盘,您还可以避免 RAID 中的“弱”磁盘可能引起的问题,例如新磁盘比旧磁盘速度慢或小一点。

尽管如此,无论您是否有分区,“小一点”的问题都可以解决。只需使用设备映射器创建虚拟磁盘,即可从新磁盘获取 99.9% 的容量,并从系统磁盘或 SSD 获取缺失的 0.1%。或者,您可以在 initramfs 阶段重新启动期间收缩文件系统(请参阅https://serverfault.com/a/888830如何做到这一点),然后缩小 RAID,您也可以恢复在线状态。

换句话说:将整个磁盘用于硬件或软件 RAID 或 ZFS 内存池是完全可以的。

相关内容