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]](../../common/images/Guido-S.gif) 
 
    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:
    
      - 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.ArticleIllustration:[This is the title picture for your
    article]
    ![[Illustration]](../../common/images/article239/final_circuit_th.gif) 
 
    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]](../../common/images/article239/linuxpcwd120_schematic_th.gif) 
 
     500 Ohm rölesi:
     ![[500 Ohm relay]](../../common/images/article239/linuxpcwd500_schematic_th.gif) 
 
     
     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]](../../common/images/article239/ne555_schematic.gif) 
 
    Ş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