Centos 6 上的最佳 raid 阵列

Centos 6 上的最佳 raid 阵列

我有 4x2TB 磁盘,我想创建一个性能良好的 RAID5 阵列(服务器是 HP N40L 微型服务器,具有 8GB RAM,从 64GB SSHD 启动)。操作系统是 Centos 6.3,x86_64。

我使用以下命令创建了 raid 阵列:

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

当我这样做时:

mdadm --examine /dev/sda1

...我被告知我的“块大小”是 512K(显然这是 mdadm 的新默认值)。

现在我想用 XFS 格式化阵列。有人告诉我(在http://www.mythtv.org/wiki/Optimizing_Performance#Optimizing_XFS_on_RAID_Arrays) “sunit” 等于我的 Chunk 大小,以 512 字节块的数量表示 - 因此,在我的情况下,512KB = 1024 个 512 字节块。同样,“swidth” 是我的阵列中有效磁盘的数量乘以 sunit。在我的情况下,我在 raid 5 中有 4 个磁盘,因此有效磁盘为 3 个,3x1024=3072。因此,我使用以下命令格式化了我的新阵列:

mkfs.xfs -b size=4096 -d sunit=1024,swidth=3072 /dev/md0

我现在有两个问题。上面的命令给了我这个错误:

mkfs.xfs -b size=4096 -d sunit=1024,swidth=3072 /dev/md0
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB [...]

...我想知道这是否意味着我做错了什么,或者我最终会以某种方式得到一个次优的文件系统,或者我是否可以因为某种原因忽略这个错误。

第二个问题只是我是否正确计算了 XFS 参数,或者我是否完全搞错了方向(如果有帮助的话,该阵列大部分情况下将存储大型音乐和视频文件)。例如,我是否理解了“块大小”和“条带大小”?我的 mkfs 命令中的块大小 4096 是否最佳?等等。

我将非常感激任何关于此事的建议。

答案1

XFS 不支持大于 256k 的条带单元,因此只需使用 256k 条带重新制作 RAID 阵列即可。这是--chunk的参数mdadm

4k 块大小可能对于您的预期用途来说太小了。如果您要存储大量小文件,那么 4k 可能更理想。XFS 可以达到 64k 块。读取和写入连续块的速度更快,但您会因为更大块大小的开销而损失一些空间。

您只能按块分配,因此请根据要处理的文件大小选择块大小。对于 4k 块大小,大小为 1kb 的文件占用 4kb 空间(1 个块),大小为 65kb 的文件占用 68kb 空间(17 个块)。对于 64kb 块大小,大小为 1kb 的文件占用 64kb(一个块),大小为 65kb 的文件占用 128kb(2 个块)。

如果您处理的是小文件,那么使用较大的块大小会浪费大量空间。如果您处理的是数百 GB 的视频文件,那么您可能不会在意这里或那里的 64kb,而较大块大小的性能优势会发挥更大的作用。

另一件需要理解的事情是分配组。每个 AG 都有一个单独的 IO 线程。XFS 分配器会尝试将每个目录放在不同的 AG 中。基本理论是每个物理设备一个 AG。

阅读 XFS 文档并了解文件系统的构建方式:

做出一些有根据的猜测,并确定哪些因素对您最重要。获取一些代表您的生产数据的文件(或实际生产数据的副本),并针对对您重要的内容运行一些基准测试。选择一个指标,例如您的视频或音频软件根据不同的块大小读取和写入文件的速度有多快?多个音频/视频工程师同时访问文件会如何影响不同 AG 的吞吐量?

XFS 专为数百 TB 的海量文件系统而设计,这些文件系统位于价值超过一栋房屋的 SAN 上,用于存储大量未压缩的媒体文件,就像专业电影制片厂所需的那样。如果您在便宜的 Linux 机器上使用它来存储盗版音乐和电视节目,那么只需使用 ext4,如果您遇到问题,它将更容易进行故障排除和修复。

相关内容