PVE 突然坏掉了?!(虽然还是修好了)
封面图: 銀髪ゴス Pixiv ID: 72346170 Member: カット3日目東タ-46b
开端
大概是昨天 11:40 左右的时候,Uptimerobot 连续发送了数条邮件到了邮箱,很显然这是异常的,毕竟大部分时间他们都是几乎 100% 的在线率,结果却突然全部暴毙了(包括这边的博客)然后设备的 SSH 也登不上去,然后决定去 PVE 面板看看,好家伙面板也打不开,这明显是出大事了。
接下来能怎么办呢,也只能去 IPMI 看看发生了什么,打开远程控制,一看我的天哪(如下图)
这怕是倒了八辈子的血霉了,一眼看上去,像极了磁盘暴毙(才用了不到一年就暴毙只能说是倒霉了)
因为是 SSD 所以姑且没盲目去 reboot 先开了个工单,尝试联系一下服务商,让他们检查一下然后得到的回复是......
很显然不是什么很好的情况了,不过既然说到了重启,那就重启一下看看吧
机器成功重启,这时才让人松了一口气,但是马上其他问题就接踵而至了,仔细一看 Hostname 变了而且密码怎么都不正确
不过另外一位和我合租这台设备的老哥很快就进 recovery mode 干掉了密码,然后却发现.....密码改了
检查后发现是 passwd 和 shadow 文件的权限变了(多了个 i ),处理方法也很简单
chattr -i /etc/passwd
chattr -i /etc/shadow
去掉 i 之后就可以正常修改密码了,但是此时网络依旧是异常的,因为母鸡有多个 IP 也是为了防止出现额外的问题,这里就直接发工单让服务商那边解决了(同时也让他们帮忙检查了磁盘状况)
很显然,配置文件变得乱七八糟了,不过服务商很快就给修好了(果然让那边处理是没错了)
问题能快速解决自然是很好的,简单检查来看,似乎也没发生数据丢失,但是 PVE 没法启动了报错来看是没法找到节点
至少数据没丢算是不幸中的万幸了
高潮(高潮了?)
那么接下来就得找到问题的来源了,初步判断应该是和 Hostname “擅自”改变有关系吧,毕竟 PVE 的 nodes 名称和 Hostname 是一致的,通过资料查找也能看出,原本修改 Hostname 之后是需要对 node 进行修改的
既然知道大概原因那就从这个角度出发吧,姑且先把 Hostname 给该回去,因为 PVE 是基于 Deiban 的,那么用 hostnamectl
就行了大致按照 hostnamectl set-hostname hostname
来使用就行
改完了自然先 reboot 看看吧?啊,一堆 Failed
大致来看,PVE 的 cluster 没能成功启动,不过原因也很明显了,启动后可以看到 Hostname 又被改回去了???
好吧,那就去把 /etc/hosts
和 /etc/hostname
进行一下修改吧,当然结果是还是不行.....
但是这次启动时的 cloud-init 信息倒是让人印象深刻,所以为什么物理机里面会有 cloud-init ?!记得 PVE 默认是不会安装这个东西的啊,再一看 hosts 果然有一些被注释掉的东西,是和 cloud-init 相关的东西
也就是说, cloud-init 贴心的把 Hostname 给改回来了......
这里稍微注释掉 /etc/cloud/cloud.cfg
中和 Hostname 相关的东西后,再修改重启,果然不出所料 PVE 恢复正常了
尾声
同样的也可以注意到 cloud-init 不但可以修改 hosts 也可以修改 network 相关设置以及 ssh 设置(包括 passwd ),那么这次的问题就近怎么出现的呢?可能很大程度上和 cloud-init 是有关系的,但是很显然这也很奇怪, cloud-init 不可能会凭空出现吧?但是这个问题也不由得而知了(如果有大佬知道还望解读一下)
这里指的一提的是 /etc/pve
这里的东西是在 pve-cluster 启动的时候产生的,且会在 pve-cluster 停止的时候被清空,实际文件由 sqlite 来处理,位置是 /var/lib/pve-cluster
文件名为 config.db ,这里值得注意的是,在 Hostname 不正确的时候, cluster 是无法启动的,这一点和网络上面关于 PVE 启动状态下修改 Hostname 的方法是有所差别的,在 PVE 正常启动状态下, /etc/pve
内的文件是正常且存在的且是被存储在内存中,因此可以进入直接修改 node 但是在 cluster 未启动时,这个文件夹时不存在的
当然,这个事情也可以说是强调了 备份 的重要性,就算是杜甫也不例外,因为你也不知道什么时候会出现突发状况摧毁你的数据,或许稍不注意你的数据就“上云”了(物理)
关于备份这一块,实际上站点目录用 rclone 定期同步到其他存储设施就行,而数据库则可以通过主从复制的方式来进行备份,然后关于主从复制的事情,之后也谈一谈吧
Comments | 9 条评论
emmmm可以友链吗,博主是个可爱的女孩子嘛🌚
@云云星羽 嗯嗯,已经加好了,这边的话(因为有缓存所以可能需要刷新才能看到)
然后,实际上,博主是可爱的蓝孩子哦
@云云星羽 QAQhttps://img.loliloli.moe/images/2021/09/30/dgGO.png
博主这是什么服务商,是一台机器托管在那边那种么。。。
@墨墨 Nexril 家的杜甫
@RomEYer 评论从主页进来没有刷新,有bug
@墨墨 因为有缓存本地浏览器,然后我懒,所以丢着了没管,等有必要的时候再去处理x
@RomEYer 简单粗暴啊,全部都缓存了,不过确实挺快的
感谢分享 赞一个