我不知道这个 stackexchange 网站是否最适合我的问题,如果不适合,请标记此问题以便版主将问题移到其他地方。
背景与问题
我在物理机(家庭服务器)上安装了 Proxmox,在安装过程中选择了 ZFS 镜像,并创建了一个占用几乎所有资源的大型 Ubuntu 服务器 VM。
每当我在虚拟机中进行大量磁盘 I/O(写入或读取大量数据)时,RAM 使用量就会增加,达到 100% 后,虚拟机就会崩溃。读取 的输出时htop
,RAM 的橙色部分会增长,我理解这是内核使用的缓冲区/缓存,应该是可以恢复的。
设置
我当前的设置如下:
- 24GB 内存
- 2 个 2TB 硬盘
- Proxmox 安装在两个驱动器上,安装过程中选择了 ZFS 镜像。
- Proxmox 虚拟机上的 Ubuntu 20.04,占用 1.5TB 空间,RAM 限制为 20GB。它使用 LVM 和 ext4、VirtIO SCSI 控制器以及 Proxmox 的大部分默认值。
研究
我在我最喜欢的搜索引擎上确实没有找到类似的东西,但也许我只是没有使用正确的关键词
答案1
我的问题可能是由于多种因素共同造成的,导致主机内存不足,并最终导致虚拟机被 OOM 终止以检索内存。
起作用的因素:
- 主机有 24GB 的物理 RAM,但出于某种原因,它只报告约 22GB。我还没有进一步调查。
- 为单个虚拟机分配了 20GB RAM,只为主机和 ZFS 留下了约 2GB。
- 虚拟机内部的 RAM 使用率和磁盘 I/O 很高。
- VM 内部的磁盘 I/O 导致 ZFS ARC 缓存无限制增长。
最终,主机终止虚拟机进程以检索 RAM 并防止中断。
我将主机上 ZFS 的 ARC 缓存限制为 4GB,并将分配给虚拟机的 RAM 减少到 12GB,以便让主机能够喘口气。
限制 ZFS ARC 缓存(在主机上):
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_min=2147483648
options zfs zfs_arc_max=4294967296
考虑新的选择(在主机上):
# update-initramfs -u
感谢@MichaelHampton 让我得出这个结论。