Szoftveres RAID készült, az újraindítás után eltűnt a tároló: a tömb nem áll össze induláskor

A lemezek rendben vannak, az adat is megvan, a tároló mégis hiányzik. Ami hiányzik, nem a lemezeken van: az a bejegyzés hiányzik, amely megmondja a rendszernek, hogy induláskor állítsa össze a tömböt.

AtlasPVE ·

A bejegyzés ezekre válaszol

  • proxmox szoftveres raid mdadm
  • proxmox raid tömb nem áll össze induláskor
  • proxmox tároló eltűnt újraindítás után
  • támogatott-e az mdadm proxmox alatt
  • proxmox raid vagy zfs

A lemezek összevonása megtörtént, a tömb elindult, a tároló megjelent, és adat is került rá. Minden működött.

Aztán jött a gép újraindítása, és a tároló eltűnt.

A lemezek rendben vannak. Az adat továbbra is megvan. Ami hiányzik, az valami más.

A tömb nem a lemezeken van, hanem az összeállítási utasításban

Több lemez egyetlen tárolóként való megjelenítése nem a lemezeken ülő tulajdonság. A rendszernek minden induláskor meg kell találnia ezeket a lemezeket, és össze kell raknia őket.

Van egy bejegyzés, amely megmondja, hogyan. E nélkül a bejegyzés nélkül előfordulhat, hogy a tömb nem áll össze. Ha össze is áll, más néven jöhet fel, ami ugyanoda vezet: a tároló a régi névre mutat, ott pedig nincs semmi.

A probléma tehát nem az, hogy "elveszett az adat", hanem az, hogy "az adathoz vezető út nem épült fel induláskor". Ez kevésbé ijesztően hangzik, a pánik pillanatában viszont a kettő egyformának érződik.

A Proxmox saját álláspontja

Ezt őszintén ki kell mondani: a Proxmoxon a beépített és támogatott út a ZFS. A telepítés során kért lemeztükrözés is ezt adja.

A klasszikus szoftveres RAID működik, de nem ezt az utat készíti elő a telepítő. Ez azt jelenti, hogy ennek választása esetén az indításkori összeállítás lépéseinek helyes elvégzése saját felelősség.

Vannak azért esetek, amikor van értelme: már létezik egy tömb, és annak költöztetése zajlik, a vezérlő elrendezése nem az, amit a ZFS elvár, vagy a gép memóriája szűkös a ZFS-hez. Ezek valós indokok. Ilyen indok nélkül választani annyi, mint munkát adni a jövőbeli önmagunknak.

A szabály: az a tömb, amely még nem élt túl újraindítást, nem tömb

Ez a cikk leggyakorlatiasabb mondata.

A tömb megépítése után érdemes szándékosan egyszer újraindítani, amíg semmi nem függ tőle. Visszajön-e a tároló, ugyanazon a néven jön-e vissza, láthatók-e a tartalmai.

Ugyanezt írtuk le a wiki riasztásokról szóló cikkében is: a nem tesztelt riasztás nem mechanizmus, hanem remény. A tömbre ugyanez áll. Az a tömb, amely nem élt túl újraindítást, olyan tömb, amelyről csak hisszük, hogy működik.

A névváltozás csapdája

A második gyakori csapda: a tömb összeáll, de más néven, mint legutóbb.

A tárolódefiníció a régi névre mutat, így a tároló ismét láthatatlan. Ezúttal a tömb fenn van, csak éppen senki nem néz rá.

A megoldás az, hogy a tároló azonosító alapján kapcsolódjon, ne név alapján. A nevek változhatnak, az azonosítók nem.

Mit tesz az Atlas

Amikor az Atlas tömböt épít, az indítási bejegyzést is megírja, és ezt a figyelmeztetést mutatja a képernyőn: ha ez a lépés meghiúsul, a tömb induláskor esetleg nem áll össze, és a tároló láthatatlanná válik.

A figyelmeztetés igaz volt. Egy ideig azonban aláásta önmagát.

A bejegyzés előállításához a rendszer saját eszközét hívta meg. Ezt megmértük, és ez jött ki: ha egyáltalán nincs tömb, az az eszköz nulla kilépési kóddal lép ki, és semmit nem ír ki. Más szóval "sikert" jelent, és semmit nem ad vissza.

Az eredmény: semmi nem íródott ki, a lépés viszont sikeresként került rögzítésre. Pontosan az történt a felhasználóval, amit a figyelmeztetés az imént leírt, miközben a képernyőn minden rendben volt.

A javítás két részből állt. Az elvárt formátum méréssel dőlt el, nem találgatással, és ha a kimenet nem illeszkedik erre a formátumra, a lépés meghiúsultnak számít. Az üres kimenet szintén hiba. Annak elkerülésére pedig, hogy ugyanaz a tömb kétszer íródjon ki, az eszköz elérési útja és az azonosító is ellenőrzésre kerül.

Az általános tanulság

Az itt számító mondat ez: "a parancs sikeres volt" és "a munka elkészült" nem ugyanaz.

A kilépési kód azt mondja meg, hogy az eszköz lefutott-e. Azt nem mondja meg, hogy az eredmény létrejött-e. Ha egy lépés teljes célja egy hatás előidézése, akkor nem az eszköz állapotát kell ellenőrizni, hanem magát a hatást.

Ebből a családból még két cikk van a wikiben. Az árva lemezekről szóló cikkben elkülönítettük az üres választ attól, amikor nem sikerült választ kapni. A szervernévről szóló cikkben az a veszély szerepelt, hogy az ismeretlen helyére hihetőnek látszó alapérték kerül. Ez a harmadik: a kilépési kód kerül egy soha meg nem állapított eredmény helyére.

Mindhárom ugyanannak a hibának az arca: a program olyasmit állít, amit nem ellenőrzött.

Források

A Proxmox saját dokumentációja. Angol nyelvű, és ebben a kérdésben az övé az utolsó szó.

Kapcsolódó bejegyzések

Hogyan néz ki ez az Atlason belül?

Tovább a termékoldalra