报错现象:

线上有台虚拟机关闭很久没用了,重新启用的时候发现无法启动,报错现象如下:
# virsh start win2008
error: Failed to start domain win2008
error: Unable to read from monitor: Connection reset by peer

解决过程:

根据网上的说法是执行下面的命令即可:
# virsh managedsave-remove  win2008
 
但是我执行后启动还是报错,最后经过排查发现,是服务器内存不足导致无法启动,cache里面有大量的缓存占用,如果是非生产环境可以重启服务器,但是生产环境则不行,可以按照下面的方法释放内存中的缓存。
 
释放内存方法:释放前执行下sync命令,强制将内存中缓存数据写入到磁盘上,防止丢数据。
1.释放page cahce
# sync
# echo 1 > /proc/sys/vm/drop_caches
2.释放dentry和inode
# echo 2 > /proc/sys/vm/drop_caches
3.释放page cache,dentry,inode
# echo 3 > /proc/sys/vm/drop_caches
释放完后还需要执行如下命令,恢复默认的设置:
# echo 0 > /proc/sys/vm/drop_caches
关于以上参数含义介绍:
Linux缓存有dentry,buffer cache,page cache。
   dentry用来加速文件路径名到inode的转换;
   buffer cache加速磁盘块的读写;
   page cache加速inode的读写。缩短IO调用时间。
其中/proc/sys/vm/drop_caches中的值有4个,分别为0-30 – 不释放
   1 – 释放页缓存
   2 – 释放dentries和inodes
   3 – 释放所有缓存

然后重新执行启动命令,虚拟机就可以正常运行了。

Last modification:November 7th, 2019 at 03:28 am
如果觉得我的文章对你有用,请随意赞赏