NAS-t építek, és mielőtt rábíznám az adataimat, mindenképpen tesztelni akartam a hibatűrést. Félig véletlenül kirántottam boot előtt az egyik SATA kábelt (amúgy is kontaktos a táp mindenfelé). Ezután már kernelpánik fogadott a gép bekapcsolása után, ezért ráengedtem egy GRUB javítást is, amitől persze nem lett jobb (hülyeség volt, miből gondoltam, hogy a GRUB-nak van baja...). A lényeg az volt, hogy a telepített Ubuntu Server 16.04 újratelepítés nélkül menthető legyen (meg az adatpartíciónak ne legyen baja).
Az OS egy 5 lemezből álló Linux szoftver RAID5-ön levő LVM -el működött. Itt volt a / is, LVM köteten, erről bootolt. Ez nem ajánlott, de működik.
Elég sokáig tartott rájönni, mi baja. A pontos menetet nem is tudom összerakni (nem dokumentáltam, idő hiányában), de nagyjából leírom a szükséges műveleteket, hátha segít valakinek. A parancsok sem pontosak, csak mintául vannak ott.
Először is, a RAID-ből kiesett lemezt kell visszarántani a tömbbe. Ehhez bebootoltam az Ubuntu Server telepítőjéről mentés módba. Az adatok látszottak, ha chrootoltam az OS vagy az adatpartícióra (a RAID javításhoz nem kell chroot). Ezután ellenőriztem a tömb állapotát a sudo mdadm --query --detail /dev/mdX
paranccsal, ahol ugye X az md raid tömb azonosítója. Ez megondja, hogy van-e hiányzó, vagy hibás lemez a RAID tömbben. Nekem ugye volt, hiába dugtam vissza a SATA kábelt időközben a winchesterre, azt írta ki, hiányzik egy diszk.
A mdadm /dev/mdX -a /dev/sdXX
parancs visszatette a tömbbe az új HDD-t. (Meghibásodott meghajtó cseréjekor azt előre fel kell particionálni RAID eszköznek.) A javítás folyamatát a cat /proc/mdstat
paranccsal lehet figyelni.
Amikor végzett, újraindítottam a gépet, és bootolt.
Egészen a BusyBox / initramfs-ig. Eh.
Ezután következett annak kiderítése, mi baja az initramfs-nek? Arra panaszkodott, nem látja az LVM kötetet.
(lvmetad is not active yet, using direct activation during sysinit
)
Volume group "volumegroupneve" not found
Cannot process volume group volumegroupneve
Újra telepítőlemez, mentés mód. Nem emlékszem, chroot, vagy nem, de vgchange -a y volumegroupneve
, lvchange -a y logicalvolumeneve
parancs rosszat nem tett neki.
Ezt nem ellenőriztem újraindítással (igazából meg kellett volna javulnia), mert ha már ott voltam, akkor újraépítettem az initramfs-t, hátha az a baja.
Ehhez már egy Lubuntu LiveCD-t használtam, mert a szerver verziós telepítő mentés módja botrányosan macerás. LiveCD-vel gyorsabban kaptam használható felületet.
Ellenőriztem a NAS / partícióját : fsck /dev/mapper/volumegroupneve-rootpartíciókötetneve
Csatoltam a RAID+LVM-en levő / -t a LiveCD-re, és chrootoltam bele.sudo mount /dev/mapper/volumegroupneve-rootpartícióneve /mnt
sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys &&
sudo chroot /mnt
Itt lehet, hogy egy mkinitramfs
vagy update-initramfs
is segített volna, de az update-initramfs
hiányolt egy csomó mindent a /lib-ből - lehet azért, mert nem volt még kernel frissítve? Nem néztem, hogy a telepítés után ott vannak-e a headerek a lib-ben.sudo apt-get update&&sudo apt-get install linux-headers-generic
és apt-get install linux-image-generic
után már volt minden, új kernel, új initramfs... meg egy csomó hibaüzenet, hogy az lvmetad nem fut.
("/run/lvm/lvmetad.socket: connect failed: No such file or directory"
)
Mint kiderült, ott van, az, de a LiveCD (meg a szerver telepítő sem) nem indítja. A service lvm2-lvmetad start
igen.
Az új kernellel átugrottam azt a lehetőséget is, hogy ha volt esetleg kernel frissítve, akkor az rossz volt, és azért pánikolt el az elején (bár ennek kicsi a valószínűsége)
Ezután az új kernel telepítése közbeni hibaüzenetek sem jöttek., és reboot után szépen indult a NAS.
Ezután elindul, de nem fogad el semmilyen jelszót - ezen már könnyű segíteni. Valószínű a félresikerült javítási kísérleteim közben sikerült kiütni a /etc/shadow
-t, ezért bele kell írni egy új jelszót, erre azért van pár módszer.
Egyszerű : a GRUB parancsszerkesztőt használva könnyen root shellhez lehet jutni. A / ilyenkor read-only, szóval mount -o remount,rw /
után ki lehet adni a passwd usernév
parancsot, ami után már be lehet jelentkezni.
Mondjuk ez nem azt jelenti, hogy minden szép és jó, de remélhetőleg a többi a rendszer többi része már rendben lesz.