我正在配置一台运行 3 个 ZFS 池的服务器,其中 2 个池是特定用途的,我觉得默认建议根本没有针对它们进行优化。双 10gbit 适配器促进网络连接。
池1是一个大文件存储,它包含很少写入和读取的原始视频数据,以及偶尔的备份。缓存该池中的任何内容绝对没有意义,因为它是从头到尾一次扫描读取的高带宽数据,缓存其中的任何内容将完全浪费内存。延迟并不是什么大问题,而且由于数据高度可压缩,带宽也很充足。该池由 8 个 z2 模式的 HDD 组成,可用容量为 24TB。
池2是压缩视频帧存储。在合成视频项目时会经常阅读此内容的部分内容。经常使用的数据部分通常高于服务器的RAM总量,有低延迟要求,但不是超低,带宽更重要。该池由 z1 中的 3 个 HDD 组成,可用容量为 8TB,以及一个用于 L2ARC 的 1TB NVME SSD。
池 3 是通用存储,用作多个计算机系统的存储,这些计算机系统从其中启动并运行软件,而不是本地存储。由于它必须为多台机器和主系统存储提供服务,因此这里对延迟和带宽的要求最高。该池主要用于读取,写入仅限于客户端系统的操作。该池由 3 个 z1 模式的 SATA SSD 组成,可用容量为 1TB。
我的优化意图是最小化前两个池的 ARC 大小,以便最大化第三个池的 ARC 大小。
池 1 从缓存中没有任何好处,那么我可以为其设置的最小 ARC 安全量是多少?
池 2 可以从 ARC 中受益,但实际上并不值得,因为 L2ARC 的速度足以满足此目的,并且驱动器具有 1 TB 容量。理想情况下,如果我能够在该卷中不使用任何 ARC 并使用完整 TB 的 L2ARC,我会很高兴,但似乎 L2ARC 标头数据至少需要一些 ARC。
因此,考虑到 1 TB 的 L2ARC 容量和 64k 的池记录大小,1tb / 64kb * …