GNU/Linux >> Linux Esercitazione >  >> Linux

Spiegazione della gestione del volume logico su Linux

Su Linux, può essere piuttosto difficile gestire lo storage e i filesystem e spesso ha bisogno di molti comandi diversi per spostare i dati.

L'archiviazione tradizionale è solitamente composta da tre livelli diversi:il disco fisico (che sia un HDD o un SSD), le partizioni logiche creato su di esso e il filesystem formattato sulla partizione.

Tuttavia, questi tre livelli sono generalmente strettamente accoppiati:può essere piuttosto difficile ridurre le partizioni esistenti per crearne una nuova.

Allo stesso modo, è abbastanza difficile estendere un filesystem se aggiungi un nuovo disco al tuo sistema:dovresti spostare i dati da un disco all'altro, a volte causando una perdita di dati .

Fortunatamente per te, c'è uno strumento o un'astrazione che puoi usare su Linux per gestire gli archivi:LVM .

LVM , abbreviazione di Gestione del volume logico , viene fornito come un set di strumenti che ti consente di estendere, ridurre i volumi esistenti e sostituire i dischi esistenti mentre il sistema è in esecuzione.

In questo tutorial impareremo a conoscere LVM e come puoi implementarli facilmente sul tuo sistema.

Spiegazione dei livelli LVM

Prima di iniziare, è importante che tu possa comprendere a fondo come sono progettati LVM sul tuo sistema .

Se hai già avuto a che fare con normali dispositivi di archiviazione, conosci già la relazione tra dischi e filesystem.

Su Linux, hai dischi fisici quello rilevato e gestito automaticamente da udev al primo inserimento.

Su quei dischi puoi creare partizioni utilizzando una delle popolari utilità disponibili (fdisk, parted o gparted).

Infine, tu formattare i filesystem su quelle partizioni per archiviare i tuoi file.

Utilizzando LVM, il design dello storage è leggermente diverso.

Tra partizioni e filesystem, hai tre livelli aggiuntivi:volumi fisici, gruppi di volumi e volumi logici.

Volume fisico

Quando si utilizza LVM, i volumi fisici devono rappresentare partizioni già esistenti sui dischi rigidi.

Quando gli amministratori di sistema fanno riferimento a "volumi fisici", spesso intendono il dispositivo fisico effettivo che memorizza i dati sul nostro sistema.

I volumi fisici sono denominati allo stesso modo delle partizioni fisiche :/dev/sda1 per la prima partizione del tuo primo disco rigido, /dev/sdb1 per la prima partizione del secondo disco e così via.

Gruppo di volumi

Proprio sopra i volumi fisici, il gruppo di volumi può essere visto come più volumi fisici raggruppati insieme per formare un unico volume.

Metaforicamente, i gruppi di volumi possono essere visti come secchi di archiviazione :sono un pool di diversi volumi fisici che possono essere utilizzati per estendere i volumi logici esistenti o per crearne di nuovi.

I gruppi di volumi non hanno convenzioni sui nomi, tuttavia è comunemente accettato che siano preceduti dal prefisso "vg" ("vg-storage “, “vg-drive ” per esempio)

Volumi logici

Infine, i volumi logici devono essere collegamenti diretti tra i gruppi di volumi e i filesystem formattati sui tuoi dispositivi.

Hanno un uno a uno relazione con i filesystem e rappresentano essenzialmente una partizione del tuo gruppo di volumi.

Anche se i volumi logici sono denominati allo stesso modo dei punti di montaggio, sono due concetti diversi e il volume logico è un'entità molto diversa dal tuo filesystem.

Nota :espandere il tuo volume logico non significa, ad esempio, espandere automaticamente il tuo filesystem.

Vantaggi di LVM rispetto alla gestione del disco standard

La gestione del volume logico è stata creata in primo luogo per correggere la maggior parte delle carenze associate alla normale gestione del disco su Linux.

Uno dei principali vantaggi di LVM è il fatto che è possibile riassemblare lo spazio mentre il sistema è in esecuzione.

Modifica dello spazio di archiviazione in tempo reale

Come probabilmente avrai notato in passato, il tuo spazio di archiviazione su un host è strettamente accoppiato alle partizioni scritte sui tuoi dischi.

Di conseguenza, la riformattazione di una partizione o il rimontaggio di un filesystem su un'altra partizione ha costretto qualsiasi amministratore di sistema a riavviare il sistema .

Ciò è dovuto principalmente al fatto che il kernel non è in grado di leggere la tabella delle partizioni in tempo reale e ha bisogno di un riavvio completo per poter sondare le diverse partizioni del tuo sistema.

Questo può ovviamente essere un grosso problema se hai a che fare con un server di produzione:se il tuo sito web è in esecuzione su questo server, non sarai in grado di riavviarlo senza che il sito web sia inattivo.

Se il tuo sito web non funziona, significa che probabilmente non sarai in grado di soddisfare le esigenze dei tuoi clienti, con conseguente perdita di denaro.

LVM risolve questo problema creando uno strato di astrazione sopra le normali partizioni :se non hai a che fare con partizioni regolari, non devi più rileggere la tabella delle partizioni, devi solo aggiornare la mappatura del tuo dispositivo.

Con questa scelta progettuale, la gestione dello storage diventa un software-to-software problematico e non è più legato all'hardware, almeno non direttamente.

Distribuzione dello spazio su più dischi

Un altro grande aspetto di LVM è il fatto che puoi facilmente distribuire i dati su più dischi .

Se guardi il diagramma mostrato prima, vedrai che c'è un forte accoppiamento tra filesystem e partizioni:di conseguenza, è abbastanza difficile avere dati archiviati su più dischi.

LVM è un'ottima soluzione per questo problema:i tuoi volumi logici appartengono a un gruppo di volumi centrale .

Anche se il gruppo di volumi è composto da più dischi, non devi gestirli da solo, il device mapper lo fa per te.

Questo è vero per espandere i filesystem, ma anche per ridurli e per trasferire dati da un dispositivo fisico a un altro.

Gestione dei volumi fisici LVM

In questa sezione utilizzeremo i comandi per visualizzare, creare o rimuovere volumi fisici sul tuo sistema.

Visualizza i volumi fisici esistenti

Per visualizzare i dispositivi di archiviazione esistenti su Linux, devi utilizzare il comando "lvmdiskscan".

$ sudo lvmdiskscan

Nota :se le utility LVM non sono installate sul tuo host, avendo ad esempio un errore "command not found", devi installare i programmi LVM eseguendo "apt-get install lvm2" come root.

Quando esegui "lvmdiskscan", ti vengono presentati i diversi dischi disponibili sul tuo host.

Su quei dischi, vedi anche le partizioni se sono già state create su quei dischi.

Infine, probabilmente l'informazione più importante, vedi quanti volumi fisici LVM vengono creati sul tuo sistema.

Nota :questo è un punto importante della flessibilità di LVM:puoi creare volumi fisici da interi dischi o partizioni di quei dischi.

In questo caso, stiamo iniziando con un server nuovo di zecca senza la creazione di volumi fisici LVM.

Per visualizzare i volumi fisici esistenti esistenti sul tuo host, puoi anche utilizzare il comando "pvs" .

$ pvs

Crea nuovi volumi fisici

Creare nuovi volumi fisici su Linux è piuttosto semplice:devi eseguire "pvcreate" e specificare i dispositivi fisici sottostanti da creare.

$ pvcreate <device_1> <device_2> ... <device_n>

Nel nostro caso, diciamo di voler creare un volume fisico per il secondo disco inserito nel nostro host, che è “sdb”.

$ pvcreate /dev/sdb

Nota :non sarai in grado di creare volumi fisici da dispositivi che sono già montati sul tuo sistema. Di conseguenza, "sda1" (che di solito memorizza la partizione di root) non può essere facilmente trasferito a LVM.

L'esecuzione del comando "lvmdiskscan" mostra un output molto diverso rispetto alla prima sezione.

$ lvmdiskscan

Come puoi vedere, il nostro host rileva automaticamente che un intero disco è formattato come volume fisico LVM e che è pronto per essere aggiunto a un gruppo di volumi.

Allo stesso modo, il comando "pvs" ha ora un output diverso:il nostro nuovo disco è stato aggiunto all'elenco dei volumi fisici disponibili sul nostro host.

$ pvs

Ora che hai creato con successo il tuo primo gruppo di volumi, è il momento di creare il tuo primo gruppo di volumi.

Gestione dei gruppi di volumi LVM

A meno che il tuo sistema non sia stato preconfigurato con i volumi LVM, non dovresti avere alcun gruppo di volumi creato sul tuo sistema.

Per elencare i gruppi di volumi esistenti sul tuo host, devi usare il comando "vgs" senza argomenti.

$ vgs

Crea un gruppo di volumi utilizzando vgcreate

Il modo più semplice per creare un gruppo di volumi è utilizzare "vgcreate", per specificare il nome del gruppo di volumi da creare e i volumi fisici da includere in esso.

$ vgcreate <volume_name> <physical_volume_1> <physical_volume_2> ... <physical_volume_n>

Nel nostro caso, abbiamo solo un volume fisico sul nostro host (che è /dev/sdb) che verrà utilizzato per creare il gruppo di volumi "vg_1".

$ vgcreate vg_1 /dev/sdb

Elenca e visualizza i gruppi di volumi esistenti

Elencare i gruppi di volumi esistenti sul tuo sistema usando "vgs" dovrebbe ora visualizzare il gruppo di volumi "vg_1" che hai appena creato.

$ vgs

Senza argomenti, ti vengono presentate sette colonne diverse :

  • VG :descrivendo il nome del gruppo di volumi sull'host;
  • #PV :visualizzazione del numero di volumi fisici disponibili nel gruppo di volumi;
  • #LV :allo stesso modo, il numero di volumi logici creati dal gruppo di volumi;
  • #SN :numero di snapshot creati dai volumi logici;
  • Attr :descrivendo gli attributi del gruppo di volumi (w per scrivibile, z per ridimensionabile e n per “normale”);
  • VSize :la dimensione del volume in GB del gruppo di volumi;
  • VFree :lo spazio disponibile sul gruppo di volumi

Se desideri ottenere maggiori informazioni sui gruppi di volumi esistenti, puoi utilizzare il comando "vgdisplay".

$ vgdisplay

$ vgdisplay <volume_group>

Come probabilmente avrai notato, "vgdisplay" mostra molte più informazioni rispetto al semplice comando "vgs".

Verso la fine dell'output, puoi vedere due colonne denominate "PE Size" e "Total PE" abbreviazione di "Physical Extents Size" e "Total Physical Extents".

Sotto il cofano, LVM gestisce estensioni fisiche che sono blocchi di dati molto simili al concetto di dimensione dei blocchi sulle partizioni.

In questo caso, LVM gestisce per questo gruppo di volumi estensioni fisiche grandi 4,00 MiB e il gruppo di volumi ha 511 estensioni fisiche diverse. Il calcolo porta ovviamente a uno spazio di 2,00 GiB (4*511 =2,044 MiB o 2,00 GiB).

In pratica, non dovresti preoccuparti troppo delle estensioni fisiche:LVM si assicura sempre che la mappatura tra le estensioni fisiche e i volumi logici sia preservata.

Ora che hai creato il tuo primo gruppo di volumi, è il momento di creare il tuo primo volume logico per archiviare i dati.

Gestione dei volumi logici LVM

Per creare un volume logico in un gruppo di volumi, devi utilizzare il comando "lvcreate", specificare il nome del volume logico e il gruppo di volumi a cui appartiene.

Per specificare lo spazio da occupare, è necessario utilizzare "-L ” e specificare una dimensione (composta da un numero e dalla sua unità)

$ lvcreate -L <size> <volume_group>

Se vuoi dare un nome al tuo volume logico, puoi usare l'opzione "-n".

$ lvcreate -n <name> -L <size> <volume_group>

Ancora una volta, puoi elencare il volume logico appena creato eseguendo il comando "lvs" come sudo.

$ lvs

Eseguendo il comando "lvs", ti vengono presentate molte colonne diverse:

  • LV :visualizzazione del nome del volume logico;
  • VG :descrivendo il gruppo di volumi a cui appartiene il tuo volume logico;
  • Attr :elencare gli attributi del tuo volume logico ("w" per scrivibile, "i" per ereditato e "a" per allocato);
  • Taglia L :autoesplicativo, descrive la dimensione del tuo volume logico in GiB;

Altre colonne descrivono l'uso avanzato di LVM come l'impostazione di spazi con mirroring o con striping. Per questo tutorial di base, non li descriveremo e verranno descritti in tutorial più avanzati.

Quando hai creato il tuo volume logico, alcune azioni sono state eseguite dal kernel senza che tu te ne accorgessi :

  • Un dispositivo virtuale è stato creato in /dev :in una cartella che prende il nome dal tuo gruppo di volumi (“vg_1”), è stato creato un dispositivo logico virtuale chiamato dal nome del volume logico (“lv_1”)
  • Il dispositivo virtuale è un collegamento software al dispositivo "dm-0" disponibile in /dev :"dm-0" è un dispositivo virtuale che contiene una mappatura tra i tuoi volumi logici e i tuoi dischi rigidi reali. (/dev/sda, /dev/sdb e così via)

Formattazione e montaggio dei volumi logici LVM

L'ultimo passaggio per iniziare a utilizzare lo spazio appena creato è formattare e montare i volumi logici.

Per formattare un volume logico , devi usare il comando “mkfs” e specificare il filesystem da usare.

$ mkfs -t <filesystem_type> <logical_volume>

Nel nostro caso, supponiamo di voler formattare il nostro volume logico come un filesystem "ext4", eseguiremo il seguente comando

$ mkfs -t ext4 /dev/vg_1/lv_1

Ora che il volume logico è formattato, devi semplicemente montarlo su una cartella del tuo sistema.

Per montare un volume logico LVM, devi usare il comando "mount", specificare il nome del volume logico e il punto di montaggio da utilizzare.

$ mount <logical_volume> <mount_point>

Per l'esempio, supponiamo di montare il filesystem nella directory "/mnt" della directory principale.

$ mount /dev/vg_1/lv_1 /mnt

Se ora esegui il comando "lsblk", dovresti essere in grado di vedere che il tuo volume logico è ora montato.

$ lsblk

Congratulazioni, ora puoi iniziare a utilizzare il volume appena creato!

Espansione di filesystem esistenti utilizzando LVM

Come caso d'uso di LVM, vediamo quanto può essere facile aumentare le dimensioni di un filesystem aggiungendo un altro disco al tuo host.

Se aggiungi un altro disco al tuo host, udev lo selezionerà automaticamente e gli assegnerà un nome.

Per avere il nome del dispositivo disco sul tuo sistema, assicurati di eseguire il comando "lsblk".

$ lsblk

Nel nostro caso, abbiamo aggiunto un nuovo hard disk sul connettore SATA che si chiama “sdc”.

Per aggiungere questo nuovo disco ai nostri livelli LVM, dobbiamo configurare ogni livello dello stack di archiviazione LVM.

Innanzitutto, contrassegniamo questo nuovo disco come volume fisico sul nostro host con "pvcreate comando ".

$ pvcreate /dev/sdc

Physical volume "/dev/sdc" successfully created

Quindi, devi aggiungere il volume fisico appena creato al gruppo di volumi.

Per aggiungere un volume fisico a un gruppo di volumi esistente, devi utilizzare "vgextend ”, specifica il gruppo di volumi e i volumi fisici da aggiungere.

$ vgextend vg_1 /dev/sdc

Volume group "vg_1" successfully extended

Con il comando "vgs", puoi verificare che il tuo gruppo di volumi sia stato esteso correttamente.

$ vgs

Come puoi vedere, rispetto alla prima sezione, l'output è leggermente cambiato:ora hai due volumi fisici. Inoltre, lo spazio è aumentato da 2 GiB a quasi 3 GiB.

Il tuo volume logico non è ancora più grande, dovrai aumentarne le dimensioni per occupare un po' di spazio disponibile nella piscina.

Per aumentare la dimensione del tuo volume logico, devi utilizzare "lvextend", specificare il volume logico e la dimensione da prendere con l'opzione "-L".

$ lvextend -L +1G dev/vg_1/lv_1

Come puoi vedere, la dimensione del volume logico è cambiata così come il numero di estensioni fisiche dedicate al tuo volume logico.

Aumentare il tuo volume logico non significa che il tuo filesystem aumenterà automaticamente per corrispondere alle dimensioni del tuo volume logico.

Per aumentare la dimensione del tuo filesystem, devi usare il comando “resize2fs” e specificare il volume logico da espandere (in questo caso “/dev/vg_1/lv_1”)

$ resize2fs /dev/vg_1/lv_1

Ora puoi controllare le dimensioni del tuo filesystem:è stato ampliato per corrispondere alle dimensioni del tuo volume logico, congratulazioni!

$ df -h

Come probabilmente avrai notato, hai aumentato le dimensioni del tuo filesystem aggiungendo un altro disco, ma non hai dovuto riavviare il sistema o smontare alcun filesystem nel processo.

Ridurre i filesystem esistenti utilizzando LVM

Ora che hai visto come espandere facilmente i filesystem esistenti, vediamo come puoi ridurli per ridurre il loro spazio.

Prima di ridurre qualsiasi volume logico, assicurati di avere dello spazio disponibile sul volume logico con il comando “df”.

$ df -h

Utilizzando il volume logico della sezione precedente, abbiamo ancora quasi 2 GiB disponibili.

Di conseguenza, possiamo rimuovere 1GiB dal volume logico.

Per ridurre la dimensione di un volume logico, devi eseguire il comando "lvreduce", specificare la dimensione con l'opzione "-L" e il nome del volume logico.

$ lvreduce -L <size> <logical_volume>

Nel nostro caso, questo porterebbe al seguente comando (per rimuovere 1GiB di spazio disponibile)

$ lvreduce -L 1G /dev/vg_1/lv_1

Nota :nota che questa operazione non è esente da rischi, potresti eliminare alcuni dei tuoi dati esistenti se scegli di ridurre il tuo volume logico.

Di conseguenza, lo spazio è stato riassegnato al gruppo di volumi ed è ora pronto per essere utilizzato da un altro volume logico nel sistema.

$ vgs

Conclusione

In questo tutorial hai imparato a conoscere LVM , abbreviazione di Gestione del volume logico e come viene utilizzato per configurare facilmente lo spazio adattabile sul tuo host.

Hai imparato quali volumi fisici , gruppi di volumi e volumi logici sono e come possono essere usati insieme per aumentare o ridurre facilmente i filesystem.

Se sei interessato all'amministrazione del sistema Linux , abbiamo una sezione completa dedicata ad esso sul sito Web, quindi assicurati di dare un'occhiata!


Linux
  1. Come creare un filesystem su una partizione Linux o un volume logico

  2. CentOS / RHEL:come trovare i volumi logici (LV) contenuti in Physical Volume (PV) in LVM

  3. Configurazione LVM:Operazioni/Utility Volume Fisico (PV).

  4. Elenca tutti i volumi fisici associati a un gruppo di volumi

  5. Come trovare i volumi fisici che contengono un volume logico in LVM

Logical Volume Manager (LVM) rispetto al partizionamento standard in Linux

Gestione del volume logico

Backup e ripristino di snapshot LVM su Linux

Spiegazione del comando Arping su Linux

Espandere il volume logico Lvm su macchina virtuale?

Guida per principianti a LVM (Gestione del volume logico)