Btrfs: Verkenning van de krachtige bestandssysteem subvolumes en snapshots

Dit is de vierde post in de serie over de btrfs-bestandssysteem. In de eerste post over dit onderwerp besproken I; btrfs basics, laat zien hoe eenvoudig Btrfs bestandssystemen te creëren.

Btrfs handen op: Mijn eerste experimenten met een nieuwe Linux-bestandssysteem

Btrfs handen op: Exploring RAID en redundantie; Btrfs handen op: Een uiterst koel bestandssysteem; openSuSE 13.1 hands on: Nog enkele gedachten

Verscheiden genoemd “B-Tree” of “beter” of zelfs “Butter”, hier is wat ik aantrof toen ik begon om deze ‘fast-moving target’ van een bestandssysteem te verkennen.

In de tweede paal, meer op btrfs, ik liet zien hoe Btrfs bestandssystemen meerdere partities en apparaten kunnen overbruggen, en kan worden aangepast, zelfs terwijl het bestandssysteem is nog steeds gemonteerd. In de derde paal, RAID en redundantie, besprak ik een aantal van de geavanceerde structurele capbilities van btrfs.

Enterprise Software; Sweet SUSE! ? HPE haken en ogen zelf een Linux-distro, Cloud, Red Hat is van plan nog steeds op dat de OpenStack vennootschap; Enterprise Software, te beginnen met Linux in de vroege dagen, Linux, Linux survival guide:? Deze 21-toepassingen kunt u gemakkelijk tussen Linux en Windows bewegen

Hoewel ik geef heel wat informatie en voorbeelden in deze posten, vergeet dan niet dat ik alleen maar proberen om een ​​overzicht van btrfs functionaliteit en het gebruik geven en de gezaghebbende bron voor informatie blijft Btrfs Wiki.

Er is nog een aspect van Btrfs bestandssysteem de schepping en de structuur die ik zou willen bespreken – subvolumes.

Maar waar te beginnen met subvolumes, dat is een beetje een probleem. Houd er rekening met mij in het vervolg, omdat ik moeite om een ​​duidelijke en effectieve manier om dit te presenteren te vinden.

Ik heb geprobeerd te schrijven met CLI voorbeelden, maar dat verandert het in een lange springerig reeks opdrachten en uitleg.

Ik heb geprobeerd te schrijven met GUI screenshots, maar dat komt kijken gekunsteld en het verspillen van enorme hoeveelheid ruimte om zeer weinig informatie te presenteren op een manier die niet erg duidelijk hoe dan ook. Dus ik heb uiteindelijk besloten dat de beste manier is om gewoon te schrijven een beschrijving met een paar blokken van CLI commando sequenties. Vingers gekruist … (moeilijk om te typen op die manier!).

Een ding is vrijwel zeker – btrfs subvolumes zijn een soort van een heleboel dingen die u eerder hebt gewerkt, maar ze zijn niet echt als iets u eerder hebt gewerkt.

Ik vind het handig om te denken van hen is als “alternate beperkt uitzicht” in een bestandssysteem. Elke btrfs subvolume heeft een corresponderende directory in haar moedermaatschappij bestandssysteem, dat wordt gemaakt wanneer u de subvolume zelf te creëren.

Je kunt dingen in die map te kopiëren (die dus zet ze in dat subvolume), kunt u andere mappen onder die subvolume map aan te maken, en je kunt zelfs andere subvolumes creëren eronder. De sleutel hier is dat het lijkt en gedraagt ​​zich bijna precies zoals een “normale” directory. (Hint: probeer een subvolume directory met rmdir te verwijderen.)

Natuurlijk, er is niet veel interessants over een aantal ingewikkelde nieuwe manier om gewoon een map, en gelukkig dat is niet alles wat er te subvolumes. U kunt een subvolume eigenlijk monteren in principe op dezelfde manier dat je altijd hebt gemonteerd gehele fillesystems, alles wat je hoeft te doen is toe te voegen “-o subvol = naam” of “-o subvolid = ID” om het commando mount of / etc / fstab . Wanneer u dit doet, zal de directory in verband met de subvolume het hoogste niveau van de gemonteerde bestandssysteem zijn. Dat is wat ik bedoel met “beperkt zicht” hierboven.

Laten we proberen een snel voorbeeld om te laten zien wat ik bedoel. Ik ben hier te beginnen met een eenvoudige Btrfs bestandssysteem gemount op / mnt.

# Mount / dev / sda4 / mnt

# Btrfs subvolume creëren / mnt / svol

# Btrfs subvolume lijst / mnt

ID 256 gen 5 top level 5 pad svol

# Ls -l / mnt

totaal 0

Verder lezen op Btfrs

drwxr-xr-x 2 rootgebruikers 4096 4 december 21:38 svol

# Cp / etc / motd / mnt / svol

# Ls -l / mnt / svol

totaal 4

-rw-r – r– 1 wortel-gebruikers 21 4 december 21:40 motd

# Umount / mnt

# Mount -o subvol = svol / dev / sda4 / mnt

# Ls -l / mnt

totaal 4

-rw-r – r– 1 wortel-gebruikers 21 4 december 21:40 motd

Zie je wat er gebeurd is? Toen ik had de hele btrfs bestandssysteem gemonteerd, kon ik de subvolume directory te zien en ik gekopieerd van een bestand in die map.

Maar toen ik ontkoppeld, en vervolgens gemonteerd de subvolume, dat bestand is dan zichtbaar op het hoogste niveau, omdat de directory in verband met de subvolume had om het koppelpunt toegewezen. Even belangrijk, maar onmogelijk om hier te laten zien, is het feit dat er nu geen manier voor mij om te zien of toegang te krijgen tot iets boven dat subvolume directory. Dus ik heb een “alternatieve beperkt zicht ‘van het Btrfs bestandssysteem.

Ok, terwijl je je hoofd krabben over die, laat ik gooi nog een ding op je af. Ik kan het eigenlijk nog steeds monteer de gehele filesystem als goed, en alles wat er gebeurt in deze subvolume zal er zichtbaar zijn, als goed. Bekijken

# Mount / dev / sda4 / data

# Ls -Rl / data

/gegevens

totaal 0

drwxr-xr-x 2 rootgebruikers 4096 4 december 21:38 svol

/ Data / svol

totaal 4

-rw-r – r– 1 wortel-gebruikers 21 4 december 21:40 motd

Nu, ik ben niet van plan om veel tijd te verspillen aan de rest van de manipulatie, maar ik kan toevoegen, wijzigen of verwijderen van bestanden in één van deze mount points, en de wijzigingen zullen onmiddellijk zichtbaar zijn in de andere. Dat is behoorlijk indrukwekkend.

Op dit punt, hoop ik dat ervaren Linux-beheerders beginnen te beseffen hoe nuttig en krachtig dit kan zijn.

Ik wil er ook op wijzen dat dit is natuurlijk niet beperkt tot slechts één subvolume, als een triviaal voorbeeld kon je net zo makkelijk een aantal meer subvolumes, misschien genoemd als SV2, SV3, SV4 maken en ga zo maar door, en zet elk van hen in verschillende plaatsen, voor verschillende toepassingen, maar dan nog het gehele bestandssysteem en gemonteerd, zodat je kon monitoren en beheren van de inhoud van de verschillende subvolumes van de ene plaats.

Ok, dus veel voor de basisprincipes van het maken en monteren subvolumes. Maar er is meer, en het is nog beter. Een van de meest handige functies is de mogelijkheid om momentopnamen van subvolumes nemen. De opdracht is heel eenvoudig

# Btrfs subvolume snapshot / mnt / svol / mnt / snap

Dit zal een momentopname van de inhoud van subvolume svol te creëren, in een nieuwe map genaamd snap. In feite, blijkt dat snap zelf is een nieuw subvolume. Als u een “-r” toe te voegen aan die opdracht, zal het een alleen-lezen momentopname van de subvolume creëren. Oh, en omdat btrfs is een Copy-on-Write bestandssysteem, de snapshot verbruikt aanvankelijk geen extra schijfruimte, en zal alleen beginnen om ruimte te gebruiken als / wanneer de bestanden worden gewijzigd, of nieuwe bestanden worden aangemaakt. Zowie!

Ok, nog een laatste ding voordat we eindigen met subvolumes. Een andere zeer handige functie, subvolume quota. U kunt quota’s gedefinieerd voor subvolumes en groepen subvolumes hebben, zodat u kunt ervoor zorgen dat een of meer subvolumes niet alle beschikbare ruimte consumeren in een btrfs bestandssysteem.

Nou, ik hoop dat was niet te dicht of te saai. Subvolumes zijn echt een van de absolute belangrijkste kenmerken van btrfs bestandssystemen, en het leren gebruiken en te beheren ze effectief is de sleutel tot het krijgen van een aantal echte voordelen van btrfs. Sorry dat er geen mooie foto’s deze keer …

Sweet SUSE! HPE haken en ogen zelf een Linux distro

? Red Hat is van plan nog steeds op dat de OpenStack bedrijf

? Beginnen met Linux in de vroege dagen

Linux survival guide: Deze 21-toepassingen kunt u gemakkelijk tussen Linux en Windows bewegen