tarafından Guido Socher (homepage)
Yazar hakkında:
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.
Türkçe'ye çeviri:
Erdal MUTLU <erdal(at)linuxfocus.org>
İçerik:
|
Donanımsal watchdog ve bilgisayarı kapatma tuşu
Özet:
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:
- Sunucuyu kapatmaya yarayan bir tuş
- Sunucuyu denetleyecek bir watchdog
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.
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:
500 Ohm rölesi:
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.
Ş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:
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
Bu yazı için görüş bildiriminde bulunabilirsiniz
Her yazı kendi görüş bildirim sayfasına sahiptir. Bu sayfaya yorumlarınızı yazabilir ve diğer okuyucuların yorumlarına bakabilirsiniz.
2002-08-02, generated by lfparser version 2.27