Kan en ZFS-spegel använda diskar med olika sektorstorlekar?

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 kan den, men vdev använder en ashift-policy och det större kravet på fysiska sektorer bör styra för att undvika read-modify-write-straff.

Beslutet är viktigt när en ersättningsdisk rapporterar 4K-fysiska sektorer medan den överlevande speglingsmedlemmen skapades med mindre justering. De två konkurrerande tillstånden är kompatibel vdev-geometri och suboptimal fast ashift eller kapacitetsmismatch. Börja med en sparad konfiguration och ofarliga testdata, observera en gren i taget och avbryt om testet ökar risken för dataförlust, behörighetsproblem eller otillgänglighet.

Definiera villkoren bakom beslutet om en ZFS-spegel med blandade sektorer

Dokumentera miljön innan du ändrar något: programvaru- och firmwareversioner, enhetsidentiteter, monterings- eller nätverkssökväg, ledigt utrymme, behörigheter och det observerbara symtomet. Baslinjen måste innehålla tillräckligt med detaljer för att återskapa situationen där en ersättningsdisk rapporterar 4K-fysiska sektorer medan den överlevande speglingsmedlemmen skapades med mindre justering.

Den första kandidaten är kompatibel vdev-geometri. Den andra är suboptimal fast ashift eller kapacitetsmismatch. Den aktuella OpenZFS ashift-egenskapen definierar mekanismen eller kommandogränsen som används i testet; den ersätter inte observationer från just den här hemservern.

Skriv ned godkännandekriteriet och stoppkriteriet innan du kör särskiljningstestet. Ett godkänt resultat måste ändra de observationer som förutsägs av den ena grenen, samtidigt som orelaterade tjänster förblir oförändrade; ett underkänt resultat måste återställa systemet till det sparade tillståndet i stället för att utlösa en kedja av spekulativa åtgärder.

Testa påståendet utan att sänka det ursprungliga kravet

Använd detta särskiljningstest: kontrollera befintlig ashift samt rapporter om diskarnas logiska och fysiska sektorer, och jämför sedan justerade skrivningar på en replikapool. Håll arbetsbelastning, klient, sökväg, filuppsättning och tidsmätning konstanta så att resultatet kan tillskrivas den ändrade variabeln.

Använd FreeBSD zpool-beteende för att välja det fält som faktiskt kan skilja grenarna åt, och samla in tidsstämpel, slutstatus, feltext, enhets- eller ögonblicksbildsidentitet, fördröjning, överförda byte, behörigheter och återställningstillstånd. En felfri kommandokörning räcker inte när identitet, beständighet eller applikationstillstånd är det som testas.

Upprepa testet en gång efter en omstart, återanslutning, ominmontering eller tom cache när en sådan händelse ingår i det ursprungliga tillståndet. Om den första körningen är destruktiv eller miljön inte kan återställas, avbryt och återskapa i stället situationen på en ofarlig kopia.

zpool get ashift pool
lsblk -o NAME,LOG-SEC,PHY-SEC,SIZE

Tolka godkända, underkända och avvikande resultat

GODKÄNT: ersättningen ansluts, resilveringen slutförs och fördröjningen för justerade skrivningar förblir acceptabel. Dokumentera den exakta versionen, identiteten och arbetsbelastningen som godkändes så att slutsatsen förblir villkorad i stället för att bli ett universellt påstående.

UNDERKÄNT: ashift är för liten, ersättningen är marginellt mindre eller prestandan försämras vid synkrona och slumpmässiga skrivningar. Ett underkänt resultat bevisar inte automatiskt den motsatta grenen när nätverk, minne, behörigheter eller källans konsistens kan påverka båda; isolera dessa gemensamma beroenden innan du eskalerar.

UNDANTAG ELLER TVETYDIGT RESULTAT: använd en lämplig ersättningsdisk eller bygg om en ny korrekt justerad pool i stället för att tvinga in en för liten disk. Bevara loggar och kör inte reparations-, rensnings-, förstörings-, ompartitionerings- eller rekursiva ägarskapskommandon innan det finns en återställningsbar kopia.

Bekräfta beslutet under den ursprungliga arbetsbelastningen

Utför den åtgärd som motsvarar den observerade grenen och återskapa sedan det ursprungliga tillståndet i stället för en förenklad ersättning. Beslutet gäller endast när ersättningen ansluts, resilveringen slutförs och fördröjningen för justerade skrivningar förblir acceptabel under två cykler eller den relevanta omstarten, viloläget, avbrottet eller belastningsövergången.

Använd ZFS-speglars sektorstorlekar för att kontrollera det närmaste beroende arbetsflödet, men behåll den ursprungliga utlösaren oförändrad. Orelaterade dataset, resurser, containrar, användare och återställningspunkter måste behålla sin tidigare åtkomst och tidsåtgång.

Stoppgränsen är tydlig: om ashift är för liten, ersättningen är marginellt mindre eller prestandan försämras vid synkrona och slumpmässiga skrivningar, återgå till den senast verifierade konfigurationen, behåll bevismaterialet och eskalera till ett djupare plattforms- eller hårdvarutest endast när grenen kan återskapas.

När målresultatet består, jämför det med verifiering av återställning så att åtgärden inte flyttar risken till en närliggande tjänst. Ett lyckat måltest med ett nytt säkerhetskopierings-, identitets-, timeout- eller tillgänglighetsfel är fortfarande en misslyckad ändring.

Vanliga frågor

För en ZFS-spegel med blandade sektorer gäller de återstående sökningarna vanligtvis om ashift kan ändras efter att vdev har skapats, om ashift=12 bör användas för 4K-diskar och om olika kapacitet spelar roll. Svaren nedan håller dessa specialfall åtskilda från huvudbeslutet.

Godkännandegränsen flyttas inte: ersättningen ansluts, resilveringen slutförs och fördröjningen för justerade skrivningar förblir acceptabel. Om ett uppföljningsvillkor ändrar filsystemet, identiteten, nätverkssökvägen eller applikationsversionen, upprepar du endast det särskiljningstest som påverkas av ändringen.

Sluta bredda experimentet när ashift är för liten, ersättningen är marginellt mindre eller prestandan försämras vid synkrona och slumpmässiga skrivningar. Använd då en lämplig ersättningsdisk eller bygg om en ny korrekt justerad pool i stället för att tvinga in en för liten disk; bevara bevismaterialet innan du eskalerar till plattforms-, lagrings- eller hårdvaruansvarig.

Kan ashift ändras efter att en vdev har skapats?

Inte på plats för en befintlig vdev; att bygga om eller skapa en ny vdev är den vanliga korrigeringen.

Bör ashift=12 användas för 4K-diskar?

Det motsvarar vanligtvis 4K-justering, men verifiera enhetens beteende och aktuell vägledning för OpenZFS.

Spelar olika kapacitet roll?

En spegel begränsas av sin minsta medlem, och en nominell ersättningsdisk kan vara något mindre.

För en ZFS-spegel med blandade sektorer är det praktiska svaret fortfarande villkorat: ersättningen ansluts, resilveringen slutförs och fördröjningen för justerade skrivningar förblir acceptabel. När ashift är för liten, ersättningen är marginellt mindre eller prestandan försämras vid synkrona och slumpmässiga skrivningar, använd en lämplig ersättningsdisk eller bygg om en ny korrekt justerad pool i stället för att tvinga in en för liten disk; en delvis lyckad åtgärd som inte klarar den ursprungliga arbetsbelastningen är inte kompatibilitet.

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.