Još jedno alternativno rješenje za podizanje linux poslužitelja u slučaju kvara

Mogući su razni scenariji nemogućnosti podizanja (bootanja), linux sustava. Raspad RAID-a, uništen GRUB bootloader, obrisan MBR diska ... lista je duga. Za takvu situaciju možemo pripraviti USB-klipić koji sadrži kopiju osnovne (root) particije i svih važnih hardverskih parametara i modula potrebnih za podizanje sustava. Uvjet je da se poslužiteljev BIOS može konfigurirati za podizanje sustava preko USB-a, što je u današnje vrijeme redovit slučaj.

Dovoljno je imati memorijski klipić kapaciteta 500M ili 1G, toliko zauzmu preslike kernela, modula i konfiguracijskih datoteka (pod predpostavkom da se uobičajeno veliki direktoriji /var, /usr /home itd. ne nalaze u istoj particiji kao root onda ta (/) particija u načelu ne treba puno diskovnog prostora. Puno prostora u toj particiji mogao bi eventualno zauzimti kernel src direktorij ako sadrži sirovi - nebinarni - kod za kompiliranje kernela).

Memorijski klipić obično dođe formatiran u FAT ili VFAT datotečnom sustavu. Particiju na koju želimo kopirati linux / (root), treba zato ponovo formatirati za linux. Možemo to napraviti na bilo kojem linux stroju s grafičkim alatom gparted ili direktno iz konzole:

 mkfs.ext3 /dev/sdc1                            #ako je FAT ili VFAT particija prepoznata kao /dev/sdc1
 sync ; sync

Time je priprema gotova, slijedi kopiranje root particije poslužitelja na upravo formatiranu particiju. Kada utaknemo USB-klipić u USB sučelje poslužitelja izvršimo kao root slijedeće naredbe:

 cd /						#pozicioniranje u root dir
 fdisk -l					#vidjeti koja particija/uređaj je dodijeljen USB-klipiću
 mkdir /mnt/sdc1                                #kreirati mjesto montiranja klipića ako je fdisk tako pokazao
 mount /dev/sdc1 /mnt/sdc1                      #montiranje particije na USB-klipiću
 mkdir /udev                                    #dir za montiranje  /dev 
 mount --move /dev /udev                        #montiranje  /dev
 cp -avx / /mnt/sdc1                            #kopiranje "/" na klipić  (x=ne ići izvan / particije, v=ako hoću gledati što se sve kopira)
 mount --move /udev /dev                        #odmontirati /dev (nakon završenog kopiranja)

Instalacija bootloadera:

Ako na poslužitelju pokrenete naredbu:

grub-install -v

dobijete nešto poput:

grub-install (GRUB) 1.98+20100804-14+squeeze1

To znači da je instaliran GRUB2. Ako bi umjesto broja 1.98 pisalo 0.97 ili manje, to bi značilo da je instaliran GRUB. Shodno tome različit je i postupak instalacije na mem-klipić:

Instalacija GRUB-a:

Dok je /mnt/sdc1 još montiran u datoteku /mnt/sdc1/boot/grub/device.map treba utipkati:

(hd0) /dev/sdc

a u /mnt/sdc1/boot/grub/menu.lst treba stajati nešto poput:

 title           Debian GNU/Linux, kernel 2.6.18-6-486
 root            (hd0,0)
 kernel          /boot/vmlinuz-2.6.18-6-486 root=/dev/sda1 ro vga=792 
 initrd          /boot/initrd.img-2.6.18-6-486
 savedefault

Što se tiče novije verzije (grub2) podešavanja, moguće ga je podesiti nakon što se pozicioniramo naredbom 'chroot' u direktorij /mnt/sdc1:

 mount --bind /dev /mnt/sdc1/dev
 mount --bind /proc /mnt/sdc1/proc

Potreban će nam biti i /usr direktorij, da bi u chroot okolišu imali pristup bash ljuski. Pogledamo s

df -h

na kojoj /dev particiji je lociran /usr pa ga montiramo na /mnt/sdc1/usr (u našem primjeru je u lociran u raid polju md5):

 mkdir  /mnt/sdc1/usr
 mount --bind /dev/md5 /mnt/sdc1/usr     #ili mount --bind /usr /mnt/sdc1/usr  (ako prvo ne prođe)
#ako zatreba na isti način montirati i /var
 chroot /mnt/sdc1

Sad pošto nam je USB-klipić lociran na /dev/sdc pokrenemo instalaciju GRUB2 u mbr tog uređaja:

 grub-install --recheck /dev/sdc

Nakon nekoliko trenutaka, kad prođe instalacija pojavi se obavijest:

Instalation finished. No error reported.

Još samo utipkamo:

grub-mkconfig

i

update-grub

Možete testirati da li je grub instaliran ako pokrenete slijedeću naredbu prije i poslije instalacije grub-a:

dd if=/dev/sdc bs=512 count=1 | xxd

pa ako negdje u ispisu možete pročitati riječ "GRUB" nakon instalacije, valjda je grub instaliran.

Nakon umountanja /usr i drugih particija koje ste montirali u chroot okolišu izlaz je s exit:

umount /proc /dev /usr
exit

Odmontirajte /proc /dev /usr i sam USB klipić /mnt/sdc1

umount /mnt/sdc1/proc /mnt/sdc1/dev /mnt/sdc1/usr
umount /mnt/sdc1

Naredba

mount        #bez parametara

pokazat će da li je sve montirano onako kako je bilo i prije.

Sve u svemu instalacija GRUB i GRUB2 pokretača je slična kao što je opisano u članku:

http://sistemac.carnet.hr/node/1037

Nakon instalacije GRUB-a još je samo potrebno testirati da li je sve prošlo u redu.

Za pouzdano testiranje podizanja sustava sa USB-klipića trebalo bi spuštati i dizati ponovo poslužitelj s utaknutim klipićem u jedno od USB sučelja (mogli bi odmah uočiti da root (/) particija biva montirana na klipić, a ostale kao i prije, jer ih nismo dirali), ali pošto je takav test povezan sa privremenim ispadom sustava u produkciji, testiranje se možda može obaviti na zamjenskom poslužitelju ili virtualno na samom  poslužitelju s qemu emulatorom, npr.:

qemu   /dev/sdc                                   #emulacija iz grafičkog sučelja 

ili emulacija iz konzole, ako poslužitelj nema instalirano grafičko sučelje:

 qemu-system-i386   -curses /dev/sdc              #za 32-bitni kernel
qemu-system-x86_64   -curses /dev/sdc              #za 64-bitni kernel

 

Vijesti: 
Kuharice: 
Kategorije: 
Vote: 
5
Vaša ocjena: Nema Average: 5 (1 vote)