Una piccola digressione: questo laboratorio è di natura sintetica.
Alcuni compiti descritti qui possono essere svolti in modo molto più semplice, ma poiché l'obiettivo del laboratorio è familiarizzare
con le funzionalità di RAID e LVM, alcune operazioni sono artificialmente complicate.
Requisiti per gli strumenti necessari per il laboratorio:
- Strumenti di virtualizzazione, come VirtualBox
- Immagine di installazione Linux, per esempio
- Accesso a Internet per scaricare alcuni pacchetti
- Accesso SSH alla VM installata (opzionale)
ATTENZIONE
Questo laboratorio è legato a una questione così delicata come la sicurezza dei dati: si tratta di un ambito
in cui, a causa di un piccolo errore — una lettera o un numero di troppo — si possono perdere tutti i propri dati.
Poiché stai svolgendo un laboratorio, non rischi nulla, se non dover ricominciare.
Nella vita reale è tutto molto più serio, quindi è fondamentale inserire con attenzione i nomi dei dischi, comprendendo
cosa stai eseguendo con il comando corrente e con quali dischi stai lavorando.
Un secondo punto importante è la denominazione dei dischi e delle partizioni: a seconda della situazione, i numeri dei dischi possono differire
da quelli presentati nei comandi nel lavoro di laboratorio.
Ad esempio, se si rimuove il disco sda dall'array e poi si aggiunge un nuovo disco, il nuovo disco sarà visualizzato
nel sistema con il nome sda. Se invece si esegue un riavvio prima di aggiungere il nuovo disco, il nuovo
disco avrà il nome sdb e quello vecchio sarà denominato sda.
Il lavoro di laboratorio deve essere eseguito come superutente (root) poiché la maggior parte dei comandi richiede
privilegi elevati e non ha senso aumentare continuamente i privilegi tramite sudo.
Materiale per lo studio
- RAID
- LVM
- Denominazione dei dischi in Linux
- Che cos'è una partizione
- Che cos'è una tabella delle partizioni e dove si trova
- Che cos'è grub
Utilità utilizzate
1) visualizzazione delle informazioni sui dischi
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
- fdisk -l
2) visualizzazione delle informazioni e lavoro con LVM - pvs
- pvextend
- pvcreate
- pvresize
- vgs
- vgreduce
- lvs
- lvextend
3) visualizzazione delle informazioni e lavoro con RAID - cat /proc/mdstat
- mdadm
4) punti di montaggio - mount
- umount
- cat /etc/fstab
- cat /etc/mtab
5) ripartizionamento del disco - fdisk /dev/XXX
6) copia delle partizioni - dd if=/dev/xxx of=/dev/yyy
7) lavoro con la tabella delle partizioni - partx
- sfdisk
- mkfs.ext4
8) gestione del boot loader - grub-install /dev/XXX
- update-grub
9) misc - lsof
- apt
- rsync
Il laboratorio consiste in 3 parti:
- configurazione di un sistema funzionante utilizzando lvm, raid
- simulazione del guasto di uno dei dischi
- sostituzione dei dischi a caldo, con aggiunta di nuovi dischi e spostamento delle partizioni.
Compito 1 (Installazione del sistema operativo e configurazione di LVM, RAID)
1) Creare una nuova macchina virtuale con le seguenti caratteristiche:
- 1 gb ram
- 1 cpu
- 2 hdd (chiamali ssd1, ssd2 e assegna dimensioni uguali, mettendo i segni di spunta su hot swap e ssd)
- Il controller SATA è impostato su 4 porte

2) Iniziare l'installazione di Linux e, arrivati alla scelta dei dischi rigidi, fare quanto segue:
Metodo di partizionamento: manuale, dopodiché dovresti vedere questa schermata:

Configurazione della partizione separata per /boot: Seleziona il primo disco e crea una nuova tabella delle partizioni su di esso
- Dimensione della partizione: 512M
- Punto di mount: /boot
- Ripeti la configurazione per il secondo disco, ma poiché non è possibile montare 2 volte /boot contemporaneamente, seleziona punto di mount: none ottenendo così quanto segue (immagine con errore, rifare è noioso):

Configurazione RAID:
- Seleziona lo spazio libero sul primo disco e configurarlo come tipo di partizione volume fisico per RAID
- Seleziona «Fatto impostare la partizione»
- Ripeti esattamente la stessa configurazione per il secondo disco, ottenendo il seguente risultato:

- Seleziona l'opzione «Configura software RAID»
- Crea dispositivo MD
- Tipo di dispositivo RAID software: Seleziona il RAID a specchio
- Dispositivi attivi per l'array RAID XXXX: Seleziona entrambi i dischi
- Dispositivi di riserva: Lascia 0 per impostazione predefinita
- Dispositivi attivi per l'array RAID XX: seleziona le partizioni che hai creato per il raid
- Fine
- Alla fine, dovresti ottenere la seguente configurazione:

Configurazione LVM: Seleziona Configura il Logical Volume Manager
- Mantieni la disposizione delle partizioni attuale e configura LVM: Sì
- Crea gruppo di volumi
- Nome del gruppo di volumi: system
- Dispositivi per il nuovo gruppo di volumi: Seleziona il tuo RAID creato
- Crea volume logico
- nome volume logico: root
- dimensione del volume logico: 25 dal tuo disco
- Crea volume logico
- nome volume logico: var
- dimensione del volume logico: 25 dal tuo disco
- Crea volume logico
- nome volume logico: log
- dimensione del volume logico: 15 dal tuo disco
- Se selezioni Visualizza dettagli di configurazione, dovresti ottenere la seguente configurazione:

- Una volta completata la configurazione LVM, dovresti vedere il seguente risultato:

Partizionamento delle partizioni: seleziona a turno ogni volume creato in LVM e partizionalo, ad esempio, per root in questo modo:
- Usa come: ext4
- punto di montaggio: /
- il risultato della partizione della partizione radice dovrebbe essere simile a questo:

- ripeti l'operazione di partizionamento per var e log selezionando i corrispondenti punti di montaggio (/var e /var/log inseriti manualmente), ottenendo il seguente risultato:

- Seleziona Termina partizionamento
- Ti verranno poste alcune domande riguardo al fatto che hai partizioni non montate e che non hai configurato lo swap. Dovresti rispondere negativamente a entrambe le domande.
Il risultato finale dovrebbe essere così:

3) Completare l'installazione del sistema operativo installando grub sul primo dispositivo (sda) e avviare il sistema.
4) Eseguire la copia del contenuto della partizione /boot dal disco sda (ssd1) al disco sdb (ssd2)dd if=/dev/sda1 of=/dev/sdb15) Eseguire l'installazione di grub sul secondo dispositivo:
visualizza i dischi nel sistema:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTElenca tutti i dischi forniti dal comando precedente e descrivi che tipo di disco sono.
Trova il disco su cui non è stata eseguita l'installazione di grub ed esegui questa installazione:
grub-install /dev/sdbvisualizza le informazioni sul raid corrente con il comando cat /proc/mdstat e annota ciò che hai visto.
guarda i risultati dei comandi: pvs, vgs, lvs, mount e annota esattamente cosa hai visto.
Descrivi a parole tue cosa hai fatto e quale risultato hai ottenuto alla fine del compito.
Dopo aver completato questo compito, si consiglia di salvare una copia di backup della cartella con la macchina virtuale o fare
vagrant box:
Risultato: Macchina virtuale con dischi ssd1, ssd2
Compito 2 (Emulazione del guasto di uno dei dischi)
1) Se hai selezionato l'opzione hot swap, puoi rimuovere i dischi a caldo.
- Procedi con la rimozione del disco ssd1 nelle proprietà della macchina.
- Trova la directory in cui sono memorizzati i file della tua macchina virtuale e rimuovi ssd1.vmdk.
2) Assicurati che la tua macchina virtuale funzioni ancora.
3) Esegui il riavvio della macchina virtuale e verifica se funziona ancora.
4) Controlla lo stato dell'array RAID: cat /proc/mdstat.
5) Aggiungi un nuovo disco della stessa dimensione nell'interfaccia VM e chiamalo ssd3.
6) Esegui le operazioni: - Verifica che il nuovo disco sia stato riconosciuto nel sistema con il comando fdisk -l.
- Copia la tabella delle partizioni dal disco vecchio a quello nuovo: sfdisk -d /dev/XXXX | sfdisk /dev/YYY.
- Controlla il risultato con il comando fdisk -l.
- Aggiungi il nuovo disco all'array RAID: mdadm —manage /dev/md0 —add /dev/YYY.
- Verifica il risultato: cat /proc/mdstat. Dovresti vedere che è iniziata la sincronizzazione.
7) Ora devi eseguire manualmente la sincronizzazione delle partizioni che non fanno parte del RAID.
Per farlo, utilizziamo l'utilità dd, copiando dal disco 'vivo' su quello nuovo che hai appena installato.dd if=/dev/XXX of=/dev/YYY.8) Dopo aver completato la sincronizzazione, installa grub sul nuovo disco
9) Riavvia la VM per assicurarti che tutto funzioni
Descrivi a parole tue cosa hai fatto e quale risultato hai ottenuto alla fine del compito.
Risultato: Disco ssd1 rimosso, disco ssd2 conservato, disco ssd3 aggiunto.Compito 3 (Aggiunta di nuovi dischi e spostamento della partizione)
Questo è il compito più complesso e voluminoso tra tutti quelli presentati.
Verifica molto attentamente cosa stai facendo e con quali dischi e partizioni.
Si consiglia di fare un backup prima di procedere.
Questo compito è indipendente dal compito n. 2, può essere eseguito dopo il compito n. 1 tenendo conto dei nomi dei dischi.
La seconda parte di questo compito deve portare a uno stato esattamente uguale a quello che era dopo l'esecuzione della prima parte.Per facilitare il lavoro, ti consiglio di non rimuovere fisicamente i dischi dalla macchina host, ma solo di
disconnetterli nelle proprietà della macchina. Dal punto di vista del sistema operativo nella VM, apparirà esattamente uguale, ma potrai
in caso di necessità ricollegare il disco e continuare il lavoro tornando indietro di alcuni passaggi, se necessario.
hai avuto problemi. Ad esempio, potresti aver commesso un errore o dimenticato di copiare la partizione /boot su un nuovo disco.
Posso solo consigliarti di controllare più volte quali dischi e partizioni stai utilizzando, e ancor meglio
annotare su un foglio la corrispondenza tra dischi, partizioni e il numero «fisico» del disco. Un albero chiaro e comprensibile
viene disegnato dal comandolsblk, usalo il più spesso possibile per analizzare ciò che hai fatto e cosa deve essere fatto.A proposito...
Immagina che il tuo server abbia funzionato a lungo su due dischi SSD, quando improvvisamente...
1) Simula il guasto del disco ssd2, rimuovendo il disco dalle proprietà della VM e riavviando
2) Controlla lo stato attuale dei dischi e del RAID:cat /proc/mdstat fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT3) Sei fortunato: la direzione ha autorizzato l'acquisto di alcuni nuovi dischi:
2 SATA di grande capacità per il compito urgente di spostare la partizione dei log su un disco separato
2 SSD da sostituire quello guasto, e anche per sostituire quello che è ancora funzionante.
È importante tenere presente che il cestino server supporta solo l'installazione di 4 dischi contemporaneamente,
quindi non è possibile aggiungere tutti i dischi contemporaneamente.Scegliere la capacità dell'HDD come il doppio di quella dell'SSD.
La capacità SSD da scegliere è 1,25 volte superiore rispetto ai precedenti SSD.4) Aggiungi un nuovo disco SSD, chiamandolo ssd4, e dopo averlo aggiunto, controlla cosa è successo:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT5) Prima di tutto, è necessario preoccuparsi della sicurezza dei dati del vecchio disco.
Questa volta trasferiremo i dati utilizzando LVM:- prima di tutto è necessario copiare la tabella dei file dal vecchio disco a quello nuovo:
sfdisk -d /dev/XXX | sfdisk /dev/YYYSostituisci x,y con i dischi corretti e spiega cosa fa questo comando.
Esegui il comando lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT e confronta il suo output con la chiamata precedente.
Cosa è cambiato?
utilizzando il comando dd copia i dati da /boot sul nuovo discodd if=/dev/XXX of=/dev/YYY.se /boot è ancora montato sul vecchio disco, deve essere rimontato sul disco attivo:
mount | grep boot # controlla dove è montato il disco lsblk # controlla quali dischi sono nel sistema e verifica se esiste il disco ottenuto dal punto precedente umount /boot # smonta /boot mount -a # esegui il montaggio di tutti i punti secondo /etc/fstab. # Poiché è indicato il punto di montaggio /dev/sda, verrà eseguito il rimontaggio corretto sul disco attivoInstalla il bootloader sul nuovo disco SSD
grub-install /dev/YYYPerché eseguiamo questa operazione?
crea un nuovo array RAID includendo solo un nuovo disco SSD:
mdadm --create --verbose /dev/md63 --level=1 --raid-devices=1 /dev/YYYIl comando sopra non funzionerà senza l'aggiunta dell'opzione speciale.
Leggi la documentazione e aggiungi questa opzione al comando.Controlla il risultato della tua operazione con il comando cat /proc/mdstat. Cosa è cambiato?
Esegui il comando lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT e confronta il suo output con la chiamata precedente.
Cosa è cambiato?
6) Il passaggio successivo è configurare LVM
esegui il comando pvs per visualizzare le informazioni sugli attuali volumi fisici
crea un nuovo volume fisico includendo l'array RAID creato in precedenza:pvcreate /dev/md63Esegui il comando lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT e confronta il suo output con la chiamata precedente.
Cosa è cambiato?
Esegui di nuovo il comando pvs. Cosa è cambiato?
Aumentiamo la dimensione del Volume Group system con il seguente comando:vgextend system /dev/md63Esegui i comandi e annota cosa hai visto e cosa è cambiato.
vgdisplay system -v pvs vgs lvs -a -o+devicesSu quale disco fisico si trovano ora i LV var, log, root?
Esegui il trasferimento dei dati dal vecchio disco al nuovo, inserendo i nomi dei dispositivi corretti.
pvmove -i 10 -n /dev/system/root /dev/md0 /dev/md63Ripeti l'operazione per tutti i logical volume
Esegui i comandi e annota cosa hai visto e cosa è cambiato.
vgdisplay system -v pvs vgs lvs -a -o+devices lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTModifichiamo il nostro VG, rimuovendo il disco del vecchio RAID. Inserisci il nome corretto del RAID.
vgreduce system /dev/md0Esegui i comandi e annota cosa hai visto e cosa è cambiato.
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT pvs vgsPer completare l'immagine, rimonta /boot sul secondo disco SSD (ssd4) e esegui lsblk. Di conseguenza, sul disco ssd3 non
non dovrebbe essere montato nulla. Controlla attentamente che la partizione /boot non sia vuota!ls /bootdovrebbe mostrare
alcuni file e cartelle. Esamina cosa è memorizzato in questa partizione e annota a cosa serve ogni file/cartella.
7) rimuovi il disco ssd3 e aggiungi ssd5, hdd1, hdd2 secondo le specifiche sopra descritte, ottenendo infine:
ssd4 — primo nuovo SSD
ssd5 — secondo nuovo SSD
hdd1 — primo nuovo HDD
hdd2 — secondo nuovo HDD8) Controlla cosa è successo dopo l'aggiunta dei dischi:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT9) Ripristiniamo il funzionamento dell'array RAID principale:
- esegui la copia della tabella delle partizioni, sostituendo i dischi corretti:
sfdisk -d /dev/XXX | sfdisk /dev/YYY - Si prega di notare che quando abbiamo copiato la tabella delle partizioni dal disco vecchio, si è scoperto che la nuova dimensione
non utilizza l'intera capacità del disco rigido.
Quindi, presto dovremo modificare le dimensioni di questa partizione ed espandere il RAID.
Convinciti di questo, inserendo il comando:lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT10) copia la partizione di avvio /boot dal disco ssd4 a ssd5
dd if=/dev/XXX of=/dev/YYY.11) Installa grub sul nuovo disco (ssd5)
12) cambiamo le dimensioni della seconda partizione del disco ssd5avvia l'utility per la gestione delle partizioni del disco:
fdisk /dev/XXXinserisci il tasto d per rimuovere la partizione esistente (seleziona 2)
inserisci il tasto n per creare una nuova partizione
inserisci il tasto p per specificare il tipo di partizione "primaria"
inserisci il tasto 2 affinché la nuova partizione abbia il secondo numero
Settore iniziale: premi invio per accettare la dimensione calcolata automaticamente dell'inizio della partizione
Settore finale: premi invio per accettare la dimensione calcolata automaticamente della fine della partizione
inserisci il tasto l per vedere l'elenco di tutti i possibili tipi di partizioni e trova Linux raid auto in esso
inserisci il tasto t per cambiare il tipo della partizione creata (2) e inserisci il numero trovato nel passo precedente.
inserisci il tasto w per scrivere la modifica su disco.
12) rileggiamo la tabella delle partizioni e controlliamo il risultatopartx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTaggiungiamo un nuovo disco all'attuale array raid (non dimenticare di inserire i dischi corretti)
mdadm --manage /dev/md63 --add /dev/sda2Espanderemo il numero di dischi nel nostro array a 2:
mdadm --grow /dev/md63 --raid-devices=2Guarda il risultato: abbiamo segnato 2 array, ma entrambe le partizioni in questo array hanno dimensioni diverse.
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT13) Aumentiamo la dimensione della partizione sul disco ssd4.
avvia l'utility per la gestione delle partizioni del disco:
fdisk /dev/XXXinserisci il tasto d per rimuovere la partizione esistente (seleziona 2)
inserisci il tasto n per creare una nuova partizione
inserisci il tasto p per specificare il tipo di partizione "primaria"
inserisci il tasto 2 affinché la nuova partizione abbia il secondo numero
Settore iniziale: premi invio per accettare la dimensione calcolata automaticamente dell'inizio della partizione
Settore finale: premi invio per accettare la dimensione calcolata automaticamente della fine della partizione
Alla fine della partizione, seleziona No per mantenere la firma di appartenenza della partizione all'array.
inserisci il tasto w per scrivere la modifica su disco.
12) rileggiamo la tabella delle partizioni e controlliamo il risultatopartx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTNota che ora le partizioni sda2 e sdc2 hanno una dimensione maggiore rispetto alla dimensione del dispositivo raid.
13) In questo passaggio, la dimensione del raid può essere ora ampliata.
mdadm --grow /dev/md63 --size=max lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT # controlla il risultatoControlla lsblk e annota cosa è cambiato.
14) Tuttavia, anche se abbiamo cambiato la dimensione del raid, le dimensioni di vg root, var, log non sono cambiate.- Guarda quale è la dimensione del PV:
pvs - Ampiamo la dimensione del nostro PV:
pvresize /dev/md63 - Guarda quale è la dimensione del PV:
pvs15) Aggiungiamo il nuovo spazio a VG var, root.
lvs # vediamo quanto è attualmente allocato lvextend -l +50%FREE /dev/system/root lvextend -l +100%FREE /dev/system/var lvs # verifica il risultatoA questo punto hai completato la migrazione dell'array principale su nuovi dischi. Il lavoro con ssd1 e ssd2 è terminato.
16) Il nostro prossimo obiettivo è spostare /var/log su nuovi dischi, quindi creeremo un nuovo array e lvm su dischi hdd.
- Controlliamo quali nomi hanno i nuovi dischi hdd.
fdisk -l - Creiamo un array raid.
mdadm --create /dev/md127 --level=1 --raid-devices=2 /dev/sdc /dev/sdd - creeremo un nuovo PV su RAID con grandi dischi
pvcreate data /dev/md127 - creeremo in questo PV un gruppo chiamato data
vgcreate data /dev/md127 - creeremo un volume logico che utilizza tutto lo spazio libero e lo chiameremo val_log
lvcreate -l 100%FREE -n var_log data # lvs # vediamo il risultato - formattiamo la partizione creata in ext4
mkfs.ext4 /dev/mapper/data-var_log - diamo un'occhiata al risultato
lsblk17) sposteremo i dati dei log dalla vecchia partizione alla nuova
montiamo temporaneamente il nuovo spazio per i log
mount /dev/mapper/data-var_log /mnteseguiamo la sincronizzazione delle partizioni
apt install rsync rsync -avzr /var/log/ /mnt/verifichiamo quali processi stanno attualmente utilizzando /var/log
apt install lsof lsof | grep '/var/log'fermiamo questi processi
systemctl stop rsyslog.service syslog.socketeseguiamo la sincronizzazione finale delle partizioni (le informazioni che potrebbero essere cambiate dall'ultima sincronizzazione)
rsync -avzr /var/log/ /mnt/scambiamo le partizioni
umount /mnt umount /var/log mount /dev/mapper/data-var_log /var/logcontrolliamo il risultato
lsblk18) Modifichiamo /etc/fstab
fstab è il file dove vengono scritte le regole per il montaggio delle partizioni all'avvio
il nostro obiettivo è trovare la riga in cui viene montato /var/log e correggere il dispositivosystem-logcondata-var_log19) La cosa più importante in questa fase è non dimenticare di modificare la tabella delle partizioni (ad esempio ext4). Poiché, per quanto possiamo variare i vari raid, lvm - finché il file system nella partizione non è informato che ora la dimensione della partizione è cambiata, non potremo utilizzare il nuovo spazio. Usa il comando
resize2fsper modificare il file system.20) Il passo finale
- eseguiamo un riavvio. Se hai fatto tutto correttamente, accederai di nuovo al tuo sistema operativo (questo è necessario per assicurarti che tutto funzioni. Non ha alcun senso al di fuori della verifica personale, questo passaggio non ha valore).
- Esegui i controlli per assicurarti che tutto ciò che volevamo fare sia stato effettivamente fatto:
pvs lvs vgs lsblk cat /proc/mdstat
21) [OPZIONALE] Esegui le azioni
- riavviati premendo F12 per selezionare dischi diversi all'avvio, per assicurarti di poter avviare
da uno qualsiasi dei dischi SSD, in modo da non avere paura di un guasto di uno di essi. - Ora hai un LV log non necessario nel VG system. Distribuisci questo spazio tra root o var, ma invece di usare
la costruzione 100%FREE, specifica manualmente la dimensione usando l'opzione -L:-L 500M - Correggi il problema con il fatto che /boot si trova su due partizioni senza sincronizzazione, non è corretto farlo così.
Qui è stato aggiunto come esempio. Non dimenticare di copiare prima il contenuto di /boot da qualche parte.- Crea un nuovo RAID e includi sda1, sda2.
- Includi queste partizioni nel RAID esistente e ripristina /boot nel RAID principale, ma senza montarlo.
- Controlliamo quali nomi hanno i nuovi dischi hdd.
- Guarda quale è la dimensione del PV:
- esegui la copia della tabella delle partizioni, sostituendo i dischi corretti:
- prima di tutto è necessario copiare la tabella dei file dal vecchio disco a quello nuovo:
Fonte: habr.com









