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

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

我有一个测试箱 (PowerEdge 2950),上面连接着 Perc 6/i 和 4x 15.5k SAS 驱动器 (块大小为 512 字节)。这些驱动器位于单个 RAID 5 虚拟磁盘中,块大小为 64KB。

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

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

我已阅读过几个类似的问题,但是从这些问题中我无法看出,当使用单个驱动器时,RAID 卷的块大小与分区对齐、驱动器块大小有何关系。

答案1

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

如果您使用 fdisk 进行分区,则请传递该-u标志。因此它会报告 512 字节扇区(而不是柱面)中的值。

由于您使用的是 ext*,因此您可以使用这个计算器确定文件系统的条带大小和步幅宽度。我表明您需要使用以下选项创建文件系统:mkfs.ext3 -b 4096 -E stride=16,stripe-width=48。您可能想尝试只创建文件系统而不传递选项,然后查看 mkfs 检测和使用的内容(使用 进行检查tune2fs -l /dev/sdnn)。如今,它似乎在自动检测大小/宽度方面做得相当不错。

答案2

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

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

当然,它正在读取和写入 64Kb 块,因此如果你从 192Kb 边界开始分区,你可能会只是在访问分区开头的文件时,可以看到微小的改进。但是,假设此磁盘不会有几个非常大的文件(即大小为 192Kb 的倍数)被顺序读取,在正常操作中,磁头将在整个磁盘上移动,读取/写入以 4Kb 块分配的文件,这将抵消分区对齐带来的任何好处。

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

答案3

您的分区应与条带宽度(块大小 * 承载数据的磁盘数量)对齐。但是,您应该知道,这仅仅触及了对齐优化的表面,您需要确保从 RAID 块大小到文件系统元数据再到应用程序 I/O 大小的所有内容都需要对齐,以实现最佳性能并确保没有不必要的读/写放大。我写了一篇关于这个主题的文章优化文件系统对齐,您可能会认为它很有用。

相关内容