저는 최근에 Kubuntu 12.04 워크스테이션을 새로운 위치로 옮겼습니다. 정상적으로 종료되었지만 새 집에서 다시 시작했을 때 RAID-1 어레이 /dev/md0이 사라졌습니다! 배열 요소가 예비 요소로 나열됩니까? (!)
중요한 파일만 RAID-1 어레이 /dev/md0에 있고 운영 체제는 자체 HDD에 있습니다.
배열의 두 요소 모두 정상으로 보이며 다음과 같이 나열됩니다. Linux raid 자동 감지.
fdisk -l 출력:
# fdisk -l
Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000669b6
Device Boot Start End Blocks Id System
/dev/sdc1 63 1953520064 976760001 fd Linux raid autodetect
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000f142
Device Boot Start End Blocks Id System
/dev/sdb1 63 1953520064 976760001 fd Linux raid autodetect
mdadm 출력:
# mdadm --examine /dev/sdb1 /dev/sdc1
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : f3d0cc70:52dfd786:d81c7e2d:1c12b06d
Name : forsaken:0
Creation Time : Tue Sep 3 04:52:19 2013
Raid Level : -unknown-
Raid Devices : 0
Avail Dev Size : 1953517954 (931.51 GiB 1000.20 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : active
Device UUID : 75c525b2:cdfbc3c4:918ac90a:a1bedfd0
Update Time : Thu Nov 20 16:50:46 2014
Checksum : ff0eb2ba - correct
Events : 1
Device Role : spare
Array State : ('A' == active, '.' == missing)
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : f3d0cc70:52dfd786:d81c7e2d:1c12b06d
Name : forsaken:0
Creation Time : Tue Sep 3 04:52:19 2013
Raid Level : -unknown-
Raid Devices : 0
Avail Dev Size : 1953517954 (931.51 GiB 1000.20 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : active
Device UUID : e62e960a:3adf4b5e:f1fb773f:a7a80cfa
Update Time : Thu Nov 20 16:50:46 2014
Checksum : 4ee25b00 - correct
Events : 1
Device Role : spare
Array State : ('A' == active, '.' == missing)
어레이를 중지하고 자체 조립을 시도합니다.
# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
# mdadm --assemble -v --scan --uuid=f3d0cc70:52dfd786:d81c7e2d:1c12b06d
mdadm: looking for devices for /dev/md/0
mdadm: cannot open device /dev/sr0: No medium found
mdadm: no RAID superblock on /dev/sdb
mdadm: no RAID superblock on /dev/sde1
mdadm: no RAID superblock on /dev/sde
mdadm: no RAID superblock on /dev/sdd1
mdadm: no RAID superblock on /dev/sdd
mdadm: no RAID superblock on /dev/sdc
mdadm: no RAID superblock on /dev/sda9
mdadm: no RAID superblock on /dev/sda8
mdadm: no RAID superblock on /dev/sda7
mdadm: no RAID superblock on /dev/sda6
mdadm: no RAID superblock on /dev/sda5
mdadm: no RAID superblock on /dev/sda4
mdadm: no RAID superblock on /dev/sda3
mdadm: no RAID superblock on /dev/sda2
mdadm: no RAID superblock on /dev/sda1
mdadm: no RAID superblock on /dev/sda
mdadm: /dev/sdb1 is identified as a member of /dev/md/0, slot -1.
mdadm: /dev/sdc1 is identified as a member of /dev/md/0, slot -1.
mdadm: added /dev/sdc1 to /dev/md/0 as -1
mdadm: added /dev/sdb1 to /dev/md/0 as -1
mdadm: /dev/md/0 assembled from 0 drives and 2 spares - not enough to start the array.
어레이를 조립하고 강제로 실행해 보십시오.
# mdadm --assemble -v --scan --force --run --uuid=f3d0cc70:52dfd786:d81c7e2d:1c12b06d
mdadm: looking for devices for /dev/md/0
mdadm: cannot open device /dev/sr0: No medium found
mdadm: no RAID superblock on /dev/sdb
mdadm: no RAID superblock on /dev/sde1
mdadm: no RAID superblock on /dev/sde
mdadm: no RAID superblock on /dev/sdd1
mdadm: no RAID superblock on /dev/sdd
mdadm: no RAID superblock on /dev/sdc
mdadm: no RAID superblock on /dev/sda9
mdadm: no RAID superblock on /dev/sda8
mdadm: no RAID superblock on /dev/sda7
mdadm: no RAID superblock on /dev/sda6
mdadm: no RAID superblock on /dev/sda5
mdadm: no RAID superblock on /dev/sda4
mdadm: no RAID superblock on /dev/sda3
mdadm: no RAID superblock on /dev/sda2
mdadm: no RAID superblock on /dev/sda1
mdadm: no RAID superblock on /dev/sda
mdadm: /dev/sdb1 is identified as a member of /dev/md/0, slot -1.
mdadm: /dev/sdc1 is identified as a member of /dev/md/0, slot -1.
mdadm: added /dev/sdc1 to /dev/md/0 as -1
mdadm: added /dev/sdb1 to /dev/md/0 as -1
mdadm: failed to RUN_ARRAY /dev/md/0: Invalid argument
mdadm: Not enough devices to start the array.
여전히 작동하지 않습니다. RAID-1 어레이를 재조립하고 데이터에 다시 액세스하려면 어떻게 해야 합니까?
답변1
어떤 이유로 RAID 메타데이터가 손상된 것 같습니다. 어떻게 그런 일이 일어났나요? 잘못된 구성, 잘못된 스크립트, 하드웨어 문제 등이 수정되면 읽기 전용으로 마운트해 보세요.
mkdir /mnt/{sdb1,sdc1}
mount -o ro,loop,offset=$((2048*512)) /dev/sdb1 /mnt/sdb1
mount -o ro,loop,offset=$((2048*512)) /dev/sdc1 /mnt/sdc1
한쪽이 마운트되어 있는지 확인하고, 알려진 유형의 파일을 확인하고, 양쪽에 손상된 파일이 있는지 비교하십시오. 이때는 백업을 하기에 좋은 시기이기도 합니다.
유지할 면을 결정한 후에는 이를 사용하여 새 RAID를 생성할 수 있습니다.
첫 번째 제거:
umount /mnt/{sdb1,sdc1}
/dev/md*
지침에 따라 기기를 사용하는 사람이 있으면 /proc/mdstat
사용을 중지하세요.
mdadm --stop /dev/md0
이 예에 사용된 새 RAID-1을 생성하려면 /dev/sdb1
올바른 메타데이터 버전과 오프셋을 사용해야 합니다. 따라서 위의 설치가 실제로 작동하는 경우에만 이 작업을 수행하십시오. 그렇지 않으면 먼저 올바른 오프셋을 결정해야 합니다.
mdadm --create /dev/md0 --metadata=1.2 --data-offset=2048 \
--level=1 --raid-devices=2 /dev/sdb1 missing
읽기 전용으로 다시 마운트하여 실제로 예상대로 작동하는지 확인합니다.
mount -o ro,loop /dev/md0 /mnt/sdb1
모든 것이 괜찮다면 마지막으로 누락된 장치를 RAID에 추가하십시오.
mdadm /dev/md0 --add /dev/sdc1
이렇게 하면 /dev/sdc1을 /dev/sdb1의 데이터로 덮어쓰게 되어 RAID가 다시 동기화되기를 바랍니다.
그런데 디스크에 여전히 512바이트 섹터가 있으면 파티션은 섹터 63에서 시작됩니다. 그러나 대부분의 최신 디스크는 4k 섹터를 사용하므로 RAID에서 디스크를 교체해야 하는 경우 이러한 새 디스크의 파티션 정렬에도 주의를 기울이는 것이 좋습니다.