Btrfs

Inleiding tot het Btrfs-bestandssysteem

Inleiding tot het Btrfs-bestandssysteem
Btrfs (B-Tree Filesystem) is een modern copy-on-write (CoW) bestandssysteem voor Linux. Btrfs streeft ernaar veel geavanceerde bestandssysteemfuncties te implementeren, terwijl de nadruk ligt op fouttolerantie, reparatie en eenvoudig beheer. Het btrfs-bestandssysteem is ontworpen om de vereisten van krachtige en grote opslagservers te ondersteunen. Het is geschikt voor datacenters op petabyteschaal en voor mobiele smartphones.In dit artikel ga ik het Btrfs-bestandssysteem en zijn functies bespreken. Dus laten we beginnen.

Kopiëren bij schrijven - CoW-bestandssysteem:

Btrfs is een copy-on-write (CoW) bestandssysteem. Wanneer u in een CoW-bestandssysteem probeert gegevens op het bestandssysteem te wijzigen, kopieert het bestandssysteem de gegevens, wijzigt de gegevens en schrijft de gewijzigde gegevens vervolgens terug naar een andere vrije locatie van het bestandssysteem.

Het belangrijkste voordeel van het Copy-on-Write (CoW) bestandssysteem is dat de data-extensie die het wil wijzigen naar een andere locatie wordt gekopieerd, gewijzigd en opgeslagen in een andere omvang van het bestandssysteem. Het oorspronkelijke gegevensbereik wordt niet gewijzigd. Het btrfs-bestandssysteem kan dus het risico van gegevensbeschadiging of gedeeltelijke update elimineren in geval van stroomuitval tijdens gegevenswijziging, aangezien de originele gegevens ongewijzigd blijven.

Het belangrijkste nadeel van het Copy-on-Write (CoW) bestandssysteem is dat grote bestanden de neiging hebben om gefragmenteerd te raken als ze worden gewijzigd. Dus af en toe is defragmentatie vereist. Gelukkig ondersteunt het btrfs-bestandssysteem online defragmentatie. U hoeft het bestandssysteem dus niet te ontkoppelen om een ​​btrfs-bestandssysteem te defragmenteren.

Belangrijkste kenmerken van het Btrfs-bestandssysteem:

De belangrijkste kenmerken van het Btrfs-bestandssysteem zijn:

i) Op omvang gebaseerde bestandsopslag: In een op uitbreiding gebaseerd bestandssysteem wordt de opslageenheid een uitbreiding genoemd. Een omvang is een aaneengesloten opslaggebied dat is gereserveerd voor een bestand. Eén bestand vereist één extensie, hoe klein het bestand ook is. Voor grotere bestanden (bestandsgrootte groter dan de omvang), zijn meerdere extensies vereist. Voor grotere bestanden worden metadata gebruikt om bij te houden welke extensies het bestand gebruikt. In het Btrfs-bestandssysteem zijn de metadata aanzienlijk kleiner in omvang. Kleinere metadata verbetert de opslagefficiëntie en de prestaties van het bestandssysteem.

ii) Ondersteuning voor enorme bestandsgrootte: In een Btrfs-bestandssysteem kan een enkel bestand ongeveer 2 . zijn64 bytes of 16 EiB (exbibytes) groot. Hoe groot uw bestand ook wordt, Btrfs kan het ondersteunen.

iii) Ruimtebesparende verpakking van kleine bestanden: Normaal gesproken, hoe klein een bestand ook is, er is één blok of één omvang nodig om het bestand op te slaan. Dit verspilt veel schijfruimte. Om dit probleem op te lossen, sluit het Btrfs-bestandssysteem kleinere bestanden in de metadata in om kleinere bestanden efficiënt op te slaan.

iv) Ruimtebesparende geïndexeerde mappen: De mappen van het btrfs-bestandssysteem worden op twee verschillende manieren geïndexeerd. Voor het opzoeken van bestandsnamen wordt op sleutels gebaseerde indexering gebruikt. Om naar gegevens te verwijzen, wordt op inodes gebaseerde sleutelindexering gebruikt. Indexering op twee niveaus verbetert de zoekprestaties van directory's/bestanden en vermindert de opslagvereisten voor de indexen.

v) Dynamische inodetoewijzing: Je hebt 1 inode nodig om naar 1 bestand te verwijzen. Veel bestandssystemen (i.e., Ext4) hebben een vast aantal inodes. Dus als u te veel kleine bestanden maakt, heeft u mogelijk veel ruimte op uw schijf, maar kunt u geen nieuwe bestanden maken. Je kunt het maximum aantal inodes ook niet verhogen als het bestandssysteem eenmaal is aangemaakt.

Btrfs lost dit probleem op door inodes dynamisch toe te wijzen wanneer ze nodig zijn. U kunt dus zoveel bestanden maken als u wilt, zolang u maar vrije schijfruimte heeft.

vi) Beschrijfbare snapshots en alleen-lezen snapshots: Het Btrfs-bestandssysteem ondersteunt snapshots. U kunt een momentopname maken van het huidige bestandssysteem, dat u kunt gebruiken om uw gegevens te herstellen als u per ongeluk enkele bestanden hebt verwijderd of gegevens hebt beschadigd.

Standaard zijn de btrfs-snapshots alleen-lezen. Als u eenmaal een alleen-lezen momentopname hebt gemaakt, kunt u geen bestanden/mappen in die momentopname meer wijzigen. In ieder geval, als u bestanden/mappen wilt wijzigen nadat u een momentopname van uw bestaande Btrfs-bestandssysteem hebt gemaakt, kunt u de alleen-lezen momentopname wijzigen in een beschrijfbare momentopname en alle bestanden/mappen in die momentopname wijzigen.

vii) Subvolumes: Een Btrfs-bestandssysteem kan veel subvolumes hebben. Een subvolume is een benoemde binaire boom (B-tree) (of interne/logische bestandssysteem root) van de bestaande bestandssysteem root tree (main) van het btrfs bestandssysteem. Een subvolume is geen eigen blokapparaat. Maar u kunt Btrfs-subvolumes afzonderlijk aankoppelen. U kunt subvolumes zien als naamruimten.

viii) Subvolume-bewuste quota-ondersteuning: U kunt ook quota toewijzen voor subvolumes. Zodra het quotum is overschreden, kunt u geen nieuwe gegevens meer aan het subvolume toevoegen. U hebt geen aparte programma's nodig om Btrfs-subvolumequota te maken.

ix) Controlesommen op data en metadata: Om datacorruptie te voorkomen, gebruikt Btrfs standaard crc32c checksum-algoritmen voor de data en de metadata van het bestandssysteem. De checksums worden opgeslagen in het bestandssysteem om automatisch te controleren op bestandssysteemfouten en datacorrupties op de achtergrond.

Btrfs heeft ondersteuning voor vele andere checksum-algoritmen: xxhash, sha256 en blake2b.

x) Compressie: Btrfs-bestandssysteem ondersteunt transparante bestandscompressie. De compressie en decompressie van de bestanden in een btrfs-bestandssysteem gebeurt automatisch op de achtergrond.

Btrfs ondersteunt 3 compressie-algoritmen: ZLIB, LZO en ZSTD.

ZLIB is de standaard compressiemethode van het btrfs-bestandssysteem.

xi) Geïntegreerde ondersteuning voor meerdere apparaten: Btrfs-bestandssystemen hebben ingebouwde ondersteuning voor logisch volumebeheer (LVM). U kunt meerdere opslagapparaten toevoegen aan een enkel btrfs-bestandssysteem. Je kunt ook RAID-arrays configureren op het btrfs-bestandssysteem zonder dat je extra software nodig hebt.

Btrfs-bestandssysteem ondersteunt data striping, data mirroring, data striping+mirroring en enkele en dubbele pariteit implementaties.

Gegevens striping: Als u meerdere opslagapparaten in hetzelfde btrfs-bestandssysteem hebt toegevoegd, kan btrfs hetzelfde bestand op verschillende fysieke apparaten/partities opslaan. Dit wordt datastriping genoemd. Gegevensstriping verbetert de lees-/schrijfprestaties van het bestandssysteem. RAID-0 maakt uitgebreid gebruik van de functie voor gegevensstriping.

Gegevens spiegelen: Als u meerdere opslagapparaten in hetzelfde btrfs-bestandssysteem hebt toegevoegd, worden alle gegevens die naar één opslagapparaat zijn geschreven, naar alle andere opslagapparaten geschreven. Dit wordt gegevensspiegeling genoemd. RAID-1 maakt uitgebreid gebruik van de functie voor gegevensspiegeling.

Gegevens striping + enkele pariteit: RAID-5 maakt gebruik van datastriping en enkele gedistribueerde pariteit. Als u meerdere opslagapparaten in een btrfs-bestandssysteem hebt toegevoegd, dan zal RAID-5 de gegevens op meerdere opslagapparaten strippen en pariteitsblokken over de opslagapparaten berekenen en opslaan. RAID-5 kan een enkele schijfstoring doorstaan.

Gegevensstriping + dubbele pariteit: RAID-6 maakt gebruik van datastriping en dubbele gedistribueerde pariteit. Als u meerdere opslagapparaten in een btrfs-bestandssysteem hebt toegevoegd, dan zal RAID-6 de gegevens op meerdere opslagapparaten strippen en dubbele pariteitsblokken berekenen en opslaan over de opslagapparaten. RAID-6 kan twee schijfstoringen aan. Verder is het hetzelfde als RAID-5 (data striping+single parity).

Gegevens striping+mirroring: RAID-10 gebruikt tegelijkertijd datastriping en datamirroring. RAID-10 vereist dat een even aantal opslagapparaten van dezelfde grootte wordt toegevoegd aan een enkel btrfs-bestandssysteem. Het minimum aantal opslagapparaten dat u kunt toevoegen aan een RAID-10 btrfs-bestandssysteem is 4. De helft van het opslagapparaat wordt gebruikt voor gegevensstriping en de andere helft voor het spiegelen van de gegevens van de eerste helft van de opslagapparaten (waar gegevens worden gestript).

xii) SSD-bewustzijn en optimalisaties: Het btrfs-bestandssysteem is SSD-bewust en heeft enkele SSD-optimalisatiefuncties. Het btrfs-bestandssysteem heeft ook TRIM/Discard-ondersteuning voor SSD-opslagapparaten.

De TRIM-functie kan data-extensions detecteren en markeren die niet meer worden gebruikt. Zodra de uitbreidingen zijn gemarkeerd, kan het btrfs-bestandssysteem ze automatisch wissen, zodat de andere bestanden deze gegevensuitbreidingen kunnen gebruiken.

De Discard-functie verwijdert alle gegevensuitbreidingen van de SSD. Als je je SSD wilt verkopen, kan deze functie van pas komen.

xiii) Efficiënte incrementele back-up: Btrfs ondersteunt incrementele back-up. De eerste keer dat u een back-up maakt van een btrfs-bestandssysteem, wordt een momentopname gemaakt van het huidige bestandssysteem. Vervolgens worden eventuele volgende back-ups vergeleken met de eerste snapshot en worden alleen de wijzigingen op de schijf opgeslagen. Dus volgende back-ups nemen minder schijfruimte in beslag en back-ups zijn sneller.

xiv) Achtergrond scrub: Het is een Btrfs-bestandssysteemproces dat wordt gebruikt om fouten te vinden en op te lossen in de bestanden met redundante kopieën (meerdere kopieën) die zijn opgeslagen in het Btrfs-bestandssysteem.

xv) Online bestandssysteemdefragmentatie: Ik heb eerder uitgelegd hoe het Btrfs Copy-on-Write bestandssysteem werkt. Grote bestanden worden opgeslagen in meerdere delen van het Btrfs-bestandssysteem. Als u grote bestanden aanpast, worden de te wijzigen extensies gekopieerd naar verschillende vrije extensies van het bestandssysteem en daar gewijzigd. De ongewijzigde data-extensions worden dus ook bewaard voor het geval dit nodig is voor herstel van het bestandssysteem. Dit veroorzaakt fragmentatie (de data-extensions van een groot bestand zullen niet continu zijn en zullen verspreid zijn over het hele opslagapparaat) op het bestandssysteem als grote bestanden worden gewijzigd. Te veel fragmentatie heeft een negatieve invloed op het bestandssysteem (maakt het lezen/schrijven van het bestandssysteem langzamer).

Om dit probleem op te lossen, ondersteunt het btrfs-bestandssysteem online bestandssysteemdefragmentatie. Met online defragmentatie hoeft u het bestandssysteem niet te ontkoppelen om het bestandssysteem te defragmenteren. U kunt het bestandssysteem actief houden en toch defragmenteren. Bij defragmentatie worden bestandsextensies over het bestandssysteem verplaatst om de omvang van hetzelfde grote bestand zo continu mogelijk te houden. Defragmentatie verbetert de prestaties van het bestandssysteem.

xvi) Offline bestandssysteemcontrole: Het Btrfs-bestandssysteem heeft veel ingebouwde tools die u kunt gebruiken om te controleren op bestandssysteemfouten en deze te herstellen. Je kunt met deze tools ook een kapot Btrfs-bestandssysteem repareren (dat niet kan worden gemount).

xvii) In-place conversie van bestaande Ext2/3/4 en ReiserFS bestandssystemen: Het Btrfs-bestandssysteem heeft een ingebouwd hulpprogramma btrfs-convert, dat u kunt gebruiken om een ​​bestaand Ext2/3/4- en ReiserFS-bestandssysteem te converteren naar een Btrfs-bestandssysteem.

Het conversieprogramma voor het Btrfs-bestandssysteem leest de metadata van een bestaand Ext2/3/4 (of ReiserFS) bestandssysteem, creëert Btrfs-metadata en slaat ze op in het bestandssysteem. Het bestandssysteem bewaart zowel de Btrfs als de Ext2/3/4 (of ReiserFS) metadata. Het Btrfs-bestandssysteem verwijst naar dezelfde bestandsblokken die worden gebruikt door de Ext2/3/4 (of ReiserFS) bestandssysteembestanden. Het bestaande bestandssysteem en datablokken blijven onaangetast omdat Btrfs een Copy-on-Write (CoW) bestandssysteem is. Wanneer een bestand wordt gewijzigd, kopieert het Btrfs-bestandssysteem de originele datablokken naar nieuwe vrije omvang en wijzigt ze daar.

xviii) Zaadapparaten: Het Btrfs-bestandssysteem ondersteunt seed-apparaten. U kunt een alleen-lezen bestandssysteem maken en dit gebruiken als een sjabloon (seedapparaat) om andere Btrfs-bestandssystemen te maken. Het voordeel hiervan is dat alleen de gewijzigde gegevens naar het nieuwe bestandssysteem worden geschreven. De originele gegevens (op de seed-apparaten) blijven zoals ze zijn. Deze functie kan worden gebruikt om veel schijfruimte en gegevensredundantie te besparen.

xix) Subvolumewijzigingen verzenden/ontvangen: Het btrfs-bestandssysteem kan subvolumewijzigingen verzenden/ontvangen. Het Btrfs-bestandssysteem kan de incrementele wijzigingen van een subvolume naar een ander Btrfs-bestandssysteem sturen (kan zich ook op een andere computer bevinden) dat de wijzigingen in het subvolume kan ontvangen. Deze functie wordt gebruikt om incrementele back-ups van het Btrfs-bestandssysteem lokaal of op afstand te maken. Deze methode is sneller en efficiënter dan rsync.

xx) Batch/Out-of-band deduplicatie: Het Btrfs-bestandssysteem ondersteunt batch- of out-of-band deduplicatie. De duplicatie vindt plaats nadat een bestand naar het bestandssysteem is geschreven. Het Btrfs-bestandssysteem scant actief het hele bestandssysteem op identieke extensies en bewaart slechts één kopie van elke extensie (verwijdert overbodige/dubbele extensies). Voor deze taak wordt hetzelfde copy-on-write (CoW)-principe gebruikt. Deduplicatie bespaart veel schijfruimte.

xxi) Swapfile-ondersteuning: Als je Linux Kernel 5 . gebruikt.0 of nieuwer, kunt u swapfiles maken op het Btrfs-bestandssysteem.

Er zijn enkele beperkingen van Swapfile in een Btrfs-bestandssysteem:

- De swapfile moet worden toegewezen als NoCoW (niet copy-on-write)

- Het wisselbestand mag geen compressie hebben ingeschakeld.

Stabiliteit van Btrfs-bestandssysteem:

Het Btrfs-bestandssysteem wordt actief ontwikkeld door het Btrfs-team. De meeste functies van het bestandssysteem zijn stabiel op het moment van schrijven. Sommige geavanceerde functies zijn nog niet stabiel genoeg voor een productieomgeving. Het Btrfs-team werkt er hard aan om deze stabiliteitsproblemen op te lossen.

Als je het Btrfs-bestandssysteem op je productieserver wilt gebruiken, kijk dan op de officiële Status - btrfs Wiki-pagina om te zien of de bestandssysteemfuncties die je nodig hebt stabiel genoeg voor je zijn of niet. Zorg er ook voor dat u enkele tests uitvoert voordat u uw Btrfs-bestandssysteem definitief in gebruik neemt, en vergeet niet om back-ups te maken van uw belangrijke gegevens. Het bewaren van back-ups is altijd belangrijk voor productieomgevingen.

Toekomstige vervanging van Ext4-bestandssysteem:

Btrfs-bestandssysteem wordt snel ontwikkeld. Het Btrfs-ontwikkelteam geeft ook om de stabiliteit van het bestandssysteem. Dus doen ze hun best om het zo stabiel mogelijk te maken tijdens het ontwikkelen van het btrfs-bestandssysteem. Zodra het btrfs-bestandssysteem volledig is ontwikkeld en alle functies stabiel genoeg zijn, kan het het Ext4-bestandssysteem vervangen.

Referenties:

[1] btrfs Wiki - https://btrfs.wiki.kern.org/index.php/Hoofdpagina
[2] BTRFS - De Kernel Tree-documentatie - https://www.kern.org/doc/html/latest/filesystems/btrfs.html
[3] BTRFS - Woordenlijst - https://btrfs.wiki.kern.org/index.php/woordenlijst
[4] Kenmerken van het "Btrfs"-bestandssysteem - https://www.het geekdagboek.com/features-of-the-btrfs-filesystem/
[5] Vergelijking van bestandssystemen - https://en.wikipedia.org/wiki/Comparison_of_file_systems
[6] Btrfs-ontwerp - btrfs Wiki - https://btrfs.wiki.kern.org/index.php/Btrfs_design
[7] misschien kan het opraken van inodes "serieuzer" worden genomen? - https://lwn.netto/Artikelen/724522/
[8] Een Btrfs alleen-lezen snapshots beschrijfbaar maken - https://markandruth.co.uk/2016/12/29/making-a-btrfs-read-only-snapshot-writable
[9] Gegevensstriping - https://nl.wikipedia.org/wiki/Data_striping
[10] Veelgestelde vragen - btrfs-wiki - https://btrfs.wiki.kern.org/index.php/FAQ
[11] Standaard RAID-niveaus - https://en.wikipedia.org/wiki/Standard_RAID_levels
[12] Trim (informatica) - https://nl.wikipedia.org/wiki/Trim_(computergebruik)
[13] Solid State-schijf - ArchWiki - https://wiki.archlinux.org/index.php/Solid_state_drive#TRIM
[14] Btrfsck - btrfs Wiki - https://btrfs.wiki.kern.org/index.php/Btrfsck
[15] Conversie van Ext3/4 en ReiserFS - btrfs Wiki - https://btrfs.wiki.kern.org/index.php/Conversion_from_Ext3
[16] Incrementele back-up - btrfs Wiki - https://btrfs.wiki.kern.org/index.php/Incremental_Backup
[17] Ontdubbeling - btrfs Wiki - https://btrfs.wiki.kern.org/index.php/deduplicatie
[18] Status - btrfs Wiki - https://btrfs.wiki.kern.org/index.php/status

AppyMouse trackpad en muisaanwijzer op het scherm voor Windows-tablets
Tabletgebruikers missen vaak de muisaanwijzer, vooral wanneer ze gewend zijn om de laptop te gebruiken. Het touchscreen Smartphones en tablets hebben ...
Middelste muisknop werkt niet in Windows 10
De middelste muis knop helpt u door lange webpagina's en schermen met veel gegevens te bladeren. Als dat stopt, zul je uiteindelijk het toetsenbord ge...
Hoe de linker- en rechtermuisknop op Windows 10 pc te veranderen
Het is nogal een norm dat alle computermuisapparaten ergonomisch zijn ontworpen voor rechtshandige gebruikers. Maar er zijn muisapparaten beschikbaar ...