fs가 충돌하고 fsck를 실행한 후 일부 파일이 복구되었지만 Lost+found에 포함되지 않았습니까?

fs가 충돌하고 fsck를 실행한 후 일부 파일이 복구되었지만 Lost+found에 포함되지 않았습니까?

외장 하드 드라이브 파티션 sdb4(일반적인 마운트 지점은 /run/media/yan/data)에서 I/O 오류가 발생합니다.

파티션이 응답하지 않고 액세스할 수 없으며 마운트 해제를 거부합니다. 디스크를 뽑았다가 다시 연결하는 것 외에는 무엇을 해야할지 모르겠습니다. 그런 다음 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는 70,000개의 파일을 저장했습니다. 즉, 해당 디스크에 75-80,000개의 파일이 있었기 때문에 대부분의 파일을 저장했습니다. 문제는 '/run/media/yan/data/lost+found'에 20,000개의 파일만 나타나고 전체 파티션에서는 24,000개만 나타난다는 것입니다.

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

fsck를 다시 실행했는데 파티션이 지워졌다고 하더군요(그리고 74,000개의 파일이 있다고요?)

[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인 경우 picardmp3 메타데이터(ID3 태그라고도 함)에서 파일 이름을 적용하는 것과 같은 방법을 사용할 수 있습니다.) photorec모든 파일을 복원하려면 다른 파일 시스템에 여유 공간이 필요합니다 .

관련 정보