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命令恢复分区居然如此简单(链接点我),凌晨迷糊了,没想到居然这么简单,回来将找个试验机尝试该方法。那个老板重装了。
悲剧。
Comments 2 条评论
博主 0w0
又一次证明,不带复现步骤,不带debug档位日志,没截图,只有自然语言描述的案例,参考价值真的太低了(:з」∠)
用dd搬数据的话只能通知客户自己搞,作为商家是不能碰用户数据的,他们情愿你把硬盘扔火里
老硬盘的话,要么换个有纠错的文件系统,要么直接换硬盘,不然类似故障肯定还会有,只是现在这情况,等老板消消气再谈吧
博主 danuonuo
@0w0 事后写的,处理过程哪有空记录过程,等到写的时候很多东西已经没有了。不想再打开那个机器了