최근에 종료된 오래된 서버(Fedora 4 - 예, 오래되었습니다!)가 있었습니다. 소프트웨어 RAID 1 어레이에 2개의 IDE 디스크가 구성되어 있고 데이터를 복구하려고 합니다. 불행하게도 mdadm을 망친 지 꽤 시간이 지났고 뭔가 망친 게 아닐까 걱정됩니다. 또한 어레이에 두 개의 디스크가 있지만 그 중 하나가 완전히 죽은 것처럼 보입니다. 다른 컴퓨터에 연결하면 컴퓨터가 BIOS 화면에서 멈추고 부팅되지 않습니다. 그래서 다른 미러 디스크를 사용하기로 결정했습니다.
디스크를 다른 컴퓨터에 놓고 가장 먼저 시도한 것은 실행이었습니다.
mdadm --create /dev/md0 -v --force --raid-devices=1 --level=raid1 /dev/sdb2
그러나 이렇게 하면 파일 시스템을 마운트할 수 없습니다.
# mount -t ext3 /dev/md0 /mnt mount: wrong fs type, bad option, bad superblock on /dev/md0, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so
하지만 분명히 일부 내용을 디스크에 다시 기록하기 때문에 내가 그것을 엉망으로 만들지 않을까 걱정됩니다.
# mdadm --examine /dev/sdb2
/dev/sdb2:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : b6babdfb:e99e3bd3:398fcebe:dd38faab
Name : bluto:0 (local to host bluto)
Creation Time : Thu Dec 29 15:36:10 2016
Raid Level : raid1
Raid Devices : 1
Avail Dev Size : 310277362 (147.95 GiB 158.86 GB)
Array Size : 310277218 (147.95 GiB 158.86 GB)
Used Dev Size : 310277218 (147.95 GiB 158.86 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : active
Device UUID : 0f3d948b:398095cc:9621f72f:fcd11310
Update Time : Thu Dec 29 15:36:10 2016
Checksum : c58ea2b6 - correct
Events : 0
Device Role : Active device 0
Array State : A ('A' == active, '.' == missing)
여기서 생성 시간은 현재이며 호스트 이름 "bluto"는 원래 서버가 아니라 복구에 사용하는 시스템입니다. 그래서 이 글은 복원 작업을 하면서 쓴 것이어서 중요한 내용이 지워진 것은 아닌지 걱정이 됩니다.
그런 다음 동일한 디스크의 다른 파티션에서 실제로 작동하는 더 간단한 mdadm 트릭을 기억했습니다. 불행하게도 파티션은 단지 /boot이므로 데이터는 흥미롭지 않지만 이 기술이 작동해야 함을 증명합니다.
# mdadm --assemble --run /dev/md0 /dev/sdb1
mdadm: /dev/md0 has been started with 1 drive (out of 2).
# mount -t ext3 /dev/md0 /mnt
# ls /mnt
config-2.6.11-1.1369_FC4 grub initrd-2.6.17-1.2142_FC4.img System.map-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4
config-2.6.17-1.2142_FC4 initrd-2.6.11-1.1369_FC4.img lost+found System.map-2.6.17-1.2142_FC4 vmlinuz-2.6.17-1.2142_FC4
그러나 마운트를 해제하고 md 장치를 중지한 다음 실제 데이터 파티션(sdb2)에서 동일한 작업을 시도하면 이전과 동일한 오류가 발생합니다.
# umount /mnt
# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
# mdadm --assemble --run /dev/md0 /dev/sdb2
mdadm: /dev/md0 has been started with 1 drive.
# mount -t ext3 /dev/md0 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/md0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
다음에 무엇을 시도해야할지 모르겠습니다. e2fsck를 실행하려고 생각했는데 /dev/sdb2에 대해 직접 실행해야 합니까, 아니면 런타임에 /dev/md0에 대해 실행해야 합니까? 또한 fs가 이미 나쁜 경우 상황이 더 악화될 수 있다는 점도 걱정됩니다.