Checklista för återställning av Btrfs-metadata på en nästan full hemmaserver

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

Det säkra tillvägagångssättet är att behandla stabilisering av skrivningar, återställning av arbetsutrymme, körning av enbart filtrerad balansering och verifiering av data före normal drift som en följd av observerbara kontrollpunkter, inte som ett enda kommando.

På ett nästan fullt Btrfs-filsystem på en hemserver är den praktiska risken att Btrfs rapporterar ENOSPC eller blir skrivskyddat när metadatas utrymme är slut. Dokumentera den aktuella identiteten och återställningspunkten, börja med den minst ingripande särskiljande åtgärden, tolka godkända och underkända resultat innan du ändrar en annan variabel och avbryt när lagringen blir instabil eller den enda återställningsbara kopian skulle exponeras. Arbetsflödet nedan avslutas först när den ursprungliga arbetsbelastningen lyckas eller bevisen når en eskaleringsgräns.

Stabilisera filsystemet innan du försöker reparera det

Stoppa containrar, nedladdningar, ögonblicksbilder och loggtunga jobb som skriver till det berörda filsystemet. Spara kärnfel och utdata från btrfs device stats någon annanstans. Om filsystemet har monterats om som skrivskyddat eller rapporterar kontrollsummefel, parent transid-fel eller I/O-fel ska du låta det förbli skrivskyddat tills du har en återställningsbar kopia.

Börja inte med btrfs check --repair, en fullständig balansering, defragmentering eller massradering. Den omedelbara frågan är om ett giltigt filsystemstillstånd saknar allokeringsutrymme eller om lagringsfel skadar metadata; en reparationsåtgärd som första steg kan göra den skillnaden svårare att avgöra och förbruka det återstående utrymmet.

Säkerhetskontrollen är godkänd när skrivintensiva tjänster har stoppats, viktiga data har en annan kopia och du vet vilken blockenhet och monteringspunkt du undersöker. Eskalera till återställningsavbildning om enheten återställs, försvinner eller samlar på sig läsfel.

Läs allokeringen i stället för att fokusera på den övergripande siffran för ledigt utrymme

Kör btrfs filesystem usage -T /mount, btrfs filesystem df /mount, btrfs device usage /mount och granska de senaste kärnmeddelandena. Jämför allokerade och använda metadata samt det oallokerade utrymme som finns på varje enhet; vanligt df kan inte ensamt visa om Btrfs kan allokera ytterligare ett metadatablock.

En riktad balansering kräver helt oanvänt arbetsutrymme. En detaljerad guide till riktad Btrfs-balansering förklarar att en ofiltrerad balansering skriver om alla kvalificerade blockgrupper och att målet är att upprätthålla oallokerat utrymme på enhetsnivå, inte bara att radera en stor fil och anta att metadata kan växa.

Om metadatautnyttjandet är högt men oallokerat utrymme finns kvar kan en liten filtrerad balansering återta tomma eller sparsamt använda block. Om ingen enhet har arbetsutrymme ska du först ta bort data eller ögonblicksbilder som säkert kan avvaras, i små omgångar, eller lägga till en tillfällig enhet som passar filsystemets profil; starta inte en omflyttning som inte kan slutföras.

Återställ arbetsutrymme med den minst ingripande åtgärden

Börja med att radera filer som kan tas bort och som inte behålls av ögonblicksbilder, och radera därefter endast ögonblicksbilder som du har bekräftat inte behövs. Synkronisera och kontrollera användningen igen efter varje liten ändring. Om en balansering är motiverad börjar du med btrfs balance start -dusage=0 -musage=0 /mount eller ett annat smalt filter som valts utifrån den observerade allokeringen, inte med en fullständig balansering.

Linux-handbokens beskrivning av filtrerad balansering påpekar att filter begränsar omflyttningen och att ENOSPC kan uppstå när själva balanseringen saknar arbetsutrymme. Övervaka btrfs balance status och kärnloggarna. Om omflyttningen ökar antalet fel, stannar på grund av enhetsfel eller förbrukar den sista säkerhetsmarginalen ska du avbryta den och återgå till skrivskyddad återställning.

Stapla inte filter och raderingar utan att mäta mellan stegen. Återställningsgrenen lyckas när metadata har utrymme i reserv, oallokerat utrymme finns på de nödvändiga enheterna och en liten skrivning slutförs utan ett nytt ENOSPC- eller framtvingat skrivskyddat tillstånd.

Verifiera data och förhindra ett omedelbart återfall

Starta om endast en tjänst med låg risk och återskapa den arbetsbelastning som ursprungligen fyllde metadata, till exempel skapande av ögonblicksbilder eller många små filändringar. Kontrollera användningen och kärnloggarna igen efter arbetsbelastningen och efter en omstart. En montering som fungerar en gång men återgår till skrivskyddat läge under normal förändringstakt är inte återställd.

Använd ZimaSpace-metoden för att skilja mellan om ögonblicksbilder eller aktiva filer använder NAS-utrymme innan du ändrar kvarhållningen. Extent som hålls av ögonblicksbilder kan göra att radering verkar ineffektiv, medan ändringar i många små aktiva filer kan hålla metadatabelastningen hög; den rätta policyn beror på vilket tillstånd mätningarna visar.

Återuppta normal drift först när filsystemet förblir skrivbart, enhetsstatistiken slutar öka, en representativ fil kan återställas eller kontrollsummeras korrekt och övervakningen larmar innan samma marginal försvinner. Eskalera ihållande strukturella fel till en Btrfs-specialist på återställning och arbeta från en klon i stället för att upprepa reparationskommandon på den enda kopian.

Support och tips

Mer att läsa

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.