GNU/Linux >> Linux Esercitazione >  >> Linux

Crea e migra il sistema RedHat / CentOS funzionante esistente su RAID 1 / RAID 10

Il sistema Linux ha il supporto integrato per il software RAID, tramite dispositivi MD alias Linux Software RAID. La maggior parte delle distribuzioni Linux come Red Hat Enterprise Linux (RHEL) e CentOS consente di configurare facilmente gli array RAID durante l'installazione del sistema operativo. Tuttavia, se hai già un sistema funzionante e funzionante con più unità disco rigido, ma finora hai eseguito su un sistema a disco singolo, la conversione da disco singolo a RAID comporta molti più rischi e possibilità di errore del sistema.

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.

  1. 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
  2. A scopo precauzionale, spegni tutti gli array che possono essere spenti (ovvero non sono attualmente in uso):
    mdadm --stop --scan
  3. 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.

  4. 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.
  5. 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

  6. 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.

  7. 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.

  8. 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.
  9. 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 KB

    md1 :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:

  10. Crea un mdadm.conf dalla configurazione RAID corrente:
    mdadm --examine --scan >> /etc/mdadm.conf
  11. 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.

  12. 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.

  13. 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.

  14. 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.

  15. 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
  16. 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.

  17. 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.

  1. 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 
  2. 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?"

  3. 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.
  4. Rimuovi qualsiasi RAID sul disco:
    mdadm --zero-superblock /dev/sda{1..9}

    Invia aggiornamento al kernel:

    partprobe /dev/sda
  5. Copia la struttura della partizione da /dev/sdb:
    sfdisk -d /dev/sdb | sfdisk --force /dev/sda
  6. 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
  7. 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.

  8. 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 KB

    md1 :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:

    SuggerimentoPuoi aggiornare continuamente il contenuto del file /proc/mdstat con il comando seguente, che si aggiorna a intervalli di 5 secondi:

    watch -n 5 cat /proc/mdstat
  9. 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
  10. Durante il ripristino di tutti gli array RAID, eseguire un riavvio del sistema.
    reboot
  11. 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]

Linux
  1. Come configurare la virtualizzazione su Redhat Linux

  2. Come migrare Centos 8 ad AlmaLinux 8.3

  3. Come aumentare Swap in Linux / CentOS / Redhat / Ubuntu

  4. Come migrare da CentOS 8 a Rocky Linux 8

  5. Crea un utente sudo in CentOS

Configura RAID esterno su Ubuntu/Centos/RedHat

Centos vs RedHat:15 fatti interessanti da sapere

Come migrare da CentOS 8 a CentOS Stream

Come installare Dgraph su CentOS 8

Come migrare CentOS Stream su AlmaLinux

Come installare Nginx su CentOS 8