在低 RAM 环境中优化 ZFS 是否可行?

Tho*_*s E 10 linux zfs memory

我目前正在设置文件服务器,并且已经到了实际设置数据驱动器的阶段。系统有 4 个驱动器(1 个 OS 盘,3 个数据盘)。OS 磁盘被格式化为 ext4 并且不会被添加到 ZFS 池中(如果我选择运行 ZFS)。我主要关心的是数据完整性和数据丢失的最小风险(驱动器缓存在 bios 中被禁用)。对于这个 ZFS 似乎是完美的候选者,因为它有一个稳定的 Linux 版本(对吗?),并且支持数据复制、池化和 raidz,其中硬盘驱动器的大小不必相同。

但这是我的问题。服务器只有 2GB 的 RAM,并且在不久的将来无法升级,实际上在我安装所有其他服务后,ZFS 实际上只能访问 1.5。任何时候最多有大约 10 个客户会使用它(平均大约 4 个)。这是否太低而不能被认为是安全的?

据我了解,ZFS 可能会在 RAM 不足的情况下崩溃并占用池。我听到了相互矛盾的意见交换是否有助于缓解这个问题(我有一个 20 GB 的交换专用驱动器)。有没有人遇到过 RAM 很少的 ZFS 数据丢失的情况?您进行了哪些优化来防止这种情况发生?

记住上述内容是否仍然可以运行 ZFS,尽管减少了 ack 大小并减少了一点,否则这会不会太冒险?

系统规格:2GB RAM 20GB 交换驱动器操作系统,Debian 7,最小安装,带 FTP,以及 XBMC、DNLA(给出 RAM 要求的概念)。用于存储服务器和音乐媒体流到其他设备。

Mar*_*rco 5

您将数据完整性和数据丢失的最小风险列为主要关注点。仅使用 2GiB 内存运行 ZFS 有风险且不可取。RAM 太少会降低性能,并且是过去导致大量不可挂载池的原因。该FreeNAS的项目规定的RAM作为最小8GiB。

此外,由于您担心数据丢失,您将需要使用 ECC RAM。由于您的盒子只能支持 2GiB 的 RAM,我认为它是一个非常旧的盒子,对于 ZFS 来说不是一个好选择。

回答您的问题:

[...] 并支持数据复制

在实践中,当您没有至少 32GiB 时,请忘记重复数据删除,这只是经验法则。您可能需要更多 RAM,具体取决于池大小。其次,如果重复数据删除 + RAM 成本比少量额外磁盘便宜,请计算一下。通常情况下,更多的磁盘是更便宜的选择。

这是否太低而不能被认为是安全的?

是的,它太低了。

据我了解,ZFS 可能会在 RAM 不足的情况下崩溃并占用池。

确实如此,许多人由于 RAM 不足而丢失了池。

我听到了相互矛盾的意见交换是否有助于缓解这个问题

忘记交换吧,你的 ZFS 机器永远不应该使用交换。

编辑:如果您喜欢冒险并且不介意偶尔出现恐慌或数据丢失的风险,请阅读ZFS 调优指南 并调整上述设置。这是 768MiB 内存系统的示例设置。

vm.kmem_size="330M"
vm.kmem_size_max="330M"
vfs.zfs.arc_max="40M"
vfs.zfs.vdev.cache.size="5M"
Run Code Online (Sandbox Code Playgroud)

否则,在一条内存条上投资 100 美元,即可享受稳定且高性能的系统。

  • 为什么ZFS社区的评论总是这么嚣张势利?不是每个想要可靠数据的人都花 100 美元来满足一些_完全荒谬的_设计要求!例如,我有一个带有 1GB 硬连线 RAM 和 USB 硬盘驱动器的小型 ARM 家庭服务器。我希望它上面的数据不会被比特腐烂,因为它被检测和纠正,并有快照用于备份目的。不需要速度。btrfs 的设计很简单。所以 ZFS _would_ 是明智的,如果一些白痴没有将它设计为在它具有 <128 EB 的 RAM 时从抑郁中内爆。 (5认同)
  • 我知道了。只是详细说明是的,我确实有 ecc ram,并且机器是 hp proliant microserver gen7,它支持高达 8/16gb 的 ram,目前购买更多 ram 在经济上不可行。我知道 freenas 推荐 8 gb,但是 freebsd 和 Solaris 文档建议至少 1 gb,这就是问题的原因。我想鉴于此,我应该坚持使用 ext4 并使用 rsync 和 dd 手动镜像到离线磁盘,这可能是最安全的解决方案。 (3认同)