디스크 오류 발생 시 LVM2의 동작을 이해하십니까?

디스크 오류 발생 시 LVM2의 동작을 이해하십니까?

다음 명령을 사용하여 5x4TB 설정의 LVM2 그룹이 있습니다.

pvcreate /dev/sd{b,c,d,e,f}
vgcreate vg0 /dev/sd{b,c,d,e,f}
lvcreate -l 100%FREE -n lvol1 vg0

이제 이 괴물을 만들었으므로 이에 대해 몇 가지 질문이 있습니다. 기본 구성에서는 선형으로 이루어지는데, /dev/sdb실패하면 어떻게 됩니까?

  • 전체 데이터에 작별 인사를 해야 합니까 /dev/sdb, 아니면 LVM이 첫 번째 바이트를 채우는 대신 전체 장치에 파일을 배치합니까?

  • 어떤 파일이 어떤 장치에 있는지 어떻게 알 수 있나요? 디스크를 분실한 경우 가능하면 복구할 수 있도록 데이터가 손실된 위치를 알고 싶습니다.

노트:

  • 나는 팔로우한다젠투 LVM 생성 매뉴얼.
  • 나는 RAIDx(그리고 내 생각으로는 LVM)가 백업을 제공하지 않는다는 것을 충분히 이해하고 있습니다. 기껏해야 디스크 오류에 대한 복원력만 추가할 수 있을 뿐입니다. 나는 (소프트웨어) RAID5 및 디스크 오류에 대한 경험이 있습니다. 다행히도 한 번에 하나씩만 오류가 발생했습니다. 하지만 저는 LVM을 사용해본 경험이 없어서 이런 질문을 하게 되었습니다.

답변1

lvdisplay --maps특정 LV 또는 특정 범위에 해당하는 물리적 범위가 어디에 있는지 알려줍니다. pvdisplay --maps동일한 정보가 광전지 중심의 관점에서 제시됩니다.

예를 들어, pvdisplay --maps실패한 PV가 특정 LV의 논리적 범위 1000...4000을 포함하도록 표시되고 해당 VG의 범위 크기가 4MiB인 경우 PV가 완전히 실패하면 큰 문제가 발생하게 됩니다. 접근할 수 없는 LV. "구멍"은 LV 시작 부분에서 4000MiB 지점에서 시작하여 LV 시작 부분에서 16000MiB 지점까지 계속됩니다.

일반적으로 이 경우 전체 LV를 복원하는 것이 가장 쉽습니다. 이렇게 하면 모든 파일이 일관된 상태인지 확인할 수 있습니다. 예를 들어 파일 A에 파일 B의 콘텐츠에 대한 참조가 포함되어 있는 경우 손상된 영역에 파일이 하나만 있더라도 백업에서 두 ​​파일을 모두 복원할 수 있습니다.

그러나 꼭 필요한 경우(즉, 사용할 수 있는 백업이 없고 현재 심각한 문제에 처해 있는 경우) LV에 누락된 부품이 있더라도 LV를 사용 lvchange하거나 활성화 vgchange하여 남은 항목을 복원하기 위해 설치할 수 있습니다. --activationmode partial이렇게 해야 해오직데이터 복구 목적으로.

귀하의 경우 /dev/sdb이는 볼륨 그룹의 첫 번째 PV가 될 것이므로 LV의 첫 번째 부분도 보유하게 됩니다. 이는 해당 LV에 대한 많은 중요한 파일 시스템 메타데이터가 아마도 끝나는 곳이므로 계속해서 fsck거기에 있을 것입니다. 너. Frost Schutz가 말했듯이 photorec나머지 LV에서 조각화되지 않은 파일을 찾는 것이 가능합니다. 그러나 그것에 의존하는 것은 나쁜 전략이다.

전체 복원에 필요한 시간은 물론 백업도 고려해야 합니다. 디스크 장애 후 전체 LV를 복원하는 데 너무 많은 시간이 걸리는 경우 이러한 상황을 방지하려면 시스템에 중복성을 추가해야 합니다. 일반적으로 이는 더 많은 디스크를 확보하고 일종의 RAID 어레이에 데이터를 저장하는 것을 의미합니다.

하지만 RAID 어레이를 설정하더라도 백업하는 것을 잊지 마세요. RAID를 사용하면 디스크 오류를 더 쉽게 처리할 수 있지만 사용자/시스템 관리자가 "이런" 경우에는 전혀 도움이 되지 않습니다.RAID는 백업이 아닙니다.

답변2

/dev/sdb가 실패하면 어떻게 되나요?

lvol1은 더 이상 작동하지 않습니다. 드라이브 1개를 잃으면 드라이브 5개에 대한 데이터를 잃게 됩니다. 볼륨에서 많은 데이터가 손실되며(전체 디스크가 사라짐) 볼륨에서 사용하는 파일 시스템이 무엇이든 마음에 들지 않을 가능성이 높습니다.

fsck아무것도 회복할 것이라고 기대해서는 안 됩니다 . 이런 일이 발생할 수 있지만 fsck이는 데이터 복구 도구가 아니며 수백 기가바이트의 손실된 데이터를 마법처럼 수정하기보다는 사소한 불일치를 수정하는 데 주로 사용됩니다. 때로는 fsck일관된(그러나 이상하게도 비어 있는) 파일 시스템을 제공하는 것이 더할 나위 없이 기쁩니다.

해당 문제에 대해 다른 것을 사용하는 경우 fsck스냅샷을 사용하거나 덮어쓰면 변경 사항을 취소할 수 있습니다. (데이터 복구는 읽기 전용 또는 쓰기 중 복사 모드에서 작업해야 합니다.)

LVM은 기본적으로 선형이므로(어쨌든) photorec다른 도구는 여전히 다른 드라이브에서 (조각화되지 않은, 암호화되지 않은) 데이터를 찾을 수 있습니다.

LVM은 여러 드라이브에 걸쳐 사용할 수 있지만 여러 개의 작은 볼륨을 만드는 것이 더 좋습니다. 누락된 드라이브에 없는 볼륨은 그대로 유지됩니다. 또한 작은 파일 시스템은 fsck리소스를 많이 사용하고 파일 시스템 크기에 따라 시간이 오래 걸리는 문제를 방지합니다.

분할되지 않은 드라이브를 사용하면 실수로 파티션 테이블이 생성되어 프로세스에서 다른 메타데이터를 덮어쓸 위험이 있습니다. 항상 분할된 테이블을 사용해야 합니다.

어쨌든 데이터를 잃고 싶지 않다면 백업을 만드세요.

드라이브 오류가 발생할 때마다 백업을 복원하지 않으려는 경우에도 RAID를 사용할 수 있습니다.

답변3

LVM은 파일을 배치하지 않습니다. LVM은 여러 물리적 장치에 데이터가 분산된 대규모 논리적 장치를 생성합니다.

이는 1GiB 파티션을 갖고 이를 포맷하고 파일 시스템에 데이터를 생성한 다음 250MiB~500MiB 범위를 0으로 덮어쓰는 것과 같습니다.

파일 시스템의 데이터가 250MiB 미만인 경우 fsck데이터의 대부분 또는 전체를 복구할 수 있습니다. 쉽게 시도해 볼 수 있습니다.

관련 정보