介绍
尽管你竭尽全力,但有些情况下,你的服务器可能会遭受文件损坏并需要恢复,有时当你的VPS突然停电或软件或硬件突然故障时会发生这种情况。
无论如何,您可以采取步骤来尝试恢复您的VPS。在FreeBSD上,许多这些功能可以从单用户模式执行。在本教程中,我们将通过您可以采取的步骤来启动您的FreeBSD滴到单用户模式以及如何使用工具来尝试恢复损坏的文件系统。
<$>[注] 注: 截至 2022 年 7 月 1 日,DigitalOcean 不再支持通过控制面板或 API 创建新的 FreeBSD Droplets。
重要考虑和风险
在任何情况下,良好的备份是防止数据丢失的最佳方法,实施一个可靠的离站式备份解决方案并定期进行彻底测试是保证重要数据的完整性的唯一方法。
虽然 fsck 等恢复选项往往是有用的,但没有保证它会正常工作,成功往往只是运气的问题。 fsck 操作有时会导致活跃磁盘上的数据损坏。
启动到单用户模式
要将您的 dropplet 启动到单用户模式,您可以运行以下命令:
1sudo nextboot -o "-s" -k kernel
这将指示您的滴滴在下一次重新启动时进入单个用户模式,而不是试图加载整个系统。
1sudo reboot
重新启动后,您的 dropplet 将不再可通过 ssh 通过网络访问. 您现在需要通过控制面板的控制台访问您的 dropplet. 一旦重新启动完成,您将发现自己处于非常小的壳类似于下面显示的:
当你看到线:
1Enter full pathname of shell or RETURN for /bin/sh:
您可以按Enter
来启动壳会话。
替代方法
如果您的 dropplet 无法通过 ssh 访问,您仍然可以使用此替代方法将您的 dropplet 启动到单用户模式。
首先,在控制面板上点击电源周期按钮重新启动您的滴。
在此之后,立即打开您的滴滴的控制台. 几秒钟后,您应该看到这样的屏幕:
在此菜单中,选择2
项,然后按 Enter 继续。
进行文件系统检查
现在,您的滴滴处于单用户模式中,我们可以继续。 首先,请确保我们知道我们正在检查的设备。 运行下面的命令将显示当前配置的文件系统。
1cat /etc/fstab
你看到的输出应该是这样的:
列表中的第一個項目顯示了 ufs 檔案系統,這是我們正在尋找的。
1fsck -yf /dev/gpt/rootfs
检查结果
一旦您的文件系统检查完成,您可以使用重启
命令重新启动您的Dropplet,离开单用户模式,并在正常(多用户)模式中重新启动您的Dropet。
如果您的 dropplet 响应您的 ssh 连接,并且之前没有,那么这是一个很好的迹象. 如果您早些时候遇到特定的问题,警告您可能出现腐败,您应该再次尝试这些操作,看看它们是否成功。
一个重要的事情是检查 /lost+found 目录,这就是 fsck 放置部分恢复的文件的地方。
有时,fsck 可以恢复文件数据,但无法在文件系统中找到该文件的引用. 基本上,它是一个没有名字的文件. 如果 fsck 面临这种情况,它会将这些文件放到 /lost+found 目录中,以便您可以手动尝试找出该文件是什么。
运行 fsck 后,看看是否有任何东西被放置在该目录中. 由于 lost+found 目录仅可供 root 用户使用,我们首先将用一个 sudo su
命令更改到 root 帐户:
1sudo su
2cd /lost+found
3ls
如果有文件在这个目录中,你会想看看你是否可以识别它们. 通常,这些是你已经删除的文件,但在系统崩溃时仍然被使用。
如果您的文件系统仍然显著损坏,或者如果重返多用户模式时启动失败,您的最佳选择可能是 使用恢复ISO来恢复任何需要的文件。
结论
虽然文件系统损坏从来不是一件好事,但并不一定意味着您的所有重要数据都丢失了,您的恢复操作的成功取决于一系列因素,例如文件系统注意到损坏的速度,问题有多大,以及受影响的文件。
当涉及到它时,简单的恢复使用自动化工具在很大程度上是幸运的功能. 说到这一点,在许多情况下,fsck恢复是成功的,你可以回到使用你的服务器没有太多的头痛. 记住,保持良好的备份是你可以采取的最重要的步骤来防止数据丢失。