Linux:如何在硬件 RAID 上对齐分区和文件系统

jwb*_*ley 6 hardware-raid partition-alignment

我有一个测试盒 (PowerEdge 2950),连接了 Perc 6/i 和 4 个 15.5k SAS 驱动器(块大小为 512 字节)。它们位于块大小为 64KB 的单个 RAID 5 虚拟磁盘中。

我正在创建一个跨越整个驱动器的测试分区。它应该与 64KB 块标记还是 512 字节块大小对齐?如果是后者,该分区可以从单个虚拟磁盘的 2048 字节开始,这意味着它将从第一个驱动器上的第二个空闲块开始(我假设)?

此外,我将添加另外两个驱动器并在以后重新创建 RAID 虚拟磁盘以进行更多测试,然后分区是否应该以 6x512 字节创建,所以从 3072 字节开始?

我已经阅读了一些关于此的类似问题,但我无法从中看出 RAID 卷的块大小如何与分区对齐、使用单个驱动器时的驱动器块大小相关。

Zor*_*che 8

如果您使用 2048(512 字节)扇区的起始扇区,那么您的分区将在驱动器中启动 1MB。大多数较新的安装程序默认使用此值。这个数字可以很好地被 64k 和大多数其他常见的块/块大小整除。

如果您使用 fdisk 进行分区,请传递-u标志。所以它报告 512 字节扇区而不是柱面的值。

由于您使用的是 ext*,因此您可以使用此计算器来确定文件系统的条带大小和步幅宽度。我展示了您希望使用以下选项创建文件系统:mkfs.ext3 -b 4096 -E stride=16,stripe-width=48. 您可能想尝试只创建文件系统而不传递选项并查看 mkfs 检测和使用的内容(检查tune2fs -l /dev/sdnn)。如今,它似乎在自动检测大小/宽度方面做得很好。


Sta*_*mer 0

你的数学是错误的。在 4 磁盘 RAID5 阵列中,有(简单地说)3 个数据磁盘和一个奇偶校验磁盘,这就是为什么如果您有 4 个 80Gb 驱动器,您将在 RAID 阵列上获得 3*80 或 240Gb 的可用空间。因此,根据您的假设,在驱动器的 2048 字节处启动分区将从第二个驱动器的第二个块开始。

但事实上,你的前提无论如何都是错误的。如果您曾经观察过 RAID5 阵列上的磁盘活动指示灯,您会发现它们都一起闪烁,除非进行重建。换句话说,RAID5 控制器实际上缓存磁盘读取和写入,并在所有驱动器上并行执行它们(显然,在重建期间,除了一个驱动器之外的所有驱动器一起运行,而重建驱动器通常处于固态状态)。这样才能保证一致性。

当然,它正在读取和写入 64Kb 块,因此如果您在 192Kb 边界处开始分区,那么在访问分区开头的文件时,您可能会看到一点点改进但是,假设该磁盘不会顺序读取一些非常大的文件(即大小为 192Kb 的倍数),则在正常操作中,磁头将在整个磁盘上移动,读取/写入分配的文件在 4Kb 块中,这将淹没分区对齐带来的任何收益。

总之,由于 Perc 6/i 是硬件 RAID 控制器,我只需让操作系统按照其建议对驱动器进行分区。分区的对齐不会对磁盘​​/文件访问速度产生明显影响。

  • “分区的对齐不会对磁盘​​/文件访问速度产生明显的影响。”-几乎,但不完全是。如果文件系统块跨越条带边界,则会对性能产生影响。在操作系统中创建第一个分区/卷时,起始偏移量应等于条带大小或其倍数。 (2认同)