Un’introduzione ai concetti, alla terminologia e alle operazioni di LVM

Introduzione

LVM, o Logical Volume Management, è una tecnologia di gestione dei dispositivi di archiviazione che dà agli utenti il potere di raggruppare e astrarre il layout fisico dei dispositivi di archiviazione componenti per una amministrazione più facile e flessibile. Utilizzando il framework del kernel Linux device mapper, l’iterazione corrente, LVM2, può essere usata per riunire i dispositivi di archiviazione esistenti in gruppi e allocare unità logiche dallo spazio combinato come necessario.

I principali vantaggi di LVM sono una maggiore astrazione, flessibilità e controllo. I volumi logici possono avere nomi significativi come “database” o “root-backup”. I volumi possono essere ridimensionati dinamicamente quando cambiano i requisiti di spazio e migrati tra dispositivi fisici all’interno del pool su un sistema in funzione o esportati facilmente. LVM offre anche caratteristiche avanzate come lo snapshotting, lo striping e il mirroring.

In questa guida, discuteremo brevemente come funziona LVM e poi dimostreremo i comandi di base necessari per essere rapidamente operativi.

Architettura e terminologia di LVM

Prima di addentrarci nei comandi amministrativi di LVM, è importante avere una comprensione di base di come LVM organizza i dispositivi di storage e della terminologia che utilizza.

Strutture di gestione dello storage LVM

LVM funziona stratificando astrazioni sopra i dispositivi di storage fisici. I livelli di base che LVM utilizza, iniziando dal più primitivo, sono.

  • Volumi fisici:
    • prefisso dell’utilità LVM: pv...
    • Descrizione: I dispositivi fisici a blocchi o altri dispositivi simili ai dischi (per esempio, altri dispositivi creati dal device mapper, come gli array RAID) sono usati da LVM come materiale grezzo per costruire livelli di astrazione più alti. I volumi fisici sono normali dispositivi di memorizzazione. LVM scrive un’intestazione al dispositivo per allocarlo per la gestione.
  • Gruppi di volumi:
    • prefisso dell’utilità LVM: vg...
    • Descrizione: LVM combina i volumi fisici in pool di storage conosciuti come gruppi di volumi. I gruppi di volumi astraggono le caratteristiche dei dispositivi sottostanti e funzionano come un dispositivo logico unificato con capacità di archiviazione combinata dei volumi fisici componenti.
  • Volumi logici:
    • LVM utility prefix: lv... (le utility LVM generiche potrebbero iniziare con lvm...)
    • Descrizione: Un gruppo di volumi può essere suddiviso in qualsiasi numero di volumi logici. I volumi logici sono funzionalmente equivalenti alle partizioni su un disco fisico, ma con molta più flessibilità. I volumi logici sono il componente principale con cui gli utenti e le applicazioni interagiranno.

In sintesi, LVM può essere utilizzato per combinare i volumi fisici in gruppi di volumi per unificare lo spazio di archiviazione disponibile su un sistema. In seguito, gli amministratori possono segmentare il gruppo di volumi in volumi logici arbitrari, che agiscono come partizioni flessibili.

Cosa sono le estensioni?

Ogni volume all’interno di un gruppo di volumi è segmentato in piccoli pezzi di dimensione fissa chiamati estensioni. La dimensione delle estensioni è determinata dal gruppo di volumi (tutti i volumi all’interno del gruppo sono conformi alla stessa dimensione).

Le estensioni di un volume fisico sono chiamate estensioni fisiche, mentre le estensioni di un volume logico sono chiamate estensioni logiche. Un volume logico è semplicemente una mappatura che LVM mantiene tra le estensioni logiche e fisiche. A causa di questa relazione, la dimensione delle estensioni rappresenta la più piccola quantità di spazio che può essere allocata da LVM.

Le estensioni sono alla base di gran parte della flessibilità e della potenza di LVM. Le estensioni logiche che sono presentate come un dispositivo unificato da LVM non devono necessariamente corrispondere a estensioni fisiche continue. LVM può copiare e riorganizzare le estensioni fisiche che compongono un volume logico senza alcuna interruzione per gli utenti. I volumi logici possono anche essere facilmente espansi o rimpiccioliti semplicemente aggiungendo o rimuovendo delle estensioni dal volume.

Il semplice caso d’uso

Ora che si ha familiarità con alcuni dei termini e delle strutture che LVM utilizza, possiamo esplorare alcuni modi comuni di usare LVM. Inizieremo con una procedura di base che userà due dischi fisici per formare quattro volumi logici.

Segnalare i dispositivi fisici come volumi fisici

Il nostro primo passo è la scansione del sistema per i dispositivi a blocchi che LVM può vedere e gestire. Potete farlo digitando:

  • sudo lvmdiskscan

L’output mostrerà tutti i dispositivi a blocchi disponibili con cui LVM può interagire:

Output
/dev/ram0 /dev/sda /dev/ram1 . . . /dev/ram15 /dev/sdb 2 disks 17 partitions 0 LVM physical volume whole disks 0 LVM physical volumes

Dall’output di cui sopra, possiamo vedere che ci sono attualmente due dischi e 17 partizioni. Le partizioni sono per lo più /dev/ram* partizioni che vengono utilizzate dal sistema come disco Ram per migliorare le prestazioni. I dischi in questo esempio sono /dev/sda, che ha 200G di spazio, e /dev/sdb, che ha 100G: Assicuratevi di ricontrollare che i dispositivi che intendete usare con LVM non abbiano dati importanti già scritti su di essi. L’utilizzo di questi dispositivi all’interno di LVM sovrascriverà il contenuto corrente. Se avete già dei dati importanti sul vostro server, fate dei backup prima di procedere.

Ora che conosciamo i dispositivi fisici che vogliamo usare, possiamo contrassegnarli come volumi fisici all’interno di LVM usando il comando pvcreate:

  • sudo pvcreate /dev/sda /dev/sdb
Output
Physical volume "/dev/sda" successfully created Physical volume "/dev/sdb" successfully created

Questo scriverà un header LVM sui dispositivi per indicare che sono pronti per essere aggiunti ad un gruppo di volumi.

Si può rapidamente verificare che LVM abbia registrato i volumi fisici digitando:

  • sudo pvs
Output
PV VG Fmt Attr PSize PFree /dev/sda lvm2 --- 200.00g 200.00g /dev/sdb lvm2 --- 100.00g 100.00g

Come potete vedere, entrambi i dispositivi sono presenti sotto la colonna PV, che sta per volume fisico.

Aggiungere i volumi fisici a un gruppo di volumi

Ora che abbiamo creato i volumi fisici dai nostri dispositivi, possiamo creare un gruppo di volumi. Dovremo selezionare un nome per il gruppo di volumi, che terremo generico. La maggior parte delle volte, avrete solo un singolo gruppo di volumi per sistema per la massima flessibilità nell’allocazione. Chiameremo il nostro gruppo di volume LVMVolGroup per semplicità.

Per creare il gruppo di volumi e aggiungere entrambi i nostri volumi fisici in un singolo comando, digitate:

  • sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output
Volume group "LVMVolGroup" successfully created

Se controlliamo nuovamente l’output pvs, possiamo vedere che i nostri volumi fisici sono ora associati al nuovo gruppo di volumi:

  • sudo pvs
Output
PV VG Fmt Attr PSize PFree /dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g /dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g

Possiamo vedere un breve riassunto del gruppo di volumi stesso digitando:

  • sudo vgs
Output
VG #PV #LV #SN Attr VSize VFree LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g

Come potete vedere, il nostro gruppo di volumi ha attualmente due volumi fisici, zero volumi logici, e ha la capacità combinata dei dispositivi sottostanti.

Creazione di volumi logici dal pool del gruppo di volumi

Ora che abbiamo un gruppo di volumi disponibile, possiamo usarlo come un pool da cui allocare i volumi logici. A differenza del partizionamento convenzionale, quando si lavora con i volumi logici, non è necessario conoscere il layout del volume poiché LVM lo mappa e lo gestisce per voi. Avete solo bisogno di fornire la dimensione del volume e un nome.

Creeremo quattro volumi logici separati dal nostro gruppo di volumi:

  • 10G volume “progetti”
  • 5G volume “www” per i contenuti web
  • 20G volume “db” per un database
  • volume “workspace” che riempirà lo spazio rimanente

Per creare volumi logici, usiamo il comando lvcreate. Dobbiamo passare il gruppo di volumi da cui attingere, e possiamo nominare il volume logico con l’opzione -n. Per specificare direttamente la dimensione, si può usare l’opzione -L. Se invece volete specificare la dimensione in termini di numero di estensioni, potete usare l’opzione -l.

Possiamo creare i primi tre volumi logici con l’opzione -L così:

  • sudo lvcreate -L 10G -n projects LVMVolGroup
  • sudo lvcreate -L 5G -n www LVMVolGroup
  • sudo lvcreate -L 20G -n db LVMVolGroup
Output
Logical volume "projects" created. Logical volume "www" created. Logical volume "db" created.

Possiamo vedere i volumi logici e la loro relazione al gruppo di volumi selezionando l’output personalizzato dal comando vgs:

  • sudo vgs -o +lv_size,lv_name
Output
VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 10.00g projects LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 5.00g www LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 20.00g db

Abbiamo aggiunto le ultime due colonne di output in modo da poter vedere lo spazio assegnato ai nostri volumi logici.

Ora, possiamo allocare il resto dello spazio nel gruppo di volumi al volume “workspace” usando il flag -l, che lavora in estensioni. Possiamo anche fornire una percentuale e un’unità per comunicare meglio le nostre intenzioni. Nel nostro caso, vogliamo allocare lo spazio libero rimanente, quindi possiamo passare 100%FREE:

  • sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output
Logical volume "workspace" created.

Se ricontrolliamo le informazioni del gruppo di volumi, possiamo vedere che abbiamo usato tutto lo spazio disponibile:

  • sudo vgs -o +lv_size,lv_name
Output
VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 4 0 wz--n- 299.99g 0 10.00g projects LVMVolGroup 2 4 0 wz--n- 299.99g 0 5.00g www LVMVolGroup 2 4 0 wz--n- 299.99g 0 20.00g db LVMVolGroup 2 4 0 wz--n- 299.99g 0 264.99g workspace

Come potete vedere, il volume “workspace” è stato creato e il gruppo di volumi “LVMVolGroup” è completamente assegnato.

Formattare e montare i volumi logici

Ora che abbiamo i volumi logici, possiamo usarli come normali dispositivi a blocchi.

I dispositivi logici sono disponibili all’interno della directory /dev proprio come altri dispositivi di archiviazione. È possibile accedervi in due posti:

  • /dev/volume_group_name/logical_volume_name
  • /dev/mapper/volume_group_name-logical_volume_name

Quindi per formattare i nostri quattro volumi logici con il filesystem Ext4, possiamo digitare:

  • sudo mkfs.ext4 /dev/LVMVolGroup/projects
  • sudo mkfs.ext4 /dev/LVMVolGroup/www
  • sudo mkfs.ext4 /dev/LVMVolGroup/db
  • sudo mkfs.ext4 /dev/LVMVolGroup/workspace

O possiamo digitare:

  • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
  • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
  • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
  • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

Dopo la formattazione, possiamo creare punti di montaggio:

  • sudo mkdir -p /mnt/{projects,www,db,workspace}

Possiamo quindi montare i volumi logici nella posizione appropriata:

  • sudo mount /dev/LVMVolGroup/projects /mnt/projects
  • sudo mount /dev/LVMVolGroup/www /mnt/www
  • sudo mount /dev/LVMVolGroup/db /mnt/db
  • sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

Per rendere i mount persistenti, aggiungeteli a /etc/fstab proprio come fareste con i normali dispositivi a blocchi:

  • sudo nano /etc/fstab
/etc/fstab
. . ./dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0

Il sistema operativo dovrebbe ora montare i volumi logici LVM automaticamente al boot.

Conclusione

Spero che a questo punto abbiate una buona comprensione dei vari componenti che LVM gestisce per creare un sistema di archiviazione flessibile. Si dovrebbe anche avere una comprensione di base di come ottenere dispositivi di archiviazione funzionanti in una configurazione LVM.

Questa guida ha solo sfiorato brevemente la potenza e il controllo che LVM fornisce agli amministratori di sistemi Linux. Per saperne di più su come lavorare con LVM, controllate la nostra guida all’uso di LVM con Ubuntu 16.04.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *