我遇到的问题是在我的 Debian 机器(HP MicroServer N40L)上运行 ZFS,它是从 zfsonlinux.com 下载的源代码编译而成,但性能似乎很差。
该池由 3 个相同的 2TB 硬盘(Seagate、SATA、5900rpm、6GB/s)创建。系统在另一个 250GB(7200rpm、非 RAID)硬盘上运行。我用来创建 zpool 的命令是zpool create tank raidz hd1ID hd2ID hd3ID
。zpool status tank
表示一切正常。在我产生怀疑之后,我使用 bonnie(版本 1.96)来测试性能bonnie -u root:root -x 5 -s 4096
,下面是我得到的一些数字(最后一行是来自 250GB 系统驱动器的数字,这表明非 RAID 硬盘比我的 zpool 快得多)
rewrite seeks ran_create putc_latency rewrite_latency seeks_latency
11275 228246 2249 3770 116ms 191ms
10556 229326 7133 5388 147ms 247ms
10989 227938 13337 13569 128ms 141ms
11025 227938 873 3679 117ms 224ms
10926 229491 3580 6186 119ms 231ms
64389 111633 29779 30298 47190us 51692us
我也这样做了,time dd if=/dev/zero of=foo bs=1048576 count=1024
并得到了
1024+0 records in
1024+0 records out
1073741824 bytes (1.1GB) copied, 83.3947 s, 12.9 MB/s
real 1m23.397s
user 0m0.000s
sys 0m1.760s
系统驱动器上的相同命令是
1024+0 records in
1024+0 records out
1073741824 bytes (1.1GB) copied, 9.52386 s, 113 MB/s
real 0m9.752s
user 0m0.00s
sys 0m2.984s
看起来我的 zpool 运行非常慢。我在创建 zpool 时做错了什么吗?我该如何调整它以使其正常运行?
答案1
我怀疑您的硬盘报告的扇区为 512 字节,但实际上扇区为 4 K。众所周知,这会对性能产生非常负面的影响,尤其是在 RAID-Z 配置中。
ashift=12
解决方法是在创建池时添加该选项。
一些细节这里
答案2
嗯,您的系统驱动器比您的组件驱动器更快,所以您不是在进行同类比较。
但这肯定比人们预期的要低得多——请记住,Linux 上的原生 ZFS 项目尚未成熟,并且未针对性能进行优化。
测试时,ZFS 池中是否还有其他 IO 在进行?测试期间 CPU 是否饱和dd
?