Byggede en software-RAID, genstartede, og lageret er væk: rækken samles ikke ved opstart

Diskene er i orden, og dataene ligger der, men lageret mangler. Det, der mangler, ligger ikke på diskene: det er den post, der siger til systemet, at rækken skal samles ved opstart.

AtlasPVE ·

Denne artikel besvarer

  • proxmox software raid mdadm
  • proxmox raid række samles ikke ved opstart
  • proxmox lager forsvandt efter genstart
  • understøttes mdadm på proxmox
  • proxmox raid eller zfs

Du slog diskene sammen, rækken kom op, lageret dukkede op, du skrev data på det. Alt virkede.

Så genstartede du maskinen, og lageret er væk.

Diskene er i orden. Dataene ligger der stadig. Det, der mangler, er noget andet.

En række ligger ikke på diskene, den ligger i samlingsanvisningen

At vise flere diske som ét lager er ikke en egenskab, der sidder på diskene. Ved hver opstart skal systemet finde de diske og sætte dem sammen igen.

Der findes en post, der fortæller hvordan. Uden den post bliver rækken måske ikke samlet. Og selv hvis den bliver det, kan den komme op under et andet navn, hvilket kommer ud på ét: dit lager peger på det gamle navn, og der er ingenting.

Problemet er altså ikke "dataene er tabt", men "vejen til dataene blev ikke bygget ved opstart". Det lyder mindre skræmmende, men i skrækkens øjeblik føles de ens.

Proxmox' eget standpunkt

Det fortjener at blive sagt ærligt: den indbyggede og understøttede vej på Proxmox er ZFS. Bed om diskspejling under installationen, og det er det, du får.

Klassisk software-RAID virker, men det er ikke den vej, installationsprogrammet sætter op for dig. Det betyder, at når du vælger den, er det op til dig at sikre, at trinnene til samling ved opstart blev gjort rigtigt.

Der er stadig tilfælde, hvor det giver mening: du har allerede en række og flytter den, dit styrekorts opsætning er ikke den, ZFS venter, eller maskinens hukommelse er knap til ZFS. Det er rigtige grunde. At vælge uden grund er at skaffe sig arbejde til senere.

Reglen: en række, der ikke har set en genstart, tæller ikke som en række

Det er den mest praktiske sætning i artiklen.

Efter at rækken er bygget, genstart med vilje én gang, mens intet afhænger af den. Kommer lageret tilbage, kommer det tilbage under samme navn, ses indholdet?

Det samme skrev vi i artiklen om advarsler i denne wiki: en uprøvet alarm er ikke en mekanisme, den er et håb. For en række gælder det samme. En række, der ikke har overlevet en genstart, er en række, du tror virker.

Navneskiftsfælden

Den anden hyppige fælde: rækken bliver samlet, men under et andet navn end sidste gang.

Din lagerdefinition peger på det gamle navn, så lageret er usynligt igen. Denne gang står rækken, men ingen kigger på den.

Løsningen er at knytte lageret til identitet i stedet for navn. Navne kan skifte, identiteter gør ikke.

Hvad Atlas gør

Når Atlas bygger en række, skriver det også opstartsposten, og det viser denne advarsel på skærmen: hvis dette trin mislykkes, bliver rækken måske ikke samlet ved opstart, og lageret bliver usynligt.

Advarslen passede. Men i en periode modsagde den sig selv.

For at fremstille posten blev systemets eget værktøj kaldt. Det blev målt, og dette kom frem: når der slet ingen række er, afsluttes det værktøj med kode nul og skriver ingenting. Det siger altså "lykkedes" og rækker dig ingenting.

Følgen: der blev ikke skrevet noget, men trinnet blev noteret som lykkedes. Præcis det, advarslen lige havde beskrevet, skete for brugeren, mens skærmen viste, at alt var i orden.

Rettelsen bestod af to dele. Det forventede format blev bestemt ved måling i stedet for gætteri, og passer uddataene ikke til det format, tæller trinnet som mislykket. Tomme uddata er også et nederlag. Og for ikke at skrive den samme række to gange tjekkes både enhedsstien og identiteten.

Den generelle lære

Sætningen, der tæller her, er denne: "kommandoen lykkedes" og "arbejdet blev gjort" er ikke det samme.

En slutkode fortæller, om værktøjet kørte. Den fortæller ikke, om resultatet opstod. Er hele formålet med et trin at frembringe en virkning, er det, der skal tjekkes, ikke værktøjets tilstand, men virkningen selv.

Der er to andre artikler af samme familie i denne wiki. I den om forældreløse diske adskilte vi et tomt svar fra det ikke at have fået svar. I den om serverens navn lå faren i at sætte en plausibelt udseende standardværdi i stedet for det ukendte. Dette er den tredje: at sætte en slutkode i stedet for et resultat, der aldrig blev fastslået.

Alle tre er ansigter af den samme fejl: programmet påstår noget, det ikke har efterprøvet.

Kilder

Proxmox’ egen dokumentation. På engelsk, og den har det sidste ord i dette spørgsmål.

Relaterede artikler

Hvordan ser det ud inde i Atlas?

Gå til produktsiden