Soluzione 1:
Con linux softraid puoi creare un array RAID 10 con solo due dischi.
Nomi dei dispositivi utilizzati di seguito:
md0
è il vecchio array di tipo/livello RAID1.md1
è il nuovo array di tipo/livello RAID10.sda1
esdb2
sono nuovi , partizioni vuote (senza dati).sda2
esdc1
sono vecchie partizioni (con dati cruciali).
Sostituisci i nomi per adattarli al tuo caso d'uso. Usa ad es. lsblk
per visualizzare il layout corrente.
0) Backup, Backup, Backup, Backup oh e BACKUP
1) Crea il nuovo array (4 dispositivi:2 esistenti, 2 mancanti):
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing
Nota che in questo esempio il layout sda1
ha una controparte mancante e sdb2
ha un'altra controparte mancante. I tuoi dati su md1
non è sicuro a questo punto (di fatto è RAID0 finché non aggiungi membri mancanti).
Per visualizzare il layout e altri dettagli dell'array creato utilizzare:
mdadm -D /dev/md1
Nota! Dovresti salvare il layout dell'array:
# View current mdadm config:
cat /etc/mdadm/mdadm.conf
# Add new layout (grep is to make sure you don't re-add md0):
mdadm --detail --scan | grep "/dev/md1" | tee -a /etc/mdadm/mdadm.conf
# Save config to initramfs (to be available after reboot)
update-initramfs -u
2) Formatta e monta. Il /dev/md1
dovrebbe essere immediatamente utilizzabile, ma deve essere formattato e poi montato.
3) Copia file. Usa ad es. rsync per copiare i dati dal vecchio RAID 1 al nuovo RAID 10. (questo è solo un comando di esempio, leggi le pagine man per rsync)
rsync -arHx / /where/ever/you/mounted/the/RAID10
4) Fallisci la prima parte del vecchio RAID1 (md0) e aggiungila al nuovo RAID10 (md1)
mdadm /dev/md0 --fail /dev/sda2 --remove /dev/sda2
mdadm /dev/md1 --add /dev/sda2
Nota! Questo cancellerà i dati da sda2
. Il md0
dovrebbe essere ancora utilizzabile ma solo se l'altro membro del raid era pienamente operativo.
Si noti inoltre che questo avvierà i processi di sincronizzazione/ripristino su md1
. Per controllare lo stato usa uno dei seguenti comandi:
# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1
Aspetta fino al termine del ripristino.
5) Installa GRUB sul nuovo array (supponendo che tu stia eseguendo l'avvio da esso). Alcuni CD di ripristino/avvio di Linux funzionano meglio.
6) Avvia su un nuovo array. SE FUNZIONA CORRETTAMENTE Distruggi il vecchio array e aggiungi il disco rimanente al nuovo array.
PUNTO DI NON RITORNO
A questo punto distruggerete i dati sull'ultimo membro del vecchio array md0. Assicurati assolutamente che tutto funzioni.
mdadm --stop /dev/md0
mdadm /dev/md0 --remove /dev/sdc1
mdadm /dev/md1 --add /dev/sdc1
E ancora:aspetta fino al recupero su md1
è finito.
# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1
7) Aggiorna la configurazione di mdadm
Ricordati di aggiornare /etc/mdadm/mdadm.conf
(rimuovi md0).
E salva la configurazione in initramfs (per essere disponibile dopo il riavvio)
update-initramfs -u
Soluzione 2:
Segui la stessa procedura di Mark Turner ma quando crei l'array raid, menziona 2 dischi mancanti
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing
E poi procedi con altri passaggi.
In breve, crea RAID10 con un totale di 4 dischi (di cui 2 mancanti), risincronizza, aggiungi altri due dischi dopo.
Soluzione 3:
Ho appena finito di passare da LVM su due dischi mdadm RAID 1 da 2 TB a LVM su quattro dischi RAID 10 (due dischi originali + due nuovi).
Come notato da @aditsu, l'ordine delle unità è importante durante la creazione dell'array.
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda missing /dev/sdb missing
Il codice sopra fornisce un array utilizzabile con due dischi mancanti (aggiungere i numeri di partizione se non si utilizzano dischi interi). Non appena viene aggiunto il terzo disco, inizierà la sincronizzazione. Ho aggiunto il quarto disco prima che il terzo finisse la sincronizzazione. È stato visualizzato come riserva fino al termine del terzo disco, quindi ha avviato la sincronizzazione.
Passaggi per la mia situazione:
-
Fai un buon backup.
-
Crea un array RAID 10 di 4 dischi degradato con due dischi mancanti (chiameremo i dischi mancanti #2 e 4).
-
Dì alla moglie di non modificare/aggiungere file a cui tiene
-
Errore e rimozione di un disco dall'array RAID 1 (disco 4).
-
Sposta le estensioni fisiche dall'array RAID1 all'array RAID 10 lasciando il disco 2 vuoto.
-
Elimina l'array RAID 1 attivo, aggiungi il disco ora vuoto (disco 2) all'array RAID 10 e attendi il completamento della risincronizzazione.
-
Aggiungi il primo disco rimosso da RAID1 (disco 4) all'array RAID 10.
-
Lascia andare la moglie.
Al passaggio 7 penso unità 1, 2, OR 4 può fallire (durante la risincronizzazione del disco 4) senza terminare l'array. Se l'unità 3 fallisce, i dati sull'array sono toast.