Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
Bu makalenin farklı dillerde bulunduğu adresler: English  Castellano  Deutsch  Francais  Nederlands  Turkce  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
tarafından Atif Ghaffar

Yazar hakkında:

Atif bukalemun gibidir. Rollerini değiştirir; sistem yöneticisinden programcıya, öğretmene, proje yöneticisine bir işi yapmak için gereken her şeye.
Atif Linux, açık-kaynak birliği ve projeler hakkında pek çok bilgiye sahip olduğunu düşünüyor.
O'nun hakkında daha fazla bilgi içinkendi sayfasına bakabilirsiniz.


İçerik:

Linux altında gerçek zamanlı veri kopyalama

Çeviri : Buket Benek

[Illustration]

Özet:

Bu makalede, pahalı SAN'lari veya diğer Ağ Blok aygıtlarını kullanmadan Linux altında gerçek zamanda bilgi kopyalanmasını inceleyeceğiz.
Kopyalama sistemimiz için FAM ve IMON kullanacağız.
FAM (Dosya Değişim Ekranı) ve IMON (Inode Ekranı), orijinal olarak IRIX için SGI tarafından gelştirildi.

SGI'da onun Linux'a taşınması ve açık kaynak olmasına pek sıcak bakılmıyordu.

Fiyatı bir faktör olmadığı sürece,GFS (Evrensel Dosya Sistemi) ve SAN tabanlı çözüme gideceğim, fakat fiyatı bir faktör olduğu zaman ve bilgi paylaşımı gerekli olduğu zaman çok seçeneğe sahip olmayacağım..
Şu anda az seçeneğim var. Bu makalede onları tartışacağız ve avantajları ve dezavantajlarını göreceğiz.



 

Paylaşım yerine neden kopyalama ?

Dosya sunucularının var olan bilgiyi istemciler için yapması tahmin edilme di mi?
Evet edildi.

Eğer NFS veya SMB vs. üzerinden dosyaları paylaşan dosya sunucuları kullanırsak, şişe boyun'a ve tek başarısızlık noktasına sahip olacağız.

Payalaşılmış bilgi yığınları(SAN veya çokanallı SCSI) ile GFS üzerinden bilgiyi paylaşırsak, tek başarısızlık noktası gibi bir bilgi yığın kutumuz olacak ve bu yapılandırma ile sistemin kurulumu oldukça pahalı olacaktır.

Ağ aynası kurmak için NBD(Ağ Blok Aygıtları) kullanabiliriz ancak ben bu konuda çok rahat değilim. NBD'lerin bazı kısıtlamaları vardır, kurmak ve yönetmek zordur ve eğer gereksinimiz olan bir görselyöre sunucusu üzerinden birkaç görselyöre sunucusu bilgisi kopyalamaksa oldukça sıkıcı olabilir.

 

Basitliği Koruyoruz

Şimdi kopyalamayı deneyelim.
Bir senaryo:
İki görselyöre sunucunuz var, birtanesi ana sunucu ve diğeri onun desteği.
Tüm değişiklikleri ilk makinede yaparsınız ve değişiklikleri ikinci makineye rsync ile geçirirsiniz.
Basit?
Fakat onu nasıl otomatikleştirmeli? Kullanıcılarınız çoğu zaman FTP'den ana makineye bağlanacaktır. Eğer ana sunucuda hata var ise ve diğer sunucu rolü üstlenirse ne olacak?
Basit. Bunun için cevabım var. Yaptıkları değişiklikleri görmeyecekler ve şaşıracaklar. :)
Şimdi, her 5 saniyede CRON'dan "rsync -av --delete kaynak hedef" 'yı çalıştırabilirsin fakat makinen daha sonra başka birşey için kullanılamaz. Oldu mu?


Bir diğer senaryo:
Verileri güncel olarak yüklemek için bir FTP sunucunuz ve
altı tane de websunucunuz var.
Şanslıysanız eğer çoğu zaman NFS ile başedebilirsiniz fakat bu uzun sürmez.

Şimdi ne yapılmalı?
Bence dosyalarda değişiklik olduğu zaman bilgiyi kopyala, eğer hiç değişiklik yoksa bir şey yapma.

Bu tam olarak "fam"'ın yaptığı iştir.  

Zora Geçiş

O halde dosyalar üzerinde değişiklik olup olmadığını nasıl anlayacağız?
Buradaki tek cevap benim M$ Windowns developer'dan bekleyebileceğimdir.
Her saniye gözlemlediğimiz dizini araştırabilir ve onun zaman süresi ile karşılaştırabiliriz ve hafızada bulunan versiyonu ile ölçebiliriz.
Evet doğru.

Araştırma:Dosyaların zaman süresi/ölçülerini araştırmak ve eski sürümleri ile karşılaştırmak pahalıya mal olur.
Görselyöre sunucunuzda alanınızda her 5 saniyede "ls -lR /birdizin"'nin çalıştığını düşünün. :)

Dosya işlemlerinde ne zaman değiştirildiğinin haber alınması iyi bir durumdur, böylece biz de onun üzerinde işlem yapabiliriz.
Bu tam olarak "IMON"'un yaptığı iştir.

 

FAM nedir?

Kaynak: http://oss.sgi.com/projects/fam/faq.html
fam (Dosya Değişim Monitörü), belirli dosya veya dizinler değiştiği zaman dikkat edilmesi için uygulama programlarının kullanabileceği API'yi sağlar.
FAM iki kısımdan oluşur: fam, talepleri dinleyen ve uyarıları alan daemon ve libfam, istemci uygulamalarının FAM ile iletişime geçmek için kullandığı bir kütüphane.
Eğer gözlenen dosyalar başka bir makinadan alınmamışsa , yerel fam o uzaktaki makina ile iletişime geçmeye çalışacak ve talepleri o fam üzerinden geçirecektir.
Fam ayrıca istemcileri bir dosyanın çalışmaya başladığı ve çalışmasının bittiği zamanlarda bilgilendirir. (Örneğin; IRIX Etkileşimli Masaüstü, bunu programın çalıştığı esnada görüntüsel göstergesi olan ikonunu değiştirerek kullanır.)
Fam orijinal olarak 1989'da IRIX için Bruce Karsh tarafından ve 1995'te Bob Miller tarafından tekrar yazıldı. Fam açık kaynak serbestliğinden dolayı Linux ve IRIX'te çalışır ve IRIX 6.5.8'e dahil olan da aynı fam'dır.  

IMON nedir?

Kaynak: http://oss.sgi.com/projects/fam/faq.html
İmon (Inode Monitörü) fam'a dosyaların ne zaman değiştirildiğini söyleyen bir çekirdek parçasıdır. Fam, uygulama programlarının dosyalarla veya dizinlerle ilgilendiğini öğrendiği zaman, bunu imon'a bildirir. İmon tarafından görüntülenen dosyalar üzerinde işlemler düzenlenince, çekirdek bunu fam'a bildirir ve fam da dosyalarla alakalı olan uygulamalarla ilgilenir.
İmon orijinal olarak 1989'da IRIX çekirdeği için Wiltse Carpenter tarafından yazıldı. Linux'a bağlantı sağlayan kapı Roger Chickering tarafından yapıldı. İmon'un çekirdeğindeki yamadaki Linux uygulaması pek çok açıdan IRIX uygulamasına benzer. Fakat, çekirdek dosya sistem kodu içinde farklıdır.

 

FAM ve IMON Yüklemesi

FAM ve IMON SGI görselyöresinde bulunmaktadır. Aşağıdaki kaynakları inceleyiniz.
IMON çekirdeğe uygulayacağınız bir yamadır. Bu, inodeleri görmenizi sağlayacaktır.
Çekirdek yaması için kaynak dizinine girin ve yamayı uygulayın.
cd /usr/src/linux
patch -pi < patchfile

Daha sonra make config'i çalıştırınız ve sorulduğu zaman şeçim yapınız.
Inode Monitor (imon)'ın desteklediği (DENEYSEL)
dosya sistemi bölümünde
herzamanki gibi çekirdeği derleyiniz ve bilgisayarı yeniden başlatınız(üzgünüm).
FAM'ın kendisini derlemek oldukça kolaydır:
fam kaynakları dizinine giriniz ve
./configure && make all komutunu çalıştırınız.
Kurulmuştur.

Daha sonra SGI::FAM diye adlandırılan Perl modülünü kuracağız bu yüzden durum bildiricisini perl'de yazabiliriz.

 

SGI::FAM Perl modülünün kurulumu

Gerçekten de size C/C++'ı kodlamanızı söyleyeceğimi düşünmediniz. Değil mi?
Aslında sizi bilmem ama ben biraz tembel ve sabırsızım bu yüzden kopyaları Perl'de yazacağım.

Jesse N. Glick tarafından SGI::FAM'ı indirip kurunuz.
Bu modülleri kurmak için CPAN modülünü basitçe çalıştırınız.
perl -MCPAN -e shell
SGI::FAM'ı kurunuz.
böylece SGI::FAM ve daha önce gerekli olan modüller yerleşecek.  

fam_mirror ile kopyalama

fam_mirror kopyasını aktif etmek icin yazdığım bir notlar bütünüdür.
incelemek için veya indirmek için tıklayınız.
Düzeltebilir ve
kendi makinenizle karşılaştırmak için $replicaHosts ile değiştirebilir,
istediğiniz komutla çalıştırmak için $rsh veya $rsync ile değiştirebilirsiniz.


senaryo 1
'e dönüldüğü zaman görselyöre sunucusu olarak çalışan 2 makine vardır (web1,web2). Bunlardan biri(web1) ana sunucu olarak, diğeri(web2) ikinci sunucu olarak çalışır.
İlki FTP server (web1)'dir,
web2, tüm FTP servisini çalıştırmaz. (diğer yandan kullanıcılar, sistem destek modunda olsa bile dosyalara yazabilirler.)

Her iki makinada de görselyöre doküman kök dizini /var/www
her iki makinada da ssh veya rsh kurar. web2 şifre olmadan web1'e uzaktaki komutları çalıştırmaya izin vermelidir. Ben genelde kendi ssh_key'imi kopyalanmış makinelerin authorized_key'lerine ekliyorum.
rsync tüm bilgi web1'den web2'ye
rsync -avz /var/www/ web2:/var/www/
fam_mirror'da düzeltme yap ve @replicaHosts'u
@replicaHosts=qw(web2)'a değiştir.
web1'de fam_mirror'ı çalıştır.
fam_mirror /var/www &
ve daha sonra web1 üzerindeki dosyalarda değişiklik yap. Tüm değişiklikler web2'ye de yazılacaktır.

Şimdi de senaryo 2 (webserverların tümü)
"linuxweb1", "linuxweb2", "linuxweb3" ve "linuxweb4" makineleri websunucu gibi çalışır.
"linuxftp1" makinesi ftp sunucu gibi çalışır (ana dosyasunucusu)
web makineleri FTP'yi kullanıcıların kullanmasına izin vermez.
Fam, imon, SGI::FAM ve fam_mirror'ları "linuxftp1" host'u üzerinde kur.
rsh veya ssh'ı makineler arasında kur.
linuxweb[1-4] makineleri şifre gerektirmeden başka makinedeki komutlarının çalıştırılmasını linuxftp1'de izin vermelidir.
fam_mirror'ı değiştir ve @replicaHosts'ları
@replicaHosts=qw(linuxweb1 linuxweb2 linuxweb3 linuxweb4)'e kur;
eğer gerekliyse $rsh ve $rsync değiştir. Tüm makinelerde /var/www'nin doküman kök dizini olduğu farzedilir.
linuxftp1'de çalıştır.
INIT_MIRROR=1 fam_mirror /var/www &

Şimdi linuxftp1'de tüm değişiklikler linuxweb[1-4] üzerinde görülmelidir.

 

Kaynaklar

 

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.
 talkback page 

Görselyöre sayfalarının bakımı, LinuxFocus Editörleri tarafından yapılmaktadır
© Atif Ghaffar, FDL
LinuxFocus.org

Burayı klikleyerek hataları rapor edebilir ya da yorumlarınızı LinuxFocus'a gönderebilirsiniz
Çeviri bilgisi:
en -> -- Atif Ghaffar
en -> tr Buket Benek

2001-03-17, generated by lfparser version 2.9