Bombardare per la pace è un po’ come trombare per la verginità…

Attivare un array raid software esistente con mdadm

Può capitare, ad esempio se si avvia con una live un sistema con dischi in raid software con mdadm, che si debba attivare il raid esistente. Un tipico esempio può essere il dover recuperare dati da dischi estratti da un computer non più avviabile.

Se si avesse a disposizione il file di configurazione di mdadm /etc/mdadm.conf, attivare un array specifico consisterebbe in:

# mdadm -As /dev/md0

Con l’opzione -s (–scan) la configurazione viene letta dal file.
Se invece (ed è la cosa più probabile nel caso descritto sopra) tale file non sia presente si può interrogare le partizioni  dei dischi per capire come fosse fatto il raid di cui facevano parte:

# mdadm -E /dev/sda2
/dev/sda2:
Magic : a92b4efc
Version : 00.90.00
 UUID : 8b8203c4:645c8ad6:1b1ad5b6:3e3bdf19
 Creation Time : Mon Jan  5 12:06:05 2009
 Raid Level : raid1
 Used Dev Size : 1951808 (1906.38 MiB 1998.65 MB)
 Array Size : 1951808 (1906.38 MiB 1998.65 MB)
 Raid Devices : 2
 Total Devices : 2
Preferred Minor : 1
 Update Time : Wed Sep  9 03:16:07 2009
 State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
 Spare Devices : 0
 Checksum : 8687470a - correct
 Events : 0.36
 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

In questo caso /dev/sdc1 fa parte di un raid1 composto da /dev/sda2 e /dev/sdb2.

A questo punto per attivarlo:

# mdadm -A /dev/md0 /dev/sda2 /dev/sdb2

Ulteriori approfondimenti a questo indirizzo.

  • jacopo

    Se il risultato è :
    ~$ mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1
    mdadm: failed to create /dev/md0
    cosa fare?
    Non capisco se il mio array c'è o no. Da un lato mi dice che sdb1 e sdc1 fanno parte di un array:

    #mdadm -E /dev/sdb1
    /dev/sdb1:
    Magic : a92b4efc
    Version : 00.90.00
    UUID : c2ab6f91:29d65dcf:c230666b:5103eba0
    Creation Time : Sat Oct 20 15:22:46 2007
    Raid Level : raid1
    Used Dev Size : 312568576 (298.09 GiB 320.07 GB)
    Array Size : 312568576 (298.09 GiB 320.07 GB)
    Raid Devices : 2
    Total Devices : 2
    Preferred Minor : 0

    Update Time : Tue Dec 29 22:13:26 2009
    State : clean
    Active Devices : 2
    Working Devices : 2
    Failed Devices : 0
    Spare Devices : 0
    Checksum : 4dd74e7b – correct
    Events : 272

    Number Major Minor RaidDevice State
    this 1 8 17 1 active sync /dev/sdb1

    0 0 8 33 0 active sync /dev/sdc1
    1 1 8 17 1 active sync /dev/sdb1

    Ovviamente il file mdadm.conf non esiste …
    devo ricreare l'array o rischio di perdere tutto il contenuto dei dischi??
    Sono pasasta da una debian incasinata a Ubuntu 9.10 …
    e ancora non sono riuscito a mettere a posto il raid…

    Ciao !! J

  • http://www.tommyblue.it TommyBlue

    Hai installato mdadm? È caricato il modulo raid1? “lsmod | grep raid” che dice?

    Se si, direi che “mdadm -E” ti informa che sdb1 faceva parte di un Raid 1 con sdc1, che adesso devi riattivare.

    Il messaggio “mdadm: failed to create /dev/md0″ credo derivi dal fatto che /dev/md0 non esiste (se lanci “ls /dev/md0″ dovresti ottenere un bel “ls: /dev/md0: No such file or directory”).
    Per crearlo il comando è:

    mknod /dev/md0 b 9 0

    preso da qui:
    http://www.gentoo.org/doc/en/gentoo-x86-tipsntr…

    Per creare mdadm.conf usa “man mdadm.conf” o “man 5 mdadm”

  • jacopo

    Mdadm è installato, o almeno credo (ho fatto apt-get install …) e se non fosse installato, non credo che potrei lanciare mdadm -E, giusto?
    Infatti se lancio “lsmod | grep raid” ottengo:
    raid10 22972 0
    raid456 54108 0
    raid6_pq 80912 1 raid456
    async_xor 3324 1 raid456
    async_memcpy 1852 1 raid456
    async_tx 3260 3 raid456,async_xor,async_memcpy
    xor 15620 2 raid456,async_xor
    raid0 8096 0
    raid1 22396 1

    Se invece lancio “ls /dev/md0″ ottengo:
    /dev/md0

    Quindi provando con “cat /proc/mdstat” ottengo:
    Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
    md0 : active raid1 sdb1[1] sdc1[0]
    312568576 blocks [2/2] [UU]

    Che se ben capisco vuol dire che mi riconosce il raid e l'array md0.
    A questo punto mi pongo il dubbio che forse non è montato il mio raid. Verifico con “gedit /etc/fstab/ e ottengo:
    # <file system> <mount point> <type> <options> <dump> <pass>
    proc /proc proc defaults 0 0
    # / was on /dev/sda7 during installation
    UUID=036b594f-4b6c-4dca-b895-378558265615 / ext3 errors=remount-ro 0 1
    # /boot was on /dev/sda5 during installation
    UUID=16d6a8fa-d2b3-4afd-ad4e-b77d1a5f0b8c /boot ext2 defaults 0 2
    # /home was on /dev/sda8 during installation
    UUID=2bbbbfe2-1136-4954-9f22-32f1d22bf7be /home ext3 defaults 0 2
    # /windows was on /dev/sda1 during installation
    UUID=787CBCB47CBC6F0E /windows ntfs defaults,nls=utf8,umask=007,gid=46 0 0
    /dev/sda6 none swap sw 0 0
    /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
    /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0

    dove noto che NON c'è md0. Quindi immagino che devo aggiungerlo al file fstab … ma prima di provare e fare danni … chiedo conferma!

    grazie ancora,

  • http://www.tommyblue.it TommyBlue

    ok, md0 è attivo e funziona (UU indica che entrambi i dischi sono attivi e sincronizzati).

    Allora basta che monti md0, ad esempio con:

    mount /dev/md0 /mnt

    in /mnt dovrebbero esserci tutti i tuoi file. La riga in fstab è:

    /dev/md0 /dovelavuoimontare FS defaults 0 0

    dove FS è il filesystem (ext2, ext3,ext4, xfs, ecc.). Per saperlo, dopo che l'hai montata in /mnt digita:

    mount | grep /mnt

  • jacopo

    … é stata dura ma ce l'ho fatta! Non avevo creato la dir dove volevo montare il raid, a quel punto è stato sufficiente scrivere la riga in fstab et voilà!

    jac@linux:~$ mount | grep /media
    /dev/md0 on /media/dati type ext3 (rw)

    Grazie ancora!

  • http://www.tommyblue.it TommyBlue

    Yuhuu! Jago2.0! :P