Checklist voor het verifiëren van de Btrfs-verzendouder vóór het opschonen van snapshots

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.

Verwijder een Btrfs-sendouder niet omdat die er oud uitziet. Bewijs eerst dat er aan beide kanten een nieuwere alleen-lezen-snapshot bestaat die als basis voor de volgende incrementele cyclus kan dienen.

Op een thuis-NAS hebben snapshots op de bron en bestemming vaak vergelijkbare namen, terwijl hun replicatierollen verschillen. Opschonen wordt riskant wanneer een rotatietaak alleen naar de leeftijd kijkt en niet naar welk paar de volgende send verankert. Begin met een alleen-lezeninventaris, identificeer het laatst succesvol gerepliceerde bron-bestemmingspaar, test een nieuwere child daartegen en behoud de vorige bestemmingssnapshot totdat een volgende incrementele receive is voltooid.

Inventariseer het huidige ouderpaar op beide systemen

Maak een lijst van het bron-subvolume, elke alleen-lezen-snapshot voor send en elke ontvangen bestemmingssnapshot. Noteer het pad, de aanmaaktijd, de alleen-lezenstatus, de subvolume-ID, de UUID, de ouderrelatie en, indien beschikbaar, de ontvangen identiteit. Koppel de laatste succesvolle bron-snapshot aan de kopie die daadwerkelijk is ontvangen, niet alleen aan een map met een vergelijkbare naam.

Een werkende Btrfs-send-en-receivevolgorde houdt de vorige snapshot op beide systemen beschikbaar voordat die als ouder van de volgende incrementele stream wordt gebruikt.

Als het paar duidelijk aanwezig en alleen-lezen is, markeer het dan als beschermd. Als alleen de namen overeenkomen, controleer dan de ontvangen relatie en het replicatielogboek voordat je verdergaat. Als de bestemmingskopie ontbreekt, stop dan met opschonen en plan een nieuwe volledige send of een andere geverifieerde basis; het verwijderen van de bron-snapshot kan de ontbrekende geschiedenis op de ontvanger niet herstellen.

Bewijs dat een nieuwere snapshot de volgende ouder kan worden

Maak de volgende alleen-lezen-bronsnapshot nadat de inventaris is opgeslagen. Gebruik de beschermde bron-snapshot als expliciete ouder en stuur de nieuwe child naar de beoogde bestemming of een stagingpad. Leg de afsluitstatus en het logboek vast en vergelijk vervolgens een aantal gewijzigde en ongewijzigde bestanden op de ontvangen snapshot.

Incrementele replicatiescripts moeten de afhankelijkheid zichtbaar maken. Een praktische workflow voor snapshotrotatie werkt alleen wanneer de snapshots die de send-logica verwacht, aanwezig blijven.

Promoveer het nieuwe paar pas tot kandidaat voor opschoning wanneer de receive slaagt en de bestemmingssnapshot leesbaar is. Een foutmelding dat de ouder niet is gevonden, een schrijfbare bron-snapshot, een verkeerde dataset of een stream die onverwacht gelijkwaardig is aan een volledige kopie betekent dat de test is mislukt. Laat het oude paar ongemoeid terwijl je het pad corrigeert of de basis opnieuw opbouwt.

Ruim pas op nadat de ouderrol is doorgeschoven

Werk het retentieregister bij voordat je iets verwijdert. Markeer de nieuw geverifieerde bron- en bestemmingssnapshots als het actieve paar, behoud het direct vorige paar als tijdelijke terugvaloptie en bekijk vooraf welke oudere snapshots de opschoontaak zou verwijderen. In de voorvertoning mogen alleen voorouders staan die niet langer nodig zijn voor de volgende send of het herstelplan.

Een bestandswijziging kan worden meegenomen in een nieuwere snapshot en vanaf een bestaande basis worden verzonden, dus toekomstige incrementele geschiedenis is afhankelijk van behouden snapshotrelaties, niet van het bewerken van een oude alleen-lezen-snapshot.

Annuleer de opschoning als de actieve ouder, het terugvalpaar, de nieuwste ontvangen snapshot of een niet-geverifieerde wees in de verwijderlijst voorkomt. Verwijder snapshots in kleine groepen en maak na elke groep op beide systemen opnieuw een lijst. Laat afzonderlijke rotatietaken voor bron en bestemming niet onafhankelijk vooruitgaan zonder hetzelfde record van het beschermde paar te delen.

Voer de volgende incrementele cyclus uit voordat je de terugvaloptie opruimt

Maak na het opschonen één gecontroleerde bestandswijziging en een nieuwe alleen-lezen-snapshot. Voer de volgende incrementele send uit vanaf de nieuw gepromoveerde ouder. Met deze tweede cyclus bewijs je dat het opschoningsrecord, het script en de toestand van de bestemming overeenkomen; met alleen de eerste succesvolle send is de omgeving na het opschonen niet getest.

Als een snapshot niet kan worden verwijderd omdat die nog in gebruik is, scheid dan de retentielogica van het actieve Btrfs-sendpad voordat je ervan uitgaat dat de oudertoewijzing onjuist is.

De checklist is geslaagd wanneer de tweede child succesvol wordt ontvangen, de verwachte bestanden aanwezig zijn, het actieve paar alleen-lezen blijft en de volgende geplande run dit paar automatisch selecteert. Ruim de terugvaloptie pas daarna op. Stop en herstel de vorige status van het paar naar beschermd als de volgende send een ontbrekende ouder meldt, het verkeerde subvolume als doel heeft of een onverwachte volledige overdracht voorstelt.

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.