Bu makalenin İngilizce , Fransızca, Türkçe çevirisi |
Yazar : Frédéric Raynal Yazar hakkında : Frédéric Raynal dövme resimler konusunda bilgisayarda bir tez hazırlıyor.Yüzyılın başında içinde Th.Roosevelt'inde bulunduğu(onun polis memuru olduğu zamanlar) sürükleyici dedektif romanları okuyor.Ortam çok karanlıktır. Olay,seri çocuk cinayetleri işleyen bir katili bulmak için biraraya gelmiş insanları anlatıyor. Bu grup olayı çözmek için psikoloji,parmakizi gibi yeni teknolojiler ile desteklenir. Caleb Carr'ın bu romanı L'ange des ténèbres, geçen yüzyılın başları hakkında şaşırtıcı bir tablo çizer. İçindekiler : |
Özet:
Bir Ağ Dosya Sistemi (NFS),bir ağ üzerindeki birden fazla bilgisayarda bulunan dosyaların, tek bir sabit diskte yeralıyormuşcasına yönetilmelerini sağlar.Dosyalara erişebilmek için onların fiziksel olarak nerede bulunduklarını bilmeyi gerektirmez.
NFS verilerin birçok bilgisayarda paylaşılmasını sağlar.Bu sayede bir kullanıcının sadece özel bir bilgisayardan ağa oturum açması gerekmez.NFS yoluyla herhangi bir makinadan kendi dizinine (home directory) erişebilir.
Ancak NFS çok yeterli bir protokol olmayıp , modem bağlantısı üzerinde çok yavaştırda. Yerel ağlar (local network) için tasarlanan NFS hayli esnektir ve hem kullanıcılar hemde sistem sorumluları(adminisrator) için bir çok olasılık sunmaktadır.
Bu sistem dikkatli bir kullanım gerektirir.Herkesin ağ üzerine veri girişine izin vermek doğru bir yönetim planı olmayabilir.Birkaç gerekli önlem riski azaltacaktır.
bu makale Dosya Sistemleri konusunda kısa bir bakış yaptıktan sonra NFS protokolüne değinmektedir.Ardından daha az kuramsal bir bölüme geçilip NFS sunucusu ve İstemcisinin kurulması,ve alınması gereken minimum güvenlik önlemleri anlatılacaktır.Daha sonra bir örnek üzerinde NFS,NIS ve "autofs" ın nasıl birleştirileceği resimle örneklendirilecektir.
.
Örneğin, veri tutan her fiziksel ortam (sabit disk gibi), bilgi saklayan/tutan küçük birimlerin sıralanmasından,yani 'bloklardan' oluşur.Her dosya sistemi bu blokları farklı biçimde yönetir.Şekil-1 de iki blok kullanan bir dosya girişi yapmaya çalışıyoruz.Üstte,dosya en son kullanılan bloktan sonrasına konuluyor ve başlangıçta boş alan bırakıyor.Alttaki başka bir dosya dizgesine ait resimde ise dosya ilk boş alana yerleştiriliyor.Böyle bir yöntem diskin ne kadar parçalanacağına etki eder.Bazı dosya sistemleri parçalanmayı otomotik olarak önlemekteyken, bazılarının kullanıcı tarafından birleştirilmeleri gerekebilir.
Şekil-1 : 'Blokları' yerleştirmenin iki farklı yolu
Linux'taki en bilinen dosya sistemi ext2fs (extended 2 file system) dir. Her dosya bir inode1tarafından gösterilir.Dizinler dosya listesini tutar ve aygıt erişimi , belirli dosyaların okunup-yazılması gibi işlemlerle yapılır.
NFS sunucusunun görevi kullanıcılara erişmek istedikleri 'inode' ları vermektir.Yine de,bir kullanıcı sadece dosyanın 'inode' yla çok iyi çalışamaz.Sunucu diğer makinaların 'inode' ları kullanmasına izin veren ek bir ağ katmanı(net layer) da vermektedir.
NFS nin çalışmasını sağlayan 4 yarıdımcı şunlardır:
Protokol |
|
|
nfs | Temel protokol olup dosya yaratma,arama,okuma,yazmaya izin verir.Güvenilirlik ve dosya istatiğinide yöneten protokoldür. |
|
mountd | İhraç edilen dosya dizgelerinin nfs ile erişimlerini sağlamak için kurulmalarından sorumludur. 'mount' ve 'umount' gibi istekleri alan sunucu ihraç edilen dosya dizgelerine ait bilgileri tutmak zorundadır. |
|
nsm
(Ağ Durum Ekranı) |
Bir makinanın durumunu(sunucu-istemci) belirlemek için ağ düğümlerini izleyip kontrol etmek amacıyla kullanılır.Örneğin 'reboot' eden bir makinayı bildirir. |
|
nlm
(Ağ kilit yöneticisi) |
Aynı anda farklı istemcilerin verileri değiştirmesini engellemek için bu protokol bir kilit dizgesi kullanır.Hangi dosyaların kullanıldığını bilir ve nsm protokolünün yardımıyla bir istemcinin ne zaman yeniden başladığını saptar.Nsm, her kullanıcının kilidini, geri vermeden önce serbest bırakır. |
|
En son çekirdek(kernel) sürümlerinde NFS ve nlm protokollerini doğrudan destekleyen knfsd aracısı mevcuttur.Fakat mount ve nsm henüz desteklenmemektedir.Bir NFS sunucusu kurulup çalıştırıldığında şu komutla herşeyin çalıştığını gerçekleyebiliriz:
>> ps auxwww | egrep "nfs|mount|lock|stat"Şu anda NFS nin NFSv2 ve NFSv3 olarak iki sürümünü bulmak mümkündür.Linux'un NFS sunucuları sadece 2.sürümü desteklemektedir(önceki örnekte mountd satırındaki seçenekten itibaren)
root 1370 0.0 0.2 1176 580 ? S 22:28 0:00 rpc.mountd --no-nfs-version 3
root 1379 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1380 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1381 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1382 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1383 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1384 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1385 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1386 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1399 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [lockd]
root 1409 0.0 0.2 1156 560 ? S 22:28 0:00 rpc.statd
root 1652 0.0 0.1 1228 484 pts/3 S 22:49 0:00 egrep nfs|mount|lock|stat
NFS, 'file handle' denilen bir veri yapısıyla ilgilidir.Oldukça özel 'bit' serilerinden oluşur.Bu seriler her dosya sistemi nesnesini tek bir yöntemle tanımayı sağlar.Örneğin bir dosya 'inode' nun yanısıra dosyanın nerede tutulduğunu aygıta bildiren bir girdide içerir.
root >>/usr/sbin/rpcinfo -p'rpcinfo' komutu RPC servislerinin (-p) ile özetlenen makinalarda çalıştığını gösterir.'portmap' henüz çalışmamaktadır.(Çoğu Linux dağıtımları sistem açılışında bunu gerçekleştirmek için bir script sunarlar.) rpcinfo komutuna karşı verilen olumsuz yanıtın sık karşılaşılan bir başka nedeni de 'portmapper' in /etc/hosts{allow,deny} dosyalarında yer alan güvenlik kısıtlamaları nedeniyle yanıt veremez oluşudur.Bu durumda hosts.allow dosyasına "portmap:hosts" girdisi ekleyiniz.
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
root >>/sbin/portmap
root >>/usr/sbin/rpcinfo -p
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
NFS başlatılmadan önce konfigürasyon ayarları yapılmalıdır.Sadece bir kongifürasyon dosyası vardır. ve /etc/exports olarak anılır.Her satır ihraç yerini ve erişime sahip istemcilerin listesini işaret etmektedir.Her istemci adının sonuna parametre eklemek mümkündür.'man exports' sayfası istemci adları ve parametreler için söz dizimini açıklamaktadır.
İstemci adları için izin verilen biçimler şöyle sıralanabilir:
/etc/exports konfigürasyon dosyasının içeriğini değiştirdiğmizde , etkilenmiş olan aracıları değişiklikler hakkında uyarmalıyız. 'exportfs' komutu bu bilgiyi sunucularımıza iletir. -r seçeneği /etc/mtab 2 dosyası ile /etc/exports dosyalarını eşler. -v seçeneği ise ihraç edilen dosyaların dizgelerini seçenekleriyle birlikte gösterir.
Sistem açılışından sonra önemli bilgileri içeren dosyaları sıralayacak olursak:
mount komutu farklı ndosya dizgelerine erişmeye izin verir.Yeni bir dosya dizgesinin uygun olduğunu kernele bildirir. -t parametresi kullanılan dosya dizgesinin tipini belirlemek için kullanılabilir.NFS için -t nfs yazarız.
mount komutunun nfs için kendi özel parametreleri vardır.Mesela , rsize ve wsize parametreleri okuma ve yazma için blok kapasitesini değiştirmek için kullanılabilir.intr,noexec veya nosuid gibi genel parametrelerle NFS nin özel parametrelerini birleştirebilirsin.
charly adlı bir makinanın NFS sunucusuna sahip olduğunu ve onu /usr/local klasöründe tuttuğunu varsayalım./usr/local jill adlı makinadan ona erişmek istendiği zaman , charly den jill e ihraç edilen klasörü kurmak zorundasın:
root@jill >> mount -t nfs -o nosuid,hard,intr charly:/usr/local /usr/localKomut, nosuid,hard ve intr parametreleri ile bir NFS dosya dizgesi kuruyor olduğumuzu gösterir.Son iki parametre en ilginç olanlarıdır.Birincisi kurulacak parçayı belirtir.NFS için klasör ve parçaları belirttiğin yerdeki normal mount komutundan farklı bir yazım biçimine(syntax) sahiptir. Burada sunucu yu belirtiriz:ihraç edilmiş klasör(parçanın yerine).Son parametre istemcide dosya dizgesinin yerini belirtir. Sadece charly nin /usr/local ini jill ile paylaşırız ve bir kereden fazla /usr/local de programları kurmaktan sakınabiliriz.Bu ayarı sürekli hale getirmek için jiil deki etc/fstab dosyasında onu belirtebiliriz.fstab dosyası açılışta çalışan bütün programları içerir. /etc/fstab için kullanım şekli(syntax):
# device mount point file system options dump fsckorder
charly:/usr/local /usr/local nfs nosuid,hard,intr 0 0
NFS sunucu tarafında, istemcinin root hesabına güvenmediğimizi ayrıca belirtebiliriz.Bunu root_squash parametresi ile /etc/export da belirtmeliyiz.Sonra , eğer istemcide root hakkı olan UID 0 lı (root) bir kullanıcı sunucu tarafından ihraç edilen dosya sistemine erişirse , dosyaları sorgulamak için nobody yerine konur.Bu parametre Linux altında default olarak aktiftir.Fakat no_root_squash parametresi ile iptal edilebilir. Ayrıca hatırlanması gereken bir nokta anonuid ve anongid parametreleri kullanıcının UID/GID statüsünü nobody den farklı bir taneye çevirmeye izin verirler.
Bazı durumlar daha geneldir ve portmapper i etkiler. mesela /etc/hosts.denydosyasında aşağıdaki satırla bütün makinalara erişimi kapatırız:
# hosts.deny : absolute prohibition for every one to
# use the portmap
portmap: ALL
Daha sonra /etc/hosts.allow
dosyasında bu katı sınırlama varsayılan bazı makinalara izin verilerek gevşetilebilir.
Firewall daha iyi bir koruma sağlar.Farklı servisler tarafından kullanılan portları izler ,kullanılan protokoller:
RPC Servisi | Port | Protokoller |
portmap | 111 | upd / tcp |
nfsd | 2049 | udp |
mountd | variable | udp / tcp |
İlk olarak Sunucumuz olan charly nin konfigürasyonuna bakalım.Gerekli bütün bilgileri tutan bazı NIS haritaları tanımlamakla işe başlayalım.
/etc/netgroup dosyası yaygın karakteristiklere sahip makina gruplarını tutar.(mesela aynı mimari).Bir NIS haritası NFS için cok faydalıdır.Aynı ihraç dosya sistemlerine erişebilen bütün makinaları toplamak zorundayız.Bu grup daha sonra bire bir bütün istemcileri belirtmek yerine /etc/exports dosyasında tutularak kullanılır:
# /etc/netgroupNFS uyarıldığında, konfigürasyonun hayli kısıtlayıcı olduğunu biliyoruz. charly den /etc/exports dosyasının tuttuğu bilgi :
charlysangels (sabrina,,) (jill,,) (kelly)
# /etc/exportsihraç edilmiş /usr/local klasörüne erişmek için automount kullanmaya karar veriyoruz.Sistem açılışında bu sistemi mount etmenin yerine, bu klasördeki bir dosyaya bir kullanıcı erişmek istediği zaman bu işlem otomatik olarak yapılır. NIS ve automount tarafından nelerin erişilebilir olacağını tanımlamak için /etc/auto.map dosyasını yaratıyoruz:
/usr/local @charlysangels(ro)
# /etc/auto.mapBütün bu bilgilerin (auto.map ve netgroup dosyaları) bir NIS veritabanına toplanmasını istiyorsak, makefile dosyasını tekrar yaratmadan önce onu güncellemeliyiz. netgroup un tabana ekleneceğinden emin olmalıyız.
charly charly:/usr/local
#Yellow Pages Makefile a eklenecek
AUTO_MAP = $(YPSRCDIR)/auto.map
# ...
#...
auto.map: $(AUTO_MAP) $(YPDIR)/Makefile
@echo "Updating $@..."Bu kural sadece yorumları kaldırır,veritabanına yeni bir giriş ekler ve sonra tüm sunuculara bilgiyi gönderir./var/yp klasöründen make'i çalıştırmalıyız.
-@sed -e "/^#/d" -e s/#.*$$// $(AUTO_MAP) | $(DBLOAD) \
-i $(AUTO_MAP) -o $(YPMAPDIR)/$@ - $@
-@$(NOPUSH) || $(YPPUSH) -d $(DOMAIN) $@
Şimdi üç istemcimiz, sabrina, jill ve kelly.YP ler tarafından verilen yeni bir haritayı yönetmek için "autofs" ye söylemeliyiz.Her istemcinin /etc/auto.master dosyası aşağıdaki satırları doğrular.
#/etc/auto.masterBundan sonra "autofs" yi etkin kılmak için tekrar başlatmalıyız.
/usr/local yp auto.map --intr,nosuid,nodev
Şİmdi charly makinasında tek bir(eşsiz) /usr/local fiziksel klasörüne sahibiz.Sonra "charly" üzerine spesifik programlar kurulduğu zaman bütün makinalar onları kullanabilir.
Bu örnek sadece bir /usr sistemi, /usr/doc veya diğerlerinin kurulumu ile daha da geliştirilebilir.Fakat pratikte, iyi bir fikir değildir.Kurulum sık sık , /etc klasörü
veya diğerlerindeki dosyaları düzenlemeyi gerektirir..Paylaşılmamış dosyaları bütün makinalarda düzenlemeliyiz.
NFS
|
Web sayfaları Linuxfocus editör grubu tarafından düzenlenir.
© Frédéric Raynal LinuxFocus.org 2000 Linuxfocus dergisine yorum ve hata bildirimi için tıklayınız. |
Çeviriler:
|
2000-10-28, generated by lfparser version 1.8