btrfs 파일 시스템이 있는데 어떻게 하려고 해도 디렉토리 중 하나에서 IO 오류가 발생합니다.
내용을 나열하거나 삭제하려고 하면 슈퍼유저인 경우에도 IO 오류가 발생합니다.
$ ls thedir ls: cannot access 'thedir': Input/output error $ sudo rm -fr thedir rm: cannot remove 'thedir': Input/output error
tmpfs를 마운트하면 IO 오류가 발생합니다.
$ sudo mount -t tmpfs -o size=10M tmpfs thedir mount: thedir: can't read superblock on tmpfs.
내 생각엔 '슈퍼블럭존재하다tmpfs"는 여기서 오해의 소지가 있습니다. 동일한 파일 시스템의 다른 디렉토리에 tmpfs를 마운트하면 문제가 없으며 슈퍼블록은 제가 아는 한 tmpfs가 아니라 btrfs입니다.
커널 로그는 다음과 같이 말합니다:
BTRFS critical (device sda1): corrupt leaf: root=5 block=46321315840 slot=24 ino=106823936, invalid inode generation: has 18446744073709551492 expect [0, 369151]
BTRFS error (device sda1): block=46321315840 read time tree block corruption detected
한편으로는 btrfs가 오류를 감지하고 더 심각한 문제가 발생하지 않도록 방지한 것은 좋지만 이제 기본적으로 전체 파일 시스템이 손상되었습니다. 잘못된 디렉토리는 특히 IO 오류 후 중지되는 rsync의 경우 문제가 됩니다.
이용 가능합니까?이것파일 시스템이 사용 가능한 상태로 복원되었습니까?백업이 있고 필요한 경우 새 파일 시스템을 만들고 모든 데이터를 복사할 수 있지만 이 작업에는 며칠, 심지어 몇 주가 걸릴 수도 있습니다. 차라리 손상된 디렉터리를 삭제하고 훨씬 작은 해당 부분만 복원하고 싶습니다.
저는 Linux 5.4.83과 btrfs-progs
5.9를 사용하고 있습니다. 나는 그것을 알고 있지만 btrfs check --repair
매뉴얼 페이지의 경고도 알고 있습니다.
개발자나 숙련된 사용자가 권장하지 않는 한 --repair를 사용하지 말고 fsck가 모든 유형의 파일 시스템 손상을 성공적으로 복구할 수 없다는 점을 인정한 후에만 사용하십시오. 예를 들어. 다른 소프트웨어 또는 하드웨어 오류로 인해 볼륨이 심각하게 손상될 수 있습니다.