接到福州的网友求助,华为服务器,跳电后Proxmox VE里面所有的虚拟机都起不来了。
先远程登录看一下吧,至少PVE的web管理界面还能登录,看到错误提示,有点慌啊,vm-xxx-disk-0都没了,难怪每台虚拟机都无法启动。
一般来说,PVE的虚拟磁盘,都在/dev/pve路径下,看到上面的错误提示,进入shell再确认一下,果然一个虚拟磁盘的文件都没得。
输入lvscan,看来虚拟机磁盘都在,只是未激活状态,所以PVE识别不到了。
输入vgchange -ay pve尝试激活,全部失败;尝试逐个激活,同样的结果,郁闷。
好在有iBMC远程管理,可以很方便地远程操控服务器,那就来吧。在客户的电脑上,下载Centos,在iBMC内配置为用Centos的ISO文件引导服务器,进入救援模式,输入vgchange -ay pve尝试激活,这次全部都成功了,小小地兴奋了一下。
重启服务器,登录PVE,结果还是老样子,进入shell,输入lvscan,虚拟磁盘又变成inactive状态了。
输入lvconvert --repair /dev/pve/data,修复失败,提示磁盘空间不足,可用空间居然为0!怎么可能?
不管它了,创建一个4G的空间,vgextend给它,再次lvconvert --repair /dev/pve/data,还是提示空间不够,再创建一个8G的空间,继续vgextend,又一次执行lvconvert --repair /dev/pve/data,很好,这次不报空间不足的错误了,但是,修复还是失败。
怀疑磁盘有逻辑错误,再次以centos救援模式启动服务器,fsck扫描磁盘,显示磁盘被占用,无法完成扫描。
下载ubuntu,启动服务器,try ubuntu,fsck扫描磁盘,很快就完成了, 肯定不对啊,再次运行,晕,也提示占用中了……
重启服务器, 启动Proxmox,错误更多了,汗……
再一看,不用慌,这是我用来扩容的那两个4G和8G的盘没有设置自动挂载导致的,这两个磁盘已经被我删除了, 也没必要再去设置自动挂载了。
可是 ,这时候,无论执行什么修复操作,都是提示找不到这两个盘,无法完成,很招人烦。
vgreduce --removemissing /dev/pve
我想把这两个错误的盘,从PVE中移除,结果提示我要加上 --force参数,也就是强制移除。
但是我加上了--force参数,还是失败。
于是,又一次启动centos救援模式,vgreduce --removemissing --force /dev/pve
好家伙,把所有的虚拟磁盘都给我remove了,lvscan查看一下,vm-disk一个都没了,汗……
虽然说,LVM的特性决定了vm-disk是可恢复,但是难免紧张。退一步来讲,就算vm-disk没能恢复,那通过数据恢复手段,至少还能找回vm-disk里面的文件。
所以说,诸如以上的操作,为防万一,都应该事先对硬盘做镜像后再作处理,只是距离遥远,没有条件,所以才小心谨慎地进行修复操作。
事到如今,就算我马上远程恢复了LVM的状态,还是无法修复PVE的虚拟磁盘,也就无法修复任何一台虚拟机,那还不如让客户把服务器发过来,做了硬盘镜像再放心地折腾。
第二天早上,与客户沟通后,暂时没了联系。两天后,客户才发来消息,其实我有些担心,这两天,他们已经动了服务器,也许会造成不可恢复的尴尬处境。
8月18日中午,服务器到达我们办公室,立即开机,拿了硬盘做镜像,20:33分,进度条已经跑满,显示为24秒后结束,可是,等到21多,仍然没有完成,先放着吧,下班。8月19日早上7点,远程登录iBMC,镜像还没完成,肯定不可能完成了,只能到了办公室后,再换个镜像软件重头再来。
8月20日8:30,终于显示为镜像完成,长长地舒了一口气,把我们的硬盘挂载到我们自己的服务器上。
Ventoy优盘Ubuntu ISO 引导服务器,try Ubuntu。
vgcfgrestore --file /etc/lvm/archive/pve_001xx-xxxxxxxxx.vg --test pve
根据备份文件,测试后恢复LVM状态。
命令执行完成后,紧接着输入 lvscan,所有的vm-disk都回来了。
把这些vm-disk全部复制到另外一块硬盘……
8月21日早上9点,刚到办公室5分钟,复制过程正好完成。
把这块硬盘,挂载到我们的Proxmox服务器上,根据虚拟机的配置文件(例如:100.conf)以及之前在原华为服务器上的Proxmox截图,创建出对应的虚拟机。
在shell下,删除自动产生的vm-disk文件,proxmox上添加目录,路径为挂载过来的硬盘,逐一修改虚拟机配置文件,把虚拟磁盘的路径改为刚才添加的目录。
启动所有虚拟机,全部成功,通知客户远程确认。
8月22日,计划给客户的华为服务器重装Proxmox,虚拟磁盘复制回去。结果各种报错,无法安装。
午饭后,突发不适,剧烈呕吐三次,另外一个客户的freeswitch服务器出现问题,忍痛分析问题,解决问题。
实在无力加班了,下班前,华为服务器安装debian 12,准备第二天早上在此基础上安装Proxmox。
8月23日早上,在debian 12上安装Proxmox8.0成功,按照配置文件和截图准确地创建一遍虚拟机,开始把虚拟磁盘复制回去。
8月23日晚上19:53,复制完成,并且每台虚拟机启动测试完成,关机。
8月24日中午,客户远程确认后,服务器发回,至此,华为服务器上崩溃的Proxmox算是恢复完成。
华为服务器无法直接安装Proxmox,换了多个版本都不行,只能先安装debian ,然后在此基础上安装Proxmox,具体过程,下一篇文章讲述;另外freeswitch无法拨打电话、拨通后没有声音的问题,后面也会发文章,有兴趣的朋友,可以先关注一下。