对于 ZFS 来说,每 1 TB 磁盘空间 1GB RAM 规则有多重要?

对于 ZFS 来说,每 1 TB 磁盘空间 1GB RAM 规则有多重要?

我正计划构建我的第一个 NAS 盒,目前正在考虑自由网络存储虚拟文件系统了解它。我读了虚拟文件系统它的功能集听起来很有趣,尽管我可能只会使用其中的一小部分。

大多数指南都说,建议的经验法则是,池中每 TB 磁盘空间需要 1 GB (ECC-)RAM。所以我的问题是,忽略这条规则的实际(预期)影响是什么?

以下是某人使用 ZFS 和 16GB RAM 构建 71 TiB NAS 的设置。据他说,它运行起来非常好。不过他使用的是 Linux(如果这有区别的话)。

因此,显然您实际上并不需要 96 甚至 64 GB 的 RAM 来运行如此大的池。但这条规则的存在必定是有原因的。那么,如果您没有推荐的 RAM 数量,会发生什么情况?速度会慢一点,还是您会面临丢失数据或以蜗牛般的速度访问数据的风险?


我意识到这也与将要使用的功能有很大关系,因此以下是我正在考虑的参数:

  • 这是一个家庭系统
  • 16GB ECC RAM(我心目中的设置所支持的最大容量)
  • 没有重复数据删除、没有 ZIL、没有 L2ARC
  • 可能启用了压缩
  • 将存储主要各种大小的媒体文件
  • 可能会运行 bit torrent 或类似服务(频繁进行较小的读取/写入)
  • 4 个磁盘,每个大概 5 TB
  • 实际池设置可能是另一个问题的一部分,但我认为没有 RAIDZ(虽然我很想知道在这种情况下它是否真的有所不同),可能是两个池,每个池有两个磁盘(用于 10TB 净存储),一个作为备份

答案1

您需要使用该 RAM 与存储空间比率的唯一原因是您决定使用重复数据删除。它并没有说 1 GB 与 1 TB 的比率是必需的。

根据维基百科:

有效使用重复数据删除可能需要较大的 RAM 容量;建议每 TB 存储配备 1 到 5 GB 的 RAM。使用重复数据删除时,物理内存不足或缺少 ZFS 缓存可能会导致虚拟内存抖动,从而降低性能或导致内存完全不足。固态硬盘 (SSD) 可用于缓存重复数据删除表,从而加快重复数据删除性能。

来源

答案2

我从 2014 年到 2017 年运行了 30 TB 的 Freenas,配备 16GB DDR3-ECC RAM。2018 年,我将内存增加到 32GB,将主板装满,但虚拟机经常会占用 8-15 GB。完全没问题,从来没有,什么问题。事实上,我还在一些数据集上设置了 sync=always,使用一对 nvme samsung 970 plus 驱动器作为镜像日志驱动器和大约 60GB L2ARC 缓存(是的,我已经对日志和缓存进行了分区并使用了相同的设备,主要用于缓存虚拟机)。平均写入速度为同步 70MB/s,本地 200Mb/s。读取速度非常好,一般超过 90 MB/s。从来没有遇到过问题。除非您的网络速度超过 2.5+Gbit,否则不太可能出现性能问题。

相关内容