Proxmox Virtual Environment 解决ZFS内存高占用ARC

Linux · 2023-10-15
PVE创建的ZFS在运行一段时候后基本可以把你内存吃满?这个时候你该如何解决呢?

其实官方的 ZFS on Linux 文档里面也有写入 这里简单的拿出来讲一下呢
https://你的PVE地址/pve-docs/chapter-sysadmin.html#chapter_zfs

  • Limit ZFS Memory Usage

限制ZFS内存使用

默认情况下,ZFS将50%的主机内存用于自适应替换缓存(ARC)。为ARC分配足够的内存对于IO性能至关重要,因此请谨慎减少内存。一般经验法则是,至少分配2 GiB基本存储+1 GiB/TiB存储。例如,如果您有一个具有8 TiB可用存储空间的池,则应该为ARC使用10 GiB的内存。(也就是2GiB 基础存储+ 8GiB 硬盘存储 注:这个存储是是算在内存上的)

假如 你目前已经用了5块 4T硬盘 组了ZFS 也就是 你要算20GiB (1T= 1GiB)

可以在Linux下输入这个指令算出你要填入的值 如果你有 5块 10T硬盘组了ZFS 就需要把下面指令的20替换成50

 echo "$[20 * 1024*1024*1024]"
  • 现在讲解如何修改PVE里面的ZFS内存分配

您可以通过直接写入zfs_arcmax模块参数来更改当前引导的ARC使用限制(重新引导会再次重置此更改):

echo "$[20 * 1024*1024*1024]" >/sys/module/zfs/parameters/zfs_arc_max

如果要永久更改ARC限制,请将以下行添加到 /etc/modprobe.d/zfs.conf

options zfs zfs_arc_max=21474836480

注意上面的 zfs_arc_max=21474836480 这个值 是需要你去换算 echo "$[20 10241024*1024]" 根据你组ZFS硬盘的量
还有就是永久更改需要重启后生效,最主要的是根据自身虚拟机应用去调节这个限制的内存量 不然可能会导致奇奇怪怪的问题发生哦!

Proxmox Virtual Environment PVE ZFS
Theme Jasmine by Kent Liao