Daha önce çalıştığım firmada başıma büyük dert açan bir olayı anlatmak istiyorum. Ele geçirilen her server sanallaştırılmış ve sistem odasında 5-6 tane ESX host vardı. Hepsi’nin ortak noktası Intel olması. Proje kapsamında büyük yeni bir HA sistem kuruldu. Tek fark CPU AMD. Bütün vm_guest leri Şahan Çelikağ arkadaşımızla birlikte yeni yapıya migrate etmeye başladık. Bütün makineler succuss olarak taşındı ama 11 tane redhat makine migrate sonrası fail etti ve reboot olmadı. Açılışda kernel panic hatası verdi. Araştırmalarımız sonucunda kernellerin upgrade olması gerektiğini anladık ve bütün panic haldeki makinelerin kernel’lerini upgrade ettik ve boot olmasını sağladık.
Bu çalışmamı vmware workstation üzerindeki RHEL 5.3 üzerinde adım adım anlatarak yapacağım. Umarım beğenirsiniz. Kernel bilindiği üzere operating system’in core’udur ve memory allocation, process allocation gibi birçok temel işlemleri gerçekleştirir.
İlk önce mevcut kernel ve CPU hakkında bilgi alacağım ve sisteme uygun kernel versiyonunu tespit edip download edeceğim.
Yukarıda görüldüğü üzere Intel CPU üzerinde i386 RHEL 5.3 kurulu ve üzerindeki kernel versiyonu 2.6.18-128.el5 #cat /proc/cpuinfo’nun output’unda CPU’nun intel olduğunu gördüm. Mevcut kernel security, bug fix, enhancement update, hardware ya da üzerinde çalışan uygulamanın gereksimleri kapsamında upgrade edilecek. Bu örnek çalışma için RHEL 5.6 ile beraber release edilen kernel versiyonu olan kernel-2.6.18-238.1.1.el5 ile upgrade işlemini yapacağım.
Download edeceğim kernel hakkında redhat’ın resmi sayfasından bilgi ediniyorum.
Paketi download ettikten sonra md5 check sum yaparak fingerprintleri match ediyorum. Yukarıdaki fingerprint değeriyle aynı olduğunu görüyorum.
Kernel’i –ivh ile makineye yüklüyoruz. –Uvh kesinlikle kullanmıyoruz. Eğer –U ile upgrade yaparsak sitemde çalışan kernel binaryleri siler ve yenisi ile replace eder. Yeni kernel yüklenip gerekli testler yapıldıkdan sonra –e ile eski kernel silinebilir.
Sisteme uygun mimarideki, crash olmamış doğru paketi yüklediğim için hatasız bir kurulum gerçekleştirdim.
Kurulumdan sonra /boot folder’ında yeni kernel için config, initrd image, symvers, system.map ve vmlinuz dosyalarının oluştuğunu görüyorum/kontrol ediyorum.
/etc/grub.conf dosyasında yeni kernel’in eklendiğini görüyoruz. Default değerin 0 olduğunu görüyoruz. Bu makinenin ilk sıradaki kernel’dan boot olacağını gösterir. hiddenmenu’yü # işareti ile kapatırsak açılışda seçmeli menü’yü görürüz. Timeout değerini 5 yerine 30 ya da 40 yaparsak menü’yü kaçırmamış oluruz.
Makineyi reboot ediyoruz ve karşımıza aşağıdaki ekran geliyor. Yeni kernel’in ilk sırada olduğunu görüyoruz.
uname –r ya da –a ile kernel versiyonunu kontrol ediyoruz. Görüldüğü üzere makinemiz yeni kernel ile boot olmuş.
Sistemi tatminkar bir süre dahilinde test ediyorum ve eski kernel’i silmeye karar veriyorum.
Mevcut kernel’ları kontrol ediyorum ve eskisini –e parametresi ile siliyorum.
grub.conf dosyasını kontrol ediyorum ve eski kernel’in silindiğini görüyorum. Daha sonra makineyi reboot edip boot ekranıma bakıyorum.
Görüldüğü üzere bir tane kernel’im var ve 32 sn. sonra boot olamaya başlayacak.
Görüldüğü üzere yeni bir kernel yüklemek yeni bir paket yüklemekden farklı değil. En önemli kriter production sisteme zarar vermeden yeni versiyonu yüklemek ve testlerini gerçekleştirmek.