禁用ZFSonLinux上的caching

使用ZFS利用一些可用选项并pipe理卷,而不是RAID。 我有一个逻辑设备(硬件RAID)添加到zpool。

ZFS ARC看起来不像我的硬件RAIDcaching那么好,所以我试图禁用它来查看是否可以产生与HW RAID设备上运行的基准testing相似的结果,但是性能在ZFS卷上受到影响。

我尝试禁用primarycache和二级caching,但实际上损害了性能,它没有解决如我所料的使用硬件RAIDcaching。 所以我很茫然 ZFS使用硬件RAIDcaching是不可能的吗? 也许primarycache和secondarycache是​​不正确的参数要修改。

configuration回写BBUcaching的HP P410i RAID10。

Zpool使用RAID中的单个逻辑设备

为testing设备速度创build了一个testing稀疏zvol(/ dev / zd0)

更新到这个问题性能不足是由ZFS开销造成的。 当ZoL的ARC(primarycache)被禁用时,这个时候会有极大的开销,特别是在随机写入时。 我不确定这是否特定于ZoL或ZFS。 如果您希望减lessARC大小但保持磁盘性能,我build议至less保留primarycache = metadata。

我使用带有硬件RAID的ZFS,并利用HW RAID控制器的支持闪存的写入caching(而不是ZIL设备),并利用ZFS ARCcaching进行读取。

采用硬件RAID的ZFS最佳实践

你为什么觉得ZFSperformance不好? 你可以分享你的zfs get all pool/filesystem输出以及你所说的基准吗? 这可能只是一个调整问题。

编辑:

Linux上ZFS的默认值不是很好。 你需要一些调整。

请仔细阅读我发布的工作stream程: 透明压缩文件系统与ext4结合使用

他们的关键部分是ashift价值和volblocksize zvol。

另外,你需要修改你的/etc/modprobe.d/zfs.conf

例:

 # zfs.conf for an SSD-based pool and 96GB RAM options zfs zfs_arc_max=45000000000 options zfs zfs_vdev_scrub_min_active=48 options zfs zfs_vdev_scrub_max_active=128 options zfs zfs_vdev_sync_write_min_active=64 options zfs zfs_vdev_sync_write_max_active=128 options zfs zfs_vdev_sync_read_min_active=64 options zfs zfs_vdev_sync_read_max_active=128 options zfs zfs_vdev_async_read_min_active=64 options zfs zfs_vdev_async_read_max_active=128 options zfs zfs_top_maxinflight=160 

编辑:

那么,我的build议是总是使用lz4压缩,使用128k的volblocksize值,将ARC限制在RAM的40%左右或更less,调整zfs.conf中的值(我可能会减less50%如果您使用10k SAS磁盘),并使用tuned-adm profile enterprise-storage启用tuned-adm框架 。