记一次意外删除PVE数据库事故

发布于 2024-08-04  163 次阅读


1.删库起始

今天有位安装了Virtualizor+PVE环境的老板找我说服务器(非集群设备,单节点)存在PVE无法登陆的问题,经过检查pve-manager pve-cluster corosync pveproxy工作均正常,重启服务无效。pvedaemon服务当时没有重启(还是好像重启了也没用?忘记了)搜索PVE论坛有数个解决方案,尝试后用pvecm updatecerts解决了无法登陆的问题,登陆后发现状态全部为unknown,pvesh get nodes状态也为unknown,如图:

尝试数个方案无果后,看到PVE论坛上一位老哥说自己删除了/etc/pve解决了问题(他说卡啥配置了?),当时修了一段时间耐心有点耗尽了,然后直接执行了 rm -rf /etc/pve

当时应该直接执行systemctl restart pvestatd我的错误,虽然执行了也是无法解决问题的。)

2.删库了

悲剧了。我当时并不知道我已经删掉了PVE的数据库,然后我重启了pveproxy pve-cluster服务。

随后老板迅速告诉我后台服务器全部消失了,我当时很疑惑还以为他网卡了,于是我自己登录看了看,果然一片空白。我一查/etc/pve居然是PVE数据库的映射。。。

然后的我:

首先尝试恢复误删文件,debugfs试图用lsdel检索删掉的文件,然后居然是空白。。。推测因为用的是固态硬盘可能直接被GC了,也可能是被后来的PVE程序直接创建新文件覆盖了。如下图:

经过一番尝试,恢复文件是不可能了。脑袋都要炸了,WTF?????

3.试图抢救PVE

老板说里面有重要数据,于是首先观察虚拟机是否仍然在运行。执行top发现仍有很多kvm进程,基本确认虚拟机依然在运行。随后执行qm list命令,发现和PVE Web面板一样返回了空。

如果你也这样了,千万不要重启宿主机或者虚拟机,马上备份!此时虚拟机还是之前的运行配置,千万不要动!VNC啥的这个时候已经全废了,VPS里面的服务还在正常跑,SSH有的话也能用。

此时virtualizor面板如果卡死,可尝试直接导航到https://你的IP/index.php?act=vs登陆后应该是可以打开的。

然后发现直接使用 qm create 虚拟机在PVE中的ID 居然可以连接到被删除的PVE。此时Virtualizor刷新后对应虚拟机也会变绿(如果本来就在运行的话)。PVE控制台中的VNC此时可用。

检查发现这样创建出来的机器只有空壳,其余的全部没有。

于是试图添加网卡(按照Virtualizor数据库中的数据):

qm set 你的虚拟机ID -net0 model=virtio,macaddr=你的mac

-net0也可以写-net1/2/3/4,应该对应的是第几个网卡。

网卡确实是加回去了,但是硬盘却是不会加了,此时Virtualizor创建新VPS也报错(找不到LVM卷)。

于是询问Virtualizor客服,得到答复是无法恢复。

与此同时PVE后台即使添加回去了机器也全部是问号(状态unknown):

此时尝试systemctl restart pvestatd 状态确实变绿,但一会后又变回unknown,pvestatd服务查看后发现不报错,journalctl -xe也无明显线索。只有一个这样的报错反复出现:error parsing vmid for 41250: no matching qemu.slice cgroup entry,猜测该错误可能已经出现很久,尝试搜索却无强相关答案,其他的要么说重启试试(当时情况绝对不行的)要么说故障自行消失(我:?),有的方法尝试无效。

4.卒

Virtualizor客服说如果无法修复这个问题其他的解决无从谈起。

这个时候尝试重启了一个虚拟机,果然磁盘丢失,网卡也丢失了。

。。。

只好通知老板再通知他的客户火速备份了。

文中有些许未尽地方,抢救从23点左右持续到次日凌晨3:40左右,经过反复尝试后实在没有办法(部分尝试文中未列举)。遂询问Virtualizor客服,他最终判了死刑,无解。

5.可以学到什么?(启示录)

千万不要随便rm -rf了!!!

6.后记

用久了就会发现,有的机器虚拟化系统的疑难杂症真多啊。。。

之前这个机器还凭空的就突然包损坏(fdisk等损坏,期间根本没人动他,ssh无登录)导致出现诡异表现(Virtualizor不明原因重装时无法格式化磁盘)。通过debsum检查发现重装后立刻问题解决(实测仅重装fdisk包后问题即解决)。

凌晨4:23。很对不起那个老板。

文章为事后撰写。躺下时天已经快亮了(为防geospy图片经过裁剪)

还是很对不起那个老板。忏悔。

以后再也不给别人修机器了!!!

7.第二天补充(可能的补救方案)

查了一下发现dd命令恢复分区居然如此简单(链接点我),凌晨迷糊了,没想到居然这么简单,回来将找个试验机尝试该方法。那个老板重装了。

悲剧。

Hey!
最后更新于 2024-08-04