我很好奇分区(和分区表)的概念如何与 RAID 阵列的概念共存。以下是我目前的理解(如有错误请指正):
物理硬盘驱动器磁盘可以分为多个段。分区表位于磁盘空间的开头,用于描述磁盘空间的分区方式。有多种分区表类型(MBR、GPT...)
RAID 阵列是由多个硬盘驱动器磁盘(即阵列)组成的单个“物理卷”。对于操作系统来说,这显示为单个物理设备。此外,该RAID阵列可以作为一个整体进行分区。
所以我的问题 - 如果您将物理磁盘添加到 RAID 控制器,该 RAID 控制器会自动劫持每个物理磁盘并清除/重写单个磁盘分区表,以便它控制整个设备吗?或者 RAID 控制器是否意识到单个驱动器可能会被分区?
通常,硬件 RAID 控制器不知道磁盘上的任何分区 - 它假设如果您将磁盘添加到阵列,它会完全拥有该磁盘,并在其想要的位置写入自己的(可能是专有的)控制结构。它不一定将插入的磁盘添加到阵列中 - 例如,您可以在一个硬件控制器上定义多个阵列,并且必须手动选择新磁盘进入哪个阵列 - 因此您可以在一个硬件控制器上拥有独立的单个磁盘许多硬件 RAID 控制器。 (我猜您可以将它们视为单驱动器 RAID0 阵列。)由于硬件 RAID 控制器位于物理驱动器硬件和操作系统最低级别之间,因此它将不知道操作系统选择遵循哪种分区方案。
那么控制器会破坏您设置的任何分区吗?是的,但不是自动的;对于我曾经使用过的每个控制器,磁盘上的分区都会保留在那里,直到您手动告诉控制器将磁盘添加到现有阵列。 RAID 控制器是否意识到单个驱动器可能被分区这一事实?不,他们不是。
不,不。它们中的大多数并不关心磁盘的内容,除了 RAID 超级块。他们不解释分区表;分区表与 RAID 中的其他数据没有什么不同,它发生在 RAID 阵列数据区域中。
他们关心的是,如果数据写入双磁盘 RAID1,则数据会同时写入两个磁盘,如果读取,则从其中一个磁盘读取数据,如果出现问题,读取将重定向到另一个磁盘。
如果磁盘上有数据,则在创建阵列期间可能会擦除(通过“初始化”)或保留数据,您可以选择其中一种方式。如果保留,由于虚拟磁盘的大小与原始设备的大小不同(对于双磁盘 RAID1 来说稍小,或者对于双磁盘 RAID0 来说几乎是物理磁盘的两倍,等等),分区表可能会变得无效(这主要适用于 GPT)。如果磁盘有不同的数据并且您选择不擦除数据区域,则将随机决定读取哪个数据区域,并且 RAID 检查将揭示并报告这种可以说是非常不希望的情况。因此,如果您确定磁盘包含相同/同步的数据(特别是,它们是全新的且填充了零,并且您正在构建 RAID0 或 RAID1;对于 RAID5 和 6,您必须擦除/初始化全新的磁盘),您应该只选择不擦除。 ,因为当数组归零时它们的奇偶校验数据不为零)。
扩展其他答案:重要的是要看看什么是磁盘。
磁盘是一组数据块,我们可以对其进行读写。
仅此而已。任何更多的东西都只会成为麻烦的根源。
我们没有义务在磁盘上拥有分区表(任何格式的分区表),但在许多情况下,事实并非如此。
拥有分区表和分区已经是一个抽象:在单个物理磁盘上拥有多个类似磁盘的东西(分区)。
Raid 并不需要这一切。它可以,并且可以想象一些噩梦般的raid控制器,其行为受到子节点分区表的影响,希望我们中没有人需要处理这样的事情。
传统的硬件 RAID 与文件系统无关,它在块级别工作。它将其阵列作为单个设备呈现给操作系统,然后可以对其进行分区和格式化。
当您添加磁盘时,控制器将根据阵列的模式向其写入数据,通常以 128-256kb 宽的条带跨磁盘写入。该条带包含分区表、分区本身以及所有内容。就操作系统而言,它处理的是单个磁盘,而就 RAID 控制器而言,它只是将数据分布在磁盘上,并不关心数据是什么。