fs 崩溃并运行 fsck 后,某些文件已恢复但未放入丢失+找到?

fs 崩溃并运行 fsck 后,某些文件已恢复但未放入丢失+找到?

我在外部硬盘驱动器分区 sdb4 上出现 I/O 错误(其通常的安装点是 /run/media/yan/data)。

分区无响应,无法访问并拒绝卸载。我不知道该怎么办,只能拔下磁盘并重新插入。之后我的 fs 出现错误,所以我运行了 fsck:

sudo e2fsck /dev/sdb4 -y -v

它要求进行大量修复(数千个),但由于数据在该磁盘上并不重要,因此我使用 -y 运行它。

data contains a file system with errors, check forced.

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
# Fixed invalid inode numbers, incorrect filetypes, cleared links, deleted/unused inodes
Pass 3: Checking directory connectivity
# Connected unconnected directory inodes to /lost+found
Pass 4: Checking reference counts
#Fix inodes ref count, connected unattached inode to /lost+found
Pass 5: Checking group summary information
# Fix block bitmap differences, blocks count wrong for group
# Fix inode bitmap differences, directories count wrong for group, free inodes count wrong for group

data: ***** FILE SYSTEM WAS MODIFIED *****

       72955 inodes used (0.14%, out of 51200000)
        2390 non-contiguous files (3.3%)
          17 non-contiguous directories (0.0%)
             # of inodes with ind/dind/tind blocks: 0/0/0
             Extent depth histogram: 72264/636/1
   186984621 blocks used (91.30%, out of 204800000)
           0 bad blocks
          34 large files

       70447 regular files
        2453 directories
           0 character device files
           0 block device files
           0 fifos
  4294966642 links
          46 symbolic links (46 fast symbolic links)
           0 sockets
------------
   71063 files

因此,如果我理解正确的话,fsck 设法挽救了 70k 个文件,所以大部分文件,因为我在该磁盘上有 75-80k 个文件。问题是'/run/media/yan/data/lost+found'中只出现了20k文件,整个分区上只有24k。

[yan@machine ~]$ find /run/media/yan/data/lost+found | wc -l
19786
[yan@machine ~]$ find /run/media/yan/data | wc -l
23691

我重新运行 fsck 但他告诉我分区已清除(并且有 74k 个文件?)

[yan@machine ~]$ sudo fsck /dev/sdb4
fsck from util-linux 2.28
e2fsck 1.42.13 (17-May-2015)
data: clean, 74200/51200000 files, 186685980/204800000 blocks[/cpp]

根据 df 和 du,我的磁盘使用情况也有很大不同(我知道应该有区别,但这里看起来太大了,不正常):

[yan@machine ~]$ df -h /run/media/yan/data
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb4       769G  700G   31G  96% /run/media/yan/data

[yan@machine ~]$ du -sh /run/media/yan/data
586G    /run/media/yan/data

我猜仍然有一些我无法访问的恢复数据。我的问题是:

1)通过fsck恢复的文件是否有可能不被放置在lost+found中?那么,他们在哪里呢?

2)有什么办法可以找回那些丢失的文件吗?

3)如果没有,我该如何释放这个空间?

编辑:

我根据sourcejedi的推荐尝试了更新版本的e2fsck:

[yan@machine build]$ sudo ./e2fsck/e2fsck -f /dev/sdb4
e2fsck 1.43.3 (04-Sep-2016)
Pass 1: Checking inodes, blocks, and sizes
Inode 40501578 extent tree (at level 2) could be narrower.  Fix<y>? yes

Pass 1E: Optimizing extent trees
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

data: ***** FILE SYSTEM WAS MODIFIED *****
data: 74200/51200000 files (3.2% non-contiguous), 186685964/204800000 blocks

它没有做太多事情,lost+found 仍然具有相同的文件数量和大小。

答案1

我还注意到链接计数非常可疑(接近 2^32)。

您可以尝试更新的 e2fsck,和/或报告错误。这肯定是一个错误。

扫描设备/分区photorec可能会恢复更多文件,其中格式受支持并且它们是连续的。由于您的 FS 已满,因此许多文件不连续。 photorec不恢复文件名或目录。 (例如,如果它们是 mp3,您可以使用类似picard从 mp3 元数据(又名 ID3 标签)应用文件名的方法)。注意photorec需要另一个文件系统上的可用空间才能将所有文件恢复到其中。

相关内容