如何使用FreeBSD的单用户模式从文件系统损坏中恢复
##介绍
尽管您尽了最大努力,但在某些情况下您的服务器可能会遭受文件损坏并需要恢复。 有时,当您的 VPS 突然断电或某个软件或硬件突然出现故障时,就会发生这种情况。
无论哪种方式,您都可以采取一些步骤来尝试恢复您的 VPS。 在 FreeBSD 上,许多这些功能都可以在单用户模式下执行。 在本教程中,我们将介绍将 FreeBSD droplet 引导到单用户模式的步骤,以及如何使用那里的工具来尝试恢复损坏的文件系统。
- 重要注意事项和风险
在任何情况下,良好的备份都是防止数据丢失的最佳方法。 实施可靠的异地备份解决方案并定期对其进行彻底测试是保证重要数据完整性的唯一方法。
虽然像 fsck 这样的恢复选项通常很有用,但不能保证它会正常工作,成功通常只是运气的问题。 fsck 操作有时会导致活动磁盘上的数据损坏。 但是,在严重损坏的情况下仍然会出现问题,因此请考虑使用这些最后的数据恢复方法。
- 引导到单用户模式
要将您的 Droplet 引导至单用户模式,您可以运行以下命令:
sudo nextboot -o "-s" -k kernel
这将指示您的 Droplet 在下次重新启动时进入单用户模式,而不是尝试加载整个系统。 准备好后,您可以使用 reboot
命令重新启动您的 droplet。
sudo reboot
重新启动后,您的 Droplet 将无法再通过 ssh 通过网络访问。 您现在需要通过控制面板中的控制台访问您的 Droplet。 重新启动完成后,您会发现自己处于一个非常小的 shell 中,类似于下图所示:
当你看到这条线时:
Enter full pathname of shell or RETURN for /bin/sh:
您可以按 Enter
启动 shell 会话。
替代方法
如果您的 droplet 无法通过 ssh 访问,您仍然可以使用此替代方法将您的 droplet 引导到单用户模式。
首先,在控制面板中单击电源循环按钮以重新启动您的 Droplet。
紧接着,打开你的 Droplet 的控制台。 几秒钟后,您应该会看到如下屏幕:
在此菜单中选择项目 2
并按 Enter 键继续。
- 执行文件系统检查
现在您的 Droplet 处于单用户模式,我们可以继续。 首先,让我们确保我们知道我们正在检查什么设备。 运行以下命令将显示当前配置的文件系统。
cat /etc/fstab
您看到的输出应该与此类似:
列表中的第一项显示了我们正在寻找的 ufs 文件系统。 现在您可以运行以下命令来对该磁盘执行文件系统检查。
fsck -yf /dev/gpt/rootfs
- 检查结果
文件系统检查完成后,您可以使用 reboot
命令重新启动 Droplet 以离开单用户模式并在正常(多用户)模式下重新启动 Droplet。
使用 SSH 客户端连接到您的 Droplet。 如果您的 droplet 响应了您的 ssh 连接并且之前没有响应,那么这是一个好兆头。 如果您之前遇到了提醒您可能发生损坏的特定问题,您应该再次尝试这些操作以查看它们是否成功。
一件重要的事情是检查 /lost+found 目录。 这是 fsck 放置部分恢复的文件的地方。
有时,fsck 能够恢复文件数据,但它无法在文件系统上找到对文件的引用。 基本上,它是一个没有名称的文件。 如果 fsck 遇到这种情况,它会将这些文件放在 /lost+found 目录中,以便您可以手动尝试找出文件是什么。
运行 fsck 后,查看该目录中是否放置了任何内容。 由于 lost+found 目录仅对 root 用户可用,我们将首先使用 sudo su
命令更改为 root 帐户:
sudo su cd /lost+found ls
如果此目录中有文件,您将需要查看是否可以识别它们。 通常,这些是您已经删除的文件,但在系统崩溃时仍在使用。 值得检查它们以确保。
如果您的文件系统仍然明显损坏,或者在切换回多用户模式时启动失败,您最好的选择可能是 使用恢复 ISO 来恢复任何需要的文件 。 为此,您需要 向支持团队 开一张票,以便他们可以将您的 droplet 引导到恢复环境中。
##结论
虽然文件系统损坏从来都不是一件好事,但这并不一定意味着您所有的重要数据都丢失了。 恢复操作的成功取决于许多因素,例如文件系统发现损坏的速度、问题的广泛程度以及受影响的文件。
归根结底,使用自动化工具进行简单恢复很大程度上取决于运气。 话虽如此,在许多情况下,fsck 恢复是成功的,您可以重新使用您的服务器而不会太头疼。 请记住,保持良好的备份是防止数据丢失的最重要步骤。