Inleiding
LVM, of Logical Volume Management, is een technologie voor het beheer van opslagapparaten waarmee gebruikers de fysieke indeling van opslagapparaten kunnen samenvoegen en abstraheren voor een eenvoudiger en flexibel beheer. Gebruikmakend van het device mapper Linux kernel framework, kan de huidige iteratie, LVM2, worden gebruikt om bestaande opslagapparaten in groepen te verzamelen en logische eenheden van de gecombineerde ruimte naar behoefte toe te wijzen.
De belangrijkste voordelen van LVM zijn verhoogde abstractie, flexibiliteit en controle. Logische volumes kunnen betekenisvolle namen hebben, zoals “databases” of “root-backup”. Volumes kunnen dynamisch worden aangepast aan veranderende ruimtebehoeften en kunnen worden gemigreerd tussen fysieke apparaten binnen de pool op een draaiend systeem of eenvoudig worden geëxporteerd. LVM biedt ook geavanceerde mogelijkheden zoals snapshotting, striping en mirroring.
In deze handleiding bespreken we kort hoe LVM werkt en demonstreren we de basis commando’s die je nodig hebt om snel aan de slag te kunnen.
LVM-architectuur en terminologie
Voordat we in de eigenlijke LVM-beheeropdrachten duiken, is het belangrijk om een basiskennis te hebben van hoe LVM opslagapparaten organiseert en enkele van de gebruikte terminologie.
LVM Storage Management Structures
LVM functioneert door abstracties op fysieke opslagapparaten te stapelen. De basislagen die LVM gebruikt, te beginnen met de meest primitieve, zijn.
- Fysieke volumes:
- LVM-hulpprogramma prefix:
pv...
- Beschrijving: Fysieke blokapparaten of andere schijfachtige apparaten (bijvoorbeeld andere apparaten die zijn gemaakt door device mapper, zoals RAID-arrays) worden door LVM gebruikt als het ruwe bouwmateriaal voor hogere abstractieniveaus. Fysieke volumes zijn gewone opslagapparaten. LVM schrijft een header naar het apparaat om het toe te wijzen voor beheer.
- LVM-hulpprogramma prefix:
- Volume Groups:
- LVM utility prefix:
vg...
- Beschrijving: LVM combineert fysieke volumes in opslagpools die bekend staan als volumegroepen. Volumegroepen abstraheren de kenmerken van de onderliggende apparaten en functioneren als een verenigd logisch apparaat met gecombineerde opslagcapaciteit van de samenstellende fysieke volumes.
- LVM utility prefix:
- Logische volumes:
- LVM-hulpprefix:
lv...
(algemene LVM-hulpprogramma’s kunnen beginnen metlvm...
) - Beschrijving: Een volumegroep kan worden opgesplitst in een willekeurig aantal logische volumes. Logische volumes zijn functioneel gelijkwaardig aan partities op een fysieke schijf, maar met veel meer flexibiliteit. Logische volumes zijn de primaire component waarmee gebruikers en toepassingen communiceren.
- LVM-hulpprefix:
Samenvattend kan LVM worden gebruikt om fysieke volumes te combineren tot volumegroepen om de beschikbare opslagruimte op een systeem te verenigen. Daarna kunnen beheerders de volumegroep segmenteren in willekeurige logische volumes, die fungeren als flexibele partities.
Wat zijn extents?
Elk volume binnen een volumegroep wordt gesegmenteerd in kleine brokjes van vaste grootte, extents genaamd. De grootte van de extents wordt bepaald door de volumegroep (alle volumes binnen de groep voldoen aan dezelfde extentsgrootte).
De extents op een fysiek volume worden fysieke extents genoemd, terwijl de extents van een logisch volume logische extents worden genoemd. Een logisch volume is eenvoudigweg een mapping die LVM onderhoudt tussen logische en fysische extents. Door deze relatie vertegenwoordigt de grootte van de extent de kleinste hoeveelheid ruimte die kan worden toegewezen door LVM.
Extents liggen aan de basis van veel van de flexibiliteit en kracht van LVM. De logische extents die door LVM als unified device worden gepresenteerd, hoeven niet te worden gemapt naar continue fysieke extents. LVM kan de fysische extents waaruit een logisch volume bestaat kopiëren en reorganiseren zonder enige onderbreking voor de gebruikers. Logische volumes kunnen ook eenvoudig worden uitgebreid of verkleind door extents toe te voegen aan of te verwijderen uit het volume.
De eenvoudige gebruikssituatie
Nu u bekend bent met enkele van de terminologie en structuren die LVM gebruikt, kunnen we enkele veelgebruikte manieren om LVM te gebruiken verkennen. We beginnen met het doorlopen van een basisprocedure die twee fysische schijven gebruikt om vier logische volumes te vormen.
Markeer de fysische apparaten als fysische volumes
Onze eerste stap is het systeem scannen op block devices die LVM kan zien en beheren. U kunt dit doen door te typen:
- sudo lvmdiskscan
De uitvoer toont alle beschikbare block devices waar LVM mee kan werken:
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
Uit de bovenstaande uitvoer kunnen we zien dat er momenteel twee schijven en 17 partities zijn. De partities zijn meestal /dev/ram*
partities die het systeem gebruikt als een Ram-schijf voor prestatieverbeteringen. De schijven in dit voorbeeld zijn /dev/sda
, die 200G ruimte heeft, en /dev/sdb
, die 100G heeft.
Waarschuwing: Zorg ervoor dat u dubbel controleert of de apparaten die u van plan bent te gebruiken met LVM geen belangrijke gegevens hebben die er al op zijn geschreven. Het gebruik van deze devices binnen LVM zal de huidige inhoud overschrijven. Als er al belangrijke data op uw server staat, maak dan eerst een backup voordat u verder gaat.
Nu we weten welke fysieke apparaten we willen gebruiken, kunnen we ze markeren als fysieke volumes binnen LVM met het pvcreate
commando:
- sudo pvcreate /dev/sda /dev/sdb
Output Physical volume "/dev/sda" successfully created Physical volume "/dev/sdb" successfully created
Dit schrijft een LVM header naar de devices om aan te geven dat ze klaar zijn om aan een volume groep te worden toegevoegd.
U kunt snel controleren of LVM de fysieke volumes heeft geregistreerd door te typen:
- sudo pvs
Output PV VG Fmt Attr PSize PFree /dev/sda lvm2 --- 200.00g 200.00g /dev/sdb lvm2 --- 100.00g 100.00g
Zoals u kunt zien, zijn beide apparaten aanwezig onder de PV
kolom, die staat voor fysiek volume.
De fysieke volumes aan een volumegroep toevoegen
Nu we fysieke volumes van onze apparaten hebben gemaakt, kunnen we een volumegroep maken. We moeten een naam voor de volumegroep kiezen, die we algemeen houden. Meestal is er maar één volumegroep per systeem voor maximale flexibiliteit bij de toewijzing. We noemen onze volumegroep LVMVolGroup
om het eenvoudig te houden.
Om de volumegroep aan te maken en onze beide fysieke volumes eraan toe te voegen in een enkel commando, type:
- sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output Volume group "LVMVolGroup" successfully created
Als we de pvs
uitvoer nogmaals bekijken, kunnen we zien dat onze fysieke volumes nu zijn gekoppeld aan de nieuwe volumegroep:
- 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
We kunnen een korte samenvatting van de volumegroep zelf zien door te typen:
- sudo vgs
Output VG #PV #LV #SN Attr VSize VFree LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g
Zoals u kunt zien, heeft onze volumegroep momenteel twee fysieke volumes, nul logische volumes, en heeft de gecombineerde capaciteit van de onderliggende apparaten.
Logische volumes maken vanuit de volumegroeppool
Nu we een volumegroep beschikbaar hebben, kunnen we deze gebruiken als een pool waaruit we logische volumes kunnen toewijzen. In tegenstelling tot conventionele partitionering, moet u bij het werken met logische volumes de layout van het volume niet kennen aangezien LVM dit voor u mapt en afhandelt. Je hoeft alleen de grootte van het volume en een naam op te geven.
We zullen vier afzonderlijke logische volumes maken van onze volume groep:
- 10G “projecten” volume
- 5G “www” volume voor web content
- 20G “db” volume voor een database
- “werkruimte” volume dat de resterende ruimte zal vullen
Om logische volumes te maken, gebruiken we het lvcreate
commando. We moeten de volumegroep opgeven waaruit we willen putten, en kunnen het logische volume een naam geven met de -n
optie. Om de grootte rechtstreeks op te geven, kunt u de -L
optie gebruiken. Als u in plaats daarvan de grootte wilt opgeven in termen van het aantal extents, kunt u de optie -l
gebruiken.
We kunnen de eerste drie logische volumes met de -L
optie als volgt aanmaken:
- 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.
We kunnen de logische volumes en hun relatie tot de volumegroep zien door aangepaste uitvoer te selecteren met het vgs
commando:
- 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
We hebben de laatste twee kolommen van de uitvoer toegevoegd, zodat we de ruimte kunnen zien die aan onze logische volumes is toegewezen.
Nu kunnen we de rest van de ruimte in de volumegroep toewijzen aan het “workspace” volume met behulp van de -l
vlag, die in extents werkt. We kunnen ook een percentage en een eenheid opgeven om onze bedoelingen beter te communiceren. In ons geval willen we de resterende vrije ruimte toewijzen, dus kunnen we 100%FREE
doorgeven:
- sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output Logical volume "workspace" created.
Als we de informatie over de volumegroep opnieuw bekijken, zien we dat we alle beschikbare ruimte hebben opgebruikt:
- 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
Zoals u kunt zien, is het volume “workspace” aangemaakt en is de volumegroep “LVMVolGroup” volledig toegewezen.
De logische volumes formatteren en mounten
Nu we logische volumes hebben, kunnen we ze gebruiken als normale block devices.
De logische devices zijn beschikbaar in de /dev
directory net als andere opslag devices. U kunt ze op twee plaatsen benaderen:
/dev/volume_group_name/logical_volume_name
/dev/mapper/volume_group_name-logical_volume_name
Om onze vier logische volumes te formatteren met het Ext4-bestandssysteem, kunnen we dus het volgende typen:
- sudo mkfs.ext4 /dev/LVMVolGroup/projects
- sudo mkfs.ext4 /dev/LVMVolGroup/www
- sudo mkfs.ext4 /dev/LVMVolGroup/db
- sudo mkfs.ext4 /dev/LVMVolGroup/workspace
Of we kunnen typen:
- 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
Na het formatteren kunnen we mount-punten maken:
- sudo mkdir -p /mnt/{projects,www,db,workspace}
We kunnen dan de logische volumes op de juiste locatie mounten:
- 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
Om de mounts persistent te maken, voeg je ze toe aan /etc/fstab
net zoals je dat met normale block devices zou doen:
- sudo nano /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
Het besturingssysteem zou nu de LVM logische volumes automatisch bij het opstarten moeten aankoppelen.
Conclusie
Hopelijk heeft u op dit punt een redelijk goed begrip van de verschillende componenten die LVM beheert om een flexibel opslagsysteem te creëren. U zou ook een basisinzicht moeten hebben in hoe u opslagapparaten aan de praat krijgt in een LVM setup.
Deze gids heeft slechts kort de kracht en controle aangeroerd die LVM aan beheerders van Linux systemen biedt. Om meer te leren over het werken met LVM, bekijk dan onze gids over het gebruik van LVM met Ubuntu 16.04.