Portál AbcLinuxu, 12. května 2025 12:53

Dotaz: Obnova pole RAID5 rozpadle pri reshape

3.5.2008 12:12 Zdvori | skóre: 9
Obnova pole RAID5 rozpadle pri reshape
Přečteno: 596×
Odpovědět | Admin
Zdravim, mel jsem RAID5 pole ktere vypadalo cca takto:

/dev/md0:
        Version : 00.90.03
  Creation Time : Sat May  3 12:58:57 2008
     Raid Level : raid5
     Array Size : 1953535744 (1863.04 GiB 2000.42 GB)
  Used Dev Size : 488383936 (465.76 GiB 500.11 GB)
   Raid Devices : 5
  Total Devices : 5
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Sat May  3 12:58:57 2008
          State : clean
 Active Devices : 5
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : e2ce479b:ab354b16:a99b9291:78c4236d
         Events : 0.1

    Number   Major   Minor   RaidDevice State
       0      33        1        0      active sync   /dev/hde1
       1      22        1        1      active sync   /dev/hdc1
       2       3        1        2      active sync   /dev/hda1
       3      57        1        3      active sync   /dev/hdk1
       4      56        1        4      active sync   /dev/hdi1

Pridal jsem dalsi disk /dev/hdg1 , reshape se pustil, ale u 87% doslo k problemum s radicem a DMA a po rebootu se disk /dev/hde1 jiz nepriradil a oznacil jako SPARE, reshape zustal seknuty

md0 : active raid5 hdc1[1] hdg1[5] hdi1[4] hdk1[3] hda1[2]
      1953535744 blocks super 0.91 level 5, 64k chunk, algorithm 2 [6/5] [_UUUUU]
      [=================>...]  reshape = 87.9% (429496704/488383936) finish=213875.0min speed=4K/sec

# mdadm -E /dev/hde1
/dev/hde1:
          Magic : a92b4efc
        Version : 00.91.00
           UUID : 4374c362:3111dd76:c4e95663:32b5080f
  Creation Time : Fri May  2 02:39:03 2008
     Raid Level : raid5
  Used Dev Size : 488383936 (465.76 GiB 500.11 GB)
     Array Size : 2441919680 (2328.80 GiB 2500.53 GB)
   Raid Devices : 6
  Total Devices : 6
Preferred Minor : 0

  Reshape pos'n : 2147471680 (2047.99 GiB 2199.01 GB)
  Delta Devices : 1 (5->6)

    Update Time : Sat May  3 11:41:12 2008
          State : clean
 Active Devices : 5
Working Devices : 6
 Failed Devices : 0
  Spare Devices : 1
       Checksum : c2ad69ab - correct
         Events : 0.286136

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     6      33        1        6      spare   /dev/hde1

   0     0       0        0        0      removed
   1     1      22        1        1      active sync   /dev/hdc1
   2     2       3        1        2      active sync   /dev/hda1
   3     3      57        1        3      active sync   /dev/hdk1
   4     4      56        1        4      active sync   /dev/hdi1
   5     5      34        0        5      active sync   /dev/hdg1
   6     6      33        1        6      spare   /dev/hde1

Zkousel jsem obnovit puvodni pole pomoci :-(

mdadm -Cv /dev/md0 -l5 -n6 /dev/hde1 /dev/hdc1 /dev/hda1 /dev/hdk1 /dev/hdi1 /dev/hdg1 --assume-clean

a pak i pomoci:

mdadm -Cv /dev/md0 -l5 -n5 /dev/hde1 /dev/hdc1 /dev/hda1 /dev/hdk1 /dev/hdi1 --assume-clean Avsak mount hlasi: mount: /dev/md0: superblok nelze přečíst, takze ocekavam ze timto zpusobem se na data nedostanu. S daty nebylo dale nijak manipulovano a ani neprobehl dalsi sync, pripadne reshape.

Mam sanci data nejak zachranit. Diky moc za podnety.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.5.2008 16:21 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Obnova pole RAID5 rozpadle pri reshape
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je otázka, co se vlastně stalo při tom přerušení (předem upozorňuju, že spekuluju a všechno, co píšu, je bez záruky)...

Ve chvíli, kdy se reshape přerušilo, bylo vlastně to pole tvořené z větší části 6 disky (z nichž teď je připojeno pět a ta část pole běží v degradovaném režimu). Ta menší část potom zůstala na 5 discích, z nichž 4 obsahovaly správná data a ten pátý (hdg) nesmysly.

Teď je další otázka a sice, co jádro udělalo po rebootu - je zjevné, že si pamatuje, že probíhal reshape, nicméně taky mohlo synchronizovat zbytek (tu nereshapovanou část) hdg1 k a,c,k a i.

Co bych zkusil já, kdyby mi nikdo neporadil něco lepšího, je vyhodit ten hde1 disk jako spare (mdadm --remove /dev/md0 /dev/hde1) a vrátit ho tam jako aktivní (mdadm --re-add /dev/md0 /dev/hde1)

To fungovat může a nemusí, záleží na implementaci v jádře. Víceméně můžou nastat následující varianty:

1. Jádro si vzpomene, že hde už v tom poli byl, tím pádem že pole je ve stejném stavu, jako před tím rebootem a že se může jen tak pokračovat v reshape.

2. Jádro sesynchronizuje ten reshapovaný začátek na hde tak, že už poběží na šesti discích, pak dokončí reshape z těch disků, které jsou aktuálně v poli přítomné

3. Jádro sesynchronizuje ten reshapovaný začátek na hde tak, že už poběží na šesti discích, pak dokončí reshape z těch disků, které jsou aktuálně v poli přítomné, jenže na hdg jsou nesmysly, takže to nedopadne dobře.

4. Jádro zapomene, že se děl nějaký reshape, sesynchronizuje celý hde podle těch ostatních dopočítáním dat

5. Něco úplně jinýho, co mě teď nenapadlo

Je vidět, že jenom varianta 1 s určitostí nevede ke ztrátě dat a zrovna tuhle variantu považuju za dost nepravděpodobnou, takže předtím, než to uděláš, doporučuju

a) počkat, až někdo zkušenější v mém návrhu najde a opraví chyby

b) zazálohovat někam obsah všech hdX1 oddílů těch disků; když postup selže, budeš mít k dispozici druhý pokus. Pokud při tom, co všechno se stalo, něco nezměnilo obsah těch oddílů, tak by v nejhorším případě mělo jít data obnovit ručně tak, že bys je načetl přímo z těch oddílů a poskládal je sám.
Quando omni flunkus moritati

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.