( egmont | 2014. 06. 21., szo – 19:09 )

Réges régen (1998-1999) ezt úgy csináltuk, hogy:

Az alap rendszer akkor 2x2GB-os partíción volt (Linux és Windows – most is kb. akkorát készítenék, ami kényelmesen elég, de nem fölöslegesen nagy), ezt tömörítetlenül másoltuk a szerverre. A tömörítetlenség egyik előnye, hogy loop mount-olható, szoftverek frissíthetők ott.

Kézzel-lábbal összetákoltunk c-bash egyvelegben olyat, ami 4kB-onként md5-öt számol és azt binárisan (16 byte-on) tárolja el, összefűzve mindet. Ez az image fájl méretének 256-od része.

A kliensek dhcp, nfsroot stb. segítségével tudtak bebootolni az újratelepítéshez. NFS-en látták az image fájlt és az md5 fájt is. Az md5-öt olvasták, összevetették a diszk tartalmával, és csak ahol eltérés volt ott töltötték le az image megfelelő részét.

További optimalizálást csináltunk a csupa 0 blokkok táján. Egyrészt a referencia image-en a nem használt blokkokat mindig kinulláztuk (pl. szoftverfrissítés után cat /dev/zero > file; [no space left on device]; rm file), másrészt a kliens felismerte a csupa 0 blokk md5-jét és kinullázta a blokkot, anélkül hogy letöltött volna 4kB-nyi nullát a szerverről.

Az első telepítés (particionálás, stb.) eléggé kézzel ment és lassú is volt, de utána az újratelepítés már nagyon gyors: kb. 5 perc alatt végzett akkor is ha a közel 50 kliens mind párhuzamosan csinálta (a helyi diszk tekerése volt a szűk keresztmetszet, nem igazán a 10Mbites háló). Persze journaling kikapcs, noatime, esetleg readonly mountolás is jót tesznek.

A gépek BIOS-át kézzel beállítottuk, hogy hajnalban percenként felébredjenek, a LILO valami timeout-tal Linuxot bootolt, ami a boot során ha épp hajnal volt, akkor átkonfigta a LILO-t hogy az újratelepítő kernelt (dhcp, nfsroot) töltse be és megküldte reboot-ra a rendszert. A telepítő a diszk image-ek ily módon letöltése után még átírt egy-két fájlt ami esetleg gépenként különböző volt (pl. X konfig), beállította a pontos időt, és újratelepítette a LILO-t. Ily módon minden nap friss Linux és Windows telepítés volt a klienseken, de szükség esetén nap közben is villámgyorsan lehetett javítani, ha megsérült valami.

Sajnos nem hinném hogy megvan még valahol ez a szoftver :(, de remélem sikerült ötletet adnom, ha van kedved egy kis hackeléshez!