RAID1 "mdX"는 "/proc/mdstat"에서 괜찮아 보이지만 구성원의 "blkid" 및 "fdisk -l"이 이상하거나 잘못된 값을 보고합니다.

RAID1 "mdX"는 "/proc/mdstat"에서 괜찮아 보이지만 구성원의 "blkid" 및 "fdisk -l"이 이상하거나 잘못된 값을 보고합니다.

RAID1을 만들었습니다.

mdadm --create /dev/mdX --level=mirror --raid-devices=2 /dev/sdb /dev/sdc

그런 다음 첫 번째 동기화를 보았습니다 /proc/mdstat. 그것은 말한다 [UU]. 여태까지는 그런대로 잘됐다.

sd[bc]수정 했어야 했는데 shred미리 확인을 안 해서 어차피 다 덮어쓸 줄 알았거든요.

계속해서 장치에 볼륨 그룹을 생성한 다음 새 논리 볼륨에 ext4 FS를 생성했습니다.

UUID로 마운트하고 싶어서 모두 blkid. 시각적으로 RAID1 어레이가 "꺼진" 것처럼 보였습니다.

blkid(관련 라인만 표시됨):

/dev/mdX: UUID="..." TYPE="LVM2_member"
/dev/sdb: UUID="..." UUID_SUB="..." LABEL="...:0" TYPE="linux_raid_member"
/dev/sdc1: PARTUUID="0xd25946fb"

2개의 "linux_raid_members"를 기대하고 있는데 무슨 일이 일어나고 있나요 /dev/sdc1? 다시 확인했습니다.

# cat /proc/mdstat  (shortened)
Personalities : [raid1] 
mdX : active raid1 sdb[0] sdc[1]
  976631488 blocks super 1.2 [2/2] [UU]
  bitmap: 2/8 pages [8KB], 65536KB chunk

# cat /proc/partitions (shortened)
major minor  #blocks  name
   8       32  976762584 sdc
   8       33  976759808 sdc1
   8       16  976762584 sdb
   9        0  976631488 md0

# fdisk -l /dev/sd[bc]

Disk /dev/sdb: (empty, as expected, both disk geoms identical, also expected)

Disk /dev/sdc: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xd25946fb

Device     Boot Start        End    Sectors   Size Id Type
/dev/sdc1        2048 1953521663 1953519616 931.5G  7 HPFS/NTFS/exFAT

다시 sdc1.

그래서 sdc결코 찢어진 것처럼 보이지 않습니다. 하지만 이전의 모든 메타데이터/파티션 정보를 덮어쓰면 안 되나요 mdadm --create? 캐시된 정보일지도 모른다고 생각해서 partprobe굳이 찾을 필요도 없이 실행해봤습니다. 시도해봤는데 reboot변화가 없었습니다. 따라서 드라이브에 여전히 파티션 테이블이 있는 것 같습니다.

몇 가지 아이디어가 있어서 SE에 게시하기로 결정했습니다.

그래서 이 글을 쓰면서 좀 더 "정확한" 명령을 올리고 싶어서 blkid실행해서 blkid /dev/sd[bc]{,1} /dev/mdX이 글에 붙여넣었습니다.

/dev/sdb: UUID="..." UUID_SUB="..." LABEL="...:0" TYPE="linux_raid_member"
/dev/sdc: UUID="..." UUID_SUB="..." LABEL="...:0" TYPE="linux_raid_member"
/dev/sdc1: PARTUUID="d25946fb-01"
/dev/mdX: UUID="..." TYPE="LVM2_member"

이 게시물의 미리 보기에서 나는 그것이 너무 "일반적"이라는 것을 알았고 - 보라, - 두 번째 RAID 멤버를 발견했습니다! 나는 내 정신을 의심하고 blkid다시 매개변수 없이 실행했다. sdc, 두 번째 RAID 멤버는 표시되지 않습니다.

이 시점에서 내 질문은 다음과 같이 요약됩니다. 어떻게 (안전하게) 파티션 테이블을 제거한 다음 blkid인수 없이 두 번째 공격대 멤버를 얻을 수 있습니까? 그냥 놔두면 또 어떤 문제가 생길 수 있나요? 이때는것 같다내 RAID1이 작동하는 것처럼 보이지만 작동합니까? 어떻게 하면 이것을 가장 잘 테스트할 수 있나요?

제가 지금 구축하고 포함시킨 아이디어는 다음과 같습니다.

  1. 불도저 온라인: 그런 다음 달리고 또 dd if=/dev/zero bs=512 count=1 of=/dev/sdc달리세요. 하지만 그게 어떻게든 다른 걸 방해하지 않나요?partprobeblkidmdadm
  2. 멤버 실패, 연결 해제(논리적), 처음 몇 MiB를 오프라인으로 전환, 다시 연결(논리적), 재동기화. 나는 차라리하지 않을 것입니다.
  3. SE를 통해 배열이 생성된 후에만 발견된 나머지 메타데이터를 처리하는 "표준" 방법에 대해 알아보세요.

U.SE가 없으면 1)을 시도한 다음 2)를 시도하고 2)가 작동할 것이라고 확신하지만 가장 우아하고 장황하지 않은 방법입니다.

해당 MD의 데이터는 중요하지 않습니다. 답변이 없으면 1)을 시도한 다음 2)를 시도하겠습니다. 결과를 게시하겠습니다. 하지만 두 경우 모두 표시되지만 왜 공격 sdc대원으로 표시되지 않는지 알고 싶습니다 .blkidblkid /dev/sd[bc]sdb

답변1

귀하가 직면한 문제는 RAID 구성원에 기록된 데이터가 파티션 테이블처럼 보인다는 것입니다. 수정은 매우 간단합니다. 파티션을 무시하고 계속하세요. 모든 RAID 구성원에 대해 "데이터 오프셋"을 설정하여 이 문제를 방지하는 방법이 있을 수 있습니다.

관련 정보