如何从文件系统损坏使用FreeBSD的单用户模式恢复

FreeBSD提供了一个文件系统检查工具被称为fsck的,可用于恢复系统的腐败案件。在本指南中,我们将讨论如何来尝试恢复你的文件系统是否存在由单用户模式下使用fsck内核文件系统问题

介绍

尽管你尽了最大努力,但在某些情况下,您的服务器可能遭受文件损坏,需要恢复。 有时,当您的VPS突然断电时,或者当一个软件或硬件故障突然发生时,会发生这种情况。

无论哪种方式,您都可以采取措施尝试恢复您的VPS。 在FreeBSD上,许多这些功能可以从单用户模式执行。 在本教程中,我们将完成您可以采取的步骤将FreeBSDDroplet引导到单用户模式,以及如何使用那里的工具尝试恢复损坏的文件系统。

重要注意事项和风险

在任何情况下,良好的备份是防止数据丢失的最佳方法。 实施可靠的异地备份解决方案并定期彻底测试是确保重要数据完整性的唯一方法。

虽然恢复选项,如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 ,然后按回车键继续。

执行文件系统检查

现在你的Droplet在单用户模式,我们可以继续。 首先,让我们确保我们知道我们正在检查什么设备。 运行以下命令将显示当前配置的文件系统。

cat /etc/fstab

您看到的输出应该类似于:

列表中的第一个项目显示了制作UFS文件系统而这正是我们所期待的。 现在,您可以运行以下命令在此磁盘上执行文件系统检查。

fsck -yf /dev/gpt/rootfs

检查结果

一旦你的文件系统检查完成后,您可以使用重启Dropletreboot命令离开单用户模式,重新启动您的dropet正常(多用户)模式。

使用SSH客户端连接到您的Droplet。 如果你的Droplet响应你的ssh连接,它不是之前,这是一个好的迹象。 如果您早些时候遇到了提醒您出现损坏的可能性的特定问题,您应该再次尝试这些操作,以查看它们是否成功。

一个重要的事情是检查/ lost + found目录。 这是fsck放置部分恢复的文件。

有时,fsck能够恢复文件数据,但是找不到对文件系统上的文件的引用。 基本上,它是一个没有名称的文件。 如果fsck面临这种情况,它将这些文件放在/ lost + found目录中,以便您可以手动尝试找出该文件是什么。

运行fsck后,查看是否有任何东西放在该目录中。 由于lost + found目录仅适用于root用户,我们将首先切换到root帐户与sudo su命令:

sudo su
cd /lost+found
ls

如果此目录中有文件,您将需要查看是否可以识别它们。 通常,这些是您已经删除的文件,但仍然在系统崩溃时使用。 这是值得检查他们,虽然确定。

如果你的文件系统被打破明显的是,如果变回多用户模式下启动失败,你最好的选择可能是使用恢复ISO恢复任何所需的文件 要做到这一点,你需要开出罚单的支持团队 ,使他们能够引导Droplet到恢复环境。

结论

虽然文件系统损坏从来不是一件好事,但这并不一定意味着所有重要的数据都丢失了。 您的恢复操作的成功归因于多种因素,例如文件系统注意到损坏的速度,问题是多么广泛,以及哪些文件受到影响。

当它归结起来,使用自动化工具的简单恢复在很大程度上是运气的函数。 话虽这么说,在许多情况下,fsck恢复成功,你可以回到使用您的服务器没有太多的头痛。 记住,保持良好的备份是您可以采取的最重要的步骤,以防止数据丢失。