mdadm 메타데이터: 슈퍼블록 덮어쓰기를 방지하기 위해 예방 조치를 취해야 합니까?

mdadm 메타데이터: 슈퍼블록 덮어쓰기를 방지하기 위해 예방 조치를 취해야 합니까?

상태:

  • mdadm을 사용하여 새로운 RAID1 어레이를 생성하고 있습니다.
  • 나는 LVM이나 dm-crypt와 같은 추가 레이어를 사용하지 않을 것입니다.

  • 이제 메타데이터 버전 1.2가 기본 버전인 것으로 확인되었습니다. 시스템의 다른 모든 부분(예: grub2)이 지원하는 경우 이 버전이 권장되는 버전이라는 것을 알고 있습니다. 이것이 내 상황입니다.

  • 맨페이지와 기타 여러 소스를 통해 메타데이터 1.2는 슈퍼블록이 디스크 시작 부분에 저장된다는 의미라는 것을 알고 있습니다. 처음부터 4KiB입니다.
  • 이전에 생성한 RAID1 어레이에서는 디스크 끝에 슈퍼블록을 저장하는 메타데이터 버전 0.90을 사용했습니다. 덮어쓰는 것을 방지하기 위해 디스크의 마지막 부분을 분할하지 않았습니다.

내 의도는 GPT 파티션 테이블을 사용하여 새 RAID1 어레이를 분할하는 것입니다. 첫 번째 파티션은 섹터 2048에서 시작됩니다. 섹터가 512바이트인 경우 실제 파티션은 디스크 시작 부분부터 1024KiB에서 시작된다는 의미입니다.

질문:

  • 버전 1.2 슈퍼블록을 덮어쓰지 않도록 예방 조치를 취해야 합니까? 아니면 섹터 2048에서 첫 번째 파티션을 부팅해도 상대적으로 안전합니까?
  • grub이 디스크 시작 부분에 쓰는 것을 상상해 보지만 아마도 처음 512바이트만 필요할 것입니다. 디스크에서 이 바이트 뒤에 쓰는 다른 프로그램이 있습니까?
  • 첫 번째 섹터 끝 부분(섹터 2048까지) 뒤의 부분이 디스크의 "규제된" 부분입니까? 다른 프로그램은 쓰기를 시작하기 전에 다른 데이터가 있는지 확인합니까? 이에 대한 구체적인 정보를 찾을 수 없습니다.

나는 을 사용하면 dd슈퍼블록을 깨뜨릴 수 있다는 것을 알고 있습니다 ;-) 마찬가지입니다 mdadm --zero-superblock. 나는 LVM과 같은 다른 유틸리티나 파일 시스템 계층이 슈퍼블록이 저장된 디스크의 특정 부분을 덮어쓰고 있다는 것을 즉시 깨닫지 못할 수도 있다는 점에 더 관심을 갖고 있습니다.

답변1

그것은 레이어에 관한 것입니다.

디스크(최하위 수준)가 있습니다. 이 디스크에 파티션 테이블을 배치합니다. 이를 바탕으로 RAID를 배치합니다. RAID에는 LUKS를 넣습니다. LUKS에 LVM을 추가합니다. LVM에서 마지막은 파일 시스템(가장 높은 수준)입니다.

Disk -> Partition -> RAID -> LUKS -> LVM -> Filesystem

이러한 레이어 중 일부를 건너뛰거나 재정렬할 수 있습니다. 일반적으로 디스크로 시작하여 파일 시스템으로 끝나며 그 사이에는 선택 사항이 있습니다.

지금까지는 문제가 없습니다. 모든 것이 괜찮을 것입니다.

각 계층이 존중되는 한 충돌은 없습니다. 각 레이어에는 메타데이터가 있지만 각 레이어는 메타데이터를 손상시키지 않고 사용할 수 있는 콘텐츠만 제공합니다. sector 0파티션 테이블 자체와 충돌할 수 있으므로 파티션을 처음부터 생성할 수 없습니다 . 장치 md에 기록하여 md메타데이터를 손상시킬 수 없습니다 . 파일 시스템을 채우면 파일 시스템 메타데이터나 그 아래의 레이어가 손상되지 않습니다. 각 레이어가 자체적으로 관리되기 때문입니다.

따라서 아무것도 걱정할 필요가 없습니다.

더 이상 이러한 레이어를 존중하지 않는 한.

RAID와 GPT를 언급하셨습니다. GPT 파티션에 RAID를 배치하거나 RAID에 GPT를 배치할 수 있습니다. 한 레이어가 다른 레이어 위에 있으면 전혀 문제가 없습니다. 하지만 동시에 두 개의 레이어를 나란히 사용하려고 하면 어떻게 될까요? GPT를 사용하여 디스크를 분할하여 전체 디스크를 RAID의 구성원으로 만듭니다.

정말 작동하지 않습니다.

GPT는 시작과 끝 부분에 메타데이터가 있습니다. RAID는 시작과 끝 부분에 메타데이터가 있습니다( md메타데이터 버전에 따라 다르기 때문입니다). RAID 메타데이터는 GPT를 완전히 덮어쓸 수 있습니다(그 반대의 경우도 마찬가지). 아니면 오프셋이 약간 다르기 때문에 실제로 작동하는 것처럼 보일 수도 있지만 여전히 끔찍한 상황입니다.

동시에 다른 레이어를 사용하고 싶다면 어디에 배치합니까? RAID에 배치하면 파티션이 생성된 경계에 걸쳐 있을 수 있습니다. 파티션에 넣으면 RAID 레이어를 우회하므로 미러링되지 않습니다. 데이터가 손상되면 RAID는 데이터가 동기화되었다고 믿습니다.

서로 협력하고 보완해야 할 때 갑자기 계층이 서로 싸우게 됩니다.

답변2

이것에 대해 걱정할 필요가 없습니다. 볼륨의 데이터는 메타데이터와 겹치지 않습니다. 그렇지 않으면 관리하기가 매우 어려울 것입니다! 예를 들어 각 디스크의 모양은 다음과 같습니다(확장되지 않음).

[--------------------- sda ------------------------]
[---][------------------ sda1 ---------------------]
     [---][----------------------------------------]
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ one copy of the data in /dev/md0
     ^^^^ superblock
^^^^ partition table

파티션 테이블은 파티션 내에 포함되지 않으며 RAID 메타데이터는 RAID 볼륨 내에 포함되지 않습니다. 컨텐츠를 RAID 볼륨에 배치하면 컨텐츠는 메타데이터가 차지하지 않는 부분을 차지합니다. 특별한 준비를 할 필요는 없습니다.

관련 정보