Piccolo digressione: questo laboratorio è di natura sintetica.
Alcuni compiti descritti qui possono essere svolti molto più facilmente, ma poiché l'obiettivo del laboratorio è conoscere
le funzionalità di raid, lvm, alcune operazioni sono artificialmente complicate.
Requisiti degli strumenti per svolgere il laboratorio:
- Strumenti di virtualizzazione, ad esempio Virtualbox
- Un'immagine di installazione di linux, ad esempio
- Avere accesso a internet per scaricare alcuni pacchetti
- Connessione ssh alla VM installata (opzionale)
ATTENZIONE
Questo laboratorio è legato a un argomento delicato come la sicurezza dei dati: è un'area
che può far perdere tutti i vostri dati a causa di una minima svista—una lettera o cifra in più.
Poiché state svolgendo un lavoro di laboratorio, non correte alcun rischio, a meno che non dobbiate ricominciare da capo.
Nella vita reale, tutto è molto più serio, quindi bisogna prestare molta attenzione a digitare i nomi dei dischi, comprendendo
cosa si sta eseguendo con il comando attuale e con quali dischi si sta operando.
Un secondo punto importante è la denominazione dei dischi e delle partizioni: a seconda della situazione, i numeri dei dischi possono differire
da quelli indicati nei comandi del laboratorio.
Ad esempio, se si rimuove il disco sda dall'array e poi si aggiunge un nuovo disco, il nuovo disco verrà visualizzato
nel sistema con il nome sda. Se invece si esegue un riavvio prima di aggiungere il nuovo disco, allora il nuovo
disco avrà il nome sdb, mentre il vecchio sarà nominato sda.
Il lavoro di laboratorio deve essere eseguito come superutente (root) poiché la maggior parte dei comandi richiede
privilegi elevati ed è inutile aumentare costantemente i privilegi tramite sudo.
Materiali per lo studio
- RAID
- LVM
- Denominazione dei dischi nel sistema operativo Linux
- Cos'è una partizione
- Cos'è una tabella delle partizioni e dove viene memorizzata
- Cos'è grub
Utilità utilizzate
1) visualizzazione delle informazioni sui dischi
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
- fdisk -l
2) visualizzazione delle informazioni e gestione di LVM - pvs
- pvextend
- pvcreate
- pvresize
- vgs
- vgreduce
- lvs
- lvextend
3) visualizzazione delle informazioni e gestione di RAID - cat /proc/mdstat
- mdadm
4) punti di montaggio - mount
- umount
- cat /etc/fstab
- cat /etc/mtab
5) riformattazione del disco - fdisk /dev/XXX
6) copia delle partizioni - dd if=/dev/xxx of=/dev/yyy
7) gestione della tabella delle partizioni - partx
- sfdisk
- mkfs.ext4
8) gestione del bootloader - grub-install /dev/XXX
- update-grub
9) vario - lsof
- apt
- rsync
Il lavoro di laboratorio è composto da 3 parti:
- configurazione di un sistema funzionante utilizzando lvm, raid
- emulazione del guasto di uno dei dischi
- sostituzione dei dischi a caldo, con aggiunta di nuovi dischi e trasferimento delle partizioni.
Compito 1 (Installazione del SO e configurazione di LVM, RAID)
1) Creare una nuova macchina virtuale, assegnandole le seguenti caratteristiche:
- 1 gb ram
- 1 cpu
- 2 hdd (chiamarli ssd1, ssd2 e assegnare una dimensione uguale, spuntare le caselle hot swap e ssd)
- Il controller SATA è configurato su 4 porte

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

Configurazione di una partizione separata per /boot: Selezionare il primo disco e creare una nuova tabella delle partizioni su di esso
- Dimensione della partizione: 512M
- Punto di mount: /boot
- Ripetere la configurazione per il secondo disco, ma poiché non è possibile montare /boot due volte contemporaneamente, selezionare il punto di mount: none ottenendo infine quanto segue (immagine con errore, rifare è faticoso):

Configurazione RAID:
- Selezionare lo spazio libero sul primo disco e configurare come tipo di partizione volume fisico per RAID
- Selezionare «Fatto impostazione della partizione»
- Ripetere esattamente la stessa configurazione per il secondo disco, ottenendo infine quanto segue:

- Selezionare «Configura RAID software»
- Crea dispositivo MD
- Tipo di dispositivo RAID software: Selezionare array mirror
- Dispositivi attivi per l'array RAID XXXX: Selezionare entrambi i dischi
- Dispositivi di riserva: Lasciare 0 per impostazione predefinita
- Dispositivi attivi per l'array RAID XX: selezionare le partizioni che avete creato per il raid
- Fine
- In definitiva dovreste ottenere qualcosa di simile:

Configurazione LVM: Selezionare Configura il Logical Volume Manager
- Mantieni il layout delle partizioni attuale e configura LVM: Sì
- Crea gruppo di volume
- Nome del gruppo di volume: system
- Dispositivi per il nuovo gruppo di volume: Selezionare il vostro RAID creato
- Crea volume logico
- nome volume logico: root
- dimensione volume logico: 25 della dimensione del disco
- Crea volume logico
- nome volume logico: var
- dimensione volume logico: 25 della dimensione del disco
- Crea volume logico
- nome volume logico: log
- dimensione volume logico: 15 della dimensione del disco
- Se selezionate Visualizza dettagli di configurazione dovreste ottenere quanto segue:

- Completata la configurazione di LVM dovreste vedere quanto segue:

Partizionamento delle partizioni: selezionare a turno ogni volume creato in LVM e partizionarli, per esempio, per root in questo modo:
- Usa come: ext4
- punto di mount: /
- il risultato della partizione della partizione radice dovrebbe risultare così:

- ripetere l'operazione di partizionamento per var e log selezionando i rispettivi punti di mount (/var e /var/log inserire manualmente), ottenendo il risultato seguente:

- Selezionare Fine partizionamento
- Vi verranno poste alcune domande riguardo a una partizione non montata e al fatto che non sia stato configurato lo swap. Dovete rispondere negativamente a entrambe le domande.
Il risultato finale dovrebbe apparire così:

3) Completa l'installazione del sistema operativo, installando grub sul primo dispositivo (sda) e avviando il sistema.
4) Esegui la copia del contenuto della partizione /boot dal disco sda (ssd1) al disco sdb (ssd2)dd if=/dev/sda1 of=/dev/sdb15) Installa grub sul secondo dispositivo:
visualizza i dischi nel sistema:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTElenca tutti i dischi restituiti dal comando precedente e descrivi di che tipo di disco si tratta
Trova il disco su cui non è stata eseguita l'installazione di grub e esegui questa installazione:
grub-install /dev/sdbvisualizza le informazioni sul raid corrente con il comando cat /proc/mdstat e annota cosa hai visto.
guarda i risultati dei comandi: pvs, vgs, lvs, mount e annota cosa hai visto
Descrivi a parole tue cosa hai fatto e quale risultato hai ottenuto alla fine di questo compito
Dopo aver completato questo compito, è consigliabile salvare una copia di sicurezza della cartella con la macchina virtuale oppure fare
vagrant box:
Risultato: Macchina virtuale con i dischi ssd1, ssd2
Compito 2 (Emulazione di guasto di uno dei dischi)
1) Se hai selezionato il hot swap, puoi rimuovere i dischi a caldo
- Esegui 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 assicurati che funzioni ancora
4) controlla lo stato dell'array RAID: cat /proc/mdstat
5) aggiungi nell'interfaccia VM un nuovo disco della stessa dimensione e chiamalo ssd3
6) esegui le operazioni: - controlla che il nuovo disco sia stato riconosciuto nel sistema con il comando fdisk -l
- copia la tabella delle partizioni dal vecchio disco al 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
- Guarda 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 da un disco 'vivo' al nuovo disco che hai recentemente inseritodd if=/dev/XXX of=/dev/YYY8) Dopo aver completato la sincronizzazione, installa grub sul nuovo disco
9) Esegui il riavvio della VM per assicurarti che tutto funzioni
Descrivi a parole tue cosa hai fatto e quale risultato hai ottenuto alla fine di questo 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ù difficile e voluminoso tra tutti quelli presentati.
Controllate molto attentamente cosa state facendo e con quali dischi e partizioni.
È consigliabile eseguire un backup prima di procedere.
Questo compito è indipendente dal compito n. 2, può essere eseguito dopo il compito n. 1 con riferimento ai nomi dei dischi.
La seconda parte di questo compito deve riportare esattamente lo stesso stato che c'era dopo il completamento della prima parte.Per facilitarvi il lavoro, consiglio di non rimuovere fisicamente i dischi dalla macchina host, ma solo di
scollegarli nelle proprietà della macchina. Dal punto di vista del sistema operativo nella VM, apparirà esattamente allo stesso modo, ma potrete
nel caso, ricollegare il disco e continuare il lavoro tornando indietro di alcuni punti nel caso in cui
si presentassero problemi. Ad esempio, potreste aver eseguito un'operazione errata o dimenticato di copiare la partizione /boot sul nuovo disco.
Posso solo consigliare di controllare più volte con quali dischi e partizioni state lavorando, e ancor meglio
annotare su un foglietto la corrispondenza tra dischi, partizioni e il numero "fisico" del disco. Un albero chiaro e comprensibile
viene disegnato dal comandolsblk, usatelo il più spesso possibile per analizzare ciò che avete fatto e cosa bisogna fare.Alla storia…
Immaginate che il vostro server abbia funzionato per lungo tempo con 2 dischi SSD, quando all'improvviso…
1) Simulate il guasto del disco ssd2, rimuovendo il disco dalle proprietà della VM e riavviando
2) Controllate lo stato attuale dei dischi e del RAID:cat /proc/mdstat fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT3) È stata una fortuna — la direzione ha autorizzato l'acquisto di alcuni nuovi dischi:
2 SATA di grande capacità per il compito di spostare la partizione dei log su un disco separato
2 SSD per sostituire quello guasto, e anche per sostituire quello che funziona ancora.
Si deve tenere presente che il cestino server supporta solo 4 dischi contemporaneamente,
quindi non è possibile aggiungere tutti i dischi contemporaneamente.La capacità dell'HDD deve essere scelta 2 volte superiore a quella degli SSD.
La capacità degli SSD deve essere scelta 1,25 volte superiore a quella dei precedenti SSD.4) Aggiungete un nuovo disco SSD, chiamandolo ssd4, e dopo l'aggiunta controllate cosa è successo:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT5) In primo luogo, è necessario preoccuparsi della sicurezza dei dati del vecchio disco.
Questa volta trasferiremo i dati utilizzando LVM:- In primo luogo, è necessario copiare la tabella dei file dal vecchio disco a quello nuovo:
sfdisk -d /dev/XXX | sfdisk /dev/YYYSostituite x,y con i dischi corretti e spiegate cosa fa questo comando.
Eseguite il comando lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT e confrontate il suo output con la chiamata precedente.
Cosa è cambiato?
Utilizzando il comando dd, copiate i dati /boot sul nuovo discodd if=/dev/XXX of=/dev/YYYse /boot è ancora montato sul vecchio disco, dovrebbe essere rimontato sul disco attivo:
mount | grep boot # vediamo dove è montato il disco lsblk # controlliamo quali dischi ci sono nel sistema e se c'è il disco ottenuto dal punto precedente umount /boot # smontiamo /boot mount -a # eseguiamo il montaggio di tutti i punti secondo /etc/fstab. # Poiché è specificato il punto di montaggio /dev/sda, verrà eseguito un corretto rimontaggio sul disco attivoInstallate il bootloader sul nuovo disco SSD
grub-install /dev/YYYPerché stiamo eseguendo questa operazione?
create 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'indicazione di una chiave speciale.
Leggete il manuale e aggiungete questa chiave al comando.Utilizzando il comando cat /proc/mdstat, verificate il risultato della vostra operazione. Cosa è cambiato?
Eseguite il comando lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT e confrontate il suo output con la chiamata precedente.
Cosa è cambiato?
6) Il passo successivo è configurare LVM
eseguite il comando pvs per visualizzare le informazioni sui volumi fisici attuali
create un nuovo volume fisico includendo l'array RAID precedentemente creato:pvcreate /dev/md63Eseguite il comando lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT e confrontate il suo output con la chiamata precedente.
Cosa è cambiato?
Eseguite di nuovo il comando pvs. Cosa è cambiato?
Aumentiamo la dimensione del Volume Group system con questo comando:vgextend system /dev/md63Eseguite i comandi e annotate cosa avete visto e cosa è cambiato.
vgdisplay system -v pvs vgs lvs -a -o+devicesSu quale disco fisico si trovano attualmente LV var, log, root?
Eseguite lo spostamento dei dati dal vecchio disco al nuovo, sostituendo i nomi corretti dei dispositivi.
pvmove -i 10 -n /dev/system/root /dev/md0 /dev/md63Ripetete l'operazione per tutti i volumi logici
Eseguite i comandi e annotate cosa avete 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. Sostituite con il nome corretto del RAID.
vgreduce system /dev/md0Eseguite i comandi e annotate cosa avete visto e cosa è cambiato.
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT pvs vgsPer ragioni di correttezza rimontate /boot sul secondo disco SSD (ssd4) e eseguite lsblk. Di conseguenza, sul disco ssd3 non
dovrebbe esserci nulla montato. Controllate attentamente che la partizione /boot non sia vuota!ls /bootdovrebbe mostrare
alcuni file e cartelle. Esamina cosa è conservato in questa sezione e annota quale file/cartella corrisponde a cosa.
7) rimuovi il disco ssd3 e aggiungi ssd5, hdd1, hdd2 secondo le specifiche sopra descritte, ottenendo:
ssd4 — il primo nuovo ssd
ssd5 — il secondo nuovo ssd
hdd1 — il primo nuovo hdd
hdd2 — il secondo nuovo hdd8) Controlla cosa è successo dopo aver aggiunto i dischi:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT9) Ripristiniamo il funzionamento dell'array raid principale:
- esegui la copia della tabella delle partizioni, inserendo i dischi corretti:
sfdisk -d /dev/XXX | sfdisk /dev/YYY - Nota che quando abbiamo copiato la tabella delle partizioni dal vecchio disco, sembrava che la nuova dimensione
non utilizzasse l'intera capacità del disco rigido.
Pertanto, a breve ci servirà modificare la dimensione di questa partizione ed espandere il raid.
Assicurati di questo, inserendo il comando:lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT10) copia la partizione di avvio /boot dal disco ssd4 su ssd5
dd if=/dev/XXX of=/dev/YYY11) Installa grub sul nuovo disco (ssd5)
12) modifichiamo la dimensione della seconda partizione del disco ssd5avvia l'utilità per lavorare con il partizionamento dei dischi:
fdisk /dev/XXXinserisci il tasto d per eliminare la partizione esistente (scegli 2)
inserisci il tasto n per creare una nuova partizione
inserisci il tasto p per indicare il tipo di partizione 'primaria'
inserisci il tasto 2 affinché la nuova partizione abbia il secondo numero
Primo settore: premi invio per accettare la dimensione calcolata automaticamente dell'inizio della partizione
Ultimo settore: 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 in esso Linux raid auto
inserisci il tasto t per modificare il tipo della partizione creata (2) e inserisci il numero trovato nel passaggio precedente.
inserisci il tasto w per registrare la modifica sul disco.
12) rileggiamo la tabella delle partizioni e verifichiamo 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/sda2Espandiamo il numero di dischi nel nostro array a 2 unità:
mdadm --grow /dev/md63 --raid-devices=2Guarda il risultato: abbiamo 2 array partizionati, ma entrambe le partizioni che fanno parte di questo array hanno dimensioni diverse
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT13) aumentiamo la dimensione della partizione sul disco ssd4
avvia l'utilità per lavorare con il partizionamento dei dischi:
fdisk /dev/XXXinserisci il tasto d per eliminare la partizione esistente (scegli 2)
inserisci il tasto n per creare una nuova partizione
inserisci il tasto p per indicare il tipo di partizione 'primaria'
inserisci il tasto 2 affinché la nuova partizione abbia il secondo numero
Primo settore: premi invio per accettare la dimensione calcolata automaticamente dell'inizio della partizione
Ultimo settore: premi invio per accettare la dimensione calcolata automaticamente della fine della partizione
Alla fine del partizionamento è necessario scegliere No, per mantenere la firma di appartenenza della partizione all'array.
inserisci il tasto w per registrare la modifica sul disco.
12) rileggiamo la tabella delle partizioni e verifichiamo il risultatopartx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTNota, ora le partizioni sda2, sdc2 hanno una dimensione > rispetto alla dimensione del dispositivo raid.
13) A questo punto, la dimensione del raid può ora essere 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 a quale è la dimensione del PV:
pvs - ampliamo la dimensione del nostro PV:
pvresize /dev/md63 - guarda a quale è la dimensione del PV:
pvs15) Aggiungiamo lo spazio appena creato a VG var, root
lvs # vediamo quanto è stato 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 del volume principale su nuovi dischi. il lavoro con ssd1, ssd2 è terminato
16) Il nostro prossimo compito è spostare /var/log sui nuovi dischi, quindi creeremo un nuovo array e lvm su dischi hdd.
- vediamo 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 - creiamo un nuovo PV sul raid dei dischi più grandi
pvcreate data /dev/md127 - creiamo in questo PV un gruppo chiamato data
vgcreate data /dev/md127 - creiamo un volume logico che occupi tutto lo spazio disponibile 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 - controlla il risultato
lsblk17) trasferiamo i dati dei log dalla vecchia partizione alla nuova
montiamo temporaneamente il nuovo storage dei log
mount /dev/mapper/data-var_log /mnteseguiamo la sincronizzazione delle partizioni
apt install rsync rsync -avzr /var/log/ /mnt/individuiamo quali processi stanno attualmente lavorando con /var/log
apt install lsof lsof | grep '/var/log'fermiamo questi processi
systemctl stop rsyslog.service syslog.socketeffettuiamo la sincronizzazione finale delle partizioni (dei dati che potrebbero essere cambiati dal momento dell'ultima sincronizzazione)
rsync -avzr /var/log/ /mnt/scambiamo le partizioni
umount /mnt umount /var/log mount /dev/mapper/data-var_log /var/logverifichiamo cosa è stato fatto
lsblk18) Modifichiamo /etc/fstab
fstab è il file in cui vengono registrate le regole secondo cui le partizioni saranno montate all'avvio
il nostro obiettivo è trovare quella riga in cui viene montato /var/log e correggere il dispositivosystem-logindata-var_log19) La cosa più importante a questo punto è non dimenticare di modificare la tabella delle partizioni (ext4, ad esempio). Perché per quanto possiamo cambiare vari raid, lvm — finché il FS sulla partizione non sarà stato avvisato che ora la dimensione della partizione è cambiata, non potremo utilizzare il nuovo spazio. Usa il comando
resize2fsper modificare il FS.20) Accordo finale
- eseguiremo un riavvio. Se hai fatto tutto correttamente, tornerai al tuo sistema operativo (questo è necessario per assicurarti che tutto funzioni. Non ha altro significato se non quello di autoconvalida).
- verifica che tutto ciò che volevamo fare sia stato realmente fatto:
pvs lvs vgs lsblk cat /proc/mdstat
21) [OPZIONALE] Esegui le azioni
- riavvia premendo F12 per specificare diversi dischi all'avvio, in modo da assicurarti che tu possa avviarti
da uno qualsiasi dei dischi SSD, in modo che non temiamo il 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 la dimensione manualmente con il flag -L:-L 500M - correggi il problema con il fatto che /boot è su due partizioni senza sincronizzazione, non dovrebbe essere fatto in questo modo.
qui è stato aggiunto per esempio. Non dimenticare di copiare prima da qualche parte il contenuto di /boot.- crea un nuovo raid e includi sda1, sda2
- includi queste partizioni nel raid esistente e ripristina /boot nel raid principale, ma senza montarlo.
- vediamo quali nomi hanno i nuovi dischi hdd
- guarda a quale è la dimensione del PV:
- esegui la copia della tabella delle partizioni, inserendo i dischi corretti:
- In primo luogo, è necessario copiare la tabella dei file dal vecchio disco a quello nuovo:
Fonte: habr.com









