BTRFS 블록을 수정하는 방법은 무엇입니까?

BTRFS 블록을 수정하는 방법은 무엇입니까?

알 수 없는 이유로 BTRFS 파일 시스템이 손상되었습니다. dmesg 인쇄

BTRFS critical (device sda2): corrupt leaf, slot offset bad: block=43231330304,root=1, slot=47

(dmesg 추적에서 1000x 이상).

블록 #43231330304를 수정하는 방법은 무엇입니까?

답변1

당신은 설치해야지능형 모니터링 도구그리고 긴 테스트를 해보세요(시간이 좀 걸립니다)

#smartctl -t long /dev/sd?

그런 다음 불량 블록에서는 실패합니다.

Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       80%       682         1193046

이렇게 하면 블록의 LBA 주소(1193046)를 얻을 수 있습니다.

그런 다음 설치합니다.sg_utils위의 lba 주소를 사용하여 실행하십시오.

# sg_verify --lba=1193046 /dev/sda

다음과 같은 응답을 받게 됩니다.

# sg_verify --lba=1193046 /dev/sdb
verify (10):  Fixed format, current;  Sense key: Medium Error
 Additional sense: Unrecovered read error
  Info fld=0x123456 [1193046]
  Field replaceable unit code: 228
  Actual retry count: 0x008b
medium or hardware error, reported lba=0x123456

이렇게 하면 해당 섹터가 실제로 불량하고 디스크 마이크로컨트롤러의 결함 목록에 자동으로 배치될 수 없다는 것을 알 수 있습니다.

다음 명령을 사용하여 결함 목록을 확인할 수 있습니다.

# sg_reassign --grown /dev/sda
>> Elements in grown defect list: 0

섹터를 재배치하는 경우

# sg_reassign --address=1193046 -v /dev/sda

그런 다음 추가된 결함 목록을 확인합니다.

# sg_reassign --grown /dev/sdb
>> Elements in grown defect list: 1

카운터가 1씩 증가하는 것을 볼 수 있습니다.

그 후에는 실행해야합니다

#smartctl -t long /dev/sd?

디스크가 깨끗해지고 긴 테스트가 오류 없이 실행될 때까지 이 프로세스를 다시 시도하세요.

이 경우에는 Steam 라이브러리 등 중요하지 않은 작업에 이 디스크를 사용하겠습니다. 하지만 디스크를 교체할 것인지 확인하기 위해서였습니다. 하지만 지금은 디스크가 괜찮을 것입니다.

답변2

결함이 있는 하드 드라이브(예: 불량 블록)로 인해 문제가 발생한 경우에는 복구할 수 없습니다.

불량 블록을 확인하십시오. badblocks -n /dev/sdX

손상된 파일에 대해 알아보려면 다음을 참조하세요.BTRFS 블록의 파일 부분을 나열하는 방법은 무엇입니까?

답변3

달리기를 제안하지 마세요.

btrfs check --repair

문제의 원인이 무엇인지 확실하지 않고 이것이 마지막 옵션이어야 하는 경우가 아니면 이 시점에서 백업을 실행해야 합니다.

매뉴얼 페이지에는 다음과 같은 내용이 나와 있습니다.

--repair경고: 개발자나 숙련된 사용자가 권장하지 않는 한 사용하지 말고 fsck가 모든 유형의 파일 시스템 손상을 성공적으로 복구할 수 없다는 점을 인정한 후에만 사용하십시오. 예를 들어. 다른 소프트웨어 또는 하드웨어 오류로 인해 볼륨이 심각하게 손상될 수 있습니다.

답변4

BTRFS 개발자는 BTRFS와 관련된 (상대적으로 심각한) 문제에 대해 IRC 또는 linux-btrfs 메일링 리스트를 통해 연락할 것을 권장합니다.BTRFS Wiki FAQ: Btrfs 파일 시스템에 문제가 있습니다!:

보다질문 FAQ일반적인 문제 및 해결 방법
이 페이지가 도움이 되지 않으면 IRC에 게시해 보거나Btrfs 메일링 리스트.
분명히 해주세요: 제발버그 및 문제를 메일링 리스트에 보고하세요.(누구세요아니요구독이 필요합니다).

바라보다Btrfs 메일링 리스트메일링 리스트에 게시하는 방법과 도움을 요청할 때 포함해야 할 정보에 대한 세부 정보입니다.

내 경우에는 "Corrupted Leaf" 오류에 대한 가장 쉬운 해결책은 영향을 받은 파일에 중요한 내용이 포함되어 있지 않기 때문에 해당 파일을 삭제하는 것이었습니다.

손상된 나뭇잎의 영향을 받는 파일을 찾으려면 다음을 수행하십시오.

btrfs inspect-internal logical-resolve 43231330304 <mountpoint>

기타 일반적인 조언은 다음과 같습니다.

  • 먼저 데이터를 백업하세요.
  • 커널 5.11 이상 실행(새 버전일수록 좋음)(v5.11에는 메타데이터 쓰기에 대한 더 많은 온전성 검사가 도입됨)
  • 최신 btrfs-progs(2021년 9월 기준 5.14)를 사용하세요.
  • user2246514가 언급했듯이사용하지 마세요BTRFS 개발자가 권장하지 않는 한 "btrfs check --repair"입니다. ~에서btrfs-check(8) 매뉴얼 페이지:

경고: 개발자나 숙련된 사용자가 권장하지 않는 한 --repair를 사용하지 마십시오. fsck가 모든 유형의 파일 시스템 손상을 성공적으로 복구할 수 없다는 점을 인정한 후에만 사용하십시오. 예를 들어. 다른 소프트웨어 또는 하드웨어 오류로 인해 볼륨이 심각하게 손상될 수 있습니다.

관련 정보