介绍
尽管你尽了最大努力,但在某些情况下,您的服务器可能遭受文件损坏,需要恢复。 有时,当您的VPS突然断电时,或者当一个软件或硬件故障突然发生时,会发生这种情况。
无论哪种方式,有步骤,你可以采取尝试恢复您的VPS,或至少你的重要文件。 我们将通过我们建议您在本指南中采取的步骤。
重要注意事项和风险
在任何情况下,良好的备份是防止数据丢失的最佳方法。 实施可靠的异地备份解决方案并定期彻底测试是确保重要数据完整性的唯一方法。
虽然像恢复选项fsck
往往是有用的,也不能保证它会正常工作和成功的往往只是运气的问题。 在fsck
操作有时可能会导致在活动磁盘数据损坏。 出于这个原因, fsck
下述程序卸载的文件系统上运行这个风险降到最低。 问题仍然可能发生在严重损害的情况下,因此,考虑这些最后手段的数据恢复方法。
尝试恢复与Fsck内核
Newer distributions including FreeBSD, CoreOS, Debian 8 and Ubuntu 15.04 cannot
use the recovery kernel. If you are using one of these releases please proceed to
the "Attempt Recovery with a Recovery ISO" section below.
试图从文件损坏中恢复您的系统的第一步是安装我们的恢复内核,将允许您运行fsck,这是一个文件系统检查实用程序。 这可以帮助查找和修复文件系统中的错误。
在你的Droplet上运行Fsck
首先,请使用您最安全的方式关闭Droplet电源。 如果您通过命令行访问VPS,请运行以下命令:
sudo poweroff
如果无法正常登录并向下降电源,可以使用控制面板中的“关闭”按钮:
一旦你的Droplet关闭,我们将通过转到“设置”并单击“恢复”选项卡更改内核。 准备好后,单击“安装恢复内核”按钮:
内核更改后,您可以通过单击“电源”选项卡下的“引导”按钮来启动Droplet:
启动Droplet后,您可以单击控制台中的“控制台访问”按钮访问Droplet。 您目前无法SSH到VPS,因为服务器是使用最小恢复内核引导的:
终端会话将在当前窗口中打开,您将登录到最小的Linux环境。
从这里,你应该运行fsck
程序来查找和文件系统上的修复错误。
调用此命令的方法将取决于是否选中了“Enable VirtIO”框来创建Droplet。 如果被选中,你的硬盘会/dev/vda
或/dev/vda1
取决于你的系统。 您可以通过键入以下内容找出系统配置使用的系统:
blkid
如果没有选择为Virtio,硬盘驱动器会/dev/sda
。 默认情况下,选中此框。
如果在创建Droplet时选择了VirtIO,请运行:
fsck -yf /dev/vda
要么:
fsck -yf /dev/vda1
如果没有选择为Virtio,运行:
fsck -yf /dev/sda
这将运行fsck
实用程序,并尝试修复任何错误。 完成后,您可以键入以下电源关闭Droplet:
poweroff
回到控制面板,点击“设置”并再次选择“内核”选项卡。 从下拉菜单中,选择您以前使用的内核:
再次单击“更改”按钮。
检查结果
当内核更改完成后,使用以前使用的电源菜单中的相同按钮启动Droplet。
从“控制台访问”按钮再次访问Droplet。
如果Droplet启动,它无法启动以前,那么这是一个好兆头。 如果您早些时候遇到了提醒您出现损坏的可能性的特定问题,您应该再次尝试这些操作,以查看它们是否成功。
做一个重要的事情就是检查/lost+found
目录。 这是fsck放置部分恢复的文件。
有时,fsck能够恢复文件数据,但是找不到对文件系统上的文件的引用。 基本上,它是一个没有名称的文件。 如果fsck面临着这种情况下,放置在这些文件/lost+found
目录,以便您可以手动揣摩出来的文件是什么。
运行fsck后,查看是否有任何内容放在该目录中:
cd /lost+found
ls
如果此目录中有文件,您将需要查看是否可以识别它们。 通常,这些是您已经删除的文件,但仍然在系统崩溃时使用。 这是值得检查他们,虽然确定。
如果您的文件系统仍然明显崩溃,或者当切换回正常内核时引导失败,您将需要继续执行下一部分以继续恢复操作。
使用恢复ISO尝试恢复
当fsck内核的恢复失败时,您将需要在恢复努力中更进一步。 下一步是尝试使用恢复ISO来挽救系统。
虽然用户无法从控制台安装恢复ISO,但如果遇到问题并尝试使用内核进行恢复,DigitalOcean支持人员可以为您的Droplet安装一个恢复ISO。
以最安全的方式关闭您的Droplet电源。 如果您有权访问命令行,请使用此命令:
sudo poweroff
如果您无法访问命令行,只需使用控制面板中的“关机”按钮。
在控制面板中,单击左侧导航栏上的“支持”按钮。 在右上角,单击“新建票证”。
使用恢复ISO映像填写有关您尝试过的内容以及要尝试恢复的信息的消息:
当您收到一个响应,恢复ISO已经启用您的Droplet,启动Droplet如果它仍然关闭,并访问您的VPS通过再次点击“控制台访问”按钮。
一旦连接到控制台,你应该看到一个主菜单,如下所示:
在恢复环境中设置网络
该DigitalOcean用来恢复标准的ISO将配置在支持区域上的Droplet自动联网Droplet的元数据 。 在其他地区,您必须手动输入您的网络详细信息。
在此配置期间,我们将使用控制台窗口下方显示的“公共网络”部分下的信息:
从菜单中选择2
,然后按Enter
。 如果你的Droplet在不支持区域的元数据 ,你会被提示输入您的IP Address
, Netmask
和Gateway
。 然后,恢复环境将使用这些详细信息配置您的网络接口并进行测试,以确保您的Droplet已连接到Internet。
从恢复ISO运行fsck扫描
要运行fsck的文件系统检查和修复,你可以选择3
从菜单中选择,然后按Enter
。 恢复环境将检测您的磁盘映像并尝试对其运行fsck。 它会报告任何错误,并提出任何问题,您的注意。
装载文件系统和开始恢复措施
这个Linux环境是从ISO映像运行的,而不是从您的Droplet运行,因此您必须将文件系统挂载到我们的环境中才能访问您的文件。 要做到这一点,选择1
处的菜单,然后按Enter
。 您的磁盘映像将被检测并安装在/mnt
恢复环境。
接下来,您将需要通过选择进入一个互动的bash shell环境7
从菜单中选择,然后按Enter
。
如果您以前运行一个文件系统检查无论是从回收的内核或恢复ISO,您现在可以检查任何部分恢复中的文件/mnt/lost+found
目录。
进入/mnt
目录,你会看到你的Droplet的文件系统:
cd /mnt
ls
bin/ etc/ lib/ media/ proc/ sbin/ sys/ var/
boot/ home/ lib64/ mnt/ root/ selinux/ tmp/ vmlinuz@
dev/ initrd.img@ lost+found/ opt/ run/ srv/ usr/
从这里,我们可以检查lost+found
目录中部分恢复文件:
cd lost+found
ls
如果这个目录有由回收的文件fsck
,你可以尝试将其移动回原处,在系统上恢复它们。 如果这些是重要文件,这可能有助于您的系统启动和正常运行。
如果在文件中lost+found
是不可恢复的,或者如果你不想尝试恢复Droplet,只希望保存一些数据,你可以尝试将文件卸载到远程计算机(另一飞沫,或另一台物理机) 。
使用SFTP从Droplet传输文件
如果需要将文件从Droplet传输到本地计算机,您可以从恢复环境中执行此操作。 如果你是在交互shell可以键入exit
返回到主菜单。
首先,确保在主菜单报告你的文件系统安装,并选择4
从菜单中,按Enter
,以便SSH服务器。
系统将提示您,以访问您的Droplet创建一个临时root密码注意 :这不会改变你的Droplet内部的root密码。
输入新的临时密码两次。 此后,恢复环境将安装和配置SSH服务器。
现在SSH服务已启用,它可以使用SSH或SFTP客户端到达。 使用Filezilla的 SFTP客户端,您可以创建以下详细信息替换您的Droplet的IP地址和您显示的值创建的临时密码,一个新的连接:
Host: your_droplets_IP
Port: 22
Protocol: SFTP - SSH File Transfer Protocol
Login Type: Normal
User: root
Password: TEMPORARY_PASSWORD
当您连接,你会在目录开始时/root
。 您Droplet的文件系统将位于/mnt
。 您可以导航到此目录,开始选择文件并将其传输到本地计算机。
有关使用Filezilla的更多信息,可以发现在这里 。
你从哪里来?
此时您的选项取决于恢复操作的成功率。
如果你的恢复进展顺利,Droplet本身是可救的,你可以再次从命令行关机:
poweroff
完成后,您应该向支持小组成员发送消息,以从Droplet中删除ISO映像。 然后,您可以正常启动,继续使用Droplet,就像以前一样。
如果您已将重要文件传输到新位置,并且您无法或不愿意恢复原始Droplet,则可以从控制面板中简单地销毁该实例。
然后,您可以创建新映像并传输恢复的数据。
结论
虽然文件系统损坏从来不是一件好事,但这并不一定意味着所有重要的数据都丢失了。 您的恢复操作的成功归因于多种因素,例如文件系统注意到损坏的速度,问题是多么广泛,以及哪些文件受到影响。
当它归结起来,使用自动化工具的简单恢复在很大程度上是运气的函数。 话虽这么说,在许多情况下,fsck恢复成功,你可以回到使用您的服务器没有太多的头痛。 记住,保持良好的备份是您可以采取的最重要的步骤,以防止数据丢失。