LVM basis: logical volumes beheren en herstellen
Kort antwoord
LVM (Logical Volume Manager) zit tussen je ruwe schijven en je bestandssystemen in. Fysieke schijven worden physical volumes, physical volumes worden samengevoegd tot een volume group, en de volume group wordt opgedeeld in logical volumes die je daadwerkelijk formatteert en mount. Inspecteer de stack met pvs, vgs en lvs. Verschijnt een volume group niet na het opstarten in een rescue-omgeving, dan moet hij meestal gewoon geactiveerd worden: draai vgscan gevolgd door vgchange -ay.
De LVM-stack, laag voor laag
LVM voegt een abstractielaag toe tussen je fysieke storage en de bestandssystemen die je daadwerkelijk gebruikt. In plaats van een partitie direct te formatteren, bouw je de stack op in drie stappen:
- Physical volume (PV). Een schijf of partitie die is geïnitialiseerd voor gebruik door LVM. Dit is het ruwe materiaal.
- Volume group (VG). Een pool die bestaat uit een of meer physical volumes. De capaciteit van elke physical volume in de groep wordt samengevoegd tot één pool aan ruimte.
- Logical volume (LV). Een stuk ruimte dat uit een volume group wordt gehaald. Een logical volume is wat je formatteert met een bestandssysteem en mount, op dezelfde manier waarop je anders een gewone partitie zou mounten.
De keten loopt één kant op: physical volumes vormen samen een volume group, en een volume group wordt opgedeeld in logical volumes. Alles boven de volume group maakt het niet uit op welke fysieke schijf een bepaald block daadwerkelijk staat, die indirectie is precies het punt.
Waarom LVM de moeite waard is
Een gewone partitie ligt vast zodra hij is aangemaakt: de grootte, en op welke fysieke schijf hij staat, staan allebei vast tenzij je opnieuw partitioneert. LVM haalt beide beperkingen weg:
- Formaat wijzigen zonder opnieuw te partitioneren. Zolang een volume group vrije ruimte heeft, kun je een logical volume laten groeien (en, afhankelijk van het bestandssysteem, laten krimpen) zonder ook maar aan partitietabellen te komen.
- Meerdere fysieke schijven overspannen. Een volume group kan ruimte poolen uit meerdere physical volumes, waardoor een logical volume groter kan zijn dan elke onderliggende schijf afzonderlijk.
- Een snapshot maken van een volume. LVM kan op een specifiek moment een snapshot maken van een logical volume, handig voor een consistente backup van een volume waar nog naar wordt geschreven, of om een terugvalpunt te hebben voordat je een risicovolle wijziging doorvoert.
De prijs die je daarvoor betaalt, is een extra laag om over na te denken als er iets misgaat, en dat is precies het herstelscenario dat hieronder aan bod komt.
De stack inspecteren
Elke laag heeft een kort samenvattend commando en een gedetailleerd commando. Begin met de samenvattende commando's om je een beeld te vormen:
| Laag | Samenvattend commando | Gedetailleerd commando |
|---|---|---|
| Physical volumes | pvs | pvdisplay |
| Volume groups | vgs | vgdisplay |
| Logical volumes | lvs | lvdisplay |
De samenvattende commando's (pvs, vgs, lvs) tonen één regel per item, meestal genoeg om te zien wat er bestaat en hoeveel ruimte gebruikt of vrij is. De *display-commando's tonen een volledig attributenblok per item, handig als je specifieke details nodig hebt, zoals de exacte extent-grootte van een volume group of het volledige apparaatpad van een logical volume.
Een volume group herstellen die niet verschijnt
Een veelvoorkomende situatie na het opstarten in een rescue-omgeving (zie Wat is rescue mode, en wanneer heb je het nodig): de normale schijven van de server zijn zichtbaar op block-device-niveau, maar vgs of lvs komt leeg terug, of de volume group die je verwacht staat er gewoon niet bij. Dat is te verwachten en niet per se een teken van corruptie. Rescue mode start een aparte, minimale omgeving op die niet automatisch weet heeft van, of een volume group activeert die op een andere schijf staat, op dezelfde manier waarop het ook niet automatisch een software-RAID-array samenstelt of versleutelde storage ontgrendelt.
Scan naar volume groups
vgscan leest de physical volumes die het kan zien en herbouwt LVM's kennis van welke volume groups daarop bestaan:
vgscanActiveer de volume group
Scannen maakt de volume group zichtbaar, maar niet per se actief. Activeer elke volume group die vgscan heeft gevonden:
vgchange -ayOm één met naam genoemde volume group te activeren in plaats van allemaal, geef je de naam mee:
vgchange -ay vg_dataBevestig en mount
Draai lvs opnieuw om te bevestigen dat de logical volumes nu zichtbaar zijn, en mount vervolgens degene die je nodig hebt zoals je elk ander block device zou mounten. Zie Een schijf mounten in Linux voor die stap.
lvs
mount /dev/vg_data/lv_data /mnt/recoveryVerschijnt de volume group nog steeds niet na vgscan, controleer dan eerst of de onderliggende physical volumes daadwerkelijk zichtbaar zijn met pvs. Een volume group kan alleen gevonden worden als elke physical volume waar hij van afhangt bereikbaar is: een schijf die niet is opgekomen, of een RAID-array die nog niet is samengesteld, houdt de volume group verborgen, hoe vaak je ook scant.