Appunti sull'uso di mdadm per gestire il raid software

Aggiungere o togliere dischi dal raid (Lenny e Squeeze)

Se vogliamo sostituire i dischi di un raid funzionante, e abbiamo spazio per connetterli, potremmo decidere di aggiungere prima i nuovi dischi, e poi togliere i vecchi. Per esempio, potremmo prendere un raid1 di 2 dischi, aggiungerne due nuovi, sincronizzare, e poi rimuovere i due vecchi. Supponiamo che la situazione sia:

Per farlo, occorre:

Finito, abbiamo /dev/md0 con due dischi, come era all'inizio, pero` i dischi sono nuovi.

Ingrandire un file system in raid sostituendo i dischi con dischi piu` grandi (Lenny)

Ponendo di avere un raid (diciamo raid1, ma va bene anche con il 5) con due dischi da 500 GB e volere ingrandire il tutto a 2 TB, la cosa e` fattibile anche online (puo` essere che occorra smontare o riavviare a seconda di che fs si usa e di che controller si usa).

Prima di tutto, occorre cambiare tutti i dischi del raid (uno alla volta!) in modo da incrementare la dimensione della partizione su ogni disco. Avendo un controller che gestisce l'hot swap, è possibile fare tutto online:

A questo punto, abbiamo un device md (md2 nel nostro esempio) che pur trovandosi composto di due partizioni grandi, resta piccolo. Occorre adesso ingrandire il device. Pr farlo, dovrebbe essere sufficiente dare il comando: mdadm --grow --size=max /dev/md2. Purtroppo però nel mio test non ha funzionato, probabilmente perchè avevo fatto del casino prima. Ho dovuto smontare il file system, fermare e riavviare il device raid, e poi dare il grow, così:

mdadm --stop /dev/md2
mdadm --assemble /dev/md2
mdadm --grow --size=max /dev/md2

Se ha funzionato, ora un cat /proc/partitions ci dirà che /dev/md2 è più grande di prima, ed è grande quasi come le partizioni in cui è contenuto. Va notato che verrà anche avviato un rebuild che ricostruisce la parte "aggiunta" del device MD.

A questo punto, occorre ridimensionare il filesystem stesso all'interno della partizione. Se usiamo ext3, e un kernel sufficientemente moderno (2.6), possiamo resizeare anche online, senza smontare la partizione, cosi`: resize2fs /dev/md2. Questo comando ingrandisce il file system fino alla dimensione della partizione in cui si trova. Se vogliamo giocare sicuro, smontiamo il filesystem e diamo lo stesso comando su un fs smontato. Se vogliamo giocare ancora piu` sicuro, diamo un fsck prima e dopo il resize (ovviamente sempre a file system smontato). Tenete conto che il resize puo` essere molto lungo (decine di minuti) se il cambio di dimensione e` significativo.

Per riferimento, questo sito e` interessante: http://www.howtoforge.com/how-to-resize-raid-partitions-shrink-and-grow-software-raid

Cambiare un disco rotto (Etch e Lenny)

Installare un raid1 con un solo disco e poi aggiungere il secondo (Etch e Lenny)

Se vi capita di fare una installazione in cui sapete che farete un raid1, ma adesso avete un solo disco, potete installare facendo un raid1 con un solo device, e poi, dopo aver collegato il secondo disco, includerlo nei raid.

La procedura e`:

Questa l'ho usata su Etch con il kernel 2.6.18 e ha funzionato, pero` se sminchia a morte il vostro sistema, io non voglio sapere nulla.

Conversione di un FS da non-raid a raid1 in Sarge (procedura non collaudata ed obsoleta)

Ora ci sono due strade. Una da veri uomini e una no. Una consiste nel trasformare il file system sul disco attuale in un membro del raid1, e poi aggiungere il secondo disco. L'altra nel creare un array vuoto e degradato nel secondo disco, copiarci tutti i dati dentro, e poi riciclare il primo disco come parte dell'array.


Cominciamo con la strada per veri uomini, che va seguita a file system non montato (quindi bootando da un CD, se e` il root fs). Avete un backup? Si`, vero? NON PROCEDETE SENZA UN BACKUP!!!

Se ha funzionato tutto, ora si puo` smontare /dev/md0, poi attendere che finisca il resync, e poi ribootare e sperare in bene!


Quella che segue e` la strada piu` sicura. In questo caso non si tocca il file system originale fino a dopo il reboot.