目 录CONTENT

文章目录

有惊无险!PVE宿主机崩溃导致的all in boom

周二豪
2024-09-19 / 0 评论 / 0 点赞 / 12 阅读 / 6998 字

前言

意义都是人赋予的,对于每个人信息的储存都是绕不开的话题,或许是记录下家人温馨时刻的照片,或许是实验室里宝贵的数据,或许是承载自己内心思绪的笔记......永远记住,数据无价,到了丢失的时候便追悔莫及了

事情经过

那天晚上,我正在家远程登陆服务器,将一个虚拟机销毁,并从备份文件还原一台Windows虚拟机,大概是因为短时间内大量的数据读取,加上为了控制噪音我手动降低了风扇转速,导致硬盘温度飙升到了85°C,pve后台直接通过邮件报了smart警报。

85°C!,要知道,这块NVME硬盘上安装了pve宿主机并且是存放各个虚拟机磁盘镜像的地方,一旦这块盘烧坏,就意味着所有虚拟机以及上面的数据全部丢失,这是我非常难以承受的。

我之前介绍过,在pve上我搭建的服务

1726756977179.png

  • 一个webserver网络服务器并安装内网穿透客户端和WAF防火墙,作为内外网沟通的媒介

  • 一个appserver应用服务器,上面搭建了图床、博客、网盘、相册、密码管理器等

  • 一台DSM全闪黑群晖,所有的热数据都存在上面

  • 一台unraid存储服务器,10t的机械硬盘能存下我目前所有的数据

  • 一个常年开机的windows虚拟机作为日常使用的机器,可以用RDP或者Parsec远程控制

我赶紧停下了所有的主动读写操作并拉高了风扇转速,让硬盘冷却下来,所幸没有发生我所担心的事情。没想到第二天......

所有的虚拟机都无法连接,在路由器后台也看不到pve的ip,心想糟了,这下肯定是硬盘烧了,完蛋了!all in boom了!

给电脑插上显示器,开机......

1726752788000.png

这是啥,disk not found?带着疑惑我开始google

PVE grub resue错误修复 lvmid BUG

Recover From Grub Failure

大概意思是说,主机在元数据环形缓冲区发生环绕时(重新)启动,grub启动失败

解决方法

为了暂时绕过这个bug并让主机再次进入可启动状态,触发LVM元数据更新是一个有效的办法。更新后的元数据将存放在元数据环形缓冲区的一个连续部分中,从而避免再次发生环绕。这样,grub就能够正确解析元数据并重新启动。

One simple way to trigger an LVM metadata update is to create a small logical volume:

  • Boot from a live USB/CD/DVD with LVM support, e.g. grml

  • Run vgscan

  • Create a 4MB logical volume named grubtemp in the pve volume group: lvcreate -L 4M pve -n grubtemp

  • Reboot. PVE should boot normally again.

  • You can now remove the grubtemp volume: lvremove pve/grubtemp

在运行的PVE系统上,您可以使用以下命令检查元数据环形缓冲区中是否存在环绕:

vgscan -vvv 2>&1 | grep “Reading metadata”

如果输出行的末尾是(+0),则表示没有环绕。如果它们以(+N)结尾,其中N是任何其他数字,则表示存在环绕,并且在重启后grub很可能会启动失败。

思考

这次的事件虽有惊无险,但着实给我敲了一记警钟,在宿主机系统盘上安装虚拟机系统,使得同时有大量数据进行读写,不仅让硬盘温度居高不下,还迅速消耗硬盘寿命,风险极高,一旦损毁则全军覆没,我必须要着手做存算分离的改造了

另外,之前为了不降低文件访问的速度,我把重要资料全部都放在SSD上,还是单盘。众所周知,因为固态硬盘和机械硬盘截然不同的存储方式,SSD一旦损坏,有90%以上的概率数据无法找回,没有了就是没有了。之前一直抱有侥幸心理,想着这么倒霉的事情应该不会轮到我的,数据备份的活就一直搁置了。

回过头来看,这简直是在刀尖舔血,心有余悸啊。

大改造

用一台truenas作为所有数据的basement

改造首先从重要文件的存储开始,包括我保存的一万余张照片、课题组的实验数据和论文等,它们必须放机械硬盘里面去

新建一台truenas虚拟机,作为我的存储服务器

在这上面分别用两块6t的SAS盘组Mirror存储池,用以存放非常重要的数据和所有备份文件

两块1t的SSD组Mirror,存放对访问速度有一定要求的热数据

一块ssd用iSCSI共享出去作为游戏盘和一块4t故障机械盘存不重要的数据

1726757079462.png

这样一来所有的数据都得到了妥善的存放

把pve安装到raid1阵列上

pve作为整个服务器的底层系统,要求极致的稳定性,对此我选择了两块60g的镁光固态M500IT,MLC颗粒提供了超长的寿命,工业级宽温让我不用担心温度过高而烧盘,并组成raid1提供一定的冗余,允许一块盘损坏而不至于全盘停摆,只需要更换一块盘即可重建阵列

1726757178252.png

具体的安装就不赘述了,大抵不过是先把所有的虚拟机备份到truenas上,然后安装好pve后把truenas也安装到镁光固态上,然后通过NFS挂载上面存放备份文件的数据集,就可以把原先的虚拟机全部还原了

为虚拟机磁盘镜像提供一个安全的运行环境

一开始我是把两块1t的nvme直通给truenas并组raid1,然后用nfs挂载回pve来存放磁盘镜像,后来发现4k速度简直低得感人,windows运行起来打开个文件夹都有明显的卡顿,实在不适合用来安装系统

最后还是在pve上把这两块一盘组成ZFS-Mirror阵列,并直接在这上面安装虚拟机

1726757322950.png

备份

虚拟机的备份,pve提供了一套完整的解决方案,即使用PBS。只需简单的设置,便可以自动定时增量备份,省心又省空间

数据的备份,目前想的是加密备份到云盘,但是还没有想好合适的服务商,后续可能会用阿里云盘或者百度云盘。

0

评论区