SystemImager 4.3.0 Ayrıntılı Kurulum, Kullanım ve Hata Çözümleri

  • İndirme ve Kurulum
  • İmaj alma ve Çakma (Örnek Senaryo)
  • Client Update (Örnek Senaryo)
  • Kurulum Sonrası Yapılması Gerekenler
    • Kuruluma Hazırlık Aşamasındaki Problemler ve Çözümleri
    • Kurulum Sırasındaki Problemler ve Çözümleri








İndirme ve Kurulum (CentOs 6.3 için)


SystemImager'ı kurmak için ya kaynaktan ya da hazırlanmış rpm paketleri ile kuruluma gidilmelidir. https://github.com/egcodes/systemimager-RpmPackages adresinde mevcuttur. Eğer Rpm ile kuruluma gidilecekse 1. 2. adımlar atlanabilir.
  1. SystemImager deposundan 4.3.0 versiyonu aşağıdaki komut ile çekilir.
    svn checkout https://systemimager.svn.sourceforge.net/svnroot/systemimager/trunk
  2. Derleyip Rpm paketleri haline getirebilmek için aşağıdaki komut yürütülür. Rpm paketleri home dizini altında rpmbuild dizininde oluşmaktadır.
    ./configure
    make rpmbuild
  3. Hem Server hem Client'da ortak olarak aşağıdaki paket ve bağımlıkları şu komut ile kurulmalıdır.
    yum install systemconfigurator-2.2.11-1.noarch.rpm
  4. Server kurulumu için systemimager(common, server, initrd, boot) paketleri aşağıdaki komutlar ile kurulur. Yum ile kurulmasının sebebi eğer bağımlıkları var ise onlarında kurulması sağlanır.
    yum install systemimager-common-4.3.0-0.3.el6.noarch.rpm systemimager-server-4.3.0-0.3.el6.noarch.rpm systemimager-x86_64boot-standard-4.3.0-0.3.el6.noarch.rpm systemimager-x86_64initrd_template-4.3.0-0.3.el6.noarch.rpm
  5. Client kurulumu için aşağıdaki komutlar yürütülür.
    yum install systemimager-common-4.3.0-0.3.el6.noarch.rpm systemimager-client-4.3.0-0.3.el6.noarch.rpm systemimager-x86_64initrd_template-4.3.0-0.3.el6.noarch.rpm


İmaj alma ve Çakma (Örnek Senaryo)


Server:10.128.5.1 - Golden-Client: 10.128.6.34 - Client: c033
  1. Golden Client'dan imaj aşağıdaki komut ile alınır.
    si_prepareclient --server 10.128.5.1 --no-uyok
  2. Server makinasından golden client imajı sunucuya alınır
    si_getimage --golden-client 10.128.6.34 --image new_node --ip-assignment STATIC --post-install shutdown
  3. Client'a imajın çakılması için network boot önceden ayarlanmalı. Daha sonra sunucuda netboot client için ayarlanmalıdır.
    si_mkclientnetboot --clients c033 --netboot --verbose
  4. İmaj çakılıp makina kapandıktan sonra sunucuda client Netboot'dan çıkarılıp Localboot'a alınır
    si_mkclientnetboot --clients c033 --localboot --verbose

Client Update (Örnek Senaryo)



Server:10.128.5.1 - Golden-Client: 10.128.6.34 - Client: c033
  1. Golden Client'dan imaj aşağıdaki komut ile alınır.
    si_prepareclient --server 10.128.5.1 --no-uyok
  2. Server makinasından golden client imajı sunucuya alınır
    si_getimage --golden-client 10.128.6.34 --image new_node --ip-assignment STATIC --post-install shutdown
  3. Client üzerinde (c033) aşağıdaki komut ile client update edilir.
    si_updateclient --server 10.128.5.1 --image new_node --reboot

Kurulum Sonrası


Kuruluma Hazırlık Aşamasındaki Problemler ve Çözümleri

  • SystemImager 4.3.0 kurulumundan sonra yapılması gerek konfigürasyonlar aşağıda sıralanmıştır. Sırası ile uygulanması, oluşabilecek imaj alma hatalarını giderecektir.
  • SystemImager golden-client tarafında kernel tespit edilemeyebiliyor. Eğer (si_prepareclient) komutu ile golden-client tarafında imaj hazırlanırken not detect kernel uyarısı alınırsa aşağıdaki patch golden-client tarafında uygulanır. FilePath: /usr/lib/systemimager/perl/SystemImager/UseYourOwnKernel.pm
367a368,373
>       #
>       # eliminate symbol files
>       if( $filename =~ m/^sym/ ) { return undef; }
>       #
>       # eliminate backup_mbr
>       if( $filename =~ m/^backup_mbr/ ) { return undef; }
467c473,475
<                             '((2\.[46])|(3\.[0-9])\.\d[^\/]*?) \(.*@.*\) [#]\d+.*' .
---
>                 #            '((2\.[46])|(3\.[0-9])\.\d[^\/]*?) \(.*@.*\) [#]\d+.*' .
>                             '(2[.][46][.][[:digit:]][^\/]*?) [(].*@.*[)] [#][[:digit:]]+.*' ;
> 
471c479,480
<                             '(\w{3} \w{3} \d{1,2}|\d{4}\/\d{2}\/\d{2}) '.
---
>                 #            '(\w{3} \w{3} \d{1,2}|\d{4}\/\d{2}\/\d{2}) '.
>                           '(\w{3} \w{3} [[:digit:]]{1,2}|[[:digit:]]{4}[/-][[:digit:]]{2}[/-][[:digit:]]{2}) '.
475c484,486
<                             '\d{2}:\d{2}:\d{2} \w{3,4}( \d{4})?';
---
>                 #            '\d{2}:\d{2}:\d{2} \w{3,4}( \d{4})?';
>                             '[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2} (\w{3,4}|[+-][[:digit:]]{4})?( [[:digit:]]{4})?';
> 

  • CentOs'un yeni sürümlerinde sistemlerde initrd initramfs olarak adlandırılmıştır. systemimager tarafından aranan initramfs bu nedenle bulunamayabiliyor. Eğer bunun ile ilgili bir hata çıktısı gelir ise aşağıdaki şekilde hardlink oluşturularak çözülebilir.
    ln /boot/initramfs-2.6.32-279.22.1.el6.x86_64.img /boot/initrd-2.6.32-279.22.1.el6.x86_64.img


Kurulum Sırasındaki Problemler ve Çözümleri

  • SystemImager, Client makinaya imaj çakarken boot aşamasında kendi kernel ve initrd.img imajını yükler ve burada Client'ı imaj çakmaya hazırlar. Bu aşamada sistemden sisteme değişebilecek problemler meydana gelmektedir. Aşağıda yazdığım ve çözümünü verdiğim problemler CentOs 6.3 x86_64'de meydana gelmiştir. Bu problemleri gidermek için SystemImager için yeni bir initrd.img imajı hazırlayacağız. Bu sayade Client'lara sorunsuz bir şekilde imaj çakılabilir.
  • Server makinasında /var/lib/tftpboot/x86_64/standard altındaki initrd_template dizininden gerekli değişiklikleri yaptıktan sonra yeni bir initrd.img oluşturacağız. Öncelikle mevcut initrd.img ve initrd_template klasörünün yedeklerini alalım.
    cp initrd.img initrdBackup.img; cp initrd_template initrd_template_backup
    
    
    Örnek initrd.img açm
    mkdir initrd
    cd initrd
    gzip -dc ../initrd.img | cpio -id
  • Systemimager çalışırken bazı ayar dosyaları için local.cfg dosyasını aramaktadır. İlk aradığı yerlerden birisi Floppy sürücüsüdür. Fakat Floppy sürücüsü barındırmayan sistemlerde bu imaj alınırken uzun süre beklemeye yol açmakta ve Buffer I/O error hatası vermektedir. Floppy problemini çözmek için, floppy ile ilgili olan kontrolü initrd_template içindeki başlangıç betiğinden devredışı bırakcağız. Aşağıdaki komut ile dosyayı açıp #BEGIN Floppy ile ilgili kısmı bulup, #END ile bitimine kadar olan kısmı # yorum satırı ile devre dışı bırakıyoruz.
    vi /var/lib/tftpboot/x86_64/standard/initrd_template/etc/init.d/functions
880,902d879
<     ### BEGIN try floppy ###
<     logmsg "Checking for floppy diskette."
<     logmsg 'YOU MAY SEE SOME "wrong magic" ERRORS HERE, AND THAT IS NORMAL.'
<     mkdir -p /floppy
<     mount /dev/fd0 /floppy -o ro > /dev/null 2>&1
<     if [ $? = 0 ]; then
<         logmsg "Found floppy diskette."
<         if [ -f /floppy/local.cfg ]; then
<             logmsg "Found /local.cfg on floppy."
<             logmsg "Copying /local.cfg settings to /tmp/local.cfg."
<             logmsg "NOTE: local.cfg settings from a floppy will override settings from"
<             logmsg "      a local.cfg file on your hard drive and DHCP."
<             # We use cat instead of copy, so that floppy settings can
<             # override hard disk settings. -BEF-
<             cat /floppy/local.cfg >> /tmp/local.cfg || shellout
<         else
<             logmsg "No /local.cfg on floppy diskette."
<         fi
<     else
<         logmsg "No floppy diskette in drive."
<     fi
<     ### END try floppy ###
< 
  • Imaj yüklendikten sonra meydana gelen bir diğer problem imaj çakılacak Client'ın Dhcp'den ikinci kez ip alamaması ve konfigürasyonunun tamamlanamamasıdır. (İlk alış netboot olurken, ikincisi initrd.img yüklendikten sonraki aşama). Bu hatanın çözümü yine başlangıç betiklerinde bir kaç ekleme ve çıkarma yapmaktır.
958d980
>       cp /etc/dhclient-script /sbin/
966,968c988>       mkdir /var/db
>       mv /var/db/dhclient.leases /var/state/dhcp/
>       DEVICE=eth0  
>       dhclient $DEVICE -v -e ${DHCLIENT_DIR}
  • SystemImager Golden-Client'dan alınan imajın ismini cluster.txt dosyasından parse ederken alamaktadır ve image ismi boş gelmektedir. Dolayısıla imaj çakma başlamamaktadır. Problemin çözümü şimdilik statik olarak dosyaya eklenerek giderilmiştir. FilePath:/var/lib/tftpboot/x86_64/standard/initrd_template/etc/init.d/functions dosyasında get_group_name() fonksiyonunun sonuna aşağıdaki değişkenler manuel olarak eklenmiştir. Sorunun giderilmesi bununla mümkündür. Fakat bu fonksiyonun elden geçirilmesi gerekmektedir.
    • GROUPNAMES=clusterName
    • IMAGENAME=imageName
    • GROUP_OVERRIDES=clusterName
  • Artık modifiye edilmiş imajımızı aşağıdaki şekilde oluşturabiliriz. initrd_templated'den initrd.img oluşturma
    • cd /var/lib/tftpboot/x86_64/standard/initrd_template
    • find . | cpio --create --'format=newc' | gzip >../initrd.img
  • Systemimager imaj işlemine başlamadan önce ve bitirmeden hemen önce pre-install ve post-install scriptleri çalıştırmaktadır. Bu scriptler /var/lib/systemimager/scripts altındaki pre-install ve post-install dizinlerinde bulunmaktadır. Default olarak systemimager 4.3.0'da gelen scriptler CentOs 6.3'de yetersiz kalmıştır (Örnek: disk partion hatası, grub'ın kurulamaması). Bunun için hazır bazı scriptler bulunup bazı eklemeler yapılıp Cluster sistemi için uygun hale getirilmiştir. Bu scriptler sistemden sisteme değişiklik gösterebilir. Özellikle grub kurulum script'i (post-install altında) imaj alınan Golden-Client'ın Grub'ı aynen aktarılmıştır. Bu yüzden imaj çakılma işi yapılmadan önce bu pre-install ve post-install scriptleri elden geçirilmelidir.
      • Pre-Install altındakiler
        • 01all.insmod_script (Disk tanıma partion hataları için)
      • Post-Install altındakiler
        • 10all.fix_swap_uuids (Swap için)
        • 15all.grub_install (Grub kurulumu için)
        • 16all.network_config (Network konfigurasyonu için)
        • 17all.keyboard_qwerty (Klawye için tr)

No comments:

Post a Comment