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


26

有人可以告诉我,mdadm使用分区或直接使用整个磁盘创建阵列有什么区别?假设我打算使用整个驱动器。请注意,它们与GPT一起使用。

想象一下以两种方式创建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

有区别吗?

EDIT1:我的意思是例如在此类阵列上进行可靠性或可管理性或恢复操作等。

EDIT2:我确实使用其他制造商的驱动器。但这不是真正的问题。它们都具有完全相同的尺寸,我要说的是,可能有制造商制造的驱动器尺寸略有不同。但是为了这个问题,让我们假设它们的大小相同。

EDIT3:某种免责声明:到目前为止,我一直在对驱动器进行分区。


2
我一直对此很好奇,但从未问过任何人。我看到的一个区别是使用分区磁盘(sda1等)时,由于GPT为分区信息保留了一些空间,因此磁盘空间(KB)有所减少。
GMaster

Answers:


25

最重要的区别是,它使您可以增加磁盘更换的灵活性。下面将对它进行详细介绍,并提供其他一些建议。

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

最重要的参数是:

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

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

所以建议:

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

2)使用不同制造商的磁盘;

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

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

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

6)进行定期备份(始终,无论是否使用阵列)。突袭与备份的目的不同。阵列可确保您具有高可用性,备份可让您还原丢失的文件(包括意外删除的文件或被病毒损坏的文件,某些使用阵列无法保护您的文件的示例)。

OBS:除了上面所有不可忽略的有理数之外,使用/ dev / sd之间没有更多的技术区别吗?vs / dev / sd?#。

祝好运


大部分都没有关系...
user1133275 '16

但是,我猜@Kalavan警告是指将同一磁盘中的多个分区用作数组的组件。这肯定没有多大意义,因为它消除了冗余。但是,我们知道,这不是您提出问题的意图,无论如何,他的警告是有道理的。
马塞洛

如果手动管理分区似乎很麻烦,则应使用sfdisk -d src | sfdisk tgtsgdisk --backup && sgdisk --load-backup
andyn

7

另一个重要的论点是,如果您使用整个磁盘设备,则某些主板可能会删除您的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将告诉您它已经检测到过去的数据,并询问您是否要继续重复使用该数据)。我尝试过多次操作,但效果很好,但我仍然建议您先备份一次。


2

有几篇文章引用了将整个设备用作RAID成员而不是分区的问题,这里有一个。我可以确认是这样。

所以,如果你创建一个使用整个设备RAID(比如/dev/sda/dev/sdb......而不是在/dev/sda1/dev/sdb1...)的RAID设备,即使你有配置下保存重启后并不重组mdadm.conf。主板固件也可能会覆盖或删除RAID超级块。在我的设置中,运行mdadm --assemble --scan --verbose并不能使我恢复RAID设置,这似乎是RAID超级块不可用的情况。


我使用VirtualBox内部的2x10GB驱动器测试了RAID1设置。RAID是在整个设备上创建的,重新启动后可以重新组装。该问题可能仅适用于物理设备。
隆滕

0

为了使自己免于将来的麻烦,请使用分区。所有驱动器均发生故障,这不是“如果”的问题,而是“何时”的问题。如果使用整个驱动器,则在驱动器发生故障后,必须用完全相同的尺寸型号替换它。由于不同的制造商或工艺变更,甚至会增加几MB,这都将导致驱动器更换失败。

使用分区,当您当前的2TB驱动器之一发生故障时,您将获得一个替换的4TB(或其他,只要更大),然后在其上创建相同的2TB分区大小。是的,您可能正在浪费该新大型驱动器上的空间。可以将该驱动器的其余部分用作非RAID分区,但可能以奇怪的方式影响性能。在几次驱动器故障和更换之后,您最终将更换所有原来的2TB驱动器,现在可以扩展RAID阵列以使用更大的分区大小。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.