LTSP szerver nyűgök

Fórumok

Sziasztok!

Egy főiskolán szeretném a régi tantermi gépeket, mint vékony kliens újrahasznosítani. Telepítettem egy Ubuntu 9.04 LTSP szervert. Két problémám akadt, amivel nem tudok zöld ágra vergődni:
Az kliensek a root fájlrendszert nbd-n keresztül érik el, és ez tökéletes, első alkalommal. Ha újraindítom a klienst, akkor panaszkodik az NBD-re, I/O hibákat dob, újra csatlakozik, stb.. A hibák után tovább lép, de ez néha elég sokáig tart, és eközben nem túl szimpi üzenetekkel hányja tele a képernyőt. Nekem úgy tűnik akkor vannak hibák, ha a szerveren még fut a kliensre előzőleg elindított nbd szerver, az ugyanis a kliens leállításakor nem lép ki, csak kb. 2 óra múlva. Félek, hogy ha nem csak 2-3 kliens lessz, ez okozhat még további problémákat (nem túl erős a szerver). Próbáltam kilőni a felesleges szerver processzeket, de ez egyenlőre nem jött össze. Szóval nekem ez így elég használhatatlannak tűnik. Nem ragaszkodom az Ubuntu-hoz, de nem szeretném végigpróbálni az összes disztrót. (CentOSsal, Fedorával, Debiánnal elboldogulok, de ha az a megoldás nem zárkózom el a többitől sem.)
A másik probléma az, hogy nem sikerült rávenni a klienseket, hogy egy megadott screen legyen az aktív boot után. Ez lenne az egyetlen lehetőség, hogy a diák leüljön egy Linux desktop elé, de ha nem tudom biztosítani, hogy a diákok számára fentartott Windows terminál szerver legyen az elsődleges, akkor ezt ki fogják szedetni velem, mert a legtöbb diák értelmi képességeit meghaladja egy screen váltás. Ráadásul ha több Windows szervert adok meg nem igazán derül ki, hogy éppen melyik szerver is látszik (a neve nincs a bejelentkező képen, bár ezen talán lehet változtatni, de a Windows szerverekhez nem nagyon értek, ill. azokat nem én adminisztrálom).

Hozzászólások

Nyomós okod van arra, hogy ragaszkodsz a nbd-hez?

NFS-el használom, soha semmi gond nem volt a boot folyamattal. A szerver Debian/etch, az LTSP is Debian repo-ból van.

Az aktív képernyő nálam is gond, de a középiskolás diákoknak még nem magas a Ctrl+Alt+F1 ;).

Nem ragaszkodom az NBD-hez, de LTSP5-ben ez az alapértelmezés, és állítólag sokkal jobb mint az NFS, főleg, ha nem túl erős a szerver. Ha már sokkal jobb, akkor feltételeztem, hogy működik is.
Ha feltételezzük, hogy használják az LTSP-t, akkor az is feltételezhető, hogy a NBD problémát megoldották, tulajdonképpen nem is létezik (csak én balfaszkodok), vagy nem használják mert nem is jobb. Ez utóbbi három esetből szeretném a segítségetekkel kiválasztani az igazat. A fenti tekinthető egy szavazatnak az utolsó esetre?

Rebbot-nál milyen sorrendben és milyen scriptek futnak le? (rc.xx)
Ha a networking már leállt nincs lehetőség az nbd device disconnect-álására. Itt vizsgálódnék.

Egyébként az előttem szólónak +1

Eredetileg semmi sincs ami leállítaná az nbd-client -et. El sem idítja semmi, mivel ezt a kernel intézi, lévén enélkül nincs root fájlrendszer. A leállítási procedurába próbáltam beilleszteni az nbd-client leállítésát de az update-rc.d erősen tiltakozott, mert szerinte ez már megvan, szerintem meg nyoma nincs. Beraktam kézzel az rc2.d - rc5.d -be, de nincs látható eredménye, még a leállásnál kiírt üzenetekben sincs nyoma, bár az nem sokáig látszik, lehet hogy csak nem vettem észre. A hálózatot sem állítja le semmi.
Ez van az /etc/rc2.d -ben (rc3,rc4,rc5 ugyanez):
K01policykit -> ../init.d/policykit
K50pulseaudio -> ../init.d/pulseaudio
K70bootlogs.sh -> ../init.d/bootlogs.sh
K99ondemand -> ../init.d/ondemand
K99rc.local -> ../init.d/rc.local
README
S10acpid -> ../init.d/acpid
S10sysklogd -> ../init.d/sysklogd
S11klogd -> ../init.d/klogd
S12dbus -> ../init.d/dbus
S24hal -> ../init.d/hal
S25ltsp-client-core -> ../init.d/ltsp-client-core
S98usplash -> ../init.d/usplash
S99rmnologin -> ../init.d/rmnologin

OK. Egy kicsit eltévedtem. A restart procedúránál szépen leállítja az NBD-t és a szerveren is terminál az ndb-server. Én eddig egyszer sem restaroltam, leállítottam, majd újraindítottam a klienst. A restartnál (rc6.d) hívja az /etc/init.d/umountroot scriptet, de a kikapcsoláskor ez nem megy. Az rc0.d -be kell berakni a umountrout linkjét?

Hát én megpróbálnám! Persze valahova a végére.
A sorrendet tudod puskázni az rc6.d -ből.
Ha ez működik is nem fogja megoldani egy reset gomb, vagy
hw hiba miatti megállásokat. Nézd meg, hogy nbd szerver
oldalon mire van állítva a default idle timeout!
Ezt vedd le valami értelmes értékre, hogy megszakadás esetén a szerver lője ki a process-t!

Benéztem, restartnál sem áll le.
Szerver oldalon inetd, és egy script indítja a szervert, a script (lényegében egy sor):
PATH=/usr/bin:/bin:$PATH nbd-server 0 $1 -r -C /dev/null > /dev/null 2>&1

Ahol a $1 a cliens root image.
Van viszont egy bejegzés a /etc/hosts.allow -ba:
nbdrootd: ALL: keepalive
ezt kivettem, hátha.
Rosszabb nem lett.

Működik egyáltalán az umountrout script a clinsen.
Mit csinál az? Mi a tartalma? Ha hosszú tedd fel valahova!
Arra gyanakszom, ha ez csatolja le a root filerendszert,
hogy nem hajtódik végre.
Próbáld kiadni consolon a cliensen. Úgy is azt fogja kiírni, hogy a filerendszer használatban van.

A umountrout közepét beidézem, az elején lévő kommentek, meg a végén lévő case nélkül:

PATH=/sbin:/bin
. /lib/init/vars.sh

. /lib/lsb/init-functions

do_stop () {
[ "$VERBOSE" = no ] || log_action_begin_msg "Mounting root filesystem read-only"
# These directories must exist on the root filesystem as they are
# targets for system mountpoints. We've just unmounted all other
# filesystems, so either they are mounted now (in which case the
# mount point exists) or we can make the mountpoint.
for dir in /proc /sys /var/run /var/lock; do
mkdir -p $dir || true
done

MOUNT_FORCE_OPT=
[ "$(uname -s)" = "GNU/kFreeBSD" ] && MOUNT_FORCE_OPT=-f
# This:
# mount -n -o remount,ro /
# will act on a bind mount of / if there is one.
# See #339023 and the comment in checkroot.sh
mount $MOUNT_FORCE_OPT -n -o remount,ro -t dummytype dummydev / 2>/dev/null \
|| mount $MOUNT_FORCE_OPT -n -o remount,ro dummydev / 2>/dev/null \
|| mount $MOUNT_FORCE_OPT -n -o remount,ro /
ES=$?
[ "$VERBOSE" = no ] || log_action_end_msg $ES
}

Az rc6.d tartalma:

K02usplash -> ../init.d/usplash
K20sendsigs -> ../init.d/sendsigs
K25hwclock.sh -> ../init.d/hwclock.sh
K31umountnfs.sh -> ../init.d/umountnfs.sh
K40umountfs -> ../init.d/umountfs
K50alsa-utils -> ../init.d/alsa-utils
K60umountroot -> ../init.d/umountroot
S90reboot -> ../init.d/reboot

Reboot-kor nem látszódnak az umountrout üzenetei, de ez lehet azért is, mert nem veszem észre.