존재로 인해btrfs는 불량 블록을 추적하지 않습니다., 해결책으로이 btrfs 메일링 리스트 게시물불량 블록을 지원하려면 기본 mdadm RAID0 구성을 사용하는 것이 좋습니다.
이를 달성하기 위해 mdadm 대신 LVM을 사용할 수 있습니까?
답변1
일반적으로 기사에서 언급했듯이논평여기와 당신이 링크한 메일링 리스트 스레드에 최신 하드 드라이브가 지금까지 사라져서 이미 교체할 수 없는 불량 블록이 있으므로 폐기해야 한다고 명시되어 있습니다. (이에 관심이 있는 이유를 이미 설명하셨지만, 다른 독자들을 위해 주목할 가치가 있습니다.)
LVM에는 불량 블록을 방지할 수 있는 방법이 없다고 생각합니다. 일반적으로 LVM 아래의 장치 계층에서 이 문제를 해결합니다. 이 문제를 해결하는 한 가지 방법은 장치 매퍼를 사용하는 것입니다. 모든 불량 블록을 건너뛰는 데 필요한 섹터 매핑을 제공하는 테이블을 생성하고 이 테이블을 사용하여 장치를 구축합니다. 그러한 테이블은 다음과 같습니다
0 98 linear /dev/sda 0
98 98 linear /dev/sda 99
(이렇게 하면 98섹터를 건너뛰고 196섹터 장치가 생성됩니다 /dev/sda
.) 당신은 이것을 준다dmsetup
:
dmsetup create nobbsda --table mytable
그런 다음 결과 장치에 PV를 생성합니다 /dev/nobbsda
(대신 /dev/sda
).
이 접근 방식을 사용하면 일부 사전 계획을 통해 드라이브 펌웨어와 마찬가지로 향후 실패한 섹터를 처리할 수도 있습니다. 드라이브 끝에 일부 여유 섹터를 남겨두고(원하는 경우 드라이브 주위에 점을 찍을 수도 있음) 위험을 감수하고 다음을 사용합니다. 실패한 섹터가 남긴 구멍을 메우기 위해. 위의 예를 사용하여 200에서 시작하는 섹터를 예비 섹터로 간주하면 섹터 57은 불량 섹터가 됩니다.
0 57 linear /dev/sda 0
57 1 linear /dev/sda 200
58 40 linear /dev/sda 58
98 98 linear /dev/sda 99
badblocks
독자를 위한 연습으로 에서 제공하는 불량 섹터 목록을 사용하여 장치 매퍼 테이블을 생성하십시오 .
기존 LVM 설정에 작동하는 또 다른 솔루션은 다음을 사용하는 것입니다.pvmove
LV를 나쁜 영역 밖으로 이동하기 위해 물리적 범위를 이동하는 기능입니다. 그러나 이는 새 LV가 생성되거나 기존 LV의 크기가 조정되거나 이동할 때마다 이러한 영역이 재사용되는 것을 방지하지 못합니다.