这是怎么回事?!我困惑了。
serveradmin@FILESERVER:/Volumes/MercuryInternal/test$ sudo dd if=/dev/zero of=/Volumes/MercuryInternal/test/test.fs bs=4096k count=10000
10000+0 records in
10000+0 records out
41943040000 bytes (42 GB) copied, 57.0948 s, 735 MB/s
serveradmin@FILESERVER:/Volumes/MercuryInternal/test$ sudo dd if=/Volumes/MercuryInternal/test/test.fs of=/dev/null bs=4096k count=10000
10000+0 records in
10000+0 records out
41943040000 bytes (42 GB) copied, 116.189 s, 361 MB/s
值得注意的是:我的 RAID50 有 3 组 8 个磁盘。——这可能不是速度的最佳配置。
操作系统:Ubuntu 12.04.1 x64
硬件 Raid:RocketRaid 2782 - 24 端口控制器
硬盘类型:Seagate Barracuda ES.2 1TB
驱动程序:v1.1 开源 Linux 驱动程序。
因此,24 个 1TB 驱动器使用 parted 进行分区。文件系统为 ext4。I/O 调度程序以前是 noop,但已将其更改为 deadline,似乎没有性能优势/成本。
serveradmin@FILESERVER:/Volumes/MercuryInternal/test$ sudo gdisk -l /dev/sdb
GPT fdisk (gdisk) version 0.8.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 41020686336 sectors, 19.1 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 95045EC6-6EAF-4072-9969-AC46A32E38C8
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41020686302
Partitions will be aligned on 2048-sector boundaries
Total free space is 5062589 sectors (2.4 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 41015625727 19.1 TiB 0700 primary
对我来说,这应该没问题。除了基本的驱动程序错误之外,我想不出还有什么原因会导致这种情况?我似乎无法获得比每秒 361MB 更高的速度,这是否会影响“SATA2”链接速度,因为它是 PCIe2.0 卡,不应该达到这个速度。或者可能是某些缓存问题 - 我确实启用了写回功能。
有人有什么建议吗? 有什么测试可以让我做吗? 或者如果您需要更多信息,我很乐意提供!
这是用于编辑机器的视频文件服务器,因此我们更倾向于快速读取而不是写入。我只是对 RAID 50 和 24 个驱动器的结合抱有更高的期望...
编辑:(hdparm 结果)
serveradmin@FILESERVER:/Volumes/MercuryInternal$ sudo hdparm -Tt /dev/sdb
/dev/sdb:
Timing cached reads: 17458 MB in 2.00 seconds = 8735.50 MB/sec
Timing buffered disk reads: 884 MB in 3.00 seconds = 294.32 MB/sec
编辑2:(配置详情)
另外,我使用的 RAID 块大小为 256K。有人告诉我,对于较大的文件(在我的情况下是较大的视频),较大的块大小更合适。
编辑3:(Bonnie++ 结果。希望得到一些指导!)
答案1
请使用专门构建的基准测试工具,例如碘以便更好地了解系统的实际性能。我经常看到人们使用它dd
来进行基准测试。它不能很好地代表实际的 I/O 工作负载。
根据 Iozone 测试的结果,我可能会查看缓存情况,并可能查看您是否启用了任何屏障。这很奇怪,因为您的问题似乎是读取速度。嗯...
你肯定没有达到 SAS/SATA 链路的极限。你做有 24 个端到端连接,对吗?其中没有 SAS 扩展器,对吗?