Bu makalenin farklı dillerde bulunduğu adresler: English Castellano Deutsch Francais Nederlands Turkce |
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. İçerik: |
Ö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.
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.
Ş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.
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.
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.
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 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.
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 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.
|
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:
|
2001-03-17, generated by lfparser version 2.9