听起来是个愚蠢的问题,但旧金山没有现成的答案
缓存池可以有与 zpool 不同的名称吗?
例如:假设有一个 zpool“tank”为 NFS 和 iSCSI 提供服务
是否可以将新的缓存池添加为“xyz1”来为“tank”提供服务?
或者是否存在每个池缓存概念?
答案1
首先,对于一般的 ZFS 最佳实践,Solaris Internals wiki 非常有用: http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide
如果需要,您可以创建一个完全由 SSD 组成的单独 ZFS 池。但是,这不会提高任何其他池的性能。对于大多数工作负载来说,更具成本效益的方法是使用混合存储池功能;也就是说,将 SSD 添加到普通旋转磁盘以提高读取和/或写入性能。
关键点:
可以将 SSD 添加到现有池中,以仅提高该池的性能。它们没有不同的名称 - 它们只是池内的设备。您可以根据性能要求向池中添加多个缓存和日志设备。
为了提高池的读取性能,将 SSD 指定为缓存设备(“L2ARC”)。
为了提高池的写入性能,将 SSD 指定为日志设备(“ZIL”)。
L2ARC 是一种读取缓存,它会随着时间推移而填满,并根据最常使用的块和最近使用的块的组合来存储数据。这可以快速访问“热”数据。它几乎可以提供与 RAM 相当的速度优势,但每 GB 的成本更低。
ZIL 是一个意图日志 - 添加 SSD 允许同步写入以高 IOPS 和非常低的延迟进行,这在某些情况下可以提高应用程序的性能(例如数据库和 NFS 共享)。
答案2
如果您要部署 NFS,ZIL 设备可能比添加缓存设备更重要。您可以增加系统中的 RAM 数量,而不是使用缓存设备,而是花更多钱购买针对 ZIL 进行写入优化的小容量 SSD。在 Nexenta,我们始终建议镜像您的 ZIL。不这样做确实会使您在某些情况下面临数据损坏的可能性。使用缓存设备,您实际上会看到读取优化的 SSD,并且不需要镜像,因为所有数据和元数据都可以随时丢弃,而不会对池的其余部分造成任何风险。