LVM이 불량 블록을 표시/방지할 수 있습니까?

LVM이 불량 블록을 표시/방지할 수 있습니까?

이후로btrfs는 불량 블록을 추적하지 않습니다, 해결 방법으로이 btrfs 메일링 리스트 게시물불량 블록 지원을 위해 기본 mdadm RAID0 구성을 사용하는 것이 좋습니다.

이 목적으로 mdadm 대신 LVM을 사용할 수 있습니까?

답변1

일반적으로, A에서 언급한 바와 같이논평여기와 당신이 링크한 메일링 리스트 스레드에서, 지금까지 교체할 수 없는 불량 블록이 있는 최신 하드 드라이브는 폐기해야 합니다. (이것에 관심이 있는 이유를 설명하셨는데, 다른 독자들을 위해 주목할 가치가 있습니다.)

LVM에는 불량 블록을 방지할 수 있는 기능이 없다고 생각합니다. 일반적으로 LVM 아래의 장치 계층에서 이 문제를 해결합니다. 문제를 해결하는 한 가지 방법은 장치 매퍼를 사용하는 것입니다. 즉, 모든 불량 블록을 건너뛰는 데 필요한 섹터 매핑을 제공하는 테이블을 만들고 이를 사용하여 장치를 구축하는 것입니다. 그러한 테이블은 다음과 같습니다

0 98 linear /dev/sda 0
98 98 linear /dev/sda 99

/dev/sda등(이렇게 하면 98섹터를 건너뛰고 사용하여 196섹터 장치가 생성됩니다 ). 너는 이것을 줘dmsetup:

dmsetup create nobbsda --table mytable

그런 다음 결과 /dev/nobbsda장치에 PV를 생성합니다(대신 /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 설정과 함께 작동하는 또 다른 솔루션은 다음과 같습니다.pvmoveLV를 불량 영역 밖으로 이동하기 위해 물리적 범위를 이동하는 기능입니다. 그러나 새 LV가 생성되거나 기존 LV의 크기가 조정되거나 이동될 때마다 해당 영역이 재사용되는 것을 방지할 수는 없습니다.

관련 정보