救援模式
有时,由于网络中断、安装错误、配置错误、内核升级、防火墙规则错误等原因,服务器无法通过 SSH 访问。当您根本无法登录服务器时(您没有 root 密码或服务器无法启动),您可以使用我们的救援模式,该模式将原始 Alpine Linux 映像加载到服务器的 RAM 中。
如果您确实拥有服务器的 root 密码和 SSH 密钥,则应该使用我们的 通过 SSH 进行串口通信的控制台。
要求
三层网络 - 为了将救援操作系统加载到您的服务器上,服务器必须可通过 IP 地址访问。因此,您的服务器必须处于三层或混合网络模式。如果您的服务器当前处于纯二层配置,则必须将其转换为三层或混合网络模式才能使用救援模式。
SSH密钥 - 服务器启动进入救援操作系统后,您必须拥有有效的SSH密钥才能访问服务器。救援操作系统使用您最初配置服务器时关联的SSH公钥。
根分区 - 根据您需要执行的修复或恢复操作类型,您需要找到原始操作系统的根分区位置。查找此信息的最佳方法是在进入救援模式之前,直接从操作系统本身获取。例如,在 Ubuntu 系统中,您可以使用 df -h 找到根分区。
启动进入救援模式
要进入救援模式,您可以在服务器的主“概览”页面找到救援模式。点击“服务器操作”,然后从下拉菜单中选择“救援操作系统”。

这将重启服务器,将救援操作系统 Alpine Linux 镜像加载到内存中,然后启动服务器进入 Alpine Linux 系统。服务器的公网 IPv4 地址保持不变。
服务器启动后,您可以使用授权的 SSH 密钥以 root 身份通过 SSH 连接服务器。如果您之前使用 SSH 连接过服务器,可能会收到主机密钥已更改的警告,请先从本地计算机上的已知 hosts 文件中删除该主机密钥,然后才能连接。
ssh root@<server_ip_address>
当您成功通过 SSH 进入服务器后,您将看到 Rescue OS 简介和命令行提示符。
,------. ,--. ,--.
| .---' ,---. ,--.,--.`--',--,--, `--',--. ,--.
| `--, | .-. || || |,--.| \,--. \ `' /
| `---.' '-' |' '' '| || || || | / /. \
`------' `-| | `----' `--'`--''--'`--''--' '--'
`--'
===============================================
OS Rescue Environment
Commit: dd4b2268 (main) BuildNo: unknown
===============================================
Based on Alpine Linux 3.18.4
Use "apk" package manager for additional utilities.
See docs at http://wiki.alpinelinux.org
localhost:~#
挂载原始根分区
要解决许多问题,您需要挂载原始操作系统的根分区。如果您不知道原始操作系统的根分区在哪里,可以尝试猜测。通常情况下,它是 dev/sda3 或 dev/sdc3。对于我们的一些服务器,它可能位于 dev/mdxxx 中,其中 xxx 是 md 设备的编号。
本页示例的等级从 dev/sda3 到 /mnt。
mount -t ext4 /dev/sda3 /mnt
成功挂载分区后,将 cd 添加到该分区。
cd /mnt
运行 ls 查看原始操作系统的文件系统。
localhost:/mnt# ls
此示例输出来自 Ubuntu 20.04。
bin home libx32 opt sbin tmp
boot lib lost+found proc snap usr
dev lib32 media root srv var
etc lib64 mnt run sys
如果您已成功访问根分区,则可以修复它。
常见用例和修复
重置Root密码
如果您可以正常通过 SSH 进入服务器,但由于忘记或未保存 root 密码而无法使用 SOS/OOB 控制台,则可以通过救援模式重置它。
将根文件系统挂载到 /mnt 后,我们可以使用 chroot 加载已挂载的文件系统,并直接使用 passwd 命令修改现有的根密码。
chroot /mnt /bin/bash
>
passwd
恢复文件
如果服务器无法启动到原始操作系统,并且您需要恢复任何重要文件,您可以使用救援模式下的 scp 将它们移动到其他位置。
因此,如果您在主目录的 /demo 文件夹中有一个 demo 文件夹,您可以使用 scp 将其保存到本地计算机。
scp -r root@<server_ip_address>:/mnt/home/demo /User/Downloads
调整大小或添加分区
默认情况下,启动驱动器会有一个根分区,该分区会占用驱动器的所有空间。某些服务器有其他未格式化的驱动器,但如果您需要在同一个启动驱动器中创建多个分区,您可以进入救援模式来缩小根分区并创建新的分区。
执行此操作的过程可能因您使用的文件系统而异,但如果您使用的是 ext4 操作系统(例如 Ubuntu),则可以使用 resize2fs 和 gdisk 来调整文件系统/分区的大小并创建其他分区。
值得注意的是,我们镜像中的默认 cloud-init 配置文件启用了 growpart 和 resizefs 模块,如果您仅缩小根分区而不创建新分区,则会将根分区恢复到其最大驱动器大小。如果您希望避免此行为,可以编辑位于 /etc/cloud/cloud.cfg 处的 cloud-init 配置文件,移除 -growpart 和 -resizefs 模块。保存文件后,cloud-init 将不会在每次操作系统启动时尝试调整分区大小。
Alpine Linux 的附加软件包
用于救援模式的 Alpine Linux 镜像可能缺少某些特殊操作所需的软件包。例如,要运行 fsck,您需要安装 e2fsprogs 软件包。
apk add e2fsprogs
安装成功后,例如,您可以在 sda1 上运行 fsck。
fsck.ext4 -f -y /dev/sda1
如果您要格式化分区的文件系统不是 ext4,则可能需要其他软件包,例如 zfs。您可以在 Alpine Linux 软件包目录 中找到所有可安装的软件包。
返回原始操作系统
要恢复原始操作系统,我们只需重新启动服务器即可。
来自 Alpine Linux:
要重启 Alpine Linux,请使用 reboot 命令。
reboot
从控制台:
要从服务器的“概览”页面重启服务器,请点击“服务器操作”,然后从下拉菜单中选择“重启”。

一旦服务器从任一过程完成重启,它将重新启动到您原来的操作系统。