我一直在检查我的 ZFS 存储服务器的速度。我有一些大文件(>30 GB),我一直在使用dd
管道来/dev/null
检查读取速度。
dd
首次针对特定文件运行时,我获得的结果一致,约为 95 MB/s。我使用这两个信号和pv
来监控进度,它们的结果相同。
然而,dd
第二次运行时,不寻常的事情发生了:
407+0 records in
406+0 records out
425721856 bytes (426 MB, 406 MiB) copied, 4.61932 s, 92.2 MB/s
911+0 records in
910+0 records out
954204160 bytes (954 MB, 910 MiB) copied, 9.66672 s, 98.7 MB/s
1412+0 records in
1411+0 records out
1479540736 bytes (1.5 GB, 1.4 GiB) copied, 14.7018 s, 101 MB/s
12374+0 records in
12373+0 records out
12974030848 bytes (13 GB, 12 GiB) copied, 19.7579 s, 657 MB/s
12854+0 records in
12853+0 records out
13477347328 bytes (13 GB, 13 GiB) copied, 24.7491 s, 545 MB/s
是什么原因导致文件大小从 1.5 GB 突然飙升至 13 GB?我认为是 ZFS 缓存造成的(服务器有 64 GB RAM,因此有可能出现这种情况),但是服务器(FreeBSD)通过单个 1Gbps 链路连接到我的客户端(OSX),这肯定无法处理 657 MB/s 的速度。压缩也不太可能,因为文件包含几乎随机的数据。
编辑:抱歉,也许我问的问题有点令人困惑。
我有一台带有 ZFS 文件系统的 FreeBSD 服务器。该服务器使用 AFP 协议共享文件。我使用运行 OSX 10.10 的台式电脑连接到它。当然,我dd
在客户端上运行。
dd if=/Volumes/NetworkShare/testfile.dat of=/dev/null bs=1048576
直接在服务器上运行时,dd
显示超过 625 MB/s(这似乎没问题,因为 zpool 的数据分布在 8 个驱动器上)。
答案1
首先,请包含dd
您用于运行测试的命令。正如评论中指出的那样,写入的文件正在增长,因此很可能存在问题(除非每个测试都在复制不同的文件)。此外,到目前为止,您写入的数据块有多大也很重要,即bs
选项应该足够大。请参阅此测试 ZFS 速度线程作为示例。
其次,您可以使用diskinfo工具来获取磁盘的最大理论速度,例如:
diskinfo -tv /dev/ada0
第三,我建议尝试不同的工具来获得更广阔的视野,例如iozone
我在发布的帖子中提到的。
最后,当您将文件复制到服务器/dev/null
时,数据永远不会离开服务器。所以您说得对,速度差异很可能是由于 ZFS 缓存造成的。尝试通过网络复制文件,您将无法获得超过 100Mb/s 的速度(1Gbit 链路的理论速度为 125Mb/s)。