系统:centos7
硬盘结构:256G SSD系统盘+1T HDD存储盘
崩溃原因(猜测):运行stable diffusion时需要依赖libz.so.1库,下载时无意间覆盖了原系统的库文件,导致系统fatal error,无法正常启动
直接原因:覆盖文件时系统有提示,但笔者直接使用root权限强制覆盖了,后来检查代码(从网上文档copy的),其中含有-f选项,即强制覆盖,也是原因之一。
尝试解决:
笔者先是尝试以“单用户模式”登入系统(类似win pe模式,禁用大部分程序以保证系统的运行正常)。
两种启动方式:一是在进入centos系统前按e编辑启动项,增加init=/bin/sh;二是插入装有centos系统的启动u盘,进入“救援模式”。经笔者体验,二者并无明显区别,后者的救援模式可以将原系统文件移至/mnt/system文件夹中,似乎更为方便些
但遗憾的是,即使更改libz.so.1的软链接也无法使系统正常开机,在反复折腾一个下午后,笔者终究放弃了该想法,转考虑数据恢复的问题。
数据恢复:
文件存储盘的数据恢复十分简单,因为本质上只是系统崩了无法加载文件,硬盘的物理性质与软件分区并无异常,因此笔者登入单用户模式挂载该硬盘成功后便不再考虑(事实证明,直接将其连接到linux系统上就可以读取其中信息)
系统盘的数据就很麻烦了,通过lsblk命令可以看到硬盘分区结构(以下为示意图)
系统盘sdb被分成了sdb1 sdb2 sdb3三个分区,且sdb3(即存储用户数据 /home文件夹下内容)使用的是lvm文件格式,直接使用mount命令挂载不成功,且网上教程中的fsck命令也无法修复该文件系统,到此笔者折腾许久未找到方法,甚至一度想要舍弃这部分数据。
不过天无绝人之路,笔者想尝试进入live CD系统(一种linux版本的pe系统),图形化的查看下文件盘的资料,顺便碰碰运气之时,在网上看到了GParted Live这样一个开源磁盘分区工具
在其官网可以下载到iso文件(https://gparted.org/livecd.php)
使用u盘启动该系统时可以从其自带的file system中找到/dev/centos-home类似这样的block文件,经确认,该文件可被mount命令挂载,并且内部文件属于原/home文件夹下的文件,至此,系统盘的文件也恢复成功(将块文件直接复制到其他硬盘即可)
损失:
几乎一整天的时间(虽然中间有在等待可以打会游戏……)
虽然文件保下来了,但之前部署的各种docker 与 qq机器人等服务配置都没了,又得走一遍流程
前文中刚配好的cuda与stable diffusion又没了!!
收获:
说实话不想写这部分……但确实有一定的好处吧。
一是借此摆脱了centos系统(重装了ubuntu 22.04),虽说centos7到2024年才停止维护,但说实话这个系统不是很好用,尤其是装驱动极为困难(想起了之前折腾许久装无线网卡驱动失败最终扯了根超长网线的伤心事)。
二是重装了显卡驱动,上篇文章提到笔者收了一款p104-100的矿卡并为其安装了cuda,但由于没找到官方的linux驱动就只能凑活着用(实测跑图速率约为2060的三分之一),后来查到资料说p104用的1070 1080同款显存颗粒,因此可以使用1080的驱动,笔者尝试后似乎确实如此(跑图速率之后再行测试)
三是吃一堑长一智吧,linux系统使用root权限时确实需要谨慎谨慎再谨慎!!
ps:因为原本的个人博客也搭在服务器上的,甚至还定制化了不少,现在也懒得搞了,暂时先在这里发着(反正b站一时半会儿崩不了~)