家用服务器突然断电的后续情况处理
前些天,不知道什么原因,家里突然跳闸了。等来电的时候,家里服务器就出现了一些状况,所以开帖记录一下是什么状况,以及笔者是如何处理的。
笔者的家用服务器使用的是ESXi 系统。 ESXi 系统本身没有什么问题, 大部分虚拟机也没有什么问题,只有一个debian 9 的虚拟机出现了问题。 而这个虚拟机运行了笔者大部分的服务,所以这次问题让笔者大感头痛。
debian 9 的问题列表
虚拟机启动
虚拟机无法启动,在启动的时候 提示文件系统有问题。
提示内容大概为: /dev/sda1 contains a file system with errors, check forced
解决方案是: At the (initramfs) prompt, type fsck -f /dev/sda1
to check/repair your file system.
大致意思是在可以输入命令的时候, 输入fsck -f /dev/sda1
进行文件系统的修复。 当碰到询问的时候输入 y
进行修复。
这个修复不是很完美的, 可能会导致部分文件内容出现问题。
docker 容器全坏
笔者成功启动了debian 虚拟机之后, 发现虚拟机上的大部分docker 容器都坏了。 而且docker service 无法正常启动。
经过排查之后, 笔者发现是原来容器的配置文件都损坏了。
- docker 数据存放的默认目录:
/var/lib/docker
containers
里面存放了所有的容器数据volumes
存放了数据卷
容器的文件夹里面, 存在一个叫做config.v2.json
的文件, 记录了容器的配置。 笔者发现不少容器的这个配置文件都损坏了, 即该文件不在是一个json文件。 而是一个看似损坏了的二进制文件, 内容已经不再可用了。
解决方案: 删除原来坏掉的容器, 重新建立即可。
在动手删除旧的数据之前,记得先备份一下。
如果读者使用的是docker-compose
方式建立的话, 就可以很方便的重新恢复, 否则就麻烦一些。
如果读者使用的是文件夹映射,那么文件应该没有丢。 如果使用的是docker管理的卷的话, 数据应该也没有丢。
mysql 无法启动
容器恢复之后, 笔者的mysql 也还是无法启动。。 原因不知。。
笔者每次家用服务器意外断电之后, mysql 基本上都会损坏。。 😂
折腾了一番, 笔者并没有发现很好的办法, 只得使用几个月前备份的sql文件恢复了。。 (因为笔者的数据也不算特别重要, 所以也懒得完全恢复了。。 )
之后笔者写了几个脚本,添加了crontab 的任务,让mysql 每周自动备份一次。
其他
每次恢复都需要时间和精力, 如果经常发生断电的话, 就很令人头疼。。 这时就可以考虑入手一个便宜的UPS。 在突然断电之后 给予服务器正常关机的时间。 (部分ups支持在断电后,自动给机器发送关机命令。 但是一般支持的都是Windows,Linux系统)
参考阅读: 家里的网络图示