나는 Debian Linux를 구출하기 위해 손상된 공격 시스템에서 데이터를 복구해야 하는 끔찍한 상황에 직면했습니다. VMWare GSX 이미지를 다른 시스템에 복사하고 나중에 ESXi로 마이그레이션할 수 있도록 모든 읽기 전용을 /mnt/rescue에 마운트하고 싶습니다. 관련 명령의 출력은 다음과 같습니다.
fdisk -l
Disk /dev/sda: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005e687
Device Boot Start End Blocks Id System
/dev/sda1 1 523 4200997 fd Linux raid autodetect
/dev/sda2 524 785 2104515 fd Linux raid autodetect
/dev/sda3 786 182401 1458830520 fd Linux raid autodetect
Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00014fc7
Device Boot Start End Blocks Id System
/dev/sdb1 1 523 4200997 fd Linux raid autodetect
/dev/sdb2 524 785 2104515 fd Linux raid autodetect
/dev/sdb3 786 182401 1458830520 fd Linux raid autodetect
Disk /dev/md0: 4301 MB, 4301717504 bytes
2 heads, 4 sectors/track, 1050224 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/md0 doesn't contain a valid partition table
Disk /dev/md1: 2154 MB, 2154954752 bytes
2 heads, 4 sectors/track, 526112 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/md1 doesn't contain a valid partition table
다음과 같이 디스크를 마운트하려고 합니다.
mount -o ro /dev/sda1 /mnt/rescue
그런 다음 다음 오류가 발생합니다.
mount: unknown filesystem type 'linux_raid_member'
파일 시스템도 잘 작동하지 않는 것 같아요.
mount -o ro -t ext3 /dev/sda1 /mnt/rescue/
mount: /dev/sda1 already mounted or /mnt/rescue/ busy
그래서 아래와 같이 가상 디바이스를 생성해 보았습니다.
mdadm -A -R /dev/md9 /dev/sda1
그러면 다음 메시지가 생성됩니다.
mdadm: cannot open device /dev/sda1: Device or resource busy
mdadm: /dev/sda1 has no superblock - assembly aborted
이제 길을 잃었는데 디스크를 복구하고 데이터를 복구하는 방법을 모르겠습니다. 다음은 3개 디스크 모두에 대한 mda --examine의 출력입니다(내 생각에는 3x raid1 디스크).
/dev/sda1:
Magic : a92b4efc
Version : 0.90.00
UUID : 6708215c:6bfe075b:776c2c25:004bd7b2 (local to host rescue)
Creation Time : Mon Aug 31 17:18:11 2009
Raid Level : raid1
Used Dev Size : 4200896 (4.01 GiB 4.30 GB)
Array Size : 4200896 (4.01 GiB 4.30 GB)
Raid Devices : 3
Total Devices : 2
Preferred Minor : 0
Update Time : Sun Jun 2 00:58:05 2013
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Checksum : 9070963e - correct
Events : 19720
Number Major Minor RaidDevice State
this 1 8 1 1 active sync /dev/sda1
0 0 0 0 0 removed
1 1 8 1 1 active sync /dev/sda1
2 2 8 17 2 active sync /dev/sdb1
/dev/sda2:
Magic : a92b4efc
Version : 0.90.00
UUID : e8f7960f:6bbea0c7:776c2c25:004bd7b2 (local to host rescue)
Creation Time : Mon Aug 31 17:18:11 2009
Raid Level : raid1
Used Dev Size : 2104448 (2.01 GiB 2.15 GB)
Array Size : 2104448 (2.01 GiB 2.15 GB)
Raid Devices : 3
Total Devices : 2
Preferred Minor : 1
Update Time : Sat Jun 8 07:14:24 2013
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Checksum : 120869e1 - correct
Events : 3534
Number Major Minor RaidDevice State
this 1 8 2 1 active sync /dev/sda2
0 0 0 0 0 removed
1 1 8 2 1 active sync /dev/sda2
2 2 8 18 2 active sync /dev/sdb2
/dev/sda3:
Magic : a92b4efc
Version : 0.90.00
UUID : 4f2b3b67:c3837044:776c2c25:004bd7b2 (local to host rescue)
Creation Time : Mon Aug 31 17:18:11 2009
Raid Level : raid5
Used Dev Size : 1458830400 (1391.25 GiB 1493.84 GB)
Array Size : 2917660800 (2782.50 GiB 2987.68 GB)
Raid Devices : 3
Total Devices : 2
Preferred Minor : 2
Update Time : Sat Jun 8 14:47:00 2013
State : clean
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Checksum : 2b2b2dad - correct
Events : 36343894
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 1 8 3 1 active sync /dev/sda3
0 0 0 0 0 removed
1 1 8 3 1 active sync /dev/sda3
2 2 0 0 2 faulty removed
cat /proc/mdstat
Personalities : [raid1]
md2 : inactive sda3[1](S) sdb3[2](S)
2917660800 blocks
md1 : active raid1 sda2[1] sdb2[2]
2104448 blocks [3/2] [_UU]
md0 : active raid1 sda1[1] sdb1[2]
4200896 blocks [3/2] [_UU]
md2가 손상된 것 같습니다. 이는 내 VMWare 이미지를 습격한 것일 수 있습니다.
RAID 외부에 md2를 마운트하여 md2의 데이터(손상되지 않은 라이브 디스크, 예: /dev/sda3의 데이터)에 액세스하고 싶습니다.
그냥 하는 것이 좋은 생각인가요?
mdadm --manage /dev/md2 --remove /dev/sda3
(fdisk가 md2를 볼 수 없기 때문에 작동할까요)?
다음을 실행하여 다른 공격대 md0 및 md1을 재조립해야 합니까?
mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1
?
업데이트 0: md0과 md2를 어셈블할 수 없습니다.
root@rescue ~ # mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1
mdadm: cannot open device /dev/sda1: Device or resource busy
mdadm: /dev/sda1 has no superblock - assembly aborted
root@rescue ~ # mdadm --assemble /dev/md2 /dev/sda3 /dev/sdb3
mdadm: cannot open device /dev/sda3: Device or resource busy
mdadm: /dev/sda3 has no superblock - assembly aborted
mount -t auto를 사용하여 설치할 수 없습니다.
root@rescue ~ # mount -t auto -o ro /dev/md0 /mnt/rescue/
/dev/md0 looks like swapspace - not mounted
mount: you must specify the filesystem type
root@rescue ~ # mount -t auto -o ro /dev/md2 /mnt/rescue/
mount: you must specify the filesystem type
/dev/md1 마운트가 작동하지만 VMWare 데이터가 없습니다.
root@rescue /mnt/rescue # ll
total 139M
-rw-r--r-- 1 root root 513K May 27 2010 abi-2.6.28-19-server
-rw-r--r-- 1 root root 631K Sep 16 2010 abi-2.6.32-24-server
-rw-r--r-- 1 root root 632K Oct 16 2010 abi-2.6.32-25-server
-rw-r--r-- 1 root root 632K Nov 24 2010 abi-2.6.32-26-server
-rw-r--r-- 1 root root 632K Dec 2 2010 abi-2.6.32-27-server
-rw-r--r-- 1 root root 632K Jan 11 2011 abi-2.6.32-28-server
-rw-r--r-- 1 root root 632K Feb 11 2011 abi-2.6.32-29-server
-rw-r--r-- 1 root root 632K Mar 2 2011 abi-2.6.32-30-server
-rw-r--r-- 1 root root 632K Jul 30 2011 abi-2.6.32-33-server
lrwxrwxrwx 1 root root 1 Aug 31 2009 boot -> .
-rw-r--r-- 1 root root 302K Aug 4 2010 coffee.bmp
-rw-r--r-- 1 root root 89K May 27 2010 config-2.6.28-19-server
...
업데이트 1:
md2와 md0을 중지하고 다시 어셈블해 보았습니다.
mdadm -S /dev/md0
root@rescue ~ # mount -t auto -o ro /dev/md0 /mnt/rescue/
/dev/md0 looks like swapspace - not mounted
mount: you must specify the filesystem type
mdadm -S /dev/md2
root@rescue ~ # mount -t auto -o ro /dev/md2 /mnt/rescue/
mount: you must specify the filesystem type
어떤 아이디어가 있나요?
업데이트 2:
다음 오류 메시지로 인해 하나의 디스크에서 어셈블할 수 없습니다.
root@rescue ~ # mdadm -S /dev/md2
root@rescue ~ # mdadm --assemble /dev/md2 /dev/sda3
mdadm: /dev/md2 assembled from 1 drive - not enough to start the array.
root@rescue ~ # mdadm -S /dev/md2
mdadm: stopped /dev/md2
root@rescue ~ # mdadm --assemble /dev/md2 /dev/sdb3
mdadm: /dev/md2 assembled from 1 drive - not enough to start the array.
새로운 공격도 실패했습니다.
root@rescue ~ # mdadm -S /dev/md9
mdadm: stopped /dev/md9
root@rescue ~ # mdadm --assemble /dev/md9 /dev/sda3
mdadm: /dev/md9 assembled from 1 drive - not enough to start the array.
root@rescue ~ # mdadm -S /dev/md9
mdadm: stopped /dev/md9
root@rescue ~ # mdadm --assemble /dev/md9 /dev/sdb3
mdadm: /dev/md9 assembled from 1 drive - not enough to start the array.
새 md 디스크 생성도 실패했습니다.
root@rescue ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[1] sdb1[2]
4200896 blocks [3/2] [_UU]
md1 : active raid1 sda2[1] sdb2[2]
2104448 blocks [3/2] [_UU]
unused devices: <none>
root@rescue ~ # mdadm -A -R /dev/md9 /dev/sda3
mdadm: failed to RUN_ARRAY /dev/md9: Input/output error
mdadm: Not enough devices to start the array.
root@rescue ~ # cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md9 : inactive sda3[1]
1458830400 blocks
md0 : active raid1 sda1[1] sdb1[2]
4200896 blocks [3/2] [_UU]
md1 : active raid1 sda2[1] sdb2[2]
2104448 blocks [3/2] [_UU]
unused devices: <none>
root@rescue ~ # mdadm -S /dev/md9
mdadm: stopped /dev/md9
root@rescue ~ # mdadm -A -R /dev/md9 /dev/sdb3
mdadm: failed to RUN_ARRAY /dev/md9: Input/output error
mdadm: Not enough devices to start the array.
업데이트 3:
md2에서 디스크를 제거해도 아무런 효과가 없습니다.
mdadm --remove /dev/md2 /dev/sda3
mdadm: cannot get array info for /dev/md2
업데이트 4:
드디어 실행중인 assemble이 --force
성공할 것으로 예상됩니다. 이제 파일을 다른 서버로 복사하고 있습니다.
답변1
제 경우에는 CentOS 7을 부팅하고 이 페이지에 있는 모든 사람의 지침을 따르려고 했습니다. 기기 사용 중 메시지가 계속 표시됩니다. 내 생각에 당신이 얻는 이유는
mdadm: 장치를 열 수 없습니다. /dev/sda1: 장치 또는 리소스가 사용 중입니다.
오류 메시지는 장치가 이미 다른 장치로 설치되었기 때문에 발생합니다.
또한 내 사용 사례는 RAID1 배열에서 매우 큰 파일을 추출하는 것이므로 디스크를 전혀 변경하고 싶지 않습니다. 그렇지 않으면 가능한 모든 방법으로 추출할 수 없습니다. 가장 빠른 방법은 다음 중 하나를 가져오는 것입니다. 드라이브를 다시 넣고 싶은데 여전히 내 구성이 남아 있습니다.
다른 사이트에서 온라인 조사를 수행한 후 수행한 작업은 다음과 같습니다. 노트: NAS:0은 내 NAS 장치 이름이므로 적절하게 교체하세요.
자동으로 설치되지만 설치되지 않은 것으로 표시되지만, mount 명령을 실행하면 다음을 실행하여 설치되었는지 확인할 수 있습니다.
[root@localhost Desktop]# cat /proc/mdstat
Personalities : [raid1]
md127 : active (auto-read-only) raid1 sdb2[0]
1952996792 blocks super 1.2 [2/1] [U_]
unused devices: <none>
내 아래에 자동으로 설치되었습니다 /dev/md127
.
괜찮은:
[root@localhost Desktop]# mdadm -A -R /dev/md9 /dev/sdb2
mdadm: /dev/sdb2 is busy - skipping
[root@localhost Desktop]# mdadm --manage --stop /dev/md/NAS\:0
mdadm: stopped /dev/md/NAS:0
[root@localhost Desktop]# mdadm -A -R /dev/md9 /dev/sdb2
mdadm: /dev/md9 has been started with 1 drive (out of 2).
[root@localhost Desktop]# mount /dev/md9 /mnt/
그것이 나에게 보이는 것입니다.
의심스러운 경우 드라이브를 DD하여 전체 복사본을 만들고 CentOS 또는 기타 Linux Live CD를 사용하십시오.
답변2
만일의 경우를 대비해 가능하다면 dd
작업을 수행하기 전에 전체 디스크의 이미지를 만들어야 합니다.
mdadm
/dev/sda3을 해제한 후 직접 마운트 할 수 있습니다 .
mdadm --stop /dev/md2
마운트 /dev/sda3 /mnt/rescue
그래도 작동하지 않으면 testdisk
파일 시스템은 일반적으로 원시 블록 장치에서 찾을 수 있습니다.
답변3
저는 "어려운 방법"으로 해냈습니다. (어떤 작업을 수행하기 전에 가능하다면 먼저 이 디스크를 복제하십시오!)
dmesg
RAID 디스크의 경우 시도해 보십시오(예: sdc1
:)
$ fdisk -l
RAID-DISK-Flag를 Linux 파일 시스템(ext3 또는 기타)으로 변경하고 저장한 후 재부팅하세요.
이후
$ mdadm --zero-superblock /dev/sdx
짜잔, 설치할 수 있어요
$ mount /dev/sdc1 /mnt