Logical Volume Manager (LVM) è un sistema simile a RAID basato su software che consente di creare "pool" di archiviazione e aggiungere spazio su disco rigido a tali pool secondo necessità. Ci sono molte ragioni per utilizzarlo, soprattutto in un data center o in qualsiasi luogo in cui i requisiti di archiviazione cambiano nel tempo. Molte distribuzioni Linux lo usano per impostazione predefinita per le installazioni desktop, tuttavia, perché gli utenti trovano conveniente la flessibilità e ci sono alcune funzionalità di crittografia integrate che la struttura LVM semplifica.
Tuttavia, se non sei abituato a vedere un volume LVM all'avvio da un Live CD per scopi di salvataggio o migrazione dei dati, LVM può creare confusione perché il montaggio il comando non può montare volumi LVM. Per questo, sono necessari gli strumenti LVM installati. È molto probabile che la tua distribuzione disponga di utilità LVM, se non sono già installate.
Questo tutorial spiega come creare e gestire i volumi LVM.
Crea un pool LVM
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Questo articolo presuppone che tu abbia una conoscenza pratica di come interagire con i dischi rigidi su Linux. Se hai bisogno di maggiori informazioni sulle basi prima di continuare, leggi la mia introduzione ai dischi rigidi su Linux.
Di solito, non è necessario configurare affatto LVM. Quando installi Linux, per impostazione predefinita spesso crea un "pool" virtuale di archiviazione e aggiunge i dischi rigidi della tua macchina a quel pool. Tuttavia, la creazione manuale di uno storage pool LVM è un ottimo modo per scoprire cosa accade dietro le quinte.
Puoi esercitarti con due chiavette USB di riserva di qualsiasi dimensione, o due dischi rigidi, o una macchina virtuale con due unità immaginarie definite.
Innanzitutto, formatta l'unità immaginaria /dev/sdx in modo da avere un nuovo disco pronto per l'uso per questa demo.
# echo "warning, this ERASES everything on this drive."
warning, this ERASES everything on this drive.
# dd if=/dev/zero of=/dev/sdx count=8196
# parted /dev/sdx print | grep Disk
Disk /dev/sdx: 100GB
# parted /dev/sdx mklabel gpt
# parted /dev/sdx mkpart primary 1s 100%
Questo comando LVM crea un pool di archiviazione. Un pool può essere costituito da una o più unità e in questo momento è costituito da una. Questo pool di archiviazione di esempio è denominato biliardo , ma puoi chiamarlo come vuoi.
# vgcreate billiards /dev/sdx1
Ora hai un grande e nebuloso pool di spazio di archiviazione. È ora di distribuirlo. Per creare due volumi logici (puoi pensarli come unità virtuali), uno chiamato vol0 e l'altro chiamato vol1 , inserisci quanto segue:
# lvcreate billiards 49G --name vol0
# lvcreate billiards 49G --name vol1
Ora hai due volumi ricavati da un pool di archiviazione, ma nessuno dei due ha ancora un filesystem. Per creare un filesystem su ogni volume, devi portare il biliardo gruppo di volume online.
# vgchange --activate y billiards
Ora crea i file system. La -L L'opzione fornisce un'etichetta per l'unità, che viene visualizzata quando l'unità è montata sul desktop. Il percorso del volume è leggermente diverso dai soliti percorsi dei dispositivi a cui sei abituato perché si tratta di dispositivi virtuali in un pool di archiviazione LVM.
# mkfs.ext4 -L finance /dev/billiards/vol0
# mkfs.ext4 -L production /dev/billiards/vol1
Puoi montare questi nuovi volumi sul desktop o da un terminale.
# mkdir -p /mnt/vol0 /mnt/vol1
# mount /dev/billiards/vol0 /mnt/vol0
# mount /dev/billiards/vol1 /mnt/vol1
Aggiungi spazio alla tua piscina
Finora, LVM non ha fornito nient'altro che il partizionamento normalmente fornito da un'unità:due sezioni distinte di spazio su disco su una singola unità fisica (in questo esempio, 49 GB e 49 GB su un'unità da 100 GB). Immagina ora che il dipartimento finanziario abbia bisogno di più spazio. Tradizionalmente, dovresti ristrutturare. Forse sposteresti i dati del dipartimento finanziario su una nuova unità fisica dedicata, o forse aggiungeresti un'unità e quindi utilizzeresti un brutto hack di collegamento simbolico per fornire agli utenti un facile accesso al loro spazio di archiviazione aggiuntivo. Con LVM, invece, tutto ciò che devi fare è espandere lo storage pool.
Puoi aggiungere spazio al tuo pool formattando un'altra unità e utilizzandola per creare più spazio aggiuntivo.
Innanzitutto, crea una partizione sulla nuova unità che stai aggiungendo al pool.
# part /dev/sdy mkpart primary 1s 100%
Quindi usa vgextend comando per contrassegnare la nuova unità come parte del pool.
# vgextend billiards /dev/sdy1
Infine, dedica parte del nuovo pool di archiviazione disponibile al volume logico appropriato.
# lvextend -L +49G /dev/billiards/vol0
Naturalmente, l'espansione non deve essere così lineare. Immagina che il reparto di produzione abbia improvvisamente bisogno di 100 TB di spazio aggiuntivo. Con LVM, puoi aggiungere tutte le unità fisiche necessarie, aggiungendo ognuna di esse e utilizzando vgextend per creare uno storage pool da 100 TB, quindi utilizzando lvextend per "allungare" lo spazio di archiviazione del reparto di produzione su 100 TB di spazio disponibile.
Utilizza le utility per comprendere la tua struttura di archiviazione
Una volta che inizi a utilizzare LVM sul serio, il panorama dello storage può diventare travolgente. Sono disponibili due comandi per raccogliere informazioni sulla struttura della tua infrastruttura di archiviazione.
Innanzitutto, c'è vgdisplay , che mostra informazioni sui tuoi gruppi di volumi (puoi considerarli come le grandi unità virtuali di alto livello di LVM).
# vgdisplay
--- Volume group ---
VG Name billiards
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size <237.47 GiB
PE Size 4.00 MiB
Total PE 60792
Alloc PE / Size 60792 / <237.47 GiB
Free PE / Size 0 / 0
VG UUID j5RlhN-Co4Q-7d99-eM3K-G77R-eDJO-nMR9Yg
Il secondo è lvdisplay , che mostra informazioni sui tuoi volumi logici (puoi considerarli unità rivolte all'utente).
# lvdisplay
--- Logical volume ---
LV Path /dev/billiards/finance
LV Name finance
VG Name billiards
LV UUID qPgRhr-s0rS-YJHK-0Cl3-5MME-87OJ-vjjYRT
LV Write Access read/write
LV Creation host, time localhost, 2018-12-16 07:31:01 +1300
LV Status available
# open 1
LV Size 149.68 GiB
Current LE 46511
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3
[...]
Utilizza LVM in un ambiente di salvataggio
Il "problema" con LVM è che avvolge le partizioni in un modo che non è familiare a molti utenti amministrativi che sono abituati al partizionamento tradizionale delle unità. In circostanze normali, le unità LVM vengono attivate e montate in modo abbastanza invisibile durante il processo di avvio o l'integrazione desktop LVM. Non è qualcosa a cui di solito devi pensare. Diventa problematico solo quando ti trovi in modalità di ripristino dopo che qualcosa è andato storto con il tuo sistema.
Se è necessario montare un volume "nascosto" all'interno della struttura di LVM, è necessario assicurarsi che la toolchain LVM sia installata. Se hai accesso al tuo /usr/sbin directory, probabilmente hai accesso a tutti i tuoi soliti comandi LVM. Ma se hai avviato una shell minima o un ambiente di salvataggio, potresti non avere quegli strumenti. Un buon ambiente di salvataggio ha installato LVM, quindi se ti trovi in una shell minima, trova un sistema di salvataggio che lo faccia. Se stai utilizzando un disco di ripristino su cui non è installato LVM, installalo manualmente o trova un disco di ripristino che lo abbia già.
Per motivi di ripetizione e chiarezza, ecco come montare un volume LVM.
# vgchange --activate y
2 logical volume(s) in volume group "billiards" now active
# mkdir /mnt/finance
# mount /dev/billiards/finance /mnt/finance
Integra LVM con la crittografia LUKS
Molte distribuzioni Linux utilizzano LVM per impostazione predefinita durante l'installazione del sistema operativo. Ciò consente l'estensione di archiviazione in un secondo momento, ma si integra perfettamente anche con la crittografia del disco fornita dalla toolchain di crittografia LUKS (Unified Key Setup) di Linux.
La crittografia è piuttosto importante e ci sono due modi per crittografare le cose:puoi crittografare in base al file con uno strumento come GnuPG, oppure puoi crittografare un'intera partizione. Su Linux, crittografare una partizione è facile con LUKS, che, essendo completamente integrato in Linux tramite moduli del kernel, consente di montare le unità per leggere e scrivere senza interruzioni.
La crittografia dell'intera unità principale di solito avviene come opzione durante l'installazione. Scegli di crittografare l'intera unità o solo la partizione home quando richiesto e da quel momento in poi stai utilizzando LUKS. È per lo più invisibile per te, a parte una richiesta di password durante l'avvio.
Se la tua distribuzione non offre questa opzione durante l'installazione, o se desideri solo crittografare manualmente un'unità o una partizione, puoi farlo.
È possibile seguire questo esempio utilizzando un'unità di riserva; Ho usato una piccola chiavetta USB da 4 GB.
Innanzitutto, collega l'unità al computer. Assicurati che sia sicuro cancellare l'unità e utilizza lsblk per individuare l'unità sul tuo sistema.
Se l'unità non è già partizionata, partizionarla ora. Se non sai come partizionare un'unità, controlla il link sopra per le istruzioni.
Ora puoi impostare la crittografia. Innanzitutto, formatta la partizione con cryptsetup comando.
# cryptsetup luksFormat /dev/sdx1
Tieni presente che stai crittografando la partizione , non l'unità fisica stessa. Vedrai un avviso che LUKS cancellerà l'unità; devi accettarlo per continuare. Ti verrà richiesto di creare una passphrase, quindi fallo. Non dimenticare quella passphrase. Senza di esso, non sarai mai più in grado di entrare in quella guida!
Hai crittografato la partizione della chiavetta USB, ma non c'è ancora nessun filesystem sull'unità. Ovviamente, non puoi scrivere un filesystem sull'unità mentre ne sei bloccato, quindi apri prima l'unità con LUKS. Puoi fornire un nome a misura d'uomo per il tuo disco; per questo esempio ho usato mySafeDrive .
# cryptsetup luksOpen /dev/sdx1 mySafeDrive
Inserisci la tua passphrase per aprire l'unità.
Cerca in /dev/mapper e vedrai che hai montato il volume insieme a qualsiasi altro volume LVM che potresti avere, il che significa che ora hai accesso a quell'unità. Il nome personalizzato (ad es. mySafeDrive) è un collegamento simbolico a un designatore generato automaticamente in /dev/mapper . È possibile utilizzare entrambi i percorsi quando si opera su questa unità.
# ls -l /dev/mapper/mySafeDrive
lrwxrwxrwx. 1 root root 7 Oct 24 03:58 /dev/mapper/mySafeDrive -> ../dm-4
Crea il tuo filesystem.
# mkfs.ext4 -o Linux -L mySafeExt4Drive /dev/mapper/mySafeDrive
Ora esegui ls -lh su /dev/mapper e vedrai che mySafeDrive è in realtà un collegamento simbolico a qualche altro sviluppatore; probabilmente /dev/dm0 o simili. Questo è il filesystem che puoi montare:
# mount /dev/mapper/mySafeExt4Drive /mnt/hd
Ora il filesystem sull'unità crittografata è montato. Puoi leggere e scrivere file come ti aspetteresti con qualsiasi unità.
Utilizza unità crittografate con il desktop
LUKS è integrato nel kernel, quindi il tuo sistema Linux è pienamente consapevole di come gestirlo. Scollegare l'unità, ricollegarla e montarla dal desktop. Nel file manager Dolphin di KDE, ti verrà richiesta una password prima che l'unità venga decifrata e montata.
L'uso di LVM e LUKS è facile e offre flessibilità per te come utente e amministratore. Essendo strettamente integrato in Linux stesso, è ben supportato e un ottimo modo per aggiungere un livello di sicurezza ai tuoi dati. Provalo oggi!