我再次提出了如何最好地优化磁盘结构的始终存在的问题。在我的组织中,我们有一个 14TB Linux 软件 RAID 阵列,专门用于存储使用 Symantec Backup Exec 制作的备份。这些是大文件,每个 10GB - 100GB,一些支持的元数据文件大小为几 KB。长话短说,我们必须重新创建数组,我想知道这个用例的最佳数组块大小。
我们设置的详细信息:
一个 Netgear ReadyNAS Pro,运行全新和更新的 CentOS 6.4 安装。
来自各种供应商的 6 个 3TB 消费类(SATA II,7200 RPM)硬盘驱动器(大小相同)。
每个驱动器有 3 个相同的分区,形成 3 个软件 RAID 设备:
- /dev/md0: 6 x 32GB for / in a RAID6
- /dev/md1:RAID10 中的 6 x 4GB 交换
- /dev/md2:RAID5 中的 6 x 2.7TB 存储,总有用存储约为 14TB
此外,还有一个集成的 128MB 闪存设备设置为 /boot
/dev/md2 是我关注的数组。它作为驱动器“R:”提供给运行 Symantec Backup Exec 的 Windows Server 2008 R2 机器,通过多路径 iSCSI 在两台机器上的双千兆 NIC 上运行(也运行 9k 巨型帧)。
在 Server 2008 机器上,R: 被格式化为具有 64k 集群大小的 NTFS,专用于存储备份文件。平均文件通常在 40MB 和 5GB 之间,具体取决于当前完整与增量/差异的比例。磁盘使用率大约是读写之间的 50/50,因为我们也将备份从该驱动器镜像到磁带。
总的来说,考虑到硬件,我认为这个设置优化得相当好,但是我不是存储专家,RAID 块大小的含义略超出我的范围。我知道默认的mdadm
块大小是 512KB。这对我的场景来说是最优的吗?我应该调整它以匹配 NTFS 群集大小吗?还是我错过了一些神奇的公式?
感谢您的任何帮助,您可以提供。
编辑:基准结果如下。并非所有组合都经过测试。
########## 4K Chunk##########
-----------------------------------------------------------------------
CrystalDiskMark 3.0.2 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 111.551 MB/s
Sequential Write : 96.759 MB/s
Random Read 512KB : 107.033 MB/s
Random Write 512KB : 56.770 MB/s
Random Read 4KB (QD=1) : 9.500 MB/s [ 2319.2 IOPS]
Random Write 4KB (QD=1) : 5.042 MB/s [ 1231.0 IOPS]
Random Read 4KB (QD=32) : 101.717 MB/s [ 24833.3 IOPS]
Random Write 4KB (QD=32) : 8.237 MB/s [ 2010.9 IOPS]
Test : 1000 MB [R: 0.0% (0.1/13791.8 GB)] (x5)
Date : 2013/07/12 13:10:31
OS : Windows Server 2008 R2 Enterprise Edition (Full installation) SP1
[6.1 Build 7601] (x64)
########## 32K Chunk##########
-----------------------------------------------------------------------
CrystalDiskMark 3.0.2 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 91.276 MB/s
Sequential Write : 11.119 MB/s
Random Read 512KB : 0.000 MB/s
Random Write 512KB : 0.000 MB/s
Random Read 4KB (QD=1) : 0.000 MB/s [ 0.0 IOPS]
Random Write 4KB (QD=1) : 0.000 MB/s [ 0.0 IOPS]
Random Read 4KB (QD=32) : 0.000 MB/s [ 0.0 IOPS]
Random Write 4KB (QD=32) : 0.000 MB/s [ 0.0 IOPS]
Test : 1000 MB [R: 0.0% (0.1/13791.8 GB)] (x5)
Date : 2013/07/12 14:37:05
OS : Windows Server 2008 R2 Enterprise Edition (Full installation) SP1
[6.1 Build 7601] (x64)
########## 64K Chunk##########
-----------------------------------------------------------------------
CrystalDiskMark 3.0.2 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 111.968 MB/s
Sequential Write : 103.318 MB/s
Random Read 512KB : 105.047 MB/s
Random Write 512KB : 48.321 MB/s
Random Read 4KB (QD=1) : 10.373 MB/s [ 2532.5 IOPS]
Random Write 4KB (QD=1) : 5.180 MB/s [ 1264.5 IOPS]
Random Read 4KB (QD=32) : 95.106 MB/s [ 23219.3 IOPS]
Random Write 4KB (QD=32) : 9.108 MB/s [ 2223.6 IOPS]
Test : 1000 MB [R: 0.0% (0.1/13791.8 GB)] (x5)
Date : 2013/07/12 12:47:37
OS : Windows Server 2008 R2 Enterprise Edition (Full installation) SP1
[6.1 Build 7601] (x64)
########## 128K Chunk##########
-----------------------------------------------------------------------
CrystalDiskMark 3.0.2 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 111.908 MB/s
Sequential Write : 94.305 MB/s
Random Read 512KB : 104.772 MB/s
Random Write 512KB : 43.821 MB/s
Random Read 4KB (QD=1) : 9.247 MB/s [ 2257.6 IOPS]
Random Write 4KB (QD=1) : 4.929 MB/s [ 1203.3 IOPS]
Random Read 4KB (QD=32) : 101.764 MB/s [ 24844.8 IOPS]
Random Write 4KB (QD=32) : 7.949 MB/s [ 1940.6 IOPS]
Test : 1000 MB [R: 0.0% (0.1/13791.8 GB)] (x5)
Date : 2013/07/12 13:52:01
OS : Windows Server 2008 R2 Enterprise Edition (Full installation) SP1
[6.1 Build 7601] (x64)
########## 512K Chunk##########
-----------------------------------------------------------------------
CrystalDiskMark 3.0.2 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 110.237 MB/s
Sequential Write : 93.149 MB/s
Random Read 512KB : 104.892 MB/s
Random Write 512KB : 41.407 MB/s
Random Read 4KB (QD=1) : 6.760 MB/s [ 1650.3 IOPS]
Random Write 4KB (QD=1) : 3.539 MB/s [ 864.0 IOPS]
Random Read 4KB (QD=32) : 101.139 MB/s [ 24692.3 IOPS]
Random Write 4KB (QD=32) : 7.166 MB/s [ 1749.6 IOPS]
Test : 1000 MB [R: 0.0% (0.1/13791.8 GB)] (x5)
Date : 2013/07/12 12:22:58
OS : Windows Server 2008 R2 Enterprise Edition (Full installation) SP1
[6.1 Build 7601] (x64)
##########1024K Chunk##########
-----------------------------------------------------------------------
CrystalDiskMark 3.0.2 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 112.327 MB/s
Sequential Write : 92.353 MB/s
Random Read 512KB : 107.015 MB/s
Random Write 512KB : 39.793 MB/s
Random Read 4KB (QD=1) : 9.536 MB/s [ 2328.0 IOPS]
Random Write 4KB (QD=1) : 3.671 MB/s [ 896.3 IOPS]
Random Read 4KB (QD=32) : 101.990 MB/s [ 24900.0 IOPS]
Random Write 4KB (QD=32) : 0.000 MB/s [ 0.0 IOPS]
Test : 1000 MB [R: 0.0% (0.1/13791.8 GB)] (x5)
Date : 2013/07/12 14:17:08
OS : Windows Server 2008 R2 Enterprise Edition (Full installation) SP1
[6.1 Build 7601] (x64)
至少,您希望块大小是文件系统块大小的倍数或除数。你明白了。
其他一切都可能取决于实现。由于您是从头开始,您应该推出自己的基准测试。无需创建 14 TB 的 RAID 集,而是使用每个驱动器中的 500 GB 以不同的块大小进行测试。较小的卷大小将减少创建卷所需的时间。
当您找到适合您的设置的最佳数量时,然后创建您的 14 TB RAID 集。再次测试以确保您没有性能下降。
这取决于使用场景。假设您有很少数量的小文件 < 512KB 假设它是 10000 个文件,其余的是非常大的文件 >10MB 5000 个文件。格式化驱动器时最好有一个 1MB 的簇大小,如果你有 8 个磁盘 raid 10 设置,它将同时读取 128KB。
如果您所有的小文件和大文件的尾部都是 4KB,则您最多会丢失 508KB * 15000 磁盘空间,这意味着大约 7500MB,即 7.5 GB 磁盘空间损失。
如果与将块大小设置为 512 KB 并将集群大小设置为 64 KB 相比,您将获得 4 倍的速度。
所以作为最后的食谱:
另外:
!很重要:
不要使用raid 5(几乎不可能重建和错误)
不要将 btrfs 与它自己的 raid 5 或 raid 6 设置一起使用(已知错误)
不要将 raid 0 用于关键任务数据,它可能会持续 10 年,但这是一场赌博
使用软件突袭设置
备份LSI芯片卡的rombios软件并购买备用卡,确保它们的rombios版本相同,并确保更换另一个可以重建raid
这些是我 2 年文件服务器设置经验中的一些内容