控制面板中的两项工具,足以应对大多数「推倒重来」和「无法启动」的情况。重装会写入全新的操作系统,并清除所有数据。救援模式则会启动一套独立的 Linux 系统,可以在不动数据的前提下修复已安装的系统。
- 重装系统:适用于需要一个干净的系统或更换操作系统,且数据已安全备份到其他位置的情况。
- 使用救援模式:适用于服务器无法启动、忘记 root 密码,或需要在重装前把数据拷出来的情况。
一键安装镜像
控制面板会列出每个镜像当前提供的版本。
| 镜像 | 安装后的登录用户 | 说明 |
|---|---|---|
| Ubuntu | root | APT 包管理,Netplan 网络配置 |
| Debian | root | APT 包管理,支持周期长 |
| AlmaLinux | root | 兼容 RHEL,DNF 包管理 |
| Rocky Linux | root | 兼容 RHEL,DNF 包管理 |
| Windows Server | Administrator | 通过远程桌面连接 |
| Proxmox VE | root | Web 管理界面位于 8006 端口 |
如需其他系统,可以通过 KVM 控制台引导自己的 ISO,详见使用 IPMI 和 HTML5 KVM 控制台。各镜像的介绍见系统镜像库。
重装会清除哪些内容
请做好服务器上所有硬盘都会被清空的准备。重装会删除:
- 操作系统、应用、数据库、容器、虚拟机和用户主目录
- 所有自行完成的配置:用户、安装后添加的 SSH 密钥、防火墙规则、额外的 IPv6 地址、私有 VLAN 接口和计划任务
- SSH 主机密钥,因此 SSH 客户端会警告主机标识已更改
重装前先备份
存放在同一台服务器上的备份会随其他数据一起被清除,因此请将数据复制到另一台机器上。同一机房的另一台服务器通过免费的内网传输就很合适,Storage 264 同样适用。
# Dump databases to files
sudo -u postgres pg_dumpall | gzip > /root/pg-all.sql.gz
mysqldump --all-databases --single-transaction --routines --events | gzip > /root/mysql-all.sql.gz
# Save the configuration and the list of installed packages
tar -czf /root/etc.tar.gz /etc
dpkg --get-selections > /root/packages.txt # rpm -qa on AlmaLinux and Rocky Linux
# Copy everything off the server, here over a private VLAN
rsync -aHAX --numeric-ids /root /srv /home backup@10.20.0.30:/backups/web1/继续之前,请确认文件已全部传输到位,并且至少有一份数据库转储能在另一台机器上成功恢复。
重装服务器
- 完成备份并验证。
- 在控制面板中打开服务器,选择「重装系统」。
- 选择镜像和 SSH 密钥,然后确认。
- 重装完成后,在控制面板的服务器信息中查看新的登录凭据。
- 在本地电脑上运行
ssh-keygen -R 203.0.113.10(替换为服务器地址),清除旧的主机密钥。 - 按照快速入门重复首次登录的步骤:修改密码、添加密钥、安装更新。
进入救援模式
救援系统会代替已安装的操作系统运行,此时磁盘未被占用,可以进行检查、挂载和修复。
- 在控制面板中打开服务器,选择「救援模式」,然后重启服务器进入救援系统。
- 使用救援会话提供的访问信息通过 SSH 连接,或使用 KVM 控制台。
- 完成后关闭救援模式,重启回到已安装的系统。
识别并挂载磁盘
先列出磁盘,并组装可能存在的 RAID 阵列或 LVM 卷:
lsblk -o NAME,SIZE,FSTYPE,LABEL,MOUNTPOINTS
cat /proc/mdstat # software RAID arrays, if any
mdadm --assemble --scan # start them if they are not running
vgchange -ay # activate LVM volume groups, if any如果根文件系统报错,请在未挂载的状态下检查:ext4 使用 fsck -f /dev/nvme0n1p2,XFS(AlmaLinux 和 Rocky Linux 的默认文件系统)使用 xfs_repair /dev/nvme0n1p2。RAID 和 LVM 卷请使用 /dev/md0 或 /dev/mapper/... 路径。
然后挂载根文件系统,查看其中的 fstab,确认还需要哪些分区,并一并挂载:
mount /dev/nvme0n1p2 /mnt # root file system (example device)
cat /mnt/etc/fstab # shows /boot or /boot/efi, if separate
mount /dev/nvme0n1p1 /mnt/boot/efi # EFI system partition on UEFI installs通过 chroot 进入已安装的系统
先绑定挂载内核的虚拟文件系统,再切换到已安装的系统中:
for d in dev proc sys run; do mount --rbind /$d /mnt/$d; done
chroot /mnt /bin/bash此后执行的命令都会作用于已安装的系统。passwd root 可以重置忘记的密码,编辑 /root/.ssh/authorized_keys 则可以恢复 SSH 访问。
修复 /etc/fstab
启动停在紧急模式,常见原因是 fstab 中的某个条目指向了不存在或已更换的磁盘。将 fstab 中的 UUID 与实际 UUID 进行对比并改正,然后检查该文件:
blkid
nano /etc/fstab
findmnt --verify对于系统启动并不依赖的磁盘,可以在挂载选项中加上 nofail,例如 UUID=3f2a9c4e-... /data ext4 defaults,nofail 0 2。这样即使数据盘缺失,也不会再阻止系统启动。
修复 GRUB
先确认启动模式,因为 GRUB 必须按服务器实际使用的启动模式重新安装:
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS在 Ubuntu 和 Debian 上:
grub-install --target=x86_64-efi --efi-directory=/boot/efi # UEFI
grub-install /dev/nvme0n1 # legacy BIOS, repeat for each boot disk
update-grub在 AlmaLinux 和 Rocky Linux 上:
dnf reinstall shim-x64 grub2-efi-x64 # UEFI, if boot loader files are missing
grub2-install /dev/nvme0n1 # legacy BIOS only
grub2-mkconfig -o /boot/grub2/grub.cfg退出救援模式
重启之前,先退出 chroot 并卸载所有文件系统:
exit
umount -R /mnt在控制面板中关闭救援模式并重启。在 KVM 控制台中观察启动过程:如果再次卡住,屏幕上的信息会提示下一步需要修复什么。如果怀疑硬件本身有故障,请提交工单,我们的工程师 7×24 小时为您服务。