Checklist voor Btrfs-metagegevensherstel voor een bijna volle thuisserver

Eva Wong is de Technisch Schrijver en en vaste knutselaar bij ZimaSpace. Een levenslange geek met een passie voor homelabs en open-source software, zij is gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva gelooft dat zelf-hosting leuk moet zijn, niet intimiderend. Met haar tutorials stelt ze de community in staat om hardware-setup te ontrafelen, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

De veilige aanpak is om het stabiliseren van schrijfbewerkingen, het terugwinnen van werkruimte, het uitvoeren van alleen een gefilterde balance en het verifiëren van gegevens vóór normale dienstverlening te behandelen als een reeks controleerbare stappen, niet als één enkele opdracht.

Op een bijna vol Btrfs-bestandssysteem van een homeserver bestaat het praktische risico dat Btrfs ENOSPC meldt of alleen-lezen wordt terwijl de metadataruimte is uitgeput. Leg de huidige identiteit en het herstelpunt vast, begin met de minst ingrijpende onderscheidende controle, interpreteer resultaten voordat je een andere variabele wijzigt en stop zodra de opslag instabiel wordt of de enige herstelbare kopie zou worden blootgesteld. De onderstaande workflow eindigt pas nadat de oorspronkelijke werklast is geslaagd of het bewijs een escalatiegrens bereikt.

Stabiliseer het bestandssysteem voordat je herstel probeert

Stop containers, downloads, snapshots en logintensieve taken die naar het getroffen bestandssysteem schrijven. Sla kernel­fouten en de uitvoer van btrfs device stats ergens anders op. Als het bestandssysteem opnieuw als alleen-lezen is aangekoppeld of checksum-, parent-transid- of I/O-fouten meldt, houd het dan alleen-lezen totdat je een herstelbare kopie hebt.

Begin niet met btrfs check --repair, een volledige balance, defragmentatie of grootschalige verwijdering. De directe vraag is of een geldige bestandssysteemstatus geen allocatiewerkruimte heeft of dat opslagfouten metadata beschadigen; handelen vanuit reparatie als eerste stap kan dat onderscheid moeilijker maken en de resterende ruimte verbruiken.

De veiligheidscontrole is geslaagd wanneer schrijfintensieve services zijn gestopt, belangrijke gegevens een andere kopie hebben en je weet welk blokapparaat en koppelpunt je onderzoekt. Schakel over naar herstelimagevorming als het apparaat opnieuw wordt ingesteld, verdwijnt of leesfouten blijft verzamelen.

Lees de allocatie in plaats van alleen het algemene getal voor vrije ruimte

Voer btrfs filesystem usage -T /mount, btrfs filesystem df /mount en btrfs device usage /mount uit en bekijk recente kernelberichten. Vergelijk de toegewezen en gebruikte metadataruimte met de niet-toegewezen ruimte op elk apparaat; gewone df kan op zichzelf niet laten zien of Btrfs nog een metadatachunk kan toewijzen.

Een gerichte balance heeft volledig ongebruikte werkruimte nodig. Een uitgebreide handleiding voor een gerichte Btrfs-balance legt uit dat een niet-gefilterde balance alle in aanmerking komende blockgroups herschrijft en dat het doel is om niet-toegewezen ruimte op apparaatniveau te behouden, niet alleen een groot bestand te verwijderen en aan te nemen dat metadata kan groeien.

Als de metadataruimte hoog is maar er niet-toegewezen ruimte overblijft, kan een kleine gefilterde balance lege of licht gebruikte chunks terugwinnen. Als geen enkel apparaat werkruimte heeft, verwijder dan eerst veilig overtollige gegevens of snapshots in kleine batches, of voeg een tijdelijk apparaat toe dat geschikt is voor het bestandssysteemprofiel; start geen relocatie die niet kan worden voltooid.

Win werkruimte terug met de minst ingrijpende actie

Begin met het verwijderen van wegwerpbestanden die niet door snapshots worden behouden en verwijder daarna alleen bevestigde, overbodige snapshots. Voer na elke kleine wijziging een sync uit en controleer het gebruik opnieuw. Als een balance gerechtvaardigd is, begin dan met btrfs balance start -dusage=0 -musage=0 /mount of een andere beperkte filter die op basis van de waargenomen allocatie is gekozen, niet met een volledige balance.

De Linux-handleiding over gefilterd balancegedrag vermeldt dat filters relocatie beperken en dat ENOSPC kan optreden wanneer de balance zelf onvoldoende werkruimte heeft. Houd btrfs balance status en de kernel­logs in de gaten. Als relocatie het aantal fouten verhoogt, blijft hangen door apparaatfouten of de laatste veiligheidsmarge verbruikt, annuleer deze dan en keer terug naar alleen-lezen herstel.

Combineer geen filters en verwijderingen zonder tussen de stappen te meten. De herstelroute is geslaagd wanneer metadata voldoende marge heeft, er op de benodigde apparaten niet-toegewezen ruimte bestaat en een kleine schrijfbewerking zonder nieuwe ENOSPC- of gedwongen alleen-lezen-gebeurtenis voltooit.

Verifieer gegevens en voorkom een onmiddellijke terugval

Start slechts één service met laag risico opnieuw en herhaal de werklast die de metadata oorspronkelijk vulde, zoals het maken van snapshots of veel kleine bestandswijzigingen. Controleer het gebruik en de kernel­logs opnieuw na de werklast en na een herstart. Een koppeling die één keer werkt maar onder normale wijzigingen weer alleen-lezen wordt, is niet hersteld.

Gebruik de ZimaSpace-methode om te bepalen of snapshots of live bestanden NAS-ruimte gebruiken voordat je de bewaartermijn wijzigt. Door snapshots vastgehouden extents kunnen ervoor zorgen dat verwijderen geen effect lijkt te hebben, terwijl veel wijzigingen aan kleine live bestanden de metadatadruk hoog kunnen houden; het juiste beleid hangt af van welke toestand de metingen aantonen.

Hervat de normale dienstverlening pas nadat het bestandssysteem schrijfbaar blijft, de apparaatstatistieken niet verder oplopen, een representatief bestand correct kan worden teruggezet of gehasht en monitoring waarschuwt voordat dezelfde marge verdwijnt. Schakel bij aanhoudende structurele fouten een Btrfs-herstel specialist in en werk vanaf een kloon in plaats van reparatieopdrachten te blijven herhalen op de enige kopie.

Ondersteuning & Tips

Meer om te lezen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.