[+] raid1 uszkodzony, odzyskanie danych

Pomoc dotycząca instalacji systemu
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

[+] raid1 uszkodzony, odzyskanie danych

Post autor: sethiel »

Jak odzyskać uszkodzony RAID1 (mirror)?

Padło mi zasilanie, na dns-323 wysypał się raid1.
Odpiąłem dysk i podłączyłem do Systemu z Debianem Squeeze.
Programem testdisk odzyskałem partycję podstawową (primary partition), ale nie udało się odzyskać md0 - zapewne dlatego, że testdisk nie do tego służy.

Kod: Zaznacz cały

~# fdisk -l /dev/sdg

Disk /dev/sdg: 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: 0xdfee129d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdg1   *           1          66      530113+  82  Linux swap / Solaris
/dev/sdg2              67         130      514080   83  Linux
/dev/sdg3             131      182236  1462766445   83  Linux
Program mdadm pokazuje różne ciekawostki - jakby coś tam było.

Kod: Zaznacz cały

~# mdadm --query /dev/sdg3
/dev/sdg3: is not an md array
/dev/sdg3: device 0 in 2 device mismatch raid1 /dev/md0.  Use mdadm --examine fo                                                                                                 r more detail.
~# mdadm --examine /dev/sdg3
/dev/sdg3:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 16b21219:78dce24d:dad0fcaa:67fd5116
  Creation Time : Wed Jun 14 12:00:41 2000
     Raid Level : raid1
  Used Dev Size : 1462766336 (1395.00 GiB 1497.87 GB)
     Array Size : 1462766336 (1395.00 GiB 1497.87 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0

    Update Time : Sun Jan 29 02:40:17 2012
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 5b6b22dd - correct
         Events : 2311524


      Number   Major   Minor   RaidDevice State
this     0       8        2        0      active sync   /dev/sda2

   0     0       8        2        0      active sync   /dev/sda2
   1     1       8       18        1      active sync

Co teraz zrobić by odzyskać a nie popsuć?
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Spróbuj z poziomu jakieś dystrybucji livecd:
http://debian.linux.pl/threads/9479-Dys ... #post61503
SystemRescueCD i grml posiadają odpowiednie narzędzia.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

Odpowiednie narzędzia - czyli jakie?

Zrobiłem na Dlinku jeszcze raz (innymi dyskami) RAID1 aby zobaczyć jak to wygląda:

Kod: Zaznacz cały

# fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sda1               1          66      530113+ 82 Linux swap
/dev/sda2             131       60702   486544590  83 Linux
/dev/sda4              67         130      514080  83 Linux

Partition table entries are not in disk order

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sdb1               1          66      530113+ 82 Linux swap
/dev/sdb2             131       60702   486544590  83 Linux
/dev/sdb4              67         130      514080  83 Linux

Partition table entries are not in disk order

/ # mdadm --examine /dev/sda2
/dev/sda2:
          Magic : a92b4efc
        Version : 00.90.00
           UUID : 2b90c5ee:e9fc6c62:22efdab8:fab1fad5
  Creation Time : Tue Jun  1 17:37:29 2010
     Raid Level : raid1
    Device Size : 486544512 (464.01 GiB 498.22 GB)
     Array Size : 486544512 (464.01 GiB 498.22 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0

    Update Time : Tue Jan 31 12:13:15 2012
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 9498fdf4 - correct
         Events : 0.575215


      Number   Major   Minor   RaidDevice State
this     0       8        2        0      active sync   /dev/sda2

   0     0       8        2        0      active sync   /dev/sda2
   1     1       8       18        1      active sync   /dev/sdb2

Czy ta kolejność w porównaniu do mojej po odzysku może mieć znaczenie?

Kod: Zaznacz cały

Disk /dev/sdg: 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: 0xdfee129d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdg1   *           1          66      530113+  82  Linux swap / Solaris
/dev/sdg2              67         130      514080   83  Linux
/dev/sdg3             131      182236  1462766445   83  Linux

Disk /dev/md2: 1497.9 GB, 1497872728064 bytes
2 heads, 4 sectors/track, 365691584 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/md2 doesn't contain a valid partition table

fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

Chwała niech będzie Internetowi.

Po kolei.

Odzyskanie informacji o partycji:

Kod: Zaznacz cały

testdisk -> Intel partition -> Deep Search
Uporządkowanie partycji do stanu sprzed awarii:

Kod: Zaznacz cały

sfdisk -d /dev/sdg > sdg.out
sfdisk /dev/sdg  -O ./sdg.partition-sectors.save
sync
Test czy działa:

Kod: Zaznacz cały

mdadm --assemble --force /dev/md2 /dev/sdg2
mount -o ro -t ext2 /dev/md2 /mnt/test
Nie działa, więc:

Kod: Zaznacz cały

mdadm --stop /dev/md2
mke2fs -n /dev/sdk2
Sprawdzamy jak wygląda struktura dysku i kopii zapasowych superblocków:

Kod: Zaznacz cały

OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128520 inodes, 514080 blocks
25704 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
63 block groups
8192 blocks per group, 8192 fragments per group
2040 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Wybieramy najwyższą (choć przypuszczam że inny blok też mógłby być) i dajemy naprawę, opcja -y = yes automatycznie na wszystko co on tam chce naprawiać

Kod: Zaznacz cały

e2fsck -b 401409 /dev/sdk2 -y
Około 20 godzin później:

Kod: Zaznacz cały

mdadm --assemble --force /dev/md2 /dev/sdg2
mount -o ro -t ext2 /dev/md2 /mnt/test
I pliki są. Oczywiście raid zdegradowany do jednego dysku.
Pakuję się w auto i jadę po UPSa.
Około 2000 PLN zaoszczędzone na Kroll Ontrack, ale w razie fizycznej awarii nie znam innej alternatywy.
ODPOWIEDZ