解决迷你服务器间断性死机和vagrant无法启动的问题

迷你服务器几个月以来总是运行一天左右就死机,一直没有找到原因。上周升级到Ubuntu 16.04之后,vagrant创建的虚拟机跑不起来,发现就一直没有死机。于是乎知道了迷你服务器频繁死机的原因,是和vagrant虚拟机有关系。

接下来查找vagrant虚拟机无法运行的原因。vagrant up运行之后,就一直停在那里,感觉不是vagrant的问题。是不是虚拟机本身出了问题? 于是乎希望通过x11forward运行virtualbox来查看无法启动的原因。

接下来运行ssh -X xxxx@xxxx,然后运行virtualbox,不料直接报错说没有找到DISPLAY。遂搜索寻找解决方案,经过几番周折,终于把macOS和ubuntu两边都配置好了。重点如下:
在ubuntu服务器需要配置如下内容
1. 安装xauth
2. 修改/etc/ssh/sshd_config,增加X11Forwarding yes和X11UseLocalhost no,并重启sshd
在macOS下配置如下内容
1. 导出DISPLAY环境变量为:0.0
2. 提前打开XQuartz

接下来终于启动了问题虚拟机。果然发现了问题,屏幕上报错 error: ELF header smaller than expected. grub rescue>
经过搜索,决定使用LiveCD来修复启动。于是下载了Ubuntu 16.04 Desktop的LiveCD,挂载到虚拟机上,启动,安装sshd,再通过ssh连上去安装启动修复工具,运行。不料又报错,报chroot到被修复环境下的dpkg –configure -a 错误。

于是chroot进去,运行了下dpkg –configure -a,果然报错,不过这里报错是说file node有问题无法需要先清理。于是卸载挂载好的卷,用fsck进行处理,修复了十几个错误(看来时间长了,虚拟机频繁非正常关机确实造成不少磁盘问题)。然后挂载上,再chroot进去,又报dpkg工具错误。于是又去网上搜索了下,强制删了dpkg工具并安装,搞定dpkg问题,虚拟机可以正常启动了。

接下来查找虚拟机运行中存在的问题。发现一个很重要的线索,gitlab-ce对应的服务CPU一直占用接近100%,这样大概时间长了死机是高概率的。于是卸载,重新安装后恢复正常。于是顺带着把gitlab也恢复了。

问题算是解决了,顺带把newrelic也配置上了,并且增加了newrelic和slack和邮件的集成,打开了机器down之后消息的推送。至此问题全部解决。