Nota:
- Questa esercitazione è disponibile in un ambiente di laboratorio gratuito fornito da Oracle.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituire questi valori con quelli specifici del tuo ambiente cloud.
Configurazione dei volumi logici RAID su Oracle Linux
Introduzione
Il RAID LVM è un metodo per creare un LV (Logical Volume) che utilizza più dispositivi fisici per migliorare le prestazioni o tollerare gli errori dei dispositivi. In LVM i dispositivi fisici sono volumi fisici (PV, Physical Volumes) in un singolo gruppo di volumi (VG).
Questa esercitazione utilizza le utility di Oracle Linux Volume Manager per creare un volume logico RAID e quindi per risolvere il problema di un guasto al disco.
Obiettivi
- Creare un volume logico RAID
- Ridimensionare un volume logico RAID
- Recuperare un dispositivo RAID non riuscito
Prerequisiti
Qualsiasi sistema Oracle Linux 8 con le configurazioni seguenti:
- un utente non root con autorizzazioni sudo
- volumi a blocchi aggiuntivi da utilizzare con LVM
Imposta ambiente laboratorio
Nota: quando si utilizza l'ambiente di laboratorio gratuito, vedere Oracle Linux Lab Basics per le connessioni e altre istruzioni d'uso.
-
Se non è già connesso, aprire un terminale e connettersi tramite ssh a ciascuna istanza sopra indicata.
ssh oracle@<ip_address_of_instance>
-
Verificare che i volumi a blocchi esistano.
sudo lsblk
L'output dell'ambiente di laboratorio gratuito deve contenere /dev/sda per il file system esistente e i dischi disponibili /dev/sdb, /dev/sdc, /dev/sdd e /dev/sde. Sono inoltre disponibili due dischi aggiuntivi (/dev/sdf, /dev/sdg) che verranno utilizzati in un secondo momento.
Volume fisico (PV)
-
Creare i volumi fisici (PV) utilizzando i dischi disponibili.
sudo pvcreate -v /dev/sd[b-e]
Eseguire il comando con l'opzione
-v
per ottenere informazioni descrittive. -
Verificare la creazione del PV.
sudo pvs
Output di esempio:
[oracle@ol-node01 ~]$ sudo pvs PV VG Fmt Attr PSize PFree /dev/sda3 ocivolume lvm2 a-- 45.47g 0 /dev/sdb lvm2 --- 50.00g 50.00g /dev/sdc lvm2 --- 50.00g 50.00g /dev/sdd lvm2 --- 50.00g 50.00g /dev/sde lvm2 --- 50.00g 50.00g
Gruppo di volumi (VG)
-
Creare il gruppo di volumi (VG) utilizzando i volumi fisici appena creati.
sudo vgcreate -v foo /dev/sd[b-e]
-
Verificare la creazione del VG.
sudo vgs
Output di esempio:
[oracle@ol-node01 ~]$ sudo vgs VG #PV #LV #SN Attr VSize VFree foo 4 0 0 wz--n- 199.98g 199.98g ocivolume 1 2 0 wz--n- 45.47g 0
Volume logico (LV)
-
Creare il volume logico RAID (LV).
sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo
--type
: impostare il livello RAID. LVM supporta i livelli RAID 0, 1, 4, 5, 6 e 10.-i
: impostare il numero (n) di stripe (dispositivi) per un volume logico RAID 4/5/6. Un LV raid5 richiede dispositivi n+1.-L
: dimensione totale dell'array RAID.-n
: nome dell'array RAID.
Output di esempio:
[oracle@ol-node01 ~]$ sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo Using default stripesize 64.00 KiB. Rounding size 5.00 GiB (1280 extents) up to stripe boundary size 5.00 GiB (1281 extents). Logical volume "rr" created.
Per ulteriori informazioni, vedere la pagina man
lvmraid(7)
. -
Verificare la creazione del v. el.
sudo lvdisplay foo
L'output mostra tutti i volumi logici contenuti nel foo VG.
Output di esempio:
[oracle@ol-node01 ~]$ sudo lvdisplay foo --- Logical volume --- LV Path /dev/foo/rr LV Name rr VG Name foo LV UUID vghyRi-nKGM-3b9t-tB1I-biJX-10h6-UJWvm2 LV Write Access read/write LV Creation host, time ol-node01, 2022-05-19 01:23:46 +0000 LV Status available # open 0 LV Size 5.00 GiB Current LE 1281 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 1024 Block device 252:10
-
Visualizzare il tipo di LV.
sudo lvs -o name,segtype foo/rr
- Il comando
lvs
può assumere il percorso LV completo come opzione per limitare i risultati.
Output di esempio:
[oracle@ol-node01 ~]$ sudo lvs -o name,segtype /dev/foo/rr LV Type rr raid5
- Il comando
Creare un file system
-
Creare un file system XFS nell'LV RAID.
sudo mkfs.xfs -f /dev/foo/rr
-f
: forza la sovrascrittura di un file system esistente.
Output di esempio:
[oracle@ol-node01 ~]$ sudo mkfs.xfs -f /dev/foo/rr meta-data=/dev/foo/rr isize=512 agcount=8, agsize=163952 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=1311616, imaxpct=25 = sunit=16 swidth=48 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Nota: il file system XFS non può ridurne le dimensioni dopo la creazione. Tuttavia, il comando xfs_growfs può ingrandirlo.
Attivare l'LV RAID
-
Attivare il file system.
sudo mkdir -p /u01 sudo mount /dev/foo/rr /u01
-
Segnala l'uso del disco del file system.
df -h
Output di esempio:
[oracle@ol-node01 ~]$ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/foo-rr 5.0G 69M 5.0G 2% /u01
Ridimensionare un LV RAID
Esistono diversi modi per ridimensionare un LV RAID:
- Utilizzare
lvresize
olvextend
per aumentare il valore LV. - Utilizzare
lvresize
olvreduce
per ridurre il valore LV. - Utilizzare
lvconvert
con il parametro--stripes N
per modificare il numero di striping.
Importante: la riduzione di un valore LV è rischiosa e potrebbe causare una perdita di dati. Quando si esegue un file system XFS sull'LV, evitare di ridurre l'LV in quanto XFS non consente di ridurre le dimensioni del file system.
Aumentare la capacità LV RAID
-
Utilizzando lo spazio libero disponibile nel VG, aumentare la dimensione LV RAID a 10G.
sudo lvresize -L 10G foo/rr
Per aumentare la dimensione di 10G, utilizzare l'opzione
-L +10G
. -
Verificare che il valore LV sia aumentato a 10G.
sudo lvs foo/rr
Nel file LSize dovrebbe essere visualizzato 10g.
-
Aumentare il file system.
sudo xfs_growfs /u01
-
Segnala l'uso del disco del file system aggiornato.
df -h
-
Controllare lo stato di sincronizzazione RAID prima di procedere.
Avvertenza: se si procede troppo rapidamente al passo successivo, potrebbe essere visualizzato un errore dovuto alla mancata sincronizzazione di foo/rr.
Questo errore si verifica se la sincronizzazione non è stata completata dopo il ridimensionamento del valore LV RAID sopra riportato.
Controllare il LV RAID con
watch sudo lvs foo/rr
e attendere che il campo Cpy%Sync raggiunga il 100%. Una volta che Cpy%Sync raggiunge il 100%, utilizzarectrl-c
per uscire dal comandowatch
.
Per ulteriori informazioni, vedere le pagine man lvresize(8)
, lvextend(8)
e lvreduce(8)
.
Aumenta stripe su RAID LV
La modifica del numero di stripe su un LV RAID aumenta la capacità complessiva ed è possibile su RAID4/5/6/10. Ogni striping aggiuntivo richiede un numero uguale di volumi fisici (dispositivi) non allocati all'interno del gruppo di volumi.
-
Controllare i volumi fisici (PV) presenti nel foo VG.
sudo pvs
Gli output /dev/sdb, /dev/sdc, /dev/sdd e /dev/sde sono tutti associati al foo VG.
-
Determinare se sono presenti volumi fisici non utilizzati.
sudo pvdisplay -m /dev/sd[b-e]
Output di esempio:
--- Physical volume --- PV Name /dev/sdb VG Name foo PV Size 50.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 12799 Free PE 11944 Allocated PE 855 PV UUID Q1uEMC-0zL1-dgrA-9rIT-1xrA-Vnfr-2E8tJT --- Physical Segments --- Physical extent 0 to 0: Logical volume /dev/foo/rr_rmeta_0 Logical extents 0 to 0 Physical extent 1 to 854: Logical volume /dev/foo/rr_rimage_0 Logical extents 0 to 853 Physical extent 855 to 12798: FREE ...
Il comando
pvdisplay
con l'opzione-m
mostra il mapping di estensioni fisiche a volumi logici ed estensioni logali. Il PV /dev/sdb nell'output di esempio mostra le estensioni fisiche associate al valore LV RAID. Lo stesso dovrebbe comparire per /dev/sdc, /dev/sdd e /dev/sde. -
Aggiungere un altro PV al VG.
Poiché il valore LV RAID esistente utilizza tutti i volumi fisici esistenti, aggiungere /dev/sdf al foo PV.
sudo vgextend foo /dev/sdf
L'output mostra che il comando
vgextend
converte /dev/sdf in un PV prima di aggiungerlo al foo VG. -
Aggiungere una stripe al LV RAID.
sudo lvconvert --stripes 4 foo/rr
Rispondere con
y
al prompt.Output di esempio:
[oracle@ol-node01 ~]$ sudo lvconvert --stripes 4 foo/rr Using default stripesize 64.00 KiB. WARNING: Adding stripes to active and open logical volume foo/rr will grow it from 2562 to 3416 extents! Run "lvresize -l2562 foo/rr" to shrink it or use the additional capacity. Are you sure you want to add 1 images to raid5 LV foo/rr? [y/n]: y Logical volume foo/rr successfully converted.
-
Verificare la nuova dimensione LV.
sudo lvs foo/rr
Output di esempio:
[oracle@ol-node01 ~]$ sudo lvs foo/rr LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert rr foo rwi-aor--- 13.34g 2.24
La capacità (LSize) è aumentata da 3.34g e inizia la sincronizzazione (Cpy%Sync). La sincronizzazione è il processo che rende tutti i dispositivi in un LV RAID coerenti tra loro e una sincronizzazione completa diventa necessaria quando i dispositivi nel LV RAID vengono modificati o sostituiti.
-
Controllare lo stato della sincronizzazione.
Esegui il controllo fino a quando l'avanzamento non raggiunge il 100%.
watch sudo lvs foo/rr
Una volta che Cpy%Sync raggiunge il 100%, utilizzare
ctrl-c
per uscire dal comandowatch
.Di seguito sono riportati alcuni altri modi per utilizzare il comando
watch
.- Eseguire
watch -n 5 sudo lvs foo/rr
per aggiornare ogni 5 anziché i 2 predefiniti. - Eseguire
timeout 60 watch -n 5 sudo lvs foo/rr
per uscire automaticamente dopo gli anni '60.
- Eseguire
-
Visualizzare il nuovo intervallo di segmenti e il PV, che ora include /dev/sdf.
sudo lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset foo
Recupera un dispositivo RAID non riuscito in un LV
Gli array RAID possono continuare a essere eseguiti con dispositivi che presentano errori. La rimozione di un dispositivo per tipi RAID diversi da RAID1 implica la conversione in RAID di livello inferiore (da RAID5 a RAID0 in questo caso).
La funzionalità LVM consente di sostituire un dispositivo in cui si è verificato un errore in un volume RAID in una singola operazione grazie al comando lvconvert --repair
per i dispositivi in cui si è verificato un errore anziché rimuovere un'unità in cui si è verificato il guasto e, eventualmente, aggiungere una sostituzione.
-
Controllare il layout RAID LV corrente.
sudo lvs --all --options name,copy_percent,devices foo
-
Simulare un errore in /dev/sdd.
echo 1 | sudo tee /sys/block/sdd/device/delete
-
Dopo un errore, controllare di nuovo il layout RAID LV.
sudo lvs --all --options name,copy_percent,devices foo
Verificare i dispositivi [unknown].
Output di esempio:
[oracle@ol-node01 ~]$ sudo lvs --all --options name,copy_percent,devices foo WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd). LV Cpy%Sync Devices rr 100.00 rr_rimage_0(0),rr_rimage_1(0),rr_rimage_2(0),rr_rimage_3(0),rr_rimage_4(0) [rr_rimage_0] /dev/sdb(855) [rr_rimage_0] /dev/sdb(1) [rr_rimage_1] /dev/sdc(855) [rr_rimage_1] /dev/sdc(1) [rr_rimage_2] [unknown](855) [rr_rimage_2] [unknown](1) [rr_rimage_3] /dev/sde(855) [rr_rimage_3] /dev/sde(1) [rr_rimage_4] /dev/sdf(855) [rr_rimage_4] /dev/sdf(1) [rr_rmeta_0] /dev/sdb(0) [rr_rmeta_1] /dev/sdc(0) [rr_rmeta_2] [unknown](0) [rr_rmeta_3] /dev/sde(0) [rr_rmeta_4] /dev/sdf(0)
-
Sostituire il dispositivo in cui si è verificato il guasto.
sudo lvconvert --repair foo/rr
Rispondere con
y
al prompt.Impossibile trovare spazio o dispositivo disponibile da utilizzare nel VG.
Output di esempio:
[oracle@ol-node01 ~]$ sudo lvconvert --repair foo/rr WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd). WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Insufficient free space: 856 extents needed, but only 0 available Failed to replace faulty devices in foo/rr.
Attenzione: se l'errore contiene un messaggio "Impossibile sostituire i dispositivi nel foo/rr mentre non è sincronizzato", verificare che RAID-LV sia sincronizzato eseguendo
watch sudo lvs foo/rr
e confermando che Cpy%Sync è 100%. Quindi, provare di nuovo il comandolvconvert
. -
Aggiungere il dispositivo /dev/sdg al VG
sudo vgextend foo /dev/sdg
I messaggi AVVERTENZA nell'output sono dovuti a un'unità ancora mancante.
-
Riprovare a sostituire l'unità guasta.
sudo lvconvert --repair foo/rr
Rispondere di nuovo con
y
al prompt.L'output mostra di nuovo i messaggi di AVVERTENZA relativi all'unità mancante, ma il comando ha sostituito correttamente il dispositivo difettoso nel VG.
-
Esaminare il layout.
sudo lvs --all --options name,copy_percent,devices foo
/dev/sdg ha sostituito tutte le voci del dispositivo [unknown].
-
Rimuovere il dispositivo non riuscito dal VG.
Le utility LVM continueranno a segnalare che LVM non è in grado di trovare il dispositivo guasto fino a quando non verrà rimosso dal gateway.
sudo vgreduce --removemissing foo
I messaggi AVVERTENZA nell'output sono dovuti a un'unità ancora mancante.
-
Controllare lo stato di sincronizzazione RAID prima di procedere.
Avvertenza: se si continua troppo rapidamente nella sezione successiva, potrebbe essere visualizzato il seguente messaggio di errore:
Output di esempio:
[oracle@ol-node01 ~]$ sudo lvchange --syncaction check foo/rr foo/rr state is currently "recover". Unable to switch to "check".
Questo errore si verifica se la sincronizzazione non è stata completata dopo l'aggiunta di stripe al LV RAID.
Controllare il LV RAID con
watch sudo lvs foo/rr
e attendere che il campo Cpy%Sync raggiunga il 100%.
Verifica coerenza dati in LV RAID (Scrubbing)
LVM offre la possibilità di scrubbing per l'LV RAID, che legge tutti i dati e i blocchi di parità in un array e controlla la coerenza.
-
Avviare uno scrubbing in modalità di controllo.
sudo lvchange --syncaction check foo/rr
-
Mostra lo stato dell'azione di scrubbing.
watch sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr
Output di esempio:
[oracle@ol-node01 ~]$ sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr LV SyncAction Cpy%Sync rr check 30.08
-
Al termine dello scrubbing (sincronizzazione), visualizzare il numero di blocchi incoerenti trovati.
sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
L'opzione
raid_sync_action
visualizza il campo SyncAction con uno dei seguenti valori:idle
: tutte le azioni sono state completate.resync
: inizializzazione o recupero dopo un errore del sistema.recover
: sostituzione di un dispositivo nell'array.check
: Alla ricerca delle differenze.repair
: Esame e riparazione delle differenze.
Output di esempio:
[oracle@ol-node01 ~]$ lvs -o +raid_sync_action,raid_mismatch_count foo/rr LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches rr foo rwi-aor--- 13.34g 44.42 check 0
L'output mostra 0 incoerenze (corrispondenze).
-
(Facoltativo) Correggere le differenze nell'array.
Questo passo è facoltativo perché è probabile che non esistano differenze in questo array di esempio.
sudo lvchange --syncaction repair foo/rr
-
(Facoltativo) Controllare lo stato della riparazione.
sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
Il campo SyncAction è stato modificato in repair.
Per ulteriori informazioni, vedere le pagine man lvchange(8)
e lvmraid(7)
.
Per ulteriori informazioni:
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi ad altri contenuti per la formazione gratuita sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione sul prodotto, visitare Oracle Help Center.
Configure RAID Logical Volumes on Oracle Linux
F57864-02
May 2022
Copyright © 2021, Oracle and/or its affiliates.