我试图build立自己的基于FreeBSD + ZFS +标准组件的networking附加存储,但是有一些奇怪的性能问题。
硬件规格是:
我从所有磁盘创build了一个RAID-Z2 zpool。 本教程后 ,我在该zpool上安装了FreeBSD 8.1。 SATA控制器在AHCI模式下运行。
输出zpool状态:
pool: zroot state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM zroot ONLINE 0 0 0 raidz2 ONLINE 0 0 0 gptid/7ef815fc-eab6-11df-8ea4-001b2163266d ONLINE 0 0 0 gptid/80344432-eab6-11df-8ea4-001b2163266d ONLINE 0 0 0 gptid/81741ad9-eab6-11df-8ea4-001b2163266d ONLINE 0 0 0 gptid/824af5cb-eab6-11df-8ea4-001b2163266d ONLINE 0 0 0 gptid/82f98a65-eab6-11df-8ea4-001b2163266d ONLINE 0 0 0
问题在于写入池的写入性能非常差(<10 MB / s),写入时每隔几秒访问磁盘的应用程序都不响应。 在ZFS arkcaching已满的情况下,好像写入没有问题,然后ZFS将整个系统I / O挂起,直到写完数据。
此外,我得到kmem_malloc to small内核恐慌。 我已经试过了
vm.kmem_size="1500M" vm.kmem_size_max="1500M"
进入/boot/loader.conf,但是没有帮助。
有人知道这里发生了什么? 我真的没有足够的内存来处理这个RAID-Z2的ZFS吗?
我怀疑你可能遇到了我要称之为“512字节扇区不是4K扇区”的问题。 无论如何,谷歌了gnop,4K部门,WD绿色,我怀疑你会find修复。 我在这个网站上第一次了解到这个问题,并且对于这个问题,以及对FreeBSD和ZFS的各种其他调整, 这个信息非常丰富。 祝你好运!
编辑:从链接网站引用:
…最后,我遇到了西数公司使用的1.5TB(WE15EADS)绿色驱动器的问题。
驱动器有一个4KB的物理扇区,但向BIOS报告512字节。 因此,性能会因真正的大写而下降,因为FreeBSD上的zfs将8KB数据发送到驱动器,因为8个独立的512字节写操作要求驱动器中的固件将其工作负载增加60倍(第一个512字节 – 写4KB,第2个512字节,读4K,写4K,…,第8个512字节,读4K,写4K – 所以4KB写成4KB写入+(4KB读取+ 4KB写入)X(4KB / 512Bytes – 1 )= 60,内置32 MBcaching的驱动器有助于填充和zfs弧开始,然后弧开始填充,所以总而言之,没有什么大不了的?
其实这是一个非常大的交易,如果你正在写文件到大于你的弧的zfs加上缓冲区的大小在驱动器上。 …
除了4K / 512b问题之外,WD绿色磁盘并不是您使用的理想select,因为他们在闲置8秒钟后停放头部,并且需要几秒钟才能恢复到function状态。 这是你正在观察的写入延迟。
http://opensolaris.org/jive/thread.jspa?messageID=480641&tstart=0
尝试使用WDidle工具禁用定时器。