Despre Linux

  • Facebook
  • Twitter
  • LinkedIn
  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • Kubernetes
  • RHCSA
    • Exerciții RHCSA
    • SELinux
    • Permisiuni
  • General
    • Open source
  • Contact

Gestionarea spațiului de stocare cu ajutorul LVM

6 mai 2017 By Bobses 2 comentarii

Linux Logical Volume Manager (LVM) este un mecanism de virtualizare a discurilor. Poate crea și gestiona o partiție de disc "virtuală" dinamică folosind unul sau mai multe hard disk-uri fizice.  Această partiție poaste fi mărită, micșorată sau mutată de pe un disc pe altul, în funcție de necesități: grupului de volume LVM (VG - Volume Group) i se pot adăuga sau scoate discuri după dorință. Aceste modificări se pot face în timp ce sistemul vostru Linux rulează, nefiind necesară restartarea serverului. În acest articol voi prezenta (cu exemple) câteva comenzi LVM folosite în Linux.

Pentru a vă învăța să lucrați cu LVM nu este de ajuns doar citirea unui articol: trebuie și puțină practică. De aceea, recomand instalarea unei mașini virtuale în Virtualbox (de exemplu CentOS sau Ubuntu server - eu am folosit CentOS 7 pentru exemplele din acest articol), căreia îi puteți atașa diverse discuri asupra cărora puteți folosi comenzile LVM.

Înainte de a începe voi menționa două reguli generale:

  • pentru fiecare disc adăugat unui Volume Group, trebuie rulată prima dată comanda pvcreate: aceasta va "marca" discul ca LVM Physical Drive;
  • Volume Group-ul (VG) este "înființat" cu comanda vgcreate; discurile adiționale sunt adăugate în VG cu comanda vgextend.

Între timp s-a terminat și instalarea CentOS în mașina virtuală. Pentru a putea copia comenzile din terminal, m-am conectat prin SSH la mașina virtuală din Virtualbox.

Pentru a vedea ce am în prezent:

[[email protected] ~]# fdisk -l

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1050623 524288 83 Linux
/dev/sda2 1050624 16777215 7863296 8e Linux LVM

Se observă că partiția sda2 este de tipul 8e și este marcată ca fiind LVM.

Altfel, comanda lsblk ne arată cam același lucru (suplimentar, această comandă ne arată din ce este compus grupul de volume LVM numit cl_bobcentos: partițiile /, /home și swap):

[[email protected] ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 7.5G 0 part
├─cl_bobcentos-root 253:0 0 4.5G 0 lvm /
├─cl_bobcentos-swap 253:1 0 1G 0 lvm [SWAP]
└─cl_bobcentos-home 253:2 0 2G 0 lvm /home

Voi mai adăuga niște discuri la mașină din interfața Virtualbox. Pentru aceasta, voi închide sistemul din mașina virtuală și, cu click dreapta pe numele mașinii virtuale, voi merge la Settings - Storage și voi adăuga încă 3 discuri:

 Repornim mașina virtuală și ne vom conecta prin SSH la ea. Comanda lsblk ne arată și discurile nou adăugate - sdb, sdc și sdd (discuri goale, nepartiționate):

[[email protected] ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 7.5G 0 part
├─cl_bobcentos-root 253:0 0 4.5G 0 lvm /
├─cl_bobcentos-swap 253:1 0 1G 0 lvm [SWAP]
└─cl_bobcentos-home 253:2 0 2G 0 lvm /home
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk

Vreau să fac un grup de volume (Volume Group) din cele 3 discuri - sdb, sdc și sdd. Comanda ls -lA /dev/disk/by-id ne arată:

[email protected] ~]# ls -l /dev/disk/by-id
lrwxrwxrwx. 1 root root 9 May 6 13:24 ata-VBOX_HARDDISK_VB0e0eb063-aa394a63 -> ../../sdb --> disc gol
lrwxrwxrwx. 1 root root 9 May 6 13:24 ata-VBOX_HARDDISK_VB0e8d9fc3-285df115 -> ../../sdd --> disc gol
lrwxrwxrwx. 1 root root 9 May 6 13:24 ata-VBOX_HARDDISK_VB42164fd9-5dec8975 -> ../../sda
lrwxrwxrwx. 1 root root 10 May 6 13:24 ata-VBOX_HARDDISK_VB42164fd9-5dec8975-part1 -> ../../sda1
lrwxrwxrwx. 1 root root 10 May 6 13:24 ata-VBOX_HARDDISK_VB42164fd9-5dec8975-part2 -> ../../sda2
lrwxrwxrwx. 1 root root 9 May 6 13:24 ata-VBOX_HARDDISK_VBd4a7e026-9b2eb91c -> ../../sdc --> disc gol

Mergem mai departe și vom marca fiecare din cele 3 discuri ca LVM cu comanda pvcreate:

[[email protected] ~]# pvcreate /dev/sdb --> inițializează discul "/dev/sdb" ca un volum fizic LVM
Physical volume "/dev/sdb" successfully created.

[[email protected] ~]# pvcreate /dev/sdc --> inițializează discul "/dev/sdc" ca un volum fizic LVM
Physical volume "/dev/sdc" successfully created.

[[email protected] ~]# pvcreate /dev/sdd --> inițializează discul "/dev/sdd" ca un volum fizic LVM
Physical volume "/dev/sdd" successfully created.

Cu ajutorul comenzii pvs vom lista toate volumele fizice LVM de pe mașina locală:

Cu comanda vgcreate voi crea grupul de volume numit vg_bobses din sdb și sdc:

# vgcreate vg_bobses /dev/sdb /dev/sdc
Volume group "vg_bobses" successfully created

Comanda vgs ne afișează toate grupurile de volume LVM de pe sistemul local (după cum se observă în imaginea de mai jos, am două grupuri de volume LVM: primul, numit cl_bobcentos, conține partiția sda2 pe care este instalat sistemul de operare, iar cel de-al doilea, vg_bobses, este cel proaspăt creat:

Dacă rulez din nou comanda pvs, îmi vor fi listate toate volumele fizice LVM de pe mașina locală (îmi va fi arătat și că grupul vg_bobses este format din sdb și sdc) - discul sdd, chiar dacă este marcat ca LVM, nu face parte din niciun grup:

Cu ajutorul comenzii vgextend voi adăuga discul sdd grupului de volume vg_bobses:

# vgextend vg_bobses /dev/sdd
Volume group "vg_bobses" successfully extended

Coamnda vgs ne va afișa:

Acum, comanda pvs ne va arăta și discul sdd în interiorul volumului vg_bobses:

Cu ajutorul comenzii vgreduce vom scoate discul sdd din grupul de volume vg_bobses:

# vgreduce vg_bobses /dev/sdd
Removed "/dev/sdd" from volume group "vg_bobses"

Vom afișa noua componență a grupurilor de volume, apoi vom adăuga discul sdd grupului de volume cl_bobcentos folosind comenzile cunoscute: vgextend pentru mărirea unui grup de volume, vgs și pvs pentru listare - ilustrare în imaginea de mai jos:

Comanda lvs listează toate partițiile logice din interiorul unul grup de volume LVM - după cum se observă în imaginea de mai jos, grupul de volume vg_bobses nu conține nicio partiție logică, dar grupul cl_bobcentos este format, cum am zis și mai sus, din partțiile /, /home și swap:

Comanda pvdisplay ne arată statusul curent al volumelor fizice care intră în componența unui grup de volume LVM:

# pvdisplay
--- Physical volume ---
PV Name /dev/sdb
VG Name vg_bobses
PV Size 1.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 255
Free PE 255
Allocated PE 0
PV UUID wsoHKj-BFoL-2VYL-KOgo-1cJf-bZFB-DAXonD

--- Physical volume ---
PV Name /dev/sdc
VG Name vg_bobses
PV Size 1.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 255
Free PE 255
Allocated PE 0
PV UUID r4EQho-f7iW-QawL-YYAD-qmnQ-sNI7-IUvKLC

--- Physical volume ---
PV Name /dev/sda2
VG Name cl_bobcentos
PV Size 7.50 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1919
Free PE 1
Allocated PE 1918
PV UUID 51QV2f-7CZE-Q9iq-ZOyS-cZ9a-dok1-gP1mGw

--- Physical volume ---
PV Name /dev/sdd
VG Name cl_bobcentos
PV Size 1.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 255
Free PE 255
Allocated PE 0
PV UUID GER3Py-5eI9-FddS-HPQI-ki0W-fIDJ-VlXVpy

Comanda vgdisplay ne spune câteva amănunte despre grupurile noastre de volume:

# vgdisplay
--- Volume group ---
VG Name vg_bobses
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.99 GiB
PE Size 4.00 MiB
Total PE 510
Alloc PE / Size 0 / 0
Free PE / Size 510 / 1.99 GiB
VG UUID nwQ0NA-o0Ot-tVJt-pNWx-4xQC-VRW6-LeRz1E

--- Volume group ---
VG Name cl_bobcentos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 8.49 GiB
PE Size 4.00 MiB
Total PE 2174
Alloc PE / Size 1918 / 7.49 GiB
Free PE / Size 256 / 1.00 GiB
VG UUID y6XbCQ-qXwk-nev0-Y1vx-0JXl-MMGy-D95ffE

Comanda vgscan scanează și afișează toate grupurile de volume LVM din sistemul nostru:

Cu comanda vgrename putem redenumi un grup de volume:

# vgrename cl_bobcentos centos7
Volume group "cl_bobcentos" successfully renamed to "centos7"

Comanda vgremove șterge un grup de volume LVM:

# vgremove vg_bobses
Volume group "vg_bobses" successfully removed
[[email protected] ~]# vgscan
Reading volume groups from cache.
Found volume group "centos7" using metadata type lvm2

Acum voi recrea un alt grup de volume din sdb și sdc:

# vgcreate vg_grup /dev/sdb /dev/sdc
Volume group "vg_grup" successfully created

Cu ajutorul comenzii lvcreate voi face 2 partiții logice în acest grup de volume:

# lvcreate --name backup --size 1G vg_grup
Logical volume "backup" created.

Voi folosi restul spațiului rămas liber ca să fac partiția logică media:

# lvcreate --name media -l 100%FREE vg_grup
Logical volume "media" created.

Comanda lvs (pe care am folosit-o și mai sus) ne va arăta partițiile logice din grupul vg_grup:

Comanda lvdisplay ne arată o privire de ansamblu asupra tuturor partițiilor logice din sistemul nostru (de pe toate grupurile de volume din sistem):

# lvdisplay
--- Logical volume ---
LV Path /dev/centos7/home
LV Name home
VG Name centos7
LV UUID 634nkO-jb9y-SVEC-kosK-Whl3-cRAE-aB1j2V
LV Write Access read/write
LV Creation host, time bobcentos, 2017-05-06 12:24:19 +0300
LV Status available
# open 1
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2

--- Logical volume ---
LV Path /dev/centos7/swap
LV Name swap
VG Name centos7
LV UUID lSozLh-gkVh-hc2e-ccvY-LBBj-cgoq-xLapnF
LV Write Access read/write
LV Creation host, time bobcentos, 2017-05-06 12:24:22 +0300
LV Status available
# open 2
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1

--- Logical volume ---
LV Path /dev/centos7/root
LV Name root
VG Name centos7
LV UUID tOvUT8-poRu-isPA-TZVN-aVgq-K1PC-GyVXzR
LV Write Access read/write
LV Creation host, time bobcentos, 2017-05-06 12:24:24 +0300
LV Status available
# open 1
LV Size 4.49 GiB
Current LE 1150
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0

--- Logical volume ---
LV Path /dev/vg_grup/backup
LV Name backup
VG Name vg_grup
LV UUID c29JVg-Fc4o-5bQ9-Egmf-QSaz-2oRg-GRWF8H
LV Write Access read/write
LV Creation host, time bobcentos, 2017-05-06 14:23:11 +0300
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 256
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3

--- Logical volume ---
LV Path /dev/vg_grup/media
LV Name media
VG Name vg_grup
LV UUID CnY1Lv-fKFR-fREx-eplf-sRmP-Hf4H-ddN2pP
LV Write Access read/write
LV Creation host, time bobcentos, 2017-05-06 14:25:54 +0300
LV Status available
# open 0
LV Size 1016.00 MiB
Current LE 254
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:4

Echivalentul comenzii vgscan pentru partiții logice este comanda lvscan, care afișează toate partițiile logice din sistem:

# lvscan
ACTIVE '/dev/centos7/home' [2.00 GiB] inherit
ACTIVE '/dev/centos7/swap' [1.00 GiB] inherit
ACTIVE '/dev/centos7/root' [4.49 GiB] inherit
ACTIVE '/dev/vg_grup/backup' [1.00 GiB] inherit
ACTIVE '/dev/vg_grup/media' [1016.00 MiB] inherit

Redenumire unei partiții logice se face cu comanda lvrename:

# lvrename vg_grup media muzica
Renamed "media" to "muzica" in volume group "vg_grup"

Un volum logic se șterge cu comanda lvremove:

# lvremove /dev/vg_grup/muzica
Do you really want to remove active logical volume vg_grup/muzica? [y/n]: y
Logical volume "muzica" successfully removed

Să extindem partiția logică backup din grupul vg_grup cu încă 500 MB cu ajutorul comenzii lvextend:

# lvextend -L1.5G /dev/vg_grup/backup
Size of logical volume vg_grup/backup changed from 1.00 GiB (256 extents) to 1.50 GiB (384 extents).
Logical volume vg_grup/backup successfully resized.

Cu comanda lvreduce se poate micșora dimensiunea unei partiții logice.

Putem adăuga un disc nou grupului de volume vg_grup, se poate reface partiția logică media, o putem extinde în limita spațiului liber rămas în grupul de volume și multe altele. Putem adăuga un sistem de fișiere unei partiții logice dintr-un volum folosind comenzile descrise aici.

Un foarte scurt rezumat a ceea ce am spus până acum: cu ajutorul mai multor hard disk-uri fizice, putem face un grup de volume LVM. În interiorul acestui grup de volume, putem avea una sau mai multe partiții logice. Dacă avem nevoie de mai mult spațiu, putem adăuga un nou disc fizic grupului de volume, apoi să extindem partiția logică cu probleme. Toate modificările ulterioare (cu ajutorul comenzilor de mai sus) se fac fără a restarta sistemul Linux.

Ce frumos e în AWS (Amazon Web Services) când te joci cu volumele (atașate/detașate de la o instanță la alta) și-ți gestionezi din câteva click-uri și comenzi spațiul de stocare după necesități... 🙂

Partajează asta:

  • Dă clic pentru a partaja pe Facebook(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe Twitter(Se deschide într-o fereastră nouă)

Similare

Din categoria: Tutoriale Etichete: LVM, partitionare, Volume Group

Comentarii

  1. Ice Alinutza a zis

    6 mai 2017 la ora 20:38

    Felicitări!!! Un articol "muncit" la propriu, foarte bine structurat, interesant și accesibil!!! Nu-s întru totul de acord cu "introducerea" vis-a-vis de definiția LVM-ului dar este ceva minor...

    Răspunde
    • Bobses a zis

      6 mai 2017 la ora 20:51

      Mulțumesc.
      Cât despre introducere, am încercat s-o fac să fie cât mai pe înțelesul celor care nu știu nimic despre LVM. E posibil să nu fi reușit întru totul...

      Răspunde

Lasă un răspuns Anulează răspunsul

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2023 · Bobses

Administrează consimțămintele pentru cookie-uri
Pentru a oferi cea mai bună experiență, folosim tehnologii, cum ar fi cookie-uri, pentru a stoca și/sau accesa informațiile despre dispozitive. Consimțământul pentru aceste tehnologii ne permite să procesăm date, cum ar fi comportamentul de navigare sau ID-uri unice pe acest site. Dacă nu îți dai consimțământul sau îți retragi consimțământul dat poate avea afecte negative asupra unor anumite funcționalități și funcții.
Funcționale Mereu activ
Stocarea tehnică sau accesul sunt strict necesare în scopul legitim de a permite utilizarea unui anumit serviciu cerut în mod explicit de către un abonat sau un utilizator sau în scopul exclusiv de a executa transmiterea unei comunicări printr-o rețea de comunicații electronice.
Preferințe
Stocarea tehnică sau accesul este necesară în scop legitim pentru stocarea preferințelor care nu sunt cerute de abonat sau utilizator.
Statistici
Stocarea tehnică sau accesul care sunt utilizate exclusiv în scopuri statistice. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
Stocarea tehnică sau accesul sunt necesare pentru a crea profiluri de utilizator pentru a trimite publicitate sau pentru a urmări utilizatorul pe un site web sau pe mai multe site-uri web în scopuri de marketing similare.
Administrează opțiunile Administrează serviciile Administrează vânzătorii Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}