记一次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重装CentOS8,再从CentOS8迁移到Rocky Linux。

从CenOS8迁移到Rocky Linux

重装完CentOS8后首先修复存储库

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.上次因为要禁用IPv6而替换了GRUB引导文件,与新的宿主机不兼容,导致引导错误

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