FreeBSD ZFS 上的读写速度很慢

FreeBSD ZFS 上的读写速度很慢

我的家庭存储服务器目前由 6 x 3 TB Seagate 硬盘、12 GB DDR3 RAM 和 Core i3 540 组成,在读取或写入我设置的 raidz2 时性能确实很差。

使用/usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10

10240 bytes transferred in 0.000221 secs (46331902 bytes/sec)

反之亦然:

10240 bytes transferred in 0.000107 secs (95656287 bytes/sec)

相当于写入速度为 46 MB/s,读取速度为 95 MB/s。这似乎有点慢。或者这完全正常?

谢谢

托拜厄斯·廷佩

答案1

使用上面显示的命令,您并不是在测试磁盘写入性能。您是在测试各种因素,但主要是控制器和磁盘延迟。要测试磁盘读取性能,您需要费尽周折将磁盘缓存从测试中排除,这对于 ZFS 来说并不简单,因为这意味着禁用 ARC 缓存。测试写入性能要容易得多:写入更大的文件,最好是超过系统内置 RAM 的大小。

我在家里的 ZFS 文件服务器(带有镜像 WDC WD80 的 Core i3-4130T)上运行了此命令:

# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10000000
10240000000 bytes transferred in 55 secs (186900359 bytes/sec)

虽然不是很好,但这是实际写入性能的更好测试。一个有趣的结果是,我实现了 187MB/s,而我的磁盘额定性能为 178MB/s。这有点奇怪,因为典型的基准测试是额定性能的某个高分数。超过它可以用 ZFS 的磁盘压缩来解释。

我的磁盘位于 ZFS 镜像中(2 倍读取性能对我来说比存储效率更有用),但假设您的磁盘也是 5400 RPM,您应该期望具有相当的写入性能。

要了解为什么使用更大的计数dd并不是一个很好的测试,请查看以下内容:

# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1M count=1000000
1048576000000 bytes transferred in 223.56 secs (4690377542 bytes/sec)

只需将块大小增加到 1M,我的磁盘性能现在就令人惊叹不已。直到您意识到从 /dev/zero 读取意味着数据源没有熵并且高度可压缩。dd 不是测试磁盘性能的最佳工具。

FreeBSD 端口树中还有其他工具(我过去使用过 bonnie 和 iozone),它们可以告诉您有关磁盘性能的更多信息。如果您真的很好奇,请研究它们。否则,对于家庭文件服务器来说,更好的性能测试是在两个磁盘之间复制 DVD 或蓝光的内容并计时复制时间。

相关内容