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硬盘的量
还有就是永久更改需要重启后生效,最主要的是根据自身虚拟机应用去调节这个限制的内存量 不然可能会导致奇奇怪怪的问题发生哦!