仅作记录
服务器重建日期2023/10/13
起因
脑抽突然想给甲骨文的ARM升级一下系统,上一次做系统是在21年初刚开机的时候,当时用的是Debian10 aarch64,内核还是4.9.10的史前版本,没经住Debian12和6.1.0内核的诱惑。
结果不出意外的出意外了,由于我升级前偷懒没有执行apt update,在更新依赖时直接把动态链接库整的No such file了,此时包括sshd/sulogin全部不可用,这导致了我完全无法登录到服务器,以及MySQL/Nginx等服务全线宕机
处理过程
前期尝试
首先我尝试使用Oracle Cloud Shell登录服务器,这个功能其实就是网页版的VNC窗口,很惊喜的是,VNC窗口显示正常,甚至到了登录的步骤
但随之而来的问题也出现了,由于动态链接库丢失,login的认证无法进行,此时无论我输入什么都无法验证密码
后续尝试进入Grub进入单用户模式,但是无论我如何操作,仍然无法绕过动态链接库丢失的报错,此时的apt/dpkg完全不可用,无法进行修复。
虽然可以在另一个AMD实例里挂载硬盘来进行文件操作,但问题是我也不知道apt到底给我更新炸了多少依赖。
无奈之下,我开始尝试重建服务器。
重建服务器
由于Oracle不提供直接的服务器重建功能,而ARM服务器目前的免费配额可以说删了就别想再开出来,所以我开始寻找如何通过挂载硬盘的方式重建
首先,创建一个AMD的实例,步骤很简单,这里就不再说了。
待AMD实例创建完成后,将ARM实例关机。并分离ARM实例的引导卷。别慌,关机并不会损失配额,后续再开机就行了
分离引导卷成功后,将引导卷挂载到AMD实例上
附加完成后会有提示需要登录到服务器上执行命令,直接复制并执行给出的挂载命令即可
在挂载引导盘完成后,直接开始重做引导
下载救砖包到/root文件夹
cd /root && wget -cO debian.sdb.gz https://github.com/MIKU-N/OracleBackup/raw/main/dabian.sdb.gz?download=
开始dd引导盘(注意引导盘路径,通常为这个,有可能有变化,以自身为准)
gzip -dc /root/debian.sdb.gz | dd of=/dev/sdb
等待dd完成后,执行分离引导盘的命令
分离引导盘完成后,将引导盘重新挂载回ARM实例上并开机
通常来说,此时会正常开机,如卡Grub则需要格式化引导盘后再dd
如正常开机,则输入用户名root/密码10086.fit
这个镜像为Debian10,后续升级我直接使用了另一个dd脚本
wget --no-check-certificate -qO InstallNET.sh 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh
bash InstallNET.sh -debian
之后就是自动化的开始重装最新的debian12了,在等待了十来分钟后成功完成,非常轻松
重建环境
在我完成对系统的重建后,我发现一个严重的问题,我设置的自动备份在两个月前莫名出了问题,导致我最近的数据库/网站备份在两个月之前。
不过还好,在我dd之前我将整个数据库和网站包括数据全部打包上传了,然后我发现我忘记了我两年前装的什么数据库了……
幸亏打包了数据库本体,否则真是有数据都恢复不了
最终破案是MariaDB10.5,后面就是经典的数据恢复环节
历时一天半的时间完美恢复了博客数据并重新上线
暂无评论内容