最早我的pve是直接安装了飞牛os来管理我的整个家庭文件,那么就需要互相拷贝东西。我的飞牛直通了两块机械硬盘,系统装在了ssd中。在拷贝东西的时候就发现了一个问题,不管是向内还是向外拷贝大文件拷贝着拷贝着就要死机,这个死机是整个的硬件系统卡死,并不是飞牛os卡死,体现就是我所有运行的docker也都要寄。
那么我就很疑惑了,根据我的经验我觉得有一种可能性是电源不足,硬盘大量写入的时候供电不足,但是按道理来说我这个硬盘应该吃不了这么高的电量。验证这个问题也很简单,让pve的cpu跑起来,毕竟这个需要的供电量也不小。
那么就要确定一下到底是哪里出了问题。我在pve的概况页面进行拷贝文件的操作,眼睁睁的看着内存从1g的空间瞬间变成了0,然后死机了,飞牛os关机。那么问题就直接被我排出来了。
那么我就去找gemini,我问gemini: ”我的pve虚拟机里面装了一个nas系统,并且直通了两块硬盘给这个nas,然后我通过这个nas系统拷贝东西的时候pve的内存会疯狂占用,并且停止拷贝占用也不会降低,会一直占用到100%之后整个系统宕机。然后nas系统会自动关机之后系统恢复。请问我应该从哪里排查这个问题“
gemini给了我四个可能的选项:
检查PVE的ZFS内存限制
关闭虚拟机的Ballooning功能
改变硬件直通的方式
检查KVM脏页回写
根据gemini给我的几个办法,一个一个的尝试,但是并没有什么用,我就给gemini截了一个arcstat的截图如下

至少gemini确定了一下不是ZFS ARC的问题,那么gemini问我这个系统有没有swap,我这个系统确实没有swap分区,这时候gemini让我开启swap,如下是操作:
第一步:检查现有的swap状态 在pve终端中输入:
free -h 检查swap这一行,发现我这个确实为0B,那么进入第二步 第二步:创建一个4G的swap文件
创建文件
fallocate -l 4G /swapfile 设置权限
chmod 600 /swapfile 格式化为swap格式
mkswap /swapfile 启用swap
swapon /swapfile 设置为开机自动挂载
nano /etc/fstab 在文件末尾添加一行
/swapfile none swap sw 0 0 按 Ctrl + O 保存,Ctrl + X 退出。
调整swap倾向性以保证虚拟机性能。 编辑/etc/sysctl.conf
nano /etc/sysctl.conf 添加或者修改这一行
vm.swappiness=10 后面再添加以下参数限制以防止I/O撑爆内存
vm.dirty_ratio = 5
vm.dirty_background_ratio = 2 接下来再进行验证的时候就不再内存异常占用了
然后我就把飞牛OS卸载了,换成了OMV。