不要恐慌

不要恐慌

我存储所有数据的两个硬盘都出现故障。我的系统不断拒绝加载磁盘和挂载分区。我将一个硬盘驱动器移至另一台计算机,在那里它被识别的麻烦较少,但分区有很多错误,并且我仍然在该驱动器的 dmesg 上收到 E/S 错误。

用于启动的分区有一个坏的超级块,但可以用另一个超级块读取它,它显示更多错误,所以我首先在外部硬盘驱动器上对该分区进行了主备份。由于这个原因,我对 ddrescue 进行了两次传递,根据日志,它退出时仅出现一个 512 字节的错误,我认为这是有希望的。

使用 lsblk 列出备份看起来更有希望:

其中损坏分区的 lsblk 显示:

$lsblk -f
NAME   FSTYPE   LABEL        UUID                                 MOUNTPOINT
...
sda                                                               
└─sda1  
...                                                         
                                                 

现在大师展示的地方:

sdc                                                               
├─sdc1 ext4     new          8cab6f75-1ea7-4451-9f48-2bbcce167184 

现在我从这个主分区到同一驱动器的末尾进行了另一个备份,因此 lsblk 的实际输出将是:

 lsblk -f
NAME   FSTYPE   LABEL        UUID                                 MOUNTPOINT
fd0                                                               
loop0  squashfs                                                   /snap/anbox-installer/25
loop2  squashfs                                                   /snap/core/9669
loop3  squashfs                                                   /snap/core/10911
sda                                                               
└─sda1                                                            
sdb                                                               
├─sdb1 ext4     Debian_copia ce2c8e8f-f3ef-4005-9cb1-0bb9d5870f43 /
└─sdb2 swap                  d60a8ad0-5528-4bbc-af5e-092b96282df4 [SWAP]
sdc                                                               
├─sdc1 ext4     new          8cab6f75-1ea7-4451-9f48-2bbcce167184 
└─sdc2 ext4     new          8cab6f75-1ea7-4451-9f48-2bbcce167184 
sr0                                                               

现在这里是遗漏的地方,我将 fsck 的选项 p 误认为是选项 f,所以我已经完成了

fsck -fy /dev/sdc2

这搞砸了一些事情并删除了一些节点,安装后列出了应该的文件的一半,幸好这是损坏的硬盘驱动器的副本,所以这次我会更加谨慎。

您能告诉我一些好的做法吗?我的所有数据现在都在赌博,所以请准确。

lsblk 会对分区进行任何更改吗?我可以挂载一个分区而不对其进行任何更改吗?顺便说一句,我有这个链接:https://www.sans.org/blog/how-to-mount-dirty-ext4-file-systems/

如何安全地进行 fsck,以便我可以在这里赢得一些时间? fsck -n 是否仍然对分区进行更改?分区副本在磁盘中的哪个位置有什么区别吗?

有什么方法可以在不处理文件系统的情况下恢复文件吗?我读过有关 photorec 的内容,但我有很多它无法识别的大胆文件。难道就没有更通用的吗?

答案1

如果你的磁盘是身体上的如果失败,那么对其进行任何更多的写入操作(例如使用 fsck)只会让事情变得更糟。为了增加从该磁盘恢复数据的机会,您应该立即停止使用该磁盘。现在卸载它。订购一张新磁盘,当新磁盘到达时,启动一个普通的 Linux 发行版到命令提示符,然后将ddrescue旧磁盘安装到新磁盘上,如下所述这里。请记住:不要从旧磁盘挂载任何文件系统,以免造成进一步的损坏。

答案2

不要恐慌

看来您正在尝试对带有脏 ext4 文件系统的硬盘驱动器进行故障处理。

你有备份吗?如果有备份,请从备份中恢复。如果您没有备份,则此处必须非常小心。首先要做的就是将手从键盘上移开并制定游戏计划。确保启动infoman启动您要运行的每个命令,尤其是直接接触硬盘的工具。

限制对损坏媒体的访问

如果硬盘出现故障,您应该停止任何直接从磁盘访问文件的尝试。您应该停止任何逃跑的尝试fsck。您对硬盘进行的活动越多,对可能出现故障的硬盘造成的磨损就越大。如果您要从这些磁盘之一启动操作系统,也请停止此活动。从实时媒体启动,例如GRML Linux

相反,您应该尝试对发生故障的硬盘进行映像。这涉及将硬盘逐位复制到另一个存储设备上的文件中。理想情况下,其他存储设备应该相当大,以便您可以存储图像的多个副本。一旦您的恢复工具完成恢复尽可能多的数据,将此图像标记为只读。这将成为主副本。你不要碰这个图像。相反,请复制一份主副本并运行fsckmount在此工作副本。如果你犯了一个错误,也没什么大不了的——你只需创建一个新的工作副本来自主副本

创建主副本

另请参阅unix SE 答案那个普尔科链接的

GNU地址救援非常适合恢复数据硬盘。运行如下:

ddrescue --idirect /dev/sdX /mnt/big-storage-filesystem/sdX.img /mnt/big-storage-filesystem/sdX.mapfile

(这为--idirectddrescue 提供了对磁盘访问的更多控制。)

一旦 ddrescue 完成,我建议运行chmod a-w sdX.img sdX.mapfile.这些不应在事后修改。

尝试从工作副本中恢复

首先制作你的工作副本

cp /mnt/big-storage-filesystem/sdX.img /mnt/big-storage-filesystem/work/work-sdX.img

然后使用losetup将图像映射到块设备文件:

losetup -a /mnt/big-storage-filesystem/work/work-sdX.img

您可能需要运行上述命令的输出指示的环回设备在kpartx -a /dev/loopN哪里。/dev/loopN

现在您可以像访问另一个硬盘一样访问该映像。

检查一下lsblk,你应该能够做fsck -y /dev/loop0p1之类的。

如果你幸运的话,你可以mount /dev/loop0p1 /mnt/recovery从那里开始。

如果您没有那么幸运,您可能需要使用取证工具从损坏的文件系统中获取数据。看unix SE 帖子为例。

吸取这次经验

进行备份并验证您的备份。想象一下,如果您不是在 unix SE 上问这个问题,并且不遗余力地尝试恢复不可替代的数据,您会做什么。技术总是在变化,而且技术不会过时,因此预测数据丢失是个好主意。

答案3

现在已经解决了,如果您遇到像我这样的问题,请在另一个磁盘上制作分区的映像文件副本,然后使用 cp 复制该映像至少一次,将它们全部标记为只读并将它们安装为循环。我所有的文件都回来了!!!除了一堆我非常关心的原木。

祝大家好运,记得备份你的文件!即使是 DVD 救援船也比没有好!尝试多次复制您的重要文件,如果可能的话将它们上传到互联网!你一定会非常关心那些糟糕的 Firefox 下载。

相关内容