我了解 ZFS 使用/可以设置为使用 SSD 作为 L2ARC 缓存、ZIL 以及重复数据删除表的主机。
这些似乎都不需要固定的最小大小(重复数据删除表可能,这方面的信息有些模糊 - 也许重复数据删除表本身可以托管在慢速磁盘上并由 L1/L2ARC 加速)。这让我们想到出于与主机相同的性能原因使用相同的磁盘作为交换空间,交换空间也有动态大小要求,具体取决于内存负载。
有没有一种方法可以根据内存需求自动调整swap和L2ARC的大小,类似于swapspace自动增加交换空间,L1ARC根据内存压力减少?
我可以想象,如果页面文件缓存在 L2ARC 中,也可以实现相同的效果。谁能确认这种情况在多大程度上是这样?
答案1
不。
L2ARC 和ZIL 都需要专用的块设备(例如分区或整个磁盘)。当然,它们有固定的大小。
对于 ZIL,您不需要太多空间。 4GB 绰绰有余。 1或2GB也可以。为了安全起见,最好将 ZIL 镜像到两个或更多设备上。
L2ARC 不应该被镜像。这只是暂时的缓存数据,所以没有任何意义,而且这样做也是浪费。
例如,这是backup
我的家庭 ZFS 服务器上的池中的内容:
# zpool list -L -v backup
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backup 7.25T 3.62T 3.63T - 18% 49% 1.00x ONLINE -
mirror 3.62T 1.81T 1.82T - 18% 49%
sde - - - - - -
sdf - - - - - -
mirror 3.62T 1.81T 1.82T - 18% 49%
sdh - - - - - -
sdg - - - - - -
log - - - - - -
mirror 1.98G 48K 1.98G - 0% 0%
sdn6 - - - - - -
sdo6 - - - - - -
cache - - - - - -
sdn7 37.2G 31.7G 5.51G - 0% 85%
sdo7 37.2G 30.3G 6.84G - 0% 81%
日志(ZIL)被镜像。缓存(L2ARC)不是。
sd[e-h]
是希捷 ST4000DX001 混合硬盘(即内置 8GB 闪存缓存)。 sd[no][67]
是 Crucial_CT275MX300SSD1 SSD 上的分区(与我的 zfs 根池所在的 SSD 相同)。