RAID offre vantaggi in termini di ridondanza dei dati e miglioramento delle prestazioni ed è una configurazione consigliata per server mission-critical. Ad esempio, RAID 1 produce un set con mirroring, che può tollerare un errore di un singolo disco, mentre potenzialmente accelera le prestazioni poiché le richieste di lettura possono essere soddisfatte da qualsiasi disco nell'array. RAID 10 (RAID 1+0) è una striscia di set con mirroring, o RAID 0 di set con mirroring RAID 1, che fornisce un throughput e una latenza migliori, tollerando al contempo il guasto di più dischi fintanto che nessun mirror perde tutte le sue unità.
Questo tutorial fornisce una guida passo passo su come creare manualmente RAID 1 su un sistema a due dischi o RAID 10 su un sistema a quattro dischi su un sistema attualmente attivo e funzionante su cui è già installato CentOS/RedHat. Anche il bootloader GRUB è configurato in modo tale che il sistema sia ancora in grado di avviarsi se uno qualsiasi dei dischi rigidi si guasta. Questo è utile soprattutto se non riesci ad accedere alla console su un server dedicato sottoscritto da società di web hosting, che ti impediscono inavvertitamente di creare dispositivi RAID durante l'installazione.
La prima fase della migrazione di un sistema attualmente in esecuzione su RAID senza perdita di dati consiste nel garantire che tutti i dati correnti vengano replicati su un RAID degradato. In questo tutorial, lavoreremo su un sistema che viene fornito con 477 MB di partizione /boot come /dev/sda1, più di 900 GB / partizione di root come /dev/sda2, 4 GB di spazio di swap in /dev/sda3 e un altro Partizione logica /tmp da 4 GB /dev/sda5 ospitata su partizione estesa /dev/sda4.
- Controlla e assicurati che non ci siano dispositivi RAID attualmente in esecuzione. Il contenuto del file /etc/mdadm.conf e il risultato di cat /proc/mdstat dovrebbe essere vuoto e nessun array dovrebbe essere trovato nel file di configurazione o automaticamente.
mdadm --examine --scan > /etc/mdadm.conf mdadm --assemble --scan cat /proc/mdstat
- A scopo precauzionale, spegni tutti gli array che possono essere spenti (ovvero non sono attualmente in uso):
mdadm --stop --scan
- Cambia la tabella delle partizioni dei dischi in MBR con i seguenti comandi. Salta questo passaggio se i tuoi dischi non hanno la tabella delle partizioni GTP.
parted /dev/sdb (parted) mktable msdos (parted) quit
Rispondi Sì/i quando viene richiesto con "avviso:l'etichetta del disco esistente su /dev/sdb verrà distrutta e tutti i dati su questo disco andranno persi. Vuoi continuare?"
Invia aggiornamento al kernel:
partprobe /dev/sdb
Ripetere il comando per le altre unità, ad esempio /dev/sdc e /dev/sdd, se applicabile.
- Separa il disco rigido in base alle tue preferenze.
In questo tutorial, utilizzeremo il seguente comando per creare partizioni identiche all'unità esistente, /dev/sda:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Ripetere il comando per le altre unità, ad esempio /dev/sdc e /dev/sdd, se applicabile.
SuggerimentoSe stai utilizzando "fdisk" per creare manualmente le partizioni, puoi utilizzare il comando "sfdisk" sopra per replicare le strutture delle partizioni su altri dischi se hai più di 1 disco rigido aggiuntivo. Ad esempio, "sfdisk -d /dev/sdb | sfdisk –force /dev/sdc” replicherà le partizioni di /dev/sdb in /dev/sdc. - Cambia il tipo di partizione per il rilevamento automatico RAID Linux. Per fare ciò, "fdisk" il disco rigido specifico. Ad esempio,
fdisk /dev/sdb
Quindi, emetti t comando:
Command (m for help): t Partition number (1-5): 1 Hex code (type L to list codes): fd Changed system type of partition 1 to fd (Linux raid autodetect)
Ripetere il processo per il resto delle partizioni sul disco. Quindi, rendi permanente la modifica:
Command (m for help): w
- Rimuovi RAID per i nuovi dischi, nel caso in cui il RAID fosse stato configurato sui "nuovi" dischi prima di:
mdadm --stop --scan mdadm --zero-superblock /dev/sdb{1..9}
E poi invia l'aggiornamento al kernel:
partprobe /dev/sdb
Ripetere il comando per le altre unità, ad esempio /dev/sdc e /dev/sdd, se applicabile.
- Carica i moduli richiesti nel kernel:
modprobe raid0 modprobe raid1 modprobe raid10
Se esegui "cat /proc/mdstat" ora, dovresti vedere qualcosa di simile come:
Personalità:[raid0] [raid1] [raid10]
dispositivi inutilizzati:I moduli relativi a RAID sono stati caricati nel kernel, ma non sono stati configurati set RAID.
- Crea dispositivi RAID in stato degradato perché manca un'unità, ovvero /dev/sda che è attualmente installata con il sistema operativo e utilizzata per l'avvio. Poiché CentOS e RedHat versioni 5.0 e 6.0 utilizzano Grub 0.97 per impostazione predefinita, "–metadata=0.9" è specificato in modo che venga utilizzata la versione precedente di superblock. In caso contrario, Grub potrebbe rispondere con l'errore "tipo di filesystem sconosciuto, tipo di partizione 0xfd" e rifiutarsi di installare. Inoltre, mdadm emetterà anche un avviso per l'array di avvio:questo array ha metadati all'inizio e potrebbe non essere adatto come dispositivo di avvio. Se prevedi di archiviare '/boot' su questo dispositivo, assicurati che il tuo caricatore di avvio comprenda i metadati md/v1.x o usa –metadata=0.90. Il parametro non è necessario con Grub2. La seguente sintassi presuppone che stiamo creando array RAID10 con 4 dischi. Passa a RAID1 se hai solo 2 dischi modificando le opzioni su “–level=1” e rimuovi le partizioni del disco inesistenti.
Per /boot, utilizziamo RAID1:
mdadm --create --verbose /dev/md1 --metadata=0.9 --level=1 --raid-devices=4 missing /dev/sdb1 /dev/sdc1 /dev/sdd1
Per / root, usa RAID10 come previsto:
mdadm --create --verbose /dev/md2 --metadata=0.9 --level=10 --raid-devices=4 missing /dev/sdb2 /dev/sdc2 /dev/sdd2
Quando ti viene chiesto se continuare a creare l'array, rispondi Y(es) . Ripetere il processo per creare array RAID per spazi di scambio e altre partizioni, se disponibili.
L'array NoteRAID non può essere creato su una partizione estesa, con mdadm che risponde con /dev/sdbX non è adatto per questo array. - Controlla il risultato con:
cat /proc/mdstat
L'output dovrebbe essere:
[raid0] [raid1] [raid10]
md5 :raid10 attivo sdd5[3] sdc5[2] sdb5[1]
4189184 blocchi 512K blocchi 2 quasi copie [4/3] [_UUU]md2 :raid10 attivo sdd2[3] sdc2[2] sdb2[1]
1939915776 blocchi 512K blocchi 2 quasi copie [4/3] [_UUU]
bitmap:15/15 pagine [60 KB], blocco da 65536 KBmd1 :raid1 attivo sdd1[3] sdc1[2] sdb1[1]
511936 blocchi [4/3] [_UUU]md3 :raid10 attivo sdd3[3] sdb3[1] sdc3[2]
8387584 blocchi 512K blocchi 2 quasi copie [4/3] [_UUU]dispositivi inutilizzati:
- Crea un mdadm.conf dalla configurazione RAID corrente:
mdadm --examine --scan >> /etc/mdadm.conf
- Crea i filesystem sui nuovi dispositivi RAID:
mkfs.ext4 /dev/md1 # You may want to use mkfs.ext2 for ext2 filesystem for /boot mkfs.ext4 /dev/md2 # ext4 filesystem for / root mkswap /dev/md3 # Swap space
Crea il filesystem ext4 su qualsiasi altro nuovo array RAID creato.
- Sostituisci le voci del dispositivo in /etc/fstab con i nuovi dispositivi RAID. Per farlo, esegui innanzitutto:
blkid | grep /dev/md
Restituisce l'output con l'UUID dei nuovi dispositivi RAID software simile al seguente:
/dev/md1:UUID=”1234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4″
/dev/md2:UUID=”2234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4″
/dev/md3:UUID=”3234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”scambio”
/dev/md5:UUID=”4234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4″In /etc/fstab , cambia le righe contenenti i vari punti di montaggio nell'UUID dei nuovi filesystem RAID /dev/mdX corrispondenti, ovvero il valore dopo "UUID=". Ad esempio,
UUID=2234abcd-12ab-12ab-12ab-123456abcdef / ext4 defaults 1 1 UUID=1234abcd-12ab-12ab-12ab-123456abcdef /boot ext4 defaults 1 2 UUID=4234abcd-12ab-12ab-12ab-123456abcdef /tmp ext4 noexec,nosuid,nodev 1 2 UUID=3234abcd-12ab-12ab-12ab-123456abcdef swap swap defaults 0 0
Lascia intatti tmpfs, devpts, sysfs, proc e altri. Ovviamente, se sai cosa stai facendo o hai un filesystem radicalmente diverso, puoi modificare fstab come preferisci.
- Aggiorna initrd e ricostruisci initramfs con il nuovo mdadm.conf:
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.old dracut --mdadmconf --add-drivers "raid1 raid10" --filesystems "ext4 ext3 swap tmpfs devpts sysfs proc" --force /boot/initramfs-$(uname -r).img $(uname -r)
Nota:sostituisci $(uname -r) con la versione attuale del kernel se i comandi non funzionano per te, specialmente su un LiveCD.
- In /boot/grub/menu.lst , cambia il valore dell'UUID o la voce dell'etichetta per il kernel in UUID di / (directory root) sull'array RAID o /dev/md2 (cambia se il tuo /boot è montato su una partizione diversa). Ad esempio:
title CentOS (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=UUID=2234abcd-12ab-12ab-12ab-123456abcdef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img
Oppure,
title CentOS (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=/dev/md2 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img
Assicurati che NO rn_NO_DM e rn_NO_MD i parametri di avvio non sono elencati come opzioni per il kernel. Al termine della modifica, salva il menu.lst aggiornato.
- Replica manualmente i dati esistenti sulle partizioni esistenti in nuove partizioni RAID software.
Per / root (/dev/md2, cambialo di conseguenza se non lo è):
mkdir /mnt/raid mount /dev/md2 /mnt/raid cd /mnt/raid cp -ax / . sync
Per /avvio:
rm -rf /mnt/raid/boot mkdir /mnt/raid/boot mount /dev/md1 /mnt/raid/boot cd /mnt/raid/boot cp -ax /boot/* . sync
Su SELinux, esegui anche:touch /mnt/raid/.autorelabel per /avvio.
Se hai più partizioni disponibili, come /var, /home e così via, ripeti il processo per questi filesystem. Ad esempio:
rm -rf /mnt/raid/home mkdir /mnt/raid/home mount /dev/md1 /mnt/raid/home cd /mnt/raid/home cp -ax /home/* . sync
SuggerimentoCi sono molti modi per copiare e duplicare i file su nuovi array RAID. Ad esempio:rsync -avxHAXS --delete --progress / /mnt/raid tar -C / -clspf - . | tar -xlspvf - find / -depth -xdev | cpio -pmd /mnt/raid
- Installa Grub 0.97 sull'MBR di tutti i dischi in modo che se uno dei dischi si guasta, il sistema dovrebbe essere in grado di avviarsi. Affinché ciò avvenga, è necessario eseguire il seguente passaggio::
grub grub> root (hd0,0) grub> setup (hd0) grub> root (hd1,0) grub> setup (hd1) grub> root (hd2,0) grub> setup (hd2) grub> root (hd3,0) grub> setup (hd3) grub> quit
Salta hd2 e hd3 se hai solo 2 dischi rigidi.
- Riavvieremo il server. Eseguire il backup di tutto nel caso in cui il server non torni, quindi emettere:
reboot
La prima parte della configurazione del supporto RAID software Linux sul sistema attualmente in esecuzione è stata completata. Se il server è tornato, continuare con le seguenti procedure per aggiungere nuovamente il disco rigido mancante (ad es. /dev/sda che esegue originariamente il sistema) agli array RAID. La guida seguente presuppone che il disco rimanente non sia stato aggiunto agli array RAID sia /dev/sda. Cambia se il nome del tuo dispositivo se diverso.
- Dopo l'avvio del server, verifica che i filesystem siano montati sugli array RAID, ad esempio /dev/md0, /dev/md1…./dev/md3.
df -h
Risultato atteso:
Filesystem Size Used Avail Use% Mounted on /dev/md2 1.8T 1.2G 1.7T 1% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/md1 477M 76M 377M 17% /boot /dev/md5 3.9G 8.1M 3.7G 1% /tmp
- Cambia la tabella delle partizioni del disco in MBR con i seguenti comandi. Salta questo passaggio se il disco non ha la tabella delle partizioni GTP.
parted /dev/sda (parted) mktable msdos (parted) quit
Rispondi Sì/i quando viene richiesto con "avviso:l'etichetta del disco esistente su /dev/sdb verrà distrutta e tutti i dati su questo disco andranno persi. Vuoi continuare?"
- Elimina tutte le partizioni esistenti su /dev/sda:
fdisk /dev/sda
Command (m for help): d Partition number (1-5): 1 Command (m for help): d Partition number (1-5): 2 Command (m for help): d Partition number (1-5): 3 Command (m for help): d Partition number (1-5): 4 Command (m for help): d Partition number (1-5): 5 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
- Rimuovi qualsiasi RAID sul disco:
mdadm --zero-superblock /dev/sda{1..9}
Invia aggiornamento al kernel:
partprobe /dev/sda
- Copia la struttura della partizione da /dev/sdb:
sfdisk -d /dev/sdb | sfdisk --force /dev/sda
- Esegui:
fdisk -l
Assicurati che tutte le partizioni che formano gli array RAID siano di fd Tipi di partizioni di rilevamento automatico RAID Linux (valore nella colonna "Id"). Se è di tipo 83 Linux, usa fdisk, cfdisk o parted per cambiarlo in "fd". Ad esempio:
Invia l'aggiornamento al kernel in caso di modifiche.
partprobe /dev/sda
- Aggiungi le partizioni in /dev/sda ai rispettivi array RAID per completare gli array (4 dischi su RAID10 o 2 dischi su RAID1):
mdadm --add /dev/md1 /dev/sda1 mdadm --add /dev/md2 /dev/sda2 mdadm --add /dev/md3 /dev/sda3
Ripetere per altre partizioni, se applicabile.
- Controlla lo stato di avanzamento del processo di ripristino RAID con:
cat /proc/mdstat
L'output dovrebbe essere:
[raid0] [raid1] [raid10]
md5 :raid10 attivo sdd5[3] sdc5[2] sdb5[1]
4189184 blocchi 512K blocchi 2 quasi copie [4/3] [_UUU]md2 :raid10 attivo sdd2[3] sdc2[2] sdb2[1]
1939915776 blocchi 512K blocchi 2 quasi copie [4/3] [_UUU]
[====>…………………………….] recupero =37,8% (177777777/388888888) fine=60,5 min velocità=100000 K/sec
bitmap:15/15 pagine [60 KB], blocco da 65536 KBmd1 :raid1 attivo sdd1[3] sdc1[2] sdb1[1]
511936 blocchi [4/3] [_UUU]md3 :raid10 attivo sdd3[3] sdb3[1] sdc3[2]
8387584 blocchi 512K blocchi 2 quasi copie [4/3] [_UUU]dispositivi inutilizzati:
watch -n 5 cat /proc/mdstat
- Ricrea il record di avvio sull'MBR /dev/sda con grub per garantire che il sistema possa avviarsi su qualsiasi disco:
grub grub> root (hd0,0) grub> setup (hd0) grub> quit
- Durante il ripristino di tutti gli array RAID, eseguire un riavvio del sistema.
reboot
- Quando il sistema è tornato attivo e online, congratulazioni, ora stai utilizzando il software RAID.
Dopo aver abilitato RAID con mdadm, la cosa più importante è assicurarsi che il sistema di notifica degli avvisi e-mail funzioni. Il software RAID Linux è in grado di monitorare se stesso per qualsiasi possibile problema sugli array RAID, ad esempio un errore del disco, e può inviare una notifica via e-mail quando rileva possibili errori.
Per verificare che la notifica e-mail funzioni, immetti il seguente comando:
mdadm --monitor --test --oneshot /dev/md1
Dovresti ricevere un'e-mail con il contenuto di /proc/mdstat. Se non ricevi l'e-mail, assicurati che il tuo sistema sia in grado di inviare e-mail e controlla MAILADDR valore in mdadm.conf . Dovrebbe essere qualcosa del tipo:
MAILADDR [email protected]