记一次 VPS 的宕机经历

Published on: May 13, 2022 | Reading Time: 1 min | Last Modified: May 13, 2022

rocky-linux
centos
迁移
nextcloud

几天前我搭建在 HostHatch 的 Nextcloud 服务突然无法访问了。心想 HostHatch 此前已经连续稳定运行数年,故障大概率是我自己的设置问题或是服务器被入侵了,立马慌了。随即 ssh 登录服务器查看状况,结果 ssh 无法登录。又到控制台想通过VNC登录了解情况,结果系统卡在 GRUB 无法正常引导。进入 GRUB 救援模式,修改 GRUB 启动分区,加载基本模块等一通操作下来还是白忙活。ls查看设备状态,硬盘还是能读出来的。索性懒得折腾了,重装系统吧,反正本地还有备份不怕丢数据。

CentOS8 目前已不受官方支持,而我又不想用 Stream 版的,考虑再三还是用 Rocky Linux 吧。

由于这次故障来的太突然,而且故障的原因又不明,卡在 GRUB 估计与我上次安装系统使用了自定义 ISO 有关。所以这次舍弃了之前通过挂载 ISO 的方式直接装 Rocky Linux,而是先通过官方的 Image 重装 CentOS 8,再从 CentOS 8 迁移到 Rocky Linux。

从 CenOS 8 迁移到 Rocky Linux

重装完 CentOS 8 后首先修复存储库

sed -i -r \
    -e 's!^mirrorlist=!#mirrorlist=!' \
    -e 's!^#?baseurl=http://(mirror|vault).centos.org/\$contentdir/\$releasever/!baseurl=https://dl.rockylinux.org/vault/centos/8.5.2111/!i' \
    /etc/yum.repos.d/CentOS-*.repo

下载官方推荐的的迁移脚本文件

curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky.sh

赋予脚本文件可执行权限

chmod u+x migrate2rocky.sh

执行迁移脚本

./migrate2rocky.sh -r

等待一段时间迁移成功会有提示信息,需要重启系统,然后查看系统是否迁移成功

hostnamectl

Rocky Linux 下 Nextcloud 的部署

添加 EPEL 存储库

yum install epel-release

安装 snapd

yum install snapd

启用管理主 snap 通信的 systemd 单元

systemctl enable --now snapd.socket

启用经典 /var/lib/snapd/snap 快照支持

ln -s /var/lib/snapd/snap /snap

重启系统,然后安装 Nextcloud

snap install nextcloud

更改 Nextcloud 的 HTTP 端口

snap set nextcloud ports.http=**

调整 PHP 内存限制

snap set nextcloud php.memory-limit=512M

默认情况下用户的同步数据会放在 /var/snap/nextcloud/common/ 文件夹下,如果需要更改数据存放路径,需要修改 php 配置

vi /var/snap/nextcloud/current/nextcloud/config/config.php

找到 ‘datadirectory’ => ’ 将后面的路径修改为你需要的路径

然后在路径根目录下新建一个名为 “.ocdata” 的空白文件,Nextcloud 方可将新指定的文件夹识别为数据存放位置。

浏览器输入 IP 地址和服务端口登录 Nextcloud,按照提示设置管理员账户和密码就大功告成了

当我一切都完成之后,没想到 HostHatch 发来邮件了。是他们的存储节点故障导致的这次宕机,他们也注意到了,故障恢复后个别机器在启动过程中卡住了。哎……自己动手解决问题,没发工单给他们添乱。

总结了一下,这次宕机的可能原因有二:

1.我使用的自定义 ISO 他们在故障修复的过程中没有充分的考虑到,导致不兼容

2.上次因为要禁用 IPv 6 而替换了 GRUB 引导文件,与新的宿主机不兼容,导致引导错误

总之,没有这次他们的节点故障,也就不会出现引导失败的问题。