Emergency reboot távolról - ha már minden kötél szakad

Járhat úgy az ember, hogy egy távoli tesztgépen alpha kódok kipróbálásakor a rendszert olyan állapotba hozza a tesztelés során, hogy csak a "hard reboot" teszi rendbe. Például fejlesztés alatt álló filerendszert tesztel, megpróbálja azt mount-olni, de a művelet kernel crash-t, oops-t okoz. A rendszer nem omlik össze teljesen, a legtöbb funkciója ép marad, azonban néhány dolog (pl. sync, mount, stb.) ettől fogva nem működik. Ebből kifolyólag a rendszert nem indíthatja újra a szokásos módokon (például a "reboot" parancs kiadásával), mert leállítási procedúra alatt az umount / sync műveletekbe beledöglene, a reboot folyamat megakadna, és a gép távolról elérhetetlenné válna ssh-n keresztül. Mit lehet akkor ehelyett tenni?

A megoldás: Magic SysRq
A probléma: nem ülünk a gép előtt, nem tudjuk megnyomni a szükséges billentyűkombinációt (AltGr + SysRq + B)

A megoldás megoldása:

Szerencsére SysRq parancsot nem csak billentyűzeten keresztül küldhetünk a gépnek, hanem a /proc filerendszeren keresztül is. Természetesen csak akkor tudjuk használni, ha a kernelbe bele van fordítva a "Magic SysRq" támogatás, de egy tesztgépen miért ne lenne? Egyébként a Linux disztribútorok egy része (pl. az Ubuntu) olyan kerneleket szállít, amelyekbe bele van fordítva ez az opció.

Ha nem lenne engedélyezve a funkció, akkor engedélyezzük a használatát:

echo 1 > /proc/sys/kernel/sysrq

Ezután már nyomhatjuk a reboot-ot:

echo b > /proc/sysrq-trigger

Ez egyenértékű azzal, mintha a billentyűzeten lenyomtuk volna az "AltGr + SysRq + B" kombót, azaz "reBoot"-t parancsot adtunk volna.

További Magic SysRq "parancsok":

R - keyboard goes out of RAW mode
E - tErminate all processes
I - kIll all processes
S - Sync disks
U - Unmount disks and remount them read-only
B - ReBoot the machine

Természetesen ha ssh-n keresztül dolgozunk, akkor kerüljük az E és I parancsokat, mert azokkal könnyen kinyírhatjuk magunk alatt az ssh kapcsolatot és akkor elérhetetlenné válik a gép.

Természetesen ha van a géphez valamilyen menedzsment processzorunk, kártyánk (ILO és társai) akkor szerencsénk van. Főleg, ha nem felejtjük el bekonfigurálni az elérhetőségét. :D

Hozzászólások

nagyon hasznos, koszi!
egyebkent amit itt emlitesz T-t:

"Természetesen ha ssh-n keresztül dolgozunk, akkor kerüljük az T és I parancsokat, mert azokkal könnyen kinyírhatjuk magunk alatt az ssh kapcsolatot és akkor elérhetetlenné válik a gép."

az vagy kimaradt, vagy nem latom, de mit csinal? :)
---
Tévedni mindenkinek szabad, csak a mérnöknek észre kell vennie.

Nekem már sokat segített, de én az EI párost nem szoktam használni. Jól jö, amikor nem jön vissza rendesen a gép a hibernálásból, vagy amikor az ndiswrapper oops-ol, illetve amikor az uvesafb beakad vc<->X váltáskor (igen, csókolom a VIA mérnökeit, hogy a kártyájuk néhány VESA funkciót bugosan támogat). Sajnos az ellen nem véd, amikor kihúzódik a HDD (ezért meg FuSi laptoptervezők kezét törögetném el, mert az egész HDD-t maga a SATA dugasz rögzíti).

Ez jó, fel is iratkozom rá... köszönöm a leírást. :)

-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."