在 SSD 上缓存写入更改以避免 HDD 旋转? ZFS,但(可能)不是 L2ARC

在 SSD 上缓存写入更改以避免 HDD 旋转? ZFS,但(可能)不是 L2ARC

我有一台家庭服务器,除其他外,它还存储我的文档、邮件档案等。它使用基于旋转硬盘的 ZFS RAIDZ。该服务器还运行离线 IMAP 服务,以 5 分钟的间隔同步我的邮件。

问题是,我经常不需要访问邮件(例如在夜间或周末不在时)。磁盘仍然继续旋转,发出噪音并浪费电力,而唤醒它们的唯一过程就是邮件检查。我可以在晚上禁用同步过程,但我正在寻找更通用的解决方案。

我考虑过将邮件文件夹放在 SSD 上,无论如何它都会保存系统。

但是,我确实希望我的邮件安全。在拥有安全的 RAIDZ 存储的情况下将其纯粹存储在 SSD 上我认为并不明智。所以,我的想法是每天将 SSD 邮件存储与 RAIDZ 阵列同步一到两次 -我想我需要像非常延迟的写入缓存之类的东西

我考虑过rsync在 SSD 和 RAIDZ 之间进行调用,但这有一个缺点:如果旧邮件在 SSD 上损坏,错误将传播到阵列。也许rsync --ignore-existing可以完成这项工作,但也许有什么可以做得更好?

答案1

我考虑过rsync在 SSD 和 RAIDZ 之间进行调用,但这有一个缺点:如果旧邮件在 SSD 上损坏,错误将传播到阵列。也许rsync --ignore-existing可以完成这项工作,但也许有什么可以做得更好?

应该没有必要经历这样的困境。

只需使用 ZFS 创建由 SSD 存储支持的第二个池。

  • 您将获得与 RAIDZ“存档”阵列相同的数据完整性保证
  • 您可以使用相同的管理命令(zfszpool)来管理存储
  • 您可以通过文件系统上的属性或通过冗余硬件(镜像或 RAIDZ)向 SSD 存储添加冗余copies,以允许 ZFS 在您选择的级别的限制内修复(而不仅仅是检测)任何可能的降级。冗余

在两侧使用 ZFS 的另一个优点是您可以zfs send | zfs receive在两个位置之间复制数据集。如果您愿意,您甚至可以将“活动”电子邮件与“存档”电子邮件分开保存在文件系统中,这将允许您快速、低功耗地访问活动数据,同时将存档数据保持在较慢但每 GB 存储成本低得多的位置。我自己也做了一些非常类似的事情,而且效果非常好。

分离存储类别(SSD 和 HDD,并且可能具有不同级别的冗余)非常适合单个系统上的多个池,因为它允许您在每个特定实例中选择适合您正在使用的数据类型及其访问模式的存储特征。由于任何 ZFS 数据集都可以在任何安装点进行访问,因此可以在不同池提供的各种存储特性之间来回切换几乎无缝。

ZFS 本身并不真正关心您使用哪种存储介质来保存数据,因此通过类似的设置,您可以使用 SSD 获得与 HDD 类似的功能(但性能特征非常不同)。

相关内容