При использовании ProxmoxVE с ZFS, при работе виртуальных машин, память на хосте постепенно расходуется до полного исчерпания, результатом чего может стать выключение виртуальных машин:
kernel: [1123659.062155] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/qemu.slice/104.scope,task=kvm,pid=1045923,uid=0
kernel: [1123659.062203] Out of memory: Killed process 1045923 (kvm) total-vm:10639204kB, anon-rss:8332420kB, file-rss:2320kB, shmem-rss:4kB, UID:0 pgtables:17172kB oom_score_adj:0
kernel: [1123660.010306] oom_reaper: reaped process 1045923 (kvm), now anon-rss:0kB, file-rss:68kB, shmem-rss:4kB
systemd1: 104.scope: A process of this unit has been killed by the OOM killer.
Следует понимать, что ZFS требовательна к памяти сервера и по умолчанию использует 50% установленной памяти для ARC (Adaptive Replacement Cache). Текущие минимальные и максимальные пределы можно посмотреть командой:
cat /proc/spl/kstat/zfs/arcstats
где c_min и c_max являются таковыми.
Изменить используемые в настоящее время лимиты можно, установив значения в байтах в файлах /sys/module/zfs/parameters/zfs_arc_min и /sys/module/zfs/parameters/zfs_arc_max соответственно, например командой:
echo «$[10 * 1024*1024*1024]» >/sys/module/zfs/parameters/zfs_arc_max
где 10 — максимальный предел выделяемой памяти в ГБ.
Чтобы изменить максимальный предел ARC навсегда, необходимо добавить в файл /etc/modprobe.d/zfs.conf опцию:
options zfs zfs_arc_max=8589934592
где 8589934592 — устанавливаемый предел в 8 ГБ ОЗУ.
Если корневая файловая система также на ZFS, то после изменения лимитов, необходимо обновить образ initramfs:
update-initramfs -u
После чего требуется перезагрузить сервер.