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

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

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

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

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

답변1

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

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

이 btrfs 메일링 리스트 게시물ext4를 사용하는 것이 좋습니다 mkfs.ext4 -c(이것은"불량 블록 목록을 작성한 다음 해당 섹터를 사용하지 마십시오"). 권장사항btrfs 및 RAID0은 mdadm 3.1 이상에서 작동하지 않습니다..

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

해결책은 알려진 불량 블록을 제외하는 장치를 구축하는 것입니다.dmsetup을 통한 Btrfs.


btrfs 프로젝트 아이디어 위키설명하다:

선언되지 않음 — 아직 패치 없음 — 아직 커널에 포함되지 않음

현재 btrfs는 기록된 데이터가 손실될 가능성이 있는 디스크 블록인 불량 블록을 추적하지 않습니다. Btrfs는 불량 블록 출력 형식 목록을 수용하고 이를 새 btree(또는 새 플래그를 사용하여 현재 범위 트리)에 저장하고, 블록에 포함된 모든 데이터를 재배치하고, 배포에서 사용할 수 없도록 블록을 보존해야 합니다. 미래. 또한 체크섬 오류가 발견되면 불량 블록을 테스트하도록 스크러빙을 학습할 수 있습니다. 이렇게 하면 스크럽이 더 유용해집니다. 일반적으로 체크섬 오류는 디스크로 인해 발생하지만 스크러빙을 통해 영향을 받은 파일을 감지하는 동안(백업의 경우 해당 파일을 다시 생성할 수 있는 기회 제공) 불량 블록이 있는 파일은 다음에 재사용됩니다. 오류가 나타나기 시작합니다. 이 두 항목은 ext4 기능(e2fsck를 통해 사용됨)과 일치합니다.

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

답변2

이것이 바로 이 제한 사항을 해결하고 싶은 방법입니다. 불완전한 솔루션.

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

약간의 추가 오버헤드가 예상됩니다.

관련 정보