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

Lin*_*eak 40 software-raid partition mdadm disk

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

想象一下以两种方式创建的 RAID6,其中一种是:

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
Run Code Online (Sandbox Code Playgroud)

或者:

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*elo 37

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

应该考虑使用分区而不是整个磁盘。这应该符合设置阵列的一般建议,并且在将来需要进一步更换磁盘时肯定会让您头疼。

最重要的论据是:

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

关于为什么使用不同制造商的磁盘的旁注: 磁盘会失败,这不是“如果”而是“何时”的问题。相同制造商和相同型号的磁盘具有相似的特性,因此在相同的条件和使用时间下,一起失败的可能性更高。因此建议使用不同厂商、不同型号的磁盘,特别是不属于同一批次的磁盘(如果您购买相同制造商和型号的磁盘,请考虑从不同商店购买)。当使用同一批次的磁盘时,在更换磁盘后的重新安装期间发生第二个磁盘故障的情况并不少见。你当然不希望这发生在你身上。

所以建议:

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

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

3) 如果您无法选择不同制造商的磁盘,请使用不同型号的磁盘;

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

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

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

OBS:除了上述所有不可忽视的理性之外,使用 /dev/sd 之间没有太多进一步的技术差异吗?vs /dev/sd?#。

祝你好运


nh2*_*nh2 12

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

当我的华擎主板的 UEFI 使我的 RAID 无法使用时,我艰难地学到了这一点:

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

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


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

我从来不知道什么是真实的这个最佳实践论据是(除了@Marcelo 的回答,解释说它可以处理大小略有不同的磁盘)。现在我知道了。

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


小智 6

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

因此,如果您使用整个设备创建 RAID(例如,/dev/sda, /dev/sdb, ... 而不是 on /dev/sda1, /dev/sdb1, ...),即使您将配置保存在mdadm.conf. 也有主板固件覆盖或删除 RAID 超级块的可能性。在我的设置中,运行mdadm --assemble --scan --verbose并没有让我回到我的 RAID 设置,而且似乎是 RAID 超级块不可用的情况。