Kan du använda hårda länkar mellan separata NAS-datauppsättningar?

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.

Nej. En hårdlänk måste hänvisa till samma inode inom ett filsystem; separata dataset eller monteringar returnerar normalt EXDEV.

Beslutet är viktigt när ett organiserings- eller dedupliceringsarbetsflöde vill att en fil ska visas i bibliotek som lagras i separata NAS-dataset. De två konkurrerande tillstånden är hårdlänk inom samma filsystem och kopia över filsystemsgränser, reflink, klon eller programreferens. Börja med en sparad konfiguration och data som kan kastas, 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 hårdlänkar över dataset

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 symptomet. Baslinjen måste bevara tillräckligt med detaljer för att återskapa ett organiserings- eller dedupliceringsarbetsflöde som vill att en fil ska visas i bibliotek som lagras i separata NAS-dataset.

Den första kandidaten är en hårdlänk inom samma filsystem. Den andra är en kopia över filsystemsgränser, reflink, klon eller programreferens. Den aktuella begränsningen för link-systemanropet definierar mekanismen eller kommandogränsen som används i testet; den ersätter inte observationer från just den här hemmaservern.

Skriv ned godkännandekriteriet och stoppkriteriet innan du kör skiljetestet. Ett godkänt resultat måste ändra de bevis som förutsägs av en gren samtidigt som orelaterade tjänster förblir oförändrade; ett misslyckat resultat måste återställa systemet till det sparade tillståndet i stället för att utlösa en kedja av spekulativa lösningar.

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

Använd detta skiljetest: jämför enhets-ID:n och försök skapa en testlänk med data som kan kastas, både för sökvägar i samma dataset och över datasetgränser. Håll arbetsbelastning, klient, sökväg, filuppsättning och tidsinställning konstanta så att resultatet kan tillskrivas den ändrade variabeln.

Använd gränserna för hårdlänkar för att välja det fält som faktiskt kan skilja grenarna åt, och fånga dess tidsstämpel, avslutningsstatus, feltext, enhets- eller ögonblicksbildsidentitet, fördröjning, överförda byte, behörigheter och återställningstillstånd. Ett felfritt kommandoavslut räcker inte när identitet, beständighet eller programtillstånd är det som testas.

Upprepa testet en gång efter en omstart, återanslutning, ommontering eller kall cache när den händelsen ingår i det ursprungliga villkoret. Om den första körningen är destruktiv eller om miljön inte kan återställas, avbryt och återskapa testet på en kopia som kan kastas.

stat -c "%d %i %h %n" source target
ln source cross-dataset-target

Tolka godkända, misslyckade och avvikande resultat

GODKÄNT: länken i samma dataset delar inode och länkantal, medan försöket över datasetgränsen misslyckas utan att ändra data. Dokumentera den exakta versionen, identiteten och arbetsbelastningen som gav godkänt resultat så att slutsatsen förblir villkorad i stället för att bli ett universellt påstående.

MISSLYCKAT: ett verktyg kopierar tyst i stället för att länka, eller bind-monteringar döljer den verkliga filsystemsgränsen. Ett misslyckat 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 uttrycklig kopia, en stödd reflink eller ändra datasetgränserna utifrån behovet av lagringstid. Bevara loggarna och kör inte reparations-, rensnings-, förstörings-, ompartitionerings- eller rekursiva ägarändringskommandon innan det finns en återställningsbar kopia.

Bekräfta beslutet under den ursprungliga arbetsbelastningen

Tillämpa den åtgärd som motsvarar den observerade grenen och upprepa sedan det ursprungliga villkoret i stället för en förenklad ersättning. Beslutet gäller endast när länken i samma dataset delar inode och länkantal, medan försöket över datasetgränsen misslyckas utan att ändra data under två cykler eller den relevanta omstarten, viloläget, avbrottet eller belastningsövergången.

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

Stoppgränsen är tydlig: om ett verktyg kopierar tyst i stället för att länka eller bind-monteringar döljer den verkliga filsystemsgränsen, återgå till den senast verifierade konfigurationen, behåll bevisen och eskalera till ett djupare plattforms- eller hårdvarutest endast när grenen kan reproduceras.

När målresultatet har uppnåtts ska du jämföra det med mappningen av container-UID:n så att lösningen inte flyttar risken till en närliggande tjänst. Ett lyckat måltest med ett nytt fel i säkerhetskopiering, identitet, tidsgräns eller tillgänglighet är fortfarande en misslyckad ändring.

Vanliga frågor

För hårdlänkar över dataset gäller de återstående frågorna vanligtvis om en bind-montering kan möjliggöra hårdlänkar över datasetgränser, om symboliska länkar tillåts över datasetgränser och om reflinks kan ersätta hårdlänkar. Svaren nedan håller dessa specialfall åtskilda från huvudbeslutet.

Godkännandegränsen ändras inte: länken i samma dataset delar inode och länkantal, medan försöket över datasetgränsen misslyckas utan att ändra data. Om ett uppföljande villkor ändrar filsystemet, identiteten, nätverkssökvägen eller programversionen ska du upprepa endast det skiljetest som påverkas av ändringen.

Sluta bredda experimentet när ett verktyg kopierar tyst i stället för att länka eller bind-monteringar döljer den verkliga filsystemsgränsen. Använd då en uttrycklig kopia, en stödd reflink eller ändra datasetgränserna utifrån behovet av lagringstid; bevara bevisen innan du eskalerar till plattforms-, lagrings- eller hårdvaruansvarig.

Kan en bind-montering möjliggöra hårdlänkar över datasetgränser?

Nej. Den ändrar sökvägsvyn, inte den underliggande filsystemsidentiteten.

Tillåts symboliska länkar över datasetgränser?

Ja, men de lagrar en sökväg och bevarar inte data om målet försvinner.

Kan reflinks ersätta hårdlänkar?

I filsystem som stöder dem delar de block initialt men blir självständiga filer när de ändras.

För hårdlänkar över dataset är det praktiska svaret fortfarande villkorat: länken i samma dataset delar inode och länkantal, medan försöket över datasetgränsen misslyckas utan att ändra data. När ett verktyg kopierar tyst i stället för att länka eller bind-monteringar döljer den verkliga filsystemsgränsen ska du använda en uttrycklig kopia, en stödd reflink eller ändra datasetgränserna utifrån behovet av lagringstid; en partiell framgång 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.