파괴 된 공격대 시스템에서 디스크를 마운트하는 방법?


16

구조 데비안 리눅스에서 손상된 공격대 시스템의 데이터를 복원 해야하는 끔찍한 상황이 있습니다. 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 (활성 및 손상되지 않은 디스크의 데이터, 즉 / 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 :

마지막으로 달리기를 --force희망 으로 조립 했습니다. 이제 다른 서버로 파일을 복사하고 있습니다.


mdadm --assemble갈 길입니다. 없이 시도하십시오 --remove.
Hauke ​​Laging

mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 mdadm: /dev/md0 has been started with 2 drives (out of 3). 그러나 마운트가 실패합니다 (파일 시스템 유형을 모르겠습니다). mount -o ro /dev/md0 /mnt/rescue /dev/md0 looks like swapspace - not mounted mount: you must specify the filesystem type
Tony Stark

아마도 sd?1스왑 공간 일 것입니다. 로 조립 md1하고 md2장착하십시오 mount -t auto ....
Hauke ​​Laging 2016 년

@ HaukeLaging : md0, md1 및 md2를 조립하려고했습니다 (업데이트 된 게시물 참조). md1 만 성공적으로 조립하고 마운트합니다. 다른 두 개는 조립 및 장착에 실패했습니다. 어떤 아이디어?
Tony Stark

1
이 문제를 해결할 수 있었습니까? 향후 방문자의 이익을 위해
CVn

답변:


3

필자의 경우 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/

그것은 나를 위해 그것을했다.

의심스러운 경우 드라이브를 추가하여 전체 사본을 만들고 CentOS 또는 기타 Linux Live CD를 사용하십시오.


이 답변이 가장 도움이되었습니다. 감사! 나를 위해 또한 아래에 장착되어 /dev/md127이렇게 정지를 발행했습니다 mdadm --manage --stop /dev/md127.
Ferenc Géczi

4

가능한 경우를 dd대비하여, 모든 작업을 수행하기 전에 전체 디스크 이미지를 만들어야합니다 .

/ dev / sda3을 mdadm릴리스 한 후 직접 마운트 할 수 있어야 합니다.

mdadm --stop / dev / md2

마운트 / dev / sda3 / mnt / rescue

그래도 작동하지 않으면 testdisk일반적으로 원시 블록 장치에서 파일 시스템을 찾을 수 있습니다.


1
이것은 나를 위해 작동하지 않습니다. "마운트 : 알 수없는 파일 시스템 유형 'linux_raid_member'"
Cerin

4

나는 "어려운 방법"으로 그것을했다 : (먼저 가능하다면이 디스크를 복제하기 전에!)

dmesg급습 디스크 또는 시도 (예 : 대한 sdc1)

$ fdisk -l

RAID-DISK-Flag를 Linux 파일 시스템 (ext3 또는 기타)으로 변경하고 저장 한 후 재부팅하십시오.

그 후

$ mdadm --zero-superblock /dev/sdx 

그리고 voila 당신은 마운트 할 수 있습니다

$ mount /dev/sdc1 /mnt

1
RAID가 비활성화되고 '정상적인'드라이브가 생성됩니다.
CousinCocaine
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.