Как смонтировать диск из разрушенной рейд-системы?

16

У меня ужасная ситуация, когда мне приходится восстанавливать данные из поврежденной рейд-системы в спасательном Debian Linux. Я просто хочу смонтировать их в / mnt / rescue в режиме только для чтения, чтобы иметь возможность копировать образы VMWare GSX на другую машину и впоследствии перенести их в ESXi. Выход для соответствующих команд выглядит следующим образом.

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

Теперь я потерялся, я понятия не имею, как восстановить диски и вернуть данные. Ниже приводится вывод команды mda --examine для всех 3 дисков (я думаю, что это должны быть 3 диска 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.

Я хотел бы получить доступ к данным из md2 (данные на активном и не поврежденном диске, то есть / dev / sda3), подключив его за пределами рейда.

Это хорошая идея, чтобы просто выполнить

mdadm --manage /dev/md2 --remove /dev/sda3 

(это даже работает, поскольку md2 не виден fdisk)?

Должен ли я повторно собрать другие рейды 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.
Хауке Лэнг
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
Тони Старк
Может быть, sd?1это swapspace. Попробуйте собрать md1и md2и смонтировать с mount -t auto ....
Хауке Лэнг
@HaukeLaging: я пытался собрать md0, md1 и md2 (см. Обновленный пост). Только md1 успешно собирается и монтируется. Два других не в состоянии собрать и смонтировать. Есть идеи?
Тони Старк
1
Удалось ли вам решить эту проблему? Пожалуйста, рассмотрите возможность размещения самостоятельного ответа с решением, которое в итоге сработало для вас (или с принятием существующего ответа, если это помогло), если вы это сделали, в интересах будущих посетителей.
CVn

Ответы:

3

В моем случае я поднял CentOS 7 и попытался следовать всем инструкциям на этой странице. Я продолжал сталкиваться с сообщением о занятости устройства. Причина, по моему мнению, почему вы получаете

mdadm: не удается открыть устройство / dev / sda1: устройство или ресурс заняты

Сообщение об ошибке вызвано тем, что устройство уже смонтировано как-то еще.

Я также не хотел вносить какие-либо изменения в диск вообще, так как мой вариант использования состоял в том, чтобы извлечь из моего массива RAID1 очень большой файл, который иначе не удалось извлечь, и самым быстрым способом было извлечь один из дисков. Я хочу вернуть диск обратно и при этом сохранить конфигурацию.

Вот что я сделал после некоторых онлайн-исследований на других сайтах: ПРИМЕЧАНИЕ : NAS: 0 - это название моего устройства NAS, поэтому замените его соответствующим образом.

Он был автоматически смонтирован, хотя будет сказано, что он не смонтирован, если вы запустите команду монтирования, вы можете проверить, что он был смонтирован, выполнив:

[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.

Евгений.
источник
Этот ответ помог мне больше всего. Благодарность! Для меня это было также установлено под, /dev/md127таким образом я издал остановку как это mdadm --manage --stop /dev/md127.
Ференц Гечи
4

Если вы можете, вы должны сделать ddобраз всего диска, прежде чем что-то делать, на всякий случай.

Вы должны иметь возможность монтировать / dev / sda3 сразу после mdadmего выпуска:

mdadm --stop / dev / md2

mount / dev / sda3 / mnt / rescue

Если это не работает, testdiskобычно можно найти файловые системы на необработанных блочных устройствах.

skorgu
источник
1
Это не работает для меня. "mount: неизвестный тип файловой системы 'linux_raid_member'"
Cerin
4

Я сделал это «трудным путем»: (сначала, если возможно, клонируйте этот диск, прежде чем что-то делать!)

dmesgдля RAID-диска или попробовать (например: sdc1)

$ fdisk -l

Измените RAID-DISK-Flag на вашу файловую систему Linux (ext3 или что-то еще), сохраните это и перезагрузите компьютер.

После того

$ mdadm --zero-superblock /dev/sdx 

и вуаля вы можете смонтировать

$ mount /dev/sdc1 /mnt
гость
источник
1
это отключит RAID и создаст «нормальный» диск.
Кузен Кокаин