Donanımsal watchdog ve bilgisayarı kapatma tuşu

ArticleCategory: [Choose a category, do not translate this]

Hardware

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to tr:Erdal MUTLU

AboutTheAuthor:[A small biography about the author]

Guido, Lınux'u sadece işletim sistemlerinin nasıl çalıştığını öğrenmenin ilginç olduğu için değil, aynı zamanda onu tasarlayan kişiler yüzünden sevmektedir.

Abstract:[Here you write a little summary]

Linux sunucunuz için LCD denetim paneli yazısında, birçok olasılıklara sahip mikroişlemci tabanlı küçük bir LCD denetim paneli nasıl oluşturulacağı anlatılmıştır. Bu yazıda tasarladığımız donanım çok daha ucuz (LCD dpaneli için zaten anlaşmıştık.) ve LCD panelinin ancak 2 özelliğini kullanmaktadır: Donanım sadece yaygın kullanılan parçalardan oluşmaktadır. Bunları elde etmede sorun yaşamayacaksınız. Tüm parçalar yaklaşık 5 Euro tutacaktır.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

watchdog nedir?

Bilgisayar terimi olarak watchdog (bekçi köpeği), bilgisayarın çalıştığını garanti eden çok güvenilir (sağlam) bir donanımdır. Bu tür aygıtları Mars PathFinder'ın (Bir tuşa basmak için Mars'a kim adam göndermek isteyebilir?) aygıtları arasında veya bazı pahalı sunucularda bulabilirsiniz.

Böyle bir watchdog yapılmasının ardındaki düşünce çok basittir: Bilgisayar zaman zaman watchdog aygıtına "Merhaba" demesi gerekiyor ki bilgisayarın hala hayatta olduğu anlaşılsın. Eğer, bunu yapamazsa, o zaman bilgisayar donanımsal olarak yeniden başlatılacaktır.

Bir Linux sunucusu kesintiye uğramadan normalde birkaç ay çalışması gerekmektedir, ortalama 1-2 sene. Eğer, hafta tıkanan bir makinaya sahipseniz, hatalı olan başka bir şey olmalıdır ve bu durumda watchdog size çözüm olmayacaktır. RAM'nızın (memtest86.com bakınız) hatalı olup olmadığına, aşırı ısnmış işlemciler(e) sahip olup olmadığınıza, fazla uzun IDE kablolarına vs. bakmanız gerekmektedir.

Eğer Linux, bir yıl boyunca hiç sorun yaratmadan çalışacak kadar sağlam ise, o zaman watchdog'a neden gereksinim duyarsınız? Sorunun cevabıda basit: daha sağlam yapmak için. Ayrıca, buna insan faktörünü de eklemek gerek. Bir yıl boyunca hiçbir sorun çıkartmamış bir sunucu, servis personeli tarafından da unutulmaktadır. Eğer, sunucu arıza yaparsa, hiç kimse sunucunun nerede olduğunu bilmeyecektir. Bir de tam yılbaşı öncesi, herkes tatilde iken arıza yapabilir. Tüm bu durumlarda watchdog çok faydalı olabilir.

Diğer taraftan, watchdog tüm sorunları çözmemektedir. Hatalı donanıma karşı yapabileceği bir şeyi yoktur. Eğer, sunucunuza watchdog takıyorsanız, sunucunuzun donanımsal olarak uygun bir şekilde yapılandırmanız gerekmektedir (Çeşitli hataları olan en yeni çip ve BIOS'ları kullanmamalızınız ve donanımın düzgün olarak soğutulmasını sağlamalısınız.).

Watchdog nasıl kullanılabilir?

Burada tasarlamış olduğumuz watchdog, sadece kullanıcı seviyesinde çalışan programların çalıştığını garanti etmektedir. Gerçekte sağlam bir sisteme sahip olabilmek için, çalışan uygulamaları (sanaldoku sunucuları, veritabanı sunucuları) ve sistem kaynaklarını (disk alanlarını, belkide işlemci sıcaklık derecelerini) sürekli olarak gözlemlemelisiniz. Bu işlemleri kullanıcı seviyesinde çalışan diğer programlar ile denetleyebilirsiniz (crontab). Tüm bunlar Linux sunucunuz ıçın LCD denetim paneli yazısında anlatıldı. Dolayısıyla bu konuda daha fazla ayrıntıya girmeyeceğim.

Örnekler mi? Bu küçük kabuk programı ile ağ, swap ve disk kullanımını gözleyebilirsiniz.


#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
export PATH
#
# Diskin izlenmesi
# ----------------
# Disk bölmelerinin %80 ve daha fazla dolu olup olmadığına bak.
# (Eğer bu kabuk programı herhangi bir çıktı oluşturursa, crontab # otomatik olarak e-ileti gönderecektir.)
df | egrep ' (8.%|9.%|100%) '
#
# Swap alanının izlenmesi
# Normalde bir sunucu swap yapmayacak şekilde yapılandırılmış olması # gerekmektedir. Dolayısıyla swap alanı sabit ve sınırlı olmalıdır.
# ----------------
# 6 Mb'den fazla swap kullanılıp kullanılmadığına bak.
swpfree=`free | awk '/Swap:/{ print $3 }'`
if expr $swpfree \> 6000 > /dev/null ; then
    echo "$0 uyarı! şu andaki swap kullanımı $swpfree"
    echo " "
    free
    echo " "
    ps auxw
fi
#
# Ağın izlenmesi
# -------------------
# kendi IP adresi veya bilgisayar adı:
hostn="linuxbox.your.supercomputer"
#
if ping -w 5 -qn -c 1 $hostn > /dev/null ; then
    # tamam bilgisayar çalışıyor
    echo "0" > /etc/pingfail
else
    # cevap yok ping'ten gelen hata sayısını bul
    if [ -r /etc/pingfail ]; then
        pingfail=`cat /etc/pingfail`
    else
        # pingfail dosyasının olmadığı durumu
        # değerlendirmiyoruz
        exit 0
    fi
    pingfail=`expr "$pingfail" "+" 1`
    echo "$pingfail kadar ping hatası oluştu"
    echo "$pingfail" > /etc/pingfail
    if [ $pingfail -gt 10 ]; then
        echo "10'dan fazla ping hatası. Sistem yeniden başlatılıyor..."
        /sbin/shutdown -t2 -r now
    fi
fi
# --- izleme kabuk programının sonu ---

Bunu her 15 dakikada bir çalışacak şekilde crontab'a aiağıdaki gibi giriş yapılabilir:

1,15,30,45 * * * * /where/the/script/is

Watchdog donanımı

Standart bir röle yoktur. Her üreticinin kendi tasarımı var. Bizim devre için trafonun iç direnci çok önemlidir. Aşağıda, biri 5V, 500 Ohm diğeri de 5V, 120 ohm olan iki röle vardır. Röle satın almadan önce ya empedansı sorun ya da kendiniz ohmmetre ile ölçünüz. Çizim üzerine basarsanız, çimin büyütülmüş halini göreceksiniz.
120 Ohm rölesi:
[120 Ohm relay]
500 Ohm rölesi:
[500 Ohm relay]

Kapatma tuşu, basıldığında RTS ve CD arasında bağlantı sağlamaktadır. Eagle programında başka sembol olmadığı için çizimde biraz tuhaf gözükmektedir.

Bu yazıda devrede kullanılan parçaların listesini vermiyorum. Yukarıdaki şemadan nelere gereksiniminiz olduğunu kendiniz de görebilireiniz (Seri hat için DB9 fişini unutmayın.) Diyotlar için 1N4148 gibi istediğinizi kullanabilirsiniz. Kişisel olarak ben, 500 Ohm'luk devrenin daha iyi olduğunu düşünmekteyim, çünkü o zaman R4 direncine ve 2000uF (veya or 2200uF) C1 için daha küçük 1000uF kapasitör kullanabilirsiniz.

Not: 120 Ohm'luk devre için kırmızı LED, 500 Ohm'luk devre için ise, yeşil LED kullanmanız gerekmektedir. Bu bir şaka değildir. Yeşil LED üzerine gelen gerilim ile kırmızı LED'in üzerine gelen gerilimden daha fazladır.
Devre düzeni, baskı devre için gerekli olan eagle ve postscript dosyalrı yazının sonundaki yazılım paketinden çekebilirsiniz. Linux için eagle CAD yazılımını cadsoftusa.com adresinden elde edebilirsiniz.

Devre nasıl çalışmaktadır?

Watchdog devresi NE555 zamanlayıcı çipi çevresinde oluşturulmuştur. Bu çip iki adet karşılaştırıcı, Flipflop ve 3 adet 5K Ohm'luk herbiri karşılaştırıcıya referams olacak şekilde dirençten oluşmaktadır. Ne zaman ki threshold (6) bacağındaki gerilim besleme gerilimin 2/3 ulaşırsa, o zamn Flipflop açık duruma getirilmektedir.
[ne555]
Şimdi devrenin şemasına bir bakınız: seri hattın RTS bacağı besleme gerelimi olarak kullanılmaktadır. RS232 seri hattı arayüzündeki gerilim +/- 10V dır. Dolayısıyla, C1 kapasitörü önüne bir diyota gereksiniminiz vardır. C1 kapasitörü çok çabuk şarj olmaktadır ve enerjisi röleyi açma anında gerekli enerjiyi sağlamaktadır. C2 kapasitörü ise, 4.7M direnç üzerinde çok yavaş olarak şarj olmaktadır. T1 transistörü C2 kapasitörü, RS232 DTR bacağı üzerinden gelen kısa pulse sonrasında deşarj etmektedir. Eğer, pulse lar gelmiyorsa (belkide bilgisayar tıkanmıştır) o zaman C2 transformatörü belli bir zaman sonrasında (yaklaşık 40 saniye) besleme geriliminin 2/3'ü kadar şarj olacaktır ve Flipflop'u açacaktır.

C1 kapasitörü, R2 direnci, LED ve röle öyle ayarlanmalıdır ki, C1'den gelen enerji rölenin sürekli açık olmasına yetmemektedir. Bize gerekli olan "reset tuşunun" birkaç saniye süreyle basılı tutacak kadar enerjinin C1 tarafından röleye sağlamasıdır.

LED, sunucu tekrar açılana kadar yanacaktır.

Şemadan görüldüğü üzere CD bacağına bağlı bir sistemi kapatma tuşu da vardır. Eğer, bu tuşu kısa süre (15 saniye) ile basalı tutarsanız, yazılım "shutdown -h now" komutunu çalıştıracaktır ve sunucuz kapatılacaktır. Bu normal kullanım için tasarlanmıştır ve watchdog ile ilgisi yoktur.

Sürücü yazılımı

Sürücü yazılımı, /etc/init.d/ açılış programları tarafından çalıştırılabilec küçük bir C programından oluşmaktadır. Sürekli olarak RS232'nin RTS bacağını açacaktır ve ondan sonra her 12 saniyede bir DTR'e pulse lar gönderecektir (Watchdogun zaman aşımı 40 saniyedir.). Eğer, bilgisayarı normal olarak kapatırsanız, program RTS kapatacak ve son bir kez DTR'a pulse verecektir. Bunu etkisi ise, zaman aşımına uğramadan C1 deşarj olmuş olacaktır. Dolayısıyla watchdog normal kullanımlarda devreye girmeyecektir. Yazılımı yüklemek için sayfasından linuxwd-0.3.tar.gz paketini açınız ve
make
ile derleyiniz. Oluşan linuxwd dosyasını /usr/sbin dizinine kopyalayınız. RedHat/Mandrake için olan linuxwd_rc dosyasında, herhangi başka Linux sistemi için olan linuxwd_rc_anydist dosyasında, donanımı bağlayacağınız seri (ttyS1=COM2 or ttyS0=COM1) hatta göre, değişiklik yapınız. Daha sonra açılış betik programını
/etc/rc3.d/S21linuxwd
ve
/etc/rc5.d/S21linuxwd
olarak kopyalayınız. İşte bu kadar.

Test

Herşeyi bitirdikten sonra, devreyi bilgisayara bağlamadan önce test etmeniz gerekmektdedir. Daha sonraları seri hattın RTS bacağına bağlanacak olarak ucu 9-10V doğru akım güçkaynağına bağlayınız ve 40-50 saniye bekleyiniz. Röle devreye girdiğinde bir klik sesi duyacaksınız ve LED yanacaktır. Röle sürekli olarak açık kalmamalıdır. LED ise, daha sonraları seri hattın DTR +10V bacağına başlanana kadar yanıyor olması gerekecktir.
Bu şekilde çalıştığından emin olduğunuzda, devreyi bilgisayara bağlayabilirsiniz. linuxwd programının test çalışma seviyesi vardır ki, belli bir süre birkaç çıktıdan sonra ve belli bir süre sonra DTR bacağına, bilgisayarın tıkanmasını taklit edecek şekilde pulse göndermeyi kesmektedir. Eğer, devrenizi COM2'ye (/dev/ttyS0) bağladıysanız, test için aşağıdaki komutu çalıştırınız:

linuxwd -t /dev/ttyS0

Donanımın kurulması

RS232 arayüzünün aşağıdaki gibi bacak yapısı vardır:
9 PIN D-SUB MALE

Bilgisayardaki ERKEK 9 PIN D-SUB.

9 bacaklı fiş 25 bacaklı fiş İsim Yön Açıklama
1 8 CD giriş Carrier Detect (Taşıcıyı algılaması)
2 3 RXD giriş Receive Data (Veriyi al)
3 2 TXD çıkış Transmit Data (Veriyi aktar)
4 20 DTR çıkış Data Terminal Ready (Veri terminali hazır)
5 7 GND -- System Ground (Sistem topraklaması)
6 6 DSR giriş Data Set Ready (Veri hazır)
7 4 RTS çıkış Request to Send (Gönderme istemi)
8 5 CTS giriş Clear to Send (Göndermeye açık)
9 22 RI giriş Ring Indicator(Zil algılayıcısı)

Devreyi RS232'ye bağlamak kolay olmalıdır. CPU reset (yeniden başlat) hatını bağlamak için bilgisayarınız reset tuşuna giden kablolara paralel olarak reset tuşunun kablolarını bağlamanız gerekmektedir. Röleden gelen kabloları da reset tuşuna paralel bağlayınız.

Sonuç

Tabii ki watchdog kullanımı sisteminizi %100 sağlam (güvenilir) yapmayacaktır, ancak kullanmakla güvenliğe bir seviye da güvenlik eklemiş olcaksınız. Donanımsal olarak bilgisayarınız yeniden başlatıldıktan sonra dosya sistemin denetlenmesi sorun yaratabilir. Bu durumda yeni journal dosya sistemlerini kullanabilirsiniz, ancak ben onları henüz denemedim. Burada gösterilen watchdog hem ucuz, hem ticari olanları kadar iyi ve hem de o kadar da karmaşık değildir.

Referanslar