FreeBSD ZFS RAID-Z2 性能问题

FreeBSD ZFS RAID-Z2 性能问题

我正在尝试基于 FreeBSD+ZFS+标准组件构建自己的网络附加存储,但存在奇怪的性能问题。

硬件规格如下:

  • AMD Athlon II X2 240e 处理器
  • 华硕 M4A78LT-M LE 主板
  • 2GiB 金士顿 ECC DDR3(两根)
  • Intel Pro/1000 CT PCIe 网络适配器
  • 5x 西部数据 Caviar 绿色 1.5TB

我从所有磁盘创建了一个 RAID-Z2 zpool。我按照以下说明在该 zpool 上安装了 FreeBSD 8.1教程. SATA 控制器在 AHCI 模式下运行。

zpool status 的输出:

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 ark 缓存已满,然后 ZFS 会暂停整个系统 I/O,直到完成写入该数据。

此外,我还遇到了kmem_malloc to small内核恐慌。我已经尝试过

vm.kmem_size="1500M"
vm.kmem_size_max="1500M"

进入 /boot/loader.conf,但它没有帮助。

有人知道这是怎么回事吗?我真的没有足够的内存让 ZFS 处理这个 RAID-Z2 吗?

答案1

我怀疑你可能遇到了我称之为“512 字节扇区不是 4K 扇区”的问题。无论如何,在 Google 上搜索 gnop、4K 扇区、WD Green,我怀疑你会找到解决办法。我第一次知道它是本网站,它非常详细地介绍了该问题,以及针对 FreeBSD 和 ZFS 的各种其他调整。祝你好运!

编辑:引用链接的网站:

... 最后,我发现了有关我正在使用的西部数据 1.5 TB(WE15EADS)绿色硬盘的问题。

驱动器具有 4KB 物理扇区,但向 BIOS 报告 512 字节。因此,在执行大量写入时,性能会下降,因为 FreeBSD 上的 zfs 将 4KB 数据作为 8 次 512 字节的单独写入发送到驱动器,这需要驱动器中的固件将其工作负载增加约 60 倍(第 1 个 512 字节 - 写入 4KB,第 2 个 512 字节,读取 4K,写入 4K,...,第 8 个 512 字节,读取 4K,写入 4K - 因此 4KB 的写入变为 4KB 写入 + (4KB 读取 + 4KB 写入)X(4KB/512Bytes - 1) = 60。驱动器内置的 32 MB 缓存会有所帮助,直到它填满,zfs arc 启动,然后 arc 开始填充。所以总的来说,没什么大不了的,对吧?

实际上,如果你向 zfs 写入的文件大于你的 arc 加上驱动器上缓冲区的大小,那么这将是一个非常大的问题。...

答案2

除了 4K/512b 问题之外,WD 绿盘也不是您使用的理想选择,因为它们在 8 秒不活动后会停止磁头,需要几秒钟才能恢复到工作状态。这就是您观察到的写入延迟。

http://opensolaris.org/jive/thread.jspa?messageID=480641&tstart=0

答案3

尝试使用 WDidle 工具禁用计时器。

相关内容