btrfs가 불량 블록을 추적/방지할 수 있습니까?

btrfs가 불량 블록을 추적/방지할 수 있습니까?

나는 완전히 신뢰하지는 않지만 여전히 사용하고 싶은 HDD를 가지고 있습니다(버스트코인 채굴, 파일에 불량 블록이 있으면 몇 센트만 잃게 됩니다).

특정 블록을 불량으로 표시하도록 btrfs에 어떻게 지시할 수 있습니까(예: badblocks출력에서)?

블록을 불량으로 미리 표시할 수 없는 경우 해당 btrfs scrub블록을 사용하는 파일이 삭제되면 나중에 식별된 불량 블록을 피할 수 있습니까?

답변1

안타깝게도 그렇지 않습니다.

btrfs는 불량 블록을 추적하지 않으며 btrfs scrub다음 파일이 동일한 불량 블록에 도달하는 것을 방지하지 않습니다.

이 btrfs 메일링 리스트 게시물ext4를 다음과 함께 사용하는 것이 좋습니다 mkfs.ext4 -c(이것은"불량 블록 목록을 작성한 다음 해당 섹터를 사용하지 않습니다."). 사용 제안RAID0이 포함된 mdadm 3.1+ 이상의 btrfs는 작동하지 않습니다..

것 같다LVM은 불량 블록 재할당을 지원하지 않습니다..

해결 방법은 불량으로 알려진 블록을 제외하고 장치를 구축하는 것입니다.dmsetup을 통한 btrfs.


btrfs 프로젝트 아이디어 위키말한다:

청구되지 않음 — 아직 패치 없음 — 아직 커널에 없음

현재 btrfs는 불량 블록, 즉 기록된 데이터가 손실될 가능성이 매우 높은 디스크 블록을 추적하지 않습니다. Btrfs는 불량 블록의 출력 형식으로 목록을 승인하고 이를 새 btree(또는 새 플래그와 함께 현재 익스텐트 트리)에 저장하고 블록에 포함된 모든 데이터를 재배치하고 이러한 블록을 사용할 수 없도록 예약해야 합니다. 향후 할당을 위해. 또한 체크섬 오류가 발견되면 불량 블록을 테스트하도록 스크럽을 학습할 수 있습니다. 이렇게 하면 스크럽이 훨씬 더 유용해집니다. 체크섬 오류는 일반적으로 디스크로 인해 발생하지만, 스크럽이 문제가 있는 파일을 감지하여 백업 시나리오에서 해당 파일을 다시 생성할 수 있는 반면, 불량 블록을 재사용하는 다음 파일에서는 대신 오류가 발생하기 시작합니다. 이 두 항목은 ext4 기능(e2fsck를 통해 사용됨)과 일치합니다.

상태가 변경되면 댓글을 달아 주시면 이 답변을 업데이트하겠습니다.

답변2

이것이 제가 이 제한을 해결하려고 생각하는 방법입니다. 불완전한 솔루션.

  1. 파일 시스템으로 저널링하지 않고 ext4 생성(불량 블록이 표시됨)
  2. ext4 위에 btrfs 파일 이미지를 만듭니다.
  3. 루프 장치를 사용하여 btrfs 이미지를 마운트합니다.

약간의 추가 오버헤드가 예상될 수 있습니다.

관련 정보