• NFS dosya sistemi. Ağ Dosya Hizmeti

    UNIX sistemlerinde bir dosya sisteminin mantıksal olarak tek bir noktaya bağlı fiziksel dosya sistemlerinin bir koleksiyonu olduğunu herkes bilir. Bence böyle bir organizasyonun en temel güzelliklerinden biri, mevcut bir dosya sisteminin yapısını dinamik olarak değiştirebilme yeteneğidir. Ayrıca, geliştiricilerin çabaları sayesinde, bugün hemen hemen her türden bir dosya sistemini herhangi bir uygun şekilde bağlama fırsatına sahibiz. "Yöntem"den bahsetmişken, öncelikle işletim sistemi çekirdeğinin ağ bağlantıları aracılığıyla dosya sistemleriyle çalışabilme yeteneğini vurgulamak istiyorum.

    FTP, SMB, Telnet veya SSH gibi birçok ağ protokolü bize uzak dosyalarla çalışma olanağı sağlar. Çekirdeğin yeteneği sayesinde, sonuçta, bağlı olan dosya sisteminin türüne bağlı olmamak için, mount programını kullanarak her şeyi ve herhangi bir şekilde bağlama yeteneğine sahibiz.

    Bugün NFS hakkında konuşmak istiyorum - ağ dosyası Sistem. Bu teknoloji, bireysel FS noktalarını uzak bilgisayar yerel bilgisayarın dosya sistemine. NFS protokolünün kendisi, dosya işlemlerini hızlı, güvenli ve güvenilir bir şekilde gerçekleştirmenize olanak tanır. Başka neye ihtiyacımız var? :-)

    Bunun çalışması için ne gerekiyor

    NFS sürümleri ve çeşitli çekirdeklerdeki destekleri konusunda uzun süre rant yapmamak için, hemen çekirdek sürümünüzün en az 2.2.18 olduğunu varsayacağız. Resmi belgelerde geliştiriciler, bu çekirdekte ve sonrasında NFS sürüm 3 işlevselliği için tam destek sözü veriyor.

    Kurulum

    Ubuntu 7.10 - Gutsy Gibbon'da bir NFS sunucusu çalıştırmak için nfs-common ve nfs-kernel-server paketlerini kurmam gerekiyordu. Yalnızca NFS istemcisine ihtiyaç duyulursa, nfs-kernel-server'ın yüklenmesi gerekmez.

    Sunucu Ayarı

    Tüm paketler başarıyla yüklendikten sonra, NFS arka plan programının çalışıp çalışmadığını kontrol etmeniz gerekir:

    /etc/init.d/nfs-kernel-server durumu

    Daemon çalışmıyorsa, komutla başlatılmalıdır.

    /etc/init.d/nfs-kernel-server başlangıcı

    Her şey başarıyla başladıktan sonra, dosya sistemini dışa aktarmaya başlayabilirsiniz. Sürecin kendisi çok basittir ve minimum zaman alır.

    Ana NFS sunucusu yapılandırma dosyası /etc/exports konumunda bulunur ve aşağıdaki biçime sahiptir:

    Dizin makine1(seçenek11,seçenek12) makine2(seçenek21,seçenek22)

    dizinkesin yol erişim vermek istediğiniz FS sunucu dizinine

    makineX— Erişime izin verilen istemci bilgisayarın DNS adı veya IP adresi

    seçenekXX- En sık kullanılan FS dışa aktarma parametreleri:

    • ro- dosyalara erişime yalnızca okuma için izin verilir
    • rw- okuma / yazma için erişim verilir
    • no_root_squash- varsayılan olarak, bir NFS kaynağına kök olarak bağlanırsanız, sunucu, güvenlik nedeniyle, hiçkimse kullanıcısı adına kendi tarafındaki dosyalara erişecektir. Ancak, bu seçeneği etkinleştirirseniz, sunucu tarafındaki dosyalara kök olarak erişilir. Bu seçeneğe dikkat edin.
    • no_subtree_check- varsayılan olarak, sunucudaki tüm bölümü değil, dosya sisteminin yalnızca bir bölümünü dışa aktarırsanız, arka plan programı istenen dosyanın fiziksel olarak aynı bölümde bulunup bulunmadığını kontrol eder. Tüm bölümü dışa aktarıyorsanız veya dışa aktarılan FS'nin bağlama noktası diğer fiziksel birimlerdeki dosyaları etkilemiyorsa, bu seçeneği etkinleştirebilirsiniz. Bu size sunucu hızında bir artış sağlayacaktır.
    • senkronizasyon— sunucuda ani bir bağlantı kesilmesi veya güç kesintisi olasılığı varsa bu seçeneği etkinleştirin. Bu seçenek etkinleştirilmemişse, NFS sunucusu aniden durduğunda veri kaybı riski büyük ölçüde artar.

    Öyleyse, ashep-dizüstü bilgisayardaki /var/backups dizinine ashep-masaüstü bilgisayarına erişim vermek istediğimizi varsayalım. Kopyalamak için dizin erişimi gereklidir yedekler ashep-desktop'tan dosyalar. Dosyam şöyle:

    /var/backups ashep-desktop(rw,no_subtree_check,sync)

    /etc/exports dosyasına bir satır ekledikten sonra, değişikliklerin etkili olması için NFS sunucusunu yeniden başlatmanız gerekir.

    /etc/init.d/nfs-kernel-server yeniden başlatma

    Bu kadar. Dışa aktarılan FS'yi istemci bilgisayarda bağlamaya başlayabilirsiniz.

    İstemci kurulumu

    İstemci tarafında, uzak bir dosya sistemi diğerleriyle aynı şekilde - mount komutuyla bağlanır. Ayrıca, işletim sistemi önyüklendiğinde dosya sistemini otomatik olarak bağlamanız gerekirse, hiç kimse /etc/fstab kullanmanızı yasaklamaz. Böylece, mount seçeneği şöyle görünecektir:

    Mount -t nfs ashep-laptop:/var/backups/ /mnt/ashep-laptop/backups/

    Her şey yolunda gittiyse ve önyükleme sırasında uzak bir dosya sistemine otomatik olarak bağlanmanız gerekiyorsa, /etc/fstab dosyasına bir satır eklemeniz yeterlidir:

    Ashep-laptop:/var/backups /mnt/ashep-laptop/backups nfs otomatik 0 0

    Başka ne

    Böylece, NFS'nin olanaklarına dair pratik, küçük bir genel bakış elde ettik. Elbette bu, NFS'nin yapabileceklerinin sadece küçük bir kısmı. Bu, evde veya küçük bir ofiste kullanım için yeterlidir. Bu sizin için yeterli değilse, önce okumanızı tavsiye ederim.

    Ağ Dosya Sunucusu (NFS) protokolü, bir kullanıcıya dosya sistemlerine uzaktan erişim sağlamak için açık bir standarttır. Buna dayalı olarak, merkezi dosya sistemleri aşağıdakiler gibi günlük görevleri kolaylaştırır: destek olmak veya virüs taraması ve birleştirilmiş disk bölümlerinin bakımı, birçok küçük, dağıtılmış olandan daha kolaydır.

    Merkezi depolama sağlamanın yanı sıra, NFS'nin disksiz ve ince istemciler, ağ kümeleme ve işbirlikçi ara katman yazılımı dahil olmak üzere diğer uygulamalar için çok yararlı olduğu kanıtlanmıştır.

    Hem protokolün kendisinin hem de uygulanmasının ayrıntılarının daha iyi anlaşılması, pratik problemlerle başa çıkmayı kolaylaştıracaktır. Bu makale NFS'ye ayrılmıştır ve iki mantıksal bölümden oluşur: ilk olarak protokolün kendisi ve geliştirilmesi sırasında belirlenen hedefler ve ardından NFS'nin Solaris ve UNIX'te uygulanması açıklanmaktadır.

    HER ŞEYİN BAŞLADIĞI YER...

    NFS protokolü, Sun Microsystems tarafından geliştirildi ve 1989'da RFC 1094 altında İnternet'te göründü. sonraki başlık: Ağ Dosya Sistemi Protokol Spesifikasyonu (NFS). Novell'in o zamanki stratejisinin dosya hizmetlerini daha da geliştirmek olduğunu belirtmek ilginçtir. Yakın zamana kadar, açık kaynak hareketi henüz ivme kazanmamışken, Sun onun sırlarını açığa çıkarmaya çalışmadı. ağ çözümleri Ancak şirket o zaman bile diğer sistemlerle birlikte çalışabilirliği sağlamanın önemini anladı.

    RFC 1094, iki orijinal özellik içeriyordu. Yayınlandığı sırada Sun, RFC 1813 "NFS Protokol Belirtimi, Sürüm 3" (NFS Sürüm 3 Protokol Belirtimi)'nde belirtilen belirtimin bir sonraki, üçüncü sürümünü geliştiriyordu. Versiyon 4 bu protokol RFC 3010 NFS Protokol Spesifikasyonu Sürüm 4'te (NFS Sürüm 4 Protokolü) tanımlanmıştır.

    NFS, tüm UNIX ana bilgisayar türlerinde, Microsoft ve Novell ağlarında ve AS400 ve OS/390 gibi IBM çözümlerinde yaygın olarak kullanılır. Ağ alanı dışında bilinmeyen NFS, tartışmasız en yaygın kullanılan platformdan bağımsız ağ dosya sistemidir.

    UNIX JENERATÖR OLDU

    NFS, platformdan bağımsız bir sistem olmasına rağmen, UNIX onun atasıdır. Başka bir deyişle, dosya sisteminin yapısı, kullanıcıların ve grupların tanımlanma yolları ve dosyaların nasıl işlendiği dahil olmak üzere dosyalara erişmenin hiyerarşik mimarisi ve yöntemlerinin tümü UNIX dosya sistemine çok benzer. Örneğin, yapı olarak UNIX dosya sistemiyle aynı olan NFS dosya sistemi doğrudan üzerine bağlanır. Diğer işletim sistemlerinde NFS ile çalışırken, kullanıcı kimlikleri ve dosya izinleri eşlenir.

    NFS

    NFS sistemi, bir istemci-sunucu mimarisinde kullanılmak üzere tasarlanmıştır. İstemci, NFS sunucusu tarafından dışa aktarılan dosya sistemine, istemcideki bir bağlama noktası aracılığıyla erişir. Bu tür erişim genellikle istemci uygulaması için şeffaftır.

    Birçok istemci/sunucu sisteminin aksine, NFS bilgi alışverişi için Uzaktan Yordam Çağrıları (RPC) kullanır. Tipik olarak, istemci bilinen bir bağlantı noktasına bir bağlantı kurar ve ardından protokole uygun olarak belirli bir eylemi gerçekleştirmek için bir istek gönderir. Uzak yordam çağrısı durumunda, istemci bir yordam çağrısı oluşturur ve ardından yürütme için sunucuya gönderir. Detaylı Açıklama NFS aşağıda sunulacaktır.

    Örnek olarak, bir istemcinin usr2 dizinini yerel kök dosya sistemine bağladığını varsayalım:

    /root/usr2/ -> uzak:/root/usr/

    İstemci uygulaması bu dizinin kaynaklarına ihtiyaç duyarsa, işletim sistemine kendisi ve NFS istemcisi aracılığıyla erişim sağlayan dosya adı için bir istek gönderir. Örneğin, hakkında "hiçbir şey bilmeyen" basit UNIX cd komutunu ele alalım. ağ protokolleri. Takım

    Cd /kök/usr2/

    çalışma dizinini, dosya sisteminin uzak olduğunu "bilmeden" (kullanıcının da bilmesine gerek yoktur) uzak dosya sistemine yerleştirecektir.

    İsteği aldıktan sonra, NFS sunucusu, verilen kullanıcının istenen eylemi gerçekleştirme hakkına sahip olup olmadığını kontrol edecek ve yanıt olumluysa gerçekleştirecektir.

    DAHA İYİ TANIYALIM

    İstemcinin bakış açısından, uzak bir dosya sistemini NFS kullanarak yerel olarak bağlama işlemi birkaç adımdan oluşur. Daha önce belirtildiği gibi, NFS istemcisi sunucuda yürütmek için bir uzaktan prosedür çağrısı gönderecektir. UNIX'te istemcinin tek bir program olduğunu (bağlama komutu), sunucunun ise aslında aşağıdakilerle birden çok program olarak uygulandığını unutmayın. asgari set: bağlantı noktası eşleme hizmeti (bağlantı noktası eşleştiricisi), bağlantı arka plan programı (bağ arka plan programı) ve NFS sunucusu.

    İstemcinin mount komutu önce, sunucunun 111 numaralı bağlantı noktasındaki istekleri dinleyen bağlantı noktası çeviri hizmetiyle iletişim kurar. İstemcinin mount komutunun çoğu uygulaması birden çok NFS sürümünü destekler, bu da istemci ve sunucunun ortak bir protokol sürümü bulma olasılığını artırır. Arama en eski sürümden başlayarak gerçekleştirilir, böylece ortak bir sürüm bulunduğunda otomatik olarak istemci ve sunucu tarafından desteklenen en yeni sürüm olur.

    (Bu materyal, şu anda en yaygın olduğu için NFS'nin üçüncü sürümüne odaklanmıştır. Dördüncü sürüm, çoğu uygulama tarafından henüz desteklenmemektedir.)

    Sunucu bağlantı noktası çeviri hizmeti, isteklere desteklenen protokole ve mount daemon'un çalıştığı bağlantı noktasına göre yanıt verir. İstemcinin mount programı önce sunucunun mount arka plan programı ile bir bağlantı kurar ve ardından ona RPC aracılığıyla mount komutunu gönderir. Eğer bu prosedür başarılı olursa, istemci uygulaması NFS sunucusuna (bağlantı noktası 2049) bağlanır ve RFC 1813'te tanımlanan ve Tablo 1'de listelenen 20 uzak prosedürden birini kullanarak uzak dosya sistemine erişir.

    Çoğu komutun anlamı sezgiseldir ve sistem yöneticileri için herhangi bir zorluğa neden olmaz. tcdump kullanılarak oluşturulan aşağıdaki liste, UNIX cat komutu tarafından test-file adlı bir dosyayı okumak için kullanılan read komutunu göstermektedir:

    10:30:16.012010 eth0 > 192.168.1.254. 3476097947 > 192.168.1.252.2049: 144 arama fh 32.0/ 224145 "test dosyası" 10:30:16.012010 eth0 > 192.168.1.254. 3476097947 > 192.168.1.252.2049: 32.0/ 224145 "test dosyası" için 144 arama 10:30:16.012729 eth0 192.168.1.254.3476097947: yanıt tamam 4307 (DF) 10:30: 16.012729 eth0 192.168.1.254.3476097947: cevap tamam 128 arama fh 32.0/224307 (DF) 10:30:16.013124 eth0 > 192.168.1.254. 3492875163 > 192.168.1.252.2049: 140 okuma fh 32.0/ 224307 4096 bayt @ 0 10:30:16.013124 eth0 > 192.168.1.254. 3492875163 > 192.168.1.252.2049: 140 okuma fh 32.0/ 224307 4096 bayt @ 0 10:30:16.013650 eth0 192.168.1.254.3492875163: cevap tamam 108 okuma (DF) 10: 30:16.013650 eth0 192.168.1.254.3492875163 : cevap tamam 108 okuma (DF)

    NFS, geleneksel olarak UDP üzerinden uygulanmaktadır. Ancak, NFS'nin bazı sürümleri TCP'yi destekler (TCP desteği, protokol belirtiminde tanımlanır). TCP'nin ana avantajı, güvenilir olmayan ağlarda daha verimli bir yeniden iletim mekanizmasıdır. (UDP durumunda, bir hata oluşursa, o zaman tam mesaj Birden çok UDP paketinden oluşan bir RPC yeniden iletilir. TCP varsa, yalnızca bozuk parça yeniden iletilir.)

    NFS'YE ERİŞİM

    NFS uygulamaları tipik olarak dört erişim verme yöntemini destekler: kullanıcı/dosya öznitelikleri yoluyla, paylaşım düzeyinde, ana düğüm düzeyinde ve diğer erişim yöntemlerinin bir kombinasyonu olarak.

    İlk yöntem, bireysel bir kullanıcı veya grup için yerleşik UNIX dosya izinleri sistemine dayanır. Bakımı basitleştirmek için, kullanıcı ve grup tanımlaması tüm NFS istemcileri ve sunucularında tutarlı olmalıdır. Güvenlik dikkatle düşünülmelidir: NFS, oluşturulurken amaçlanmayan dosyalara yanlışlıkla erişim izni verebilir.

    Paylaşılan kaynak erişimi, dosya sahipliği veya UNIX ayrıcalıklarından bağımsız olarak hakları yalnızca belirli eylemlerle kısıtlamanıza olanak tanır. Örneğin, NFS dosya sistemiyle çalışmak salt okunur olarak sınırlandırılabilir. Çoğu NFS uygulaması, paylaşılan kaynaklar düzeyinde erişimi belirli kullanıcılar ve/veya gruplarla daha fazla kısıtlamanıza izin verir. Örneğin, İnsan Kaynakları grubunun bilgileri görüntülemesine izin verilir ve başka bir şeye izin verilmez.

    Ana düzeyde erişim, bir dosya sistemini yalnızca belirli düğümlere bağlamanıza izin verir; bu genellikle iyi bir fikirdir, çünkü dosya sistemleri NFS'yi destekleyen herhangi bir düğümde kolayca oluşturulabilir.

    Kombine erişim, yukarıdaki türleri basitçe birleştirir (örneğin, belirli bir kullanıcıya verilen erişimle paylaşılan kaynak erişimi) veya kullanıcıların NFS'ye yalnızca belirli bir ana bilgisayardan erişmesine izin verir.

    NFS PENGUEN STİLİ

    Burada sunulan Linux ile ilgili malzeme, nfs-utils paketinin 0.1.6 sürümüyle birlikte gelen 2.4.9 çekirdek sürümüne sahip bir Red Hat 6.2 sistemine dayanmaktadır. Daha yeni sürümler de mevcuttur: Bu yazının yazıldığı sırada, nfs-utils paketine yapılan en son güncelleme 0.3.1'dir. Şu adresten indirilebilir: .

    nfs-utils paketi aşağıdakileri içerir yürütülebilir dosyalar: exportfs, lockd, mountd, nfsd, nfsstat, nhfsstone, rquotad, showmount ve statd.

    Ne yazık ki, belirli bir özelliğin kullanılabilirliği hem çekirdeğin hem de nfs-utils paketinin sürüm numaralarına doğrudan bağlı olduğundan, NFS desteği bazen Linux yöneticileri için kafa karıştırıcı olabilir. Neyse ki, bu alanda işler artık gelişiyor: en son dağıtım kitleri her ikisinin de en son sürümlerini içeriyor. Önceki sürümler için, NFS-NASIL'ın 2.4. bölümü, çekirdek ve nfs-utils paketinin her bir kombinasyonu için mevcut sistem işlevlerinin tam bir listesini sağlar. Geliştiriciler, güvenlik ve yazılım hatalarını düzeltmeye büyük önem vererek, paketin önceki sürümlerle geriye dönük uyumluluğunu korurlar.

    NFS desteği, çekirdek derleme zamanında başlatılmalıdır. Gerekirse, çekirdeğe NFS sürüm 3 ile çalışma yeteneği de eklenmelidir.

    Linuxconf'u destekleyen dağıtımlar için, hem istemciler hem de sunucular için NFS hizmetlerini yapılandırmak kolaydır. Ancak, linuxconf kullanarak NFS kurmanın hızlı yolu, hangi dosyaların oluşturulduğu veya düzenlendiği hakkında bilgi sağlamaz; bu, bir sistem arızası durumunda yöneticinin bilmesi çok önemlidir. Linux'ta NFS mimarisi, BSD sürümüne gevşek bir şekilde bağlanmıştır, bu nedenle BSD, Sun OS 2.5 veya önceki NFS sürümlerini çalıştıran yöneticiler için gerekli destek dosyalarını ve programları bulmak kolaydır.

    /etc/exports dosyası, önceki BSD sürümlerinde olduğu gibi, NFS istemcilerinin erişmesine izin verilen dosya sistemlerini belirtir. Ek olarak, yönetim ve güvenlik konularıyla ilgili bir dizi ek özellik içerir ve yöneticiye ince ayar yapması için bir araç sağlar. Bu, girişlerden, boş satırlardan veya yorumlanmış satırlardan (yorumlar # ile başlayan) oluşan bir metin dosyasıdır.

    İstemcilere, Lefty ana bilgisayarındaki /home dizinine salt okunur erişim vermek istediğimizi varsayalım. Bu, /etc/exports içindeki aşağıdaki girişe karşılık gelir:

    /ev (ro)

    Burada sisteme rpc.mountd mount daemon'u kullanarak hangi dizinleri kullanıma sunacağımızı söylememiz gerekiyor:

    # exportfs -r exportfs: /home (ro) içinde ana bilgisayar adı belirtilmedi, uyarıyı önlemek için *(ro) yazın #

    Çalıştırıldığında, exportfs komutu, /etc/exports'un belirli bir düğüme erişimi kısıtlamadığı konusunda uyarır ve /etc/exports'tan /var/lib/nfs/etab içinde cat ile hangi kaynakların görüntülenebileceğini söyleyen karşılık gelen bir giriş oluşturur:

    # cat /var/lib/nfs/etab /home (ro,async,wdelay,hide,secure,root_squash, no_all_squash,subtree_check, secure_locks, mapping=identity,anonuid= -2,anongid=-2)

    Etab'da listelenen diğer seçenekler, NFS tarafından kullanılan varsayılanları içerir. Ayrıntılar aşağıda açıklanacaktır. /home dizinine erişim izni vermek için uygun NFS hizmetleri başlatılmalıdır:

    # portmap # rpc.mountd # rpc.nfsd # rpc.statd # rpc.rquotad

    Bağlama arka plan programı (rpc.mountd) başladıktan sonra herhangi bir zamanda, /proc/fs/nfs/exports dosyasının içeriğini görüntüleyerek çıktı için uygun olan tek tek dosyaları sorgulayabilirsiniz:

    # cat /proc/fs/nfs/exports # Version 1.0 # Path Client(Flags) # IP'ler /home 192.168.1.252(ro,root_squash,async, wdelay) # 192.168.1.252 #

    Aynısı, -e seçeneğiyle showmount komutu kullanılarak görüntülenebilir:

    # showmount -e Solak için dışa aktarma listesi: /home (herkes) #

    Biraz ileri gidersek, showmount komutu, tüm bağlı dosya sistemlerini belirlemek veya başka bir deyişle, showmount komutunu çalıştıran sistem için hangi ana bilgisayarların NFS istemcileri olduğunu bulmak için de kullanılabilir. showmount -a komutu, tüm istemci bağlama noktalarını listeler:

    # showmount -a Soldaki tüm bağlama noktaları: 192.168.1.252:/home #

    Yukarıda belirtildiği gibi, çoğu NFS uygulaması bu protokolün çeşitli sürümlerini destekler. Linux uygulaması, mount arka plan programı için -N seçeneğini belirleyerek çalışacak NFS sürümlerinin listesini sınırlamanıza izin verir. Örneğin, NFS sürüm 3'ü ve yalnızca sürüm 3'ü başlatmak için aşağıdaki komutu girin:

    # rpc.mountd -N 1 -N 2

    Seçici Kullanıcılar Linux'ta NFS arka plan programının (rpc.nfsd) sürüm 1 ve sürüm 2 paketlerini beklemesi uygunsuz görünebilir, ancak bu ilgili protokolü desteklememek gibi istenen etkiyi sağlar. Gelecek sürümlerin geliştiricilerinin gerekli düzeltmeleri yapacaklarını ve protokolün farklı sürümleriyle ilgili olarak paket bileşenleri arasında daha fazla tutarlılık elde edebileceklerini umalım.

    "PENGUENLERLE YÜZMEK"

    Yukarıda yapılandırılan Lefty, dışa aktarılan NFS dosya sistemine erişim Linux tabanlı, istemci işletim sistemine bağlıdır. Çoğu UNIX ailesi işletim sisteminin kurulum stili, orijinal Sun OS ve BSD sistemleri veya daha yeni Solaris ile aynıdır. Bu makale hem Linux hem de Solaris sistemlerine odaklandığından, Solaris 2.6 istemci yapılandırmasına yukarıda anlattığımız NFS'nin Linux sürümüne bağlantı kurma açısından bakalım.

    Solaris 2.6'dan devralınan özelliklerle, onu bir NFS istemcisi olarak çalışacak şekilde yapılandırmak kolaydır. Bu sadece bir komut gerektirir:

    # mount -F nfs 192.168.1.254:/home /tmp/tmp2

    Önceki mount komutunun başarılı olduğunu varsayalım, ardından hiçbir seçenek içermeyen mount komutu aşağıdaki çıktıyı verecektir:

    # mount / on /dev/dsk/c0t0d0s0 read/write/setuid/ largefiles on Mon Sep 3 10:17:56 2001 ... ... /tmp/tmp2 on 192.168.1.254:/home read/ write/remote on 3 Eylül Pazartesi 23:19:25 2001

    Kullanıcı, Sunny ana bilgisayarında ls /tmp/tmp2 komutunu girdikten sonra, Lefty ana bilgisayarındaki tcpdump çıktısını inceleyelim:

    # tcpdump sunucu sollu ve sunucu güneşli -s512 06:07:43.490583 güneşli.2191983953 > lefty.mcwrite.n.nfs: 128 getattr fh Bilinmeyen/1 (DF) 06:07:43.490678 sollu.mcwrite.n.nfs > güneşli. 2191983953: answer ok 112 getattr DIR 40755 ids 0/0 sz 0x000001000 (DF) 06:07:43.491397 güneşli.2191983954 > lefty.mcwrite.n.nfs: 132 erişim fh Bilinmeyen/10001 (DF) 06:07:4 3.491463 sol . DF)

    Sunny düğümünün ls için bir dosya tanıtıcı (fh) istediğini görüyoruz, buna Sol düğüm yanıt olarak OK gönderiyor ve dizin yapısını döndürüyor. Sunny daha sonra dizinin içeriğine ilişkin izni kontrol eder (132 erişim fh) ve Lefty'den bir izin yanıtı alır. Ardından Sunny düğümü, readdirplus prosedürünü kullanarak dizinin tüm içeriğini okur. Uzaktan yordam çağrıları, RFC 1813'te açıklanmıştır ve bu makalenin başında listelenmiştir.

    Uzak dosya sistemlerine erişim için komut dizisi çok basit olsa da, bazı durumlar sistemin yanlış bağlanmasına neden olabilir. Bir dizini bağlamadan önce bağlama noktası zaten mevcut olmalıdır, aksi halde mkdir komutu kullanılarak oluşturulmalıdır. Genellikle istemci tarafındaki hataların tek nedeni, yerel bir bağlama dizininin olmamasıdır. Bununla birlikte, NFS ile ilgili sorunların çoğu, istemci ile sunucu arasındaki uyumsuzluğa veya yanlış sunucu yapılandırmasına bağlıdır.

    Bir sunucudaki sorunları gidermenin en kolay yolu, sunucunun çalıştığı ana bilgisayardandır. Ancak sunucuyu sizin yerinize başkası yönettiğinde bu her zaman mümkün olmuyor. Uygun sunucu hizmetlerinin doğru şekilde yapılandırıldığından emin olmanın hızlı bir yolu, -p seçeneğiyle rpcinfo komutunu kullanmaktır. Solaris Sunny ana bilgisayarından, Linux ana bilgisayarında hangi RPC işlemlerinin kayıtlı olduğunu belirleyebilirsiniz:

    # rpcinfo -p 192.168.1.254 program ve protokol port hizmeti 100000 2 tcp 111 rpcbind 100000 2 udp 111 rpcbind 100024 1 udp 692 durumu 100024 1 tcp 694 durumu 100005 3 udp 102 4 mountd /100005 3 tcp 1024 mount 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100021 1 udp 1026 nlockmgr 100021 3 udp 1026 nlockmgr 100021 4 udp 1026 nlockmgr #

    Sistem çeşitli NFS protokolleri için destek gerektirdiğinde oldukça yararlı olan sürüm bilgilerinin de burada sağlandığını unutmayın. Sunucu üzerinde herhangi bir hizmet çalışmıyorsa bu durum düzeltilmelidir. Bağlama başarısız olursa, aşağıdaki rpcinfo -p komutu size sunucudaki mountd hizmetinin kapalı olduğunu söyleyecektir:

    # rpcinfo -p 192.168.1.254 program ve protokol port hizmeti 100000 2 tcp 111 rpcbind ... ... 100021 4 udp 1026 nlockmgr #

    rpcinfo komutu, belirli bir uzak işlemin etkin olup olmadığını bulmak için çok kullanışlıdır. -p seçeneği anahtarların en önemlisidir. rpcinfo'nun tüm özellikleri için kılavuz sayfasına bakın.

    Bir başka yararlı araç da nfsstat komutudur. Yardımı ile, istemcilerin gerçekten dışa aktarılan dosya sistemine erişip erişmediğini öğrenebilir ve ayrıca protokol sürümüne göre istatistiksel bilgileri görüntüleyebilirsiniz.

    Son olarak, sistem arızalarının nedenlerini belirlemek için oldukça yararlı bir başka araç da tcpdump'tır:

    # tcpdump ana bilgisayar lefty ve sunucu güneşli -s512 tcpdump: eth0 06:29:51.773646 güneşli.2191984020'de dinliyor > lefty.mcwrite.n.nfs: 140 arama fh Unknown/1"test.c" (DF) 06:29:51.773819 lefty.mcwrite.n.nfs > sunny.2191984020: cevap tamam 116 arama HATA: Böyle bir dosya veya dizin yok (DF) 06:29:51.774593 sunny.2191984021 > lefty.mcwrite.n.nfs: 128 getattr fh Unknown/1 ( DF) 06:29:51.774670 lefty.mcwrite.n.nfs > güneşli.2191984021: cevap tamam 112 getattr DIR 40755 kimlikleri 0/0 sz 0x000001000 (DF) 06:29:51.775289 güneşli.2191984022 > lefty.mcwrite .n.nfs : 140 arama fh Bilinmeyen/1"test.c" (DF) 06:29:51.775357 lefty.mcwrite.n.nfs > güneşli.2191984022: yanıt tamam 116 arama HATA: Böyle bir dosya veya dizin yok (DF) 06:29: 51.776029 güneşli.2191984023 > lefty.mcwrite.n.nfs: 184 fh Bilinmeyen/1 "test.c" (DF) 06:29:51.776169 lefty.mcwrite.n.nfs > güneşli.2191984023: yanıt tamam 120 HATA oluştur: İzin reddedildi (DF)

    Yürütüldükten sonra elde edilen yukarıdaki liste dokunma talimatları test.c, aşağıdaki eylem sırasını yansıtır: önce touch komutu, test.c adlı bir dosyaya erişmeye çalışır, ardından aynı ada sahip bir dizini arar ve başarısız denemelerden sonra test dosyasını oluşturmaya çalışır. c, bu da başarıya götürmez.

    Dosya sistemi monte edilmişse, çoğu Yaygın hatalar normal UNIX izinleriyle ilişkilidir. Sun'ın uid veya NIS+ kullanımı, izinlerin tüm dosya sistemlerinde genel olarak ayarlanmasını engeller. Bazı yöneticiler, onları okuma izinlerinin "tüm dünyaya" verildiği "açık" dizinler uygular. Ancak, güvenlik nedeniyle bundan kaçınılmalıdır. Güvenlik kaygıları bir yana, bu yine de kötü bir uygulamadır çünkü kullanıcılar verileri herkes tarafından okunabilir kılmak amacıyla nadiren oluştururlar.

    Ayrıcalıklı bir kullanıcının (kök) NFS bağlantılı dosya sistemlerine erişimleri farklı şekilde ele alınır. Ayrıcalıklı bir kullanıcıya sınırsız erişim vermekten kaçınmak için, ayrıcalıklı kullanıcıdan gelen istekler, "hiçkimse" kullanıcısından gelmiş gibi değerlendirilir. Bu güçlü mekanizma, ayrıcalıklı kullanıcı erişimini genel olarak okunabilir ve yazılabilir dosyalara sınırlar.

    NFS SUNUCUSU, SOLARIS VERSİYONU

    Solaris'i bir NFS sunucusu olarak çalışacak şekilde yapılandırmak, Linux'ta olduğu kadar kolaydır. Ancak, komutlar ve dosya konumları biraz farklıdır. -de önyükleme Solaris, önyükleme düzeyi 3'e (çalıştırma düzeyi 3) ulaşıldığında, NFS hizmetleri otomatik olarak başlatılır ve tüm dosya sistemleri dışa aktarılır. Bu işlemleri manuel olarak başlatmak için şu komutu girin:

    #/usr/lib/nfs/bağlantı

    Mount arka plan programı ve NFS sunucusunu başlatmak için şunu yazın:

    #/usr/lib/nfs/nfsd

    2.6 sürümünden başlayarak Solaris, hangi dosya sistemlerinin dışa aktarılacağını belirtmek için artık bir dışa aktarma dosyası kullanmamaktadır. Dosyalar artık share komutu kullanılarak dışa aktarılır. Uzak ana bilgisayarların /export/home'u bağlamasına izin vermek istediğimizi varsayalım. Bunu yapmak için aşağıdaki komutu girin:

    Share -F nfs /export/home

    Güvenlik önlemleri

    LINUX'TA GÜVENLİK

    Bazı Linux tabanlı NFS sistem hizmetleri, kontrol listeleri veya tablolar yoluyla erişimi kısıtlamak için ek bir mekanizmaya sahiptir. Dahili düzeyde bu mekanizma, erişim kontrol listeleri oluşturmak için iki dosya kullanan tcp_wrapper kitaplığı kullanılarak uygulanır: /etc/hosts.allow ve /etc/hosts/deny. tcp_wrapper ile çalışma kurallarına kapsamlı bir genel bakış bu makalenin kapsamı dışındadır, ancak temel ilke şudur: eşleştirme önce etc/hosts.allow ile ve sonra /etc/hosts ile yapılır. reddetmek. Kural bulunamazsa, istenen sistem hizmeti sunulmaz. Son gereksinimi aşmak ve çok yüksek düzeyde güvenlik sağlamak için /etc/hosts.deny dosyasının sonuna aşağıdaki girişi ekleyebilirsiniz:

    HEPSİ: Hepsi

    Bundan sonra, /etc/hosts.allow şu veya bu çalışma modunu ayarlamak için kullanılabilir. Örneğin, /etc/hosts dosyası. Bu makaleyi yazarken kullandığım allow şu satırları içeriyordu:

    kilitli:192.168.1.0/255.255.255.0 bağlı:192.168.1.0/255.255.255.0 bağlantı noktası haritası:192.168.1.0/255.255.255.0 rquotad:192.168.1.0/255.255.255.0 statü:192 . 168.1.0/255.255.255.0

    Bu, uygulama düzeyinde erişim vermeden önce düğümlere bir tür erişim sağlar. Linux'ta, uygulama düzeyinde erişim /etc/exports dosyası tarafından kontrol edilir. Aşağıdaki formattaki girişlerden oluşur:

    Dışa aktarma dizini (boşluk) host|network(seçenekler)

    Bir "dışa aktarılan dizin", nfsd arka plan programının bir isteği işlemesine izin verilen bir dizindir. "Ana Bilgisayar|Ağ", dışa aktarılan dosya sistemine erişimi olan ana bilgisayar veya ağdır ve "seçenekler", nfsd arka plan programının bu paylaşılan kaynağın (salt okunur erişim veya kullanıcı kimliği eşleme) kullanımına hangi kısıtlamaları getireceğini belirler.

    Aşağıdaki örnek, tüm mcwrite.net etki alanına /home/mcwrite.net için salt okunur erişim sağlar:

    /home/mcwrite.net *.mcwrite.net(ro)

    Dışa aktarma kılavuz sayfasında daha fazla örnek bulunabilir.

    SOLARIS'TE NFS GÜVENLİĞİ

    Solaris'te, NFS erişimi sağlama yeteneği Linux'a benzer, ancak bu durumda, -o anahtarıyla share komutundaki belirli seçenekler kullanılarak kısıtlamalar ayarlanır. Aşağıdaki örnek, /export/mcwrite.net'in mcwrite.net etki alanındaki herhangi bir ana bilgisayarda salt okunur olarak bağlanmasının nasıl etkinleştirileceğini gösterir:

    #share -F nfs -o ro=.mcwrite.net/ export/ mcwrite.net

    Share_nfs kılavuz sayfası, Solaris'teki kontrol listelerini kullanarak nasıl erişim verileceğini ayrıntılarıyla anlatır.

    İnternet kaynakları

    NFS ve RPC "deliksiz" değildi. Genel olarak konuşursak, NFS internette kullanılmamalıdır. NFS aracılığıyla herhangi bir türde erişime izin vererek güvenlik duvarlarını "delik açamazsınız". Tüm RPC ve NFS yamaları yakından izlenmelidir ve çok sayıda güvenlik bilgisi kaynağı yardımcı olabilir. En popüler iki kaynak Bugtraq ve CERT'dir:

    İlki, gerekli bilgileri aramak için düzenli olarak görüntülenebilir veya periyodik bir haber bültenine abone olunabilir. İkincisi, belki de diğerlerine kıyasla o kadar hızlı değil, ancak oldukça eksiksiz bir ciltte ve bilgi güvenliğine adanmış bazı sitelerin özelliği olan sansasyonel bir ima olmadan bilgi sağlar.

    Ağ Servisleri

    Ders 10

    Bir ağ üzerinden belirli bir tür bilgisayar kaynağına erişim sağlayan işletim sisteminin sunucu ve istemci bölümleri kümesine denir. ağ hizmeti. İstemci kısmı, başka bir bilgisayarın sunucu kısmına ağ istekleri yapar. Sunucu kısmı, istekleri karşılar yerel kaynaklar sunucu. İstemci kısmı aktif, sunucu kısmı pasiftir.

    Ağ oluştururken, ağ üzerinden dosya sistemine erişim önemli bir yer kaplar. Bu durumda, ağ dosya sistemi ile birlikte istemci ve sunucu parçaları oluşur. dosya hizmeti

    Dağıtılmış bir işletim sisteminin önemli bir bileşeni, ağ dosya sistemidir. Ağ dosya sistemi, dosyaları depolayan bir veya daha fazla bilgisayar tarafından desteklenir. (dosya sunucuları)

    Müşteri bilgisayarlar bu dosya sistemlerini yerel dosya sistemlerine ekler veya bağlar

    Dosya Hizmeti bir protokol kullanarak bir ağ üzerinden iletişim kuran sunucu programlarını ve istemci programlarını içerir.

    Dosya hizmetleri, dosya hizmetinin kendisini (dosya işlemleri) ve dizin hizmetini (dizin yönetimi) içerir.

    Ağ dosya hizmeti modeli aşağıdaki öğeleri içerir:

    Yerel dosya sistemi (FAT, NTFS)

    Yerel dosya sistemi arabirimi (sistem çağrıları)

    Ağ Dosya Sistemi Sunucusu

    Ağ Dosya Sistemi İstemcisi ( windows gezgini, UNIX kabuğu vb.)

    Ağ dosya sistemi arabirimi (yerel dosya sistemi sistem çağrılarını tekrarlar)

    Ağ Dosya Sistemi İstemci-Sunucu Protokolü (Windows için SMB-Sunucu İleti Bloğu, UNIX için NFS (Ağ Dosya Sistemi) ve FTP (Dosya Aktarım Protokolü))

    Ağ dosya sistemi arabirimi

    Aşağıdakilerle karakterize edilen birkaç arayüz türü vardır:

    dosya yapısı. Çoğu ağ dosya sistemi düz dosyaları destekler

    Dosya değiştirilebilirliği. Çoğu ağ dosya sistemi, bir dosyayı değiştirme yeteneğine sahiptir. Bazı dağıtılmış dosya sistemleri, değişiklik işlemlerini yasaklar. Yalnızca oluşturma ve okuma mümkündür. Bu tür dosyalar için önbelleğe alma ve çoğaltmayı düzenlemek daha kolaydır.

    Dosya ayırma semantiği:

    anlam bilimi UNIX (merkezi). Birden fazla yazmanın ardından bir okuma yapılırsa en son güncelleme okunur. Bu ilke, bir dosya sunucusu olması ve istemcide dosya önbelleğe alma olmaması koşuluyla, dağıtılmış bir dosya sisteminde de mümkündür.

    oturum anlambilimi. Değişiklikler dosya açıldıktan sonra başlar ve dosya kapatıldıktan sonra sona erer. Diğer bir deyişle, diğer işlemler için değişiklikler ancak dosya kapatıldıktan sonra görülebilir. İÇİNDE bu durum Dosya paylaşılırken bir sorun oluştu. Değişmez dosyaların anlamı. Dosya yalnızca oluşturulabilir ve okunabilir. Ayrıca dosyayı farklı bir adla yeniden oluşturabilirsiniz. Bu nedenle, dosya değiştirilemez, ancak yeni bir dosya ile değiştirilebilir. Paylaşım sorunu yok.



    İşlem mekanizması. Bu, işlem mekanizmasını (bölünemez işlemler) kullanarak paylaşılan dosyalarla çalışmanın bir yoludur.

    Giriş kontrolu. Örneğin, Windows NT/2000 için iki mekanizma vardır: dizin düzeyinde (FAT için) ve dosya düzeyinde (NTFS)

    Erişim birimi. Tüm dosya yükleme/indirme modeli (FTP). İkinci model, dosyalar üzerindeki işlemlerin kullanılmasıdır.

    1.4 Ağ dosya sistemi

    CIFS dosya sistemi, Windows platformu için ağ dosya sistemi pazarına hakimdir. UNIX platformunda, ana dosya sistemi Ağ Dosya Sistemidir (NFS). Ek olarak, NFS, 1980'lerin ortalarında meydana gelen, yaygın olarak benimsenen ilk dosya sistemi olarak kabul edilir. Ancak, CIFS ve NFS'nin bazı ortak işlevlerine rağmen (bunlar, istemcilerin sunucu kaynaklarına erişmesine izin veren ağ dosya sistemleridir), bu sistemler tamamen farklı mimari özelliklere sahiptir. NFS sürüm 4'ün piyasaya sürülmesiyle birlikte bazı farklılıklar revize edildi.
    CIFS protokolü, her müşteriyle ilgili hizmet verilerini depolar. Sürüm 3'ten önce NFS, sürüm 4'te değişen istemci durumunu korumadı.
    NFS istemcisi, bir oturum oluşturmak için NFS sunucusuyla "anlaşmaz". İstemci ile sunucu arasındaki tüm oturum veya her iletişim işlemi için güvenlik önlemleri alınır. İkinci seçeneğin uygulanması aşırı derecede pahalıdır, bu nedenle NFS güvenlik görevini istemciye bırakır. Sunucu, istemci ve sunucu sistemlerindeki kullanıcı kimliklerinin aynı olduğunu "varsar" (ve istemci, belirtilen kimlikle oturum açmalarına izin vermeden önce kullanıcının kimliğini doğrulamıştır). Ek olarak NFS, bir istemcinin hangi dosya sistemlerini bağlayabileceğini kontrol ederek belirli bir düzeyde güvenlik sağlar. Bir CIFS istemcisi bir dosyayı her açtığında, bir dosya tanıtıcısı (yani, sunucunun saklaması gereken hizmet verileri) aldığında ve bunu istemci tarafında okumalar veya yazmalar gerçekleştirmek için kullandığında, NFS sunucusu sunucuyu sorgular ve dosya tanımlayıcıyı döndürür. Bu dosya tanımlayıcı, NFS 3 ve NFS 2 standartlarını destekleyen istemciler tarafından işlenir.İstemci, alınan dosya tanımlayıcıyı önbelleğe alır ve tanımlayıcının her zaman aynı dosyayı göstermesini bekler.
    UNIX'e aşina olanlar için, bir dosya tanıtıcı genellikle bir inode numarası, bir inode oluşturma sayısı ve disk bölümüyle ilişkilendirilmiş bir dosya tanımlayıcıdan oluşur. inode'un UNIX dosya sistemlerinde kullanılan son derece önemli bir veri yapısı olduğunu söylemekle yetinelim. İstemciler tarafından önbelleğe alınan tanımlayıcıları kaldırmak için, tanımlayıcıya karşılık gelen dosya değiştiyse ve tanımlayıcının farklı bir dosyaya işaret etmesi gerekiyorsa gerekli olan yeterli bilgi depolanır. Örneğin, bir dosya silinir ve yerine aynı ada sahip bir dosya kopyalanırsa, inode oluşturma sayacı değiştirilir ve istemci tarafından önbelleğe alınan dosya tanıtıcı geçersiz kılınır. NFS 4 dosya sisteminin uygulama farklılıkları vardır.
    Bazı NFS istemcileri, CIFS önbelleğe almaya benzer şekilde verileri disklerde depolayarak istemci tarafında önbelleğe alma gerçekleştirir. Ayrıca, bazı NFS istemcileri, sunucunun yanıt süresine bağlı olarak zaman aşımlarının değerini değiştirir. Sunucu ne kadar yavaş yanıt verirse, zaman aşımı değeri o kadar büyük olur ve bunun tersi de geçerlidir.
    NFS dosya sistemi, aktarımdan bağımsız olacak şekilde tasarlanmıştır ve orijinal olarak UDP aktarım protokolünü kullanır. Çeşitli NFS türleri, TCP ve diğer protokolleri kullanabilir.

    1.4.1 Ağ Dosya Sistemi Sürüm 3

    NFS 3 dosya sistemi, özellikle daha hızlı performans sağlar. büyük dosyalar, istemci ve sunucunun yazarken veya okurken tek bir paket mantıksal öğesinde aktarılan maksimum veri miktarını dinamik olarak seçmesine olanak tanır. NFS 2 dosya sisteminde, 8 KB'lik bir paket boyutu sınırı getirildi. Başka bir deyişle, istemci bir yazma isteğinde en fazla 8 KB gönderebilir ve sunucu bir okuma yanıtında en fazla 8 KB gönderebilir. Ek olarak, NFS 3 dosya ofsetlerini ve veri boyutlarını yeniden tanımladı. Bunlar artık NFS 2'de 32 bit yerine 64 bit değerlerdir.
    NFS 3'ün bazı özellikleri aşağıdadır.
    ■ NFS 3 dosya tanıtıcılarının boyutu değişkendir; maksimum boyutları 64 bittir.
    ■ NFS 3 dosya sistemi, istemcilerin ve sunucuların en büyük boy dosya ve dizin adları.
    ■ NFS 3, bir sunucunun istemcilere döndürebileceği hataların bir listesini tanımlar. Sunucu tanımlanan hatalardan birini döndürmeli veya hiç hata vermemelidir.
    ■ NFS 3'te sunucunun, yazma isteğiyle birlikte istemcinin gönderdiği verileri önbelleğe almasına izin verilir. Sunucu, verileri önbelleğe alabilir ve veriler diske yazılmadan önce istemciye isteğe bir yanıt gönderebilir. İstemcinin gönderilen tüm verilerin diske yazıldığını doğrulamasına izin vermek için bir COMMIT komutu da eklenmiştir. Bu, performansı artırma ve veri bütünlüğünü koruma arasında bir denge kurmayı mümkün kılar.
    ■ NFS 3, istemci ile sunucu arasındaki istek/yanıt işlemlerinin sayısını azaltmıştır. Bunu yapmak için, ilk istekle birlikte dosya öznitelik verileri gönderilir. NFS 2'de, istemcinin dosya adlarını alması ve her dosya için işlemesi gerekiyordu, ancak o zaman dosyanın öznitelikleri aktarılıyordu.

    1.4.2 Ağ Dosya Sistemi Sürüm 4

    NFS 4, temelleri tamamen elden geçirdi ve CIFS'ye özgü birçok özelliği uyguladı, bu da bazı NFS savunucularını büyük ölçüde üzdü. Ağ dosya sistemlerinin geçmişine bakarsanız, NFS'nin yaygınlaştığını görebilirsiniz. SMB dosya sistemi, NFS'nin güçlü ve zayıf yönleri göz önünde bulundurularak tasarlanmıştır ve şimdi, en azından istemci ortamında, CIFS/SMB daha yaygındır ve NFS, CIFS/SMB'nin tüm avantaj ve dezavantajlarını dikkate alarak gelişmektedir. . Aşağıda, performansı ve güvenliği iyileştirmek ve CIFS ile birlikte çalışabilirliği geliştirmek için NFS 4'e eklenen özellikler bulunmaktadır.
    ■ NFS 4, birden çok sorguyu tek bir sorguda ve birden çok yanıtı tek bir yanıtta paketlemenize olanak tanıyan BİLEŞİK sorguyu kullanıma sundu. Bu yenilik, ağ üzerinden istekler ve yanıtlar gönderilirken ağ yükünü azaltarak ve gecikmeyi azaltarak performansı iyileştirmeyi amaçlamaktadır. Bu, AndX SMB'nin CIFS özelliğini biraz anımsatıyorsa (bkz. bölüm 3.3.5.1), normal bir tesadüf olmayabilir.
    ■ Ağ Dosya Sistemi sürüm 4, Sun'ın WebNFS'sinden bazı özellikler ödünç almıştır. Özellikle, NFS 4'te, temel spesifikasyonda bazı ikincil protokoller desteklenir, bu da NFS'yi güvenlik duvarlarıyla kullanım için daha uygun hale getirir. NFS 3 ve öncesi, bir sunucu paylaşımını yerel bir dosya sistemi ağacına bağlamak için özel bir protokol kullanıyordu. Bağlama protokolü hizmetinin atanmış bir numarası olmadığından TCP bağlantı noktası veya UDP'de, istemci önce bağlantı hizmetinin istekleri dinlediği bağlantı noktası numarasını sağlayan portmapper arka plan programına bir istek gönderir. Böylece NFS'ye ek olarak mount ve port mapping protokolleri de süreçte yer aldı. Ayrıca, bağlama hizmeti isteğe bağlı bir bağlantı noktası kullanabildiğinden, güvenlik duvarını yapılandırmak oldukça karmaşıktı. NFS 4'te bağlama ve bağlantı noktası eşleme protokolleri kaldırılmıştır. Ek olarak, temel NFS protokol spesifikasyonuna kilitleme dahil edildi ve NFS'nin önceki sürümlerinde kullanılan NLM (Ağ Kilidi Yöneticisi) protokolü nihayet geçerliliğini yitirdi.
    ■ NFS 4 dosya sistemi kullanımını gerektirir taşıma protokolü, ağdaki "tıkanıklığı" algılama yeteneği sağlar. Bu, NFS istemcilerinin ve sunucularının, NFS 3 ile yaygın olarak kullanılan UDP yerine kademeli olarak TCP'ye taşınacağı anlamına gelir.
    ■ NFS 2 ve NFS 3, ABD'ye izin verdi. ASCII veya ISO Latin 1. Bu, bir karakter kümesi kullanan bir istemci bir dosya oluşturduğunda ve bu dosyaya farklı bir karakter kümesiyle bir istemci tarafından erişildiğinde sorunlara neden oluyordu. NFS 4, ağ üzerinden aktarım için 16 bit ve 32 bit karakterlerin sıkıştırılmasını destekleyen UTF-8 karakter kümesini kullanır. Ayrıca, UTF-8 karakter seti, bir karakter setiyle dosya oluştururken ve farklı karakter setiyle bir dosyaya erişirken sorunları önlemek için yeterli bilgiyi içerir.
    ■ NFS 4 dosya sistemi, istemcinin dosya tanımlayıcılarını ayrı ayrı işlemesini gerektirir. NFS 3'te istemci tanıtıcıyı bir nesne olarak önbelleğe alabilirken, sunucu tanıtıcının her zaman bir dosyaya işaret etmesine özen gösterirdi. NFS 4, iki tür dosya tanıtıcı tanımlar. Bunlardan biri kalıcı dosya tanımlayıcıları olarak adlandırılır ve NFS 3'ün dosya tanımlayıcı yeteneklerine sahiptir. İkincisi, geçici dosya tanımlayıcıları, dosya tanımlayıcının belirli bir süre veya olaydan sonra sona ermesini içerir. Bu, dosya sistemleri (NTFS gibi) eşlenen dosyalar ve tanıtıcılar arasında tutarlı bir eşleme sağlayamayan sunuculara yönelik bir özelliktir.
    ■ NFS 4, semantiği CIFS istemcileriyle etkileşime izin veren AÇ ve KAPAT işlemleri için destek ekler. OPEN komutu, sunucuda durum verilerini oluşturur.
    ■ NFS 4'te OPEN isteği desteği, bir istemcinin Windows uygulamalarını açma isteklerine benzer şekilde yapılandırılmış bir dosyayı açma isteği göndermesine olanak tanır. Seçim de desteklenir. paylaşım diğer istemcilerle dosya veya dosyaya özel erişim.

    1.4.2.1 NFS 4 güvenliği

    NFS 4 dosya sistemi, depolanan verilerin güvenliğini artırmanıza olanak tanır. Özellikle NFS 4, daha fazla dosya özniteliği için destek ekler. Bu özniteliklerden biri, Windows NT stili bir erişim denetim listesidir (ACL). Bu, dosya sistemleri arasındaki etkileşimi geliştirir ve güvenlik yapısını güçlendirir.
    NFS 2 ve NFS 3'te güvenlik özelliklerinin kullanımı sadece tavsiye edilirken, NFS 4'te zorunlu hale geldi. NFS 4 dosya sistemi, genel olarak RPCSEC_GSS (Genel Güvenlik Hizmetleri) arabirimini ve özel olarak Kerberos 5/LIPKEY protokollerini kullanan bir güvenlik mekanizmasının uygulanmasını gerektirir. RPCSEC_GSS'nin yalnızca rolü üstlendiğini unutmayın. API arayüzü ve güvenlikle ilgili etiketler ve veriler için bir taşıma mekanizması. NFS 4 dosya sistemi, çoklu kimlik doğrulama ve güvenlik şemalarının yanı sıra istemciler ve sunucular için uygun şemayı seçme olanağı sağlar.
    Simetrik ve simetrik kombinasyon kullanan LIPKEY teknolojisinin çalışmasına biraz dikkat edelim. asimetrik şifreleme. İstemci, rastgele oluşturulmuş 128 bitlik bir anahtar kullanarak kullanıcı verilerini ve parolayı şifreler. Şifreleme simetrik bir algoritma kullanılarak gerçekleştirilir, örn. şifre çözme için aynı anahtar kullanılmalıdır. Sunucu, mesajların şifresini çözmek için bu anahtara ihtiyaç duyduğundan, sunucuya rastgele oluşturulmuş bir anahtar gönderilmelidir. İstemci anahtarı (rastgele oluşturulan) ile şifreler. Genel anahtar sunucu. Sunucu, özel anahtarıyla verilerin şifresini çözer, simetrik anahtarı çıkarır ve kullanıcı ve parola verilerinin şifresini çözer.
    İstemciler, bir sunucu sertifikasıyla sunucuların kimliğini doğrulayabilir ve sertifikayı doğrulamak için sertifika yetkilisi hizmetleri kullanılır. Popüler bilgisayar korsanlığı yöntemlerinden biri, "yabancı" veri paketlerinin belirli bir süre sonra gönderilmesiyle birlikte durdurulmasıdır. Kerberos kullanırken, NFS dosya sistemi her pakete bir zaman damgası ekler. Sunucu yakın zamanda alınan zaman damgalarını kaydeder ve bunları yeni RPC paketlerinin zaman damgalarıyla karşılaştırır. Paket zaman damgaları, sunucu tarafından daha önce alınandan daha eskiyse, sunucu alınan paketleri yok sayar

    1.5 Birden fazla protokol kullanırken erişim sorunları

    Birkaç şirket aynı anda CIFS, NFS ve diğer ağ dosya sistemi istemcilerini destekleyen sistemler sunmaya başladı. Satıcılar, müşteriler tarafından farklı işletim ve dosya sistemlerinin olası kullanımından kaynaklanan teknik sorunların üstesinden gelmek için birçok çalışma yapmıştır. Sorunların verilerin kendisinde değil, dosyaların meta verilerinde olduğunu unutmayın. Bu tür sorunlar için basit bir test, bir dosyayı sunucudan istemciye ve ardından sunucuya (veya tersi) kopyalamak olacaktır. Dosya orijinal kaynağa yerleştirildikten sonra, meta veriler temel değerleri içermelidir, örn. dosya izinleri ve zaman damgaları değişmemelidir. Bu doğru değilse, sorun tespit edilmiştir.
    Aşağıda bazı olası teknik sorunlara örnekler verilmiştir.
    ■ Farklı işletim sistemleri, kullanıcı ve grup erişim izinlerini izlemek için farklı yöntemler kullanır.
    ■ Farklı işletim sistemleri ve dosya sistemleri, dosyaları açmak ve kilitlemek için farklı semantiklere sahiptir.
    ■ Dosya adlandırma kuralları farklı şekillerde ele alınır. Farklı dosya sistemleri, bir dosya adının maksimum boyutunu, dosya adının durum değerini ve dosya adlarında izin verilen karakter kümesini farklı şekilde temsil eder.
    ■ Veriler ve yapıları farklı dosya sistemlerinde farklılık gösterir; örneğin, bazı dosya sistemleri iki zaman damgasını takip ederken, diğerleri üç zaman damgasını (dosyaya en son erişildiği, en son değiştirildiği ve dosyanın oluşturulduğu zaman) takip eder. Her iki dosya sistemi de iki zaman damgasını takip etse bile, birimler farklı olabilir. Başka bir örnek, dosyalardaki ofset birimleridir. Bazı dosya sistemleri 32 bit ofsetleri desteklerken diğerleri 16 bit veya 64 bit ofsetleri destekler.
    ■ Eşlenmiş kilitleri adresleme ile ilgili sorunlar. CIFS sunucusu kilitlemeyi zorunlu kılar: bir istemci bir dosyanın bir bölgesini kilitlediyse, dosyanın o bölgesine başka bir istemci tarafından yapılan herhangi bir yazma işlemi bir hatayla sonuçlanacaktır. Ancak zorunlu kilitleme, NFS sunucuları tarafından desteklenmez. Bu nedenle, NFS istemcisine bir hata mesajı gönderilmesine neden olacak şekilde kilidin uygulanıp uygulanmayacağını seçmelisiniz.

    Konstantin Pyanzin

    UNIX platformundaki NFS dosya sisteminin temel özellikleri.

    Mutluluk, arzularımızın diğer insanların yetenekleriyle örtüştüğü zamandır.

    "Vremekko"

    Ağ dosya sistemleri önemli bir rol oynadı, oynuyor ve oynamaya devam edecek. bilgi altyapısı. Uygulama sunucularının artan popülaritesine rağmen, dosya hizmeti, bilgi paylaşımını organize etmenin evrensel bir yolu olmaya devam ediyor. Ayrıca, birçok uygulama sunucusu aynı anda dosya sunucuları.

    UNIX işletim sistemi şu anda bir tür rönesans yaşıyor ve bu artışın çoğu, özgür Linux işletim sistemine olan ilgiye borçlu. Aynı zamanda, masaüstü bilgisayarlarda, başta Windows 9x ve Windows NT/2000 olmak üzere Windows'un çeşitli sürümleri kullanılmaktadır, ancak UNIX'in ücretsiz olarak dağıtılan çeşitleri burada da yavaş yavaş vatandaşlık kazanmaktadır.

    Pek çok kuruluş için, UNIX bilgisayarlarında bir ağ dosya hizmeti barındırmak, böyle bir hizmetin yeterli performansa ve güvenilirliğe sahip olması koşuluyla çok çekici bir çözümdür. UNIX ve Windows dosya sistemleri arasındaki, öncelikle dosya adlandırma şemaları, izinler, kilitler ve sistem çağrıları dosyalara erişirken, heterojen bir UNIX/Windows ortamında erişim şeffaflığının sağlanması özellikle önemlidir. Ayrıca, UNIX dosya sunucularının var olan dosya sunucularına ek olarak kurulması alışılmadık bir durum değildir. Windows sunucuları NT ve Netware.

    UNIX işletim sistemi için, Microsoft (SMB), NetWare (NCP), Macintosh (AFP) ağlarında kullanılanlar da dahil olmak üzere, az çok popüler olan tüm ağ dosya sistemlerinin uygulamaları vardır. Tabii ki, UNIX ağlarının başta NFS ve DFS olmak üzere kendi protokolleri vardır. Herhangi bir UNIX sunucusunun aynı anda NFS ve SMB hizmetleri (ayrıca NCP ve AFP) sağlayabileceğini ve böylece bir ağ altyapısı oluştururken ek esneklik sağlayabileceğini unutmayın.

    UNIX ağ dosya sistemlerinin çeşitliliğine rağmen tartışmasız liderler NFS (Ağ Dosya Sistemi, gerçek çeviri - ağ dosya sistemi) ve SMB'dir (Hizmet Mesaj Bloğu). Bu makale, NFS'nin yeteneklerine odaklanacaktır. Aynı zamanda, önümüzdeki sayılardan birinde UNIX platformunda SMB'nin özelliklerini ve her şeyden önce UNIX/Windows ağlarında kendini kanıtlamış Samba ürününü ele almayı planlıyoruz.

    NFS SÜRÜMLERİ

    NFS ağ dosya sisteminin ilk uygulaması, 1985 yılında Sun Microsystems tarafından geliştirilmiştir. O zamandan beri NFS, on milyonlarca kurulumla UNIX dünyasında yaygınlaştı. UNIX'e ek olarak, bir sunucu platformu olarak NFS sistemi VMS, MVS ve hatta Windows işletim sistemlerinde uygulama bulmuştur.

    NFS, UNIX için "yerel" dosya sistemidir ve benzersiz bir şekilde UNIX dosya işlemlerinin mantığını izler. Bu, dosya ad alanını ve izinleri ifade eder. Ayrıca NFS desteği, UNIX benzeri işletim sistemlerinin tüm popüler sürümlerinin çekirdeğinde doğal olarak yerleşiktir.

    Şu anda, NFS ikinci ve üçüncü sürümlerle temsil edilmektedir (NFS'nin ilk sürümü piyasada hiç görünmedi). Bir dizi sınırlamaya rağmen, NFS v2 çok popülerdir; serbestçe dağıtılan UNIX'in (özellikle Linux) ve bazı ticari UNIX'in parçası olan odur.

    NFS'nin üçüncü sürümü, ağ dosya sisteminin performansını, güvenliğini ve yönetim kolaylığını iyileştirmek için Sun, IBM, Digital ve diğer şirketlerin ortak çabalarıyla 90'ların ortalarında geliştirildi. NFS v3, önceki NFS belirtimi ile geriye dönük uyumludur, yani bir NFS v3 sunucusu yalnızca NFS v3 istemcilerine değil, aynı zamanda NFS v2 istemcilerine de hizmet verebilir.

    Piyasadaki oldukça uzun varlığına rağmen, NFS v3, kurulum sayısı açısından hala NFS v2'den daha düşüktür. Bu düşüncelerden yola çıkarak, önce NFS v2'nin ana özelliklerine odaklanacağız ve ardından NFS'nin üçüncü sürümündeki yeniliklerle tanışacağız.

    Aynı NFS sürümünün belirli uygulamalarının birbirinden biraz farklı olabileceğini unutmayın. Farklılıklar, her şeyden önce iblislerin bileşimi, isimleri, yerleri ve isimleri ile ilgilidir. yapılandırma dosyaları NFS. Ek olarak, NFS uygulamaları UNIX'in yeteneklerine ve özelliklerine bağlıdır. Örneğin, NFS v2, ACL'leri destekler, ancak yalnızca bu tür desteğin çekirdeğe yerleşik olduğu UNIX çeşitlerinde. Bu nedenle, NFS'yi tanımlarken en genel durumu ele alacağız.

    PROTOKOLLER NFS V2

    Şekil 1, referansa göre NFS v2 ağ modelini göstermektedir. OSI modeli. Çoğu TCP/IP ağ hizmetinin aksine, NFS açıkça sunum ve oturum katmanı protokollerini kullanır. NFS, Uzaktan Yordam Çağrıları (RPC'ler) konseptini temel alır. Bu konsepte göre, uzak bir kaynağa (örneğin, bir dosyaya) erişirken, yerel bilgisayardaki bir program normal bir sistem çağrısı gerçekleştirir (diyelim ki bir dosya açma işlev çağrısı), ancak aslında prosedür uzaktan yürütülür - üzerinde kaynak sunucusu. Bu durumda, kullanıcı işlemi aramanın yerel olarak mı yoksa uzaktan mı yapıldığını belirleyemez. İşlemin, sunucu görevi gören uzak bir bilgisayardaki bir kaynağa eriştiğini belirledikten sonra, çekirdek veya özel bir sistem arka plan programı, yordamın argümanlarını tanımlayıcısıyla birlikte bir ağ paketine paketler, sunucuyla bir iletişim oturumu açar ve bunu iletir. ona paket. Sunucu alınan paketi açar, istenen prosedürü ve bağımsız değişkenleri belirler ve ardından prosedürü yürütür. Sunucu daha sonra prosedürün dönüş kodunu kullanıcı sürecine ileten istemciye gönderir. Bu nedenle RPC, OSI modelinin oturum katmanıyla tamamen tutarlıdır.

    Adil bir soru ortaya çıkıyor: NFS ağ modeli neden özel bir sunum katmanı protokolüne ihtiyaç duyuyor? Buradaki nokta, Sun'ın NFS'yi ihtiyatlı bir şekilde makine sözcüğünde farklı bayt sıralaması, kayan nokta sayılarının farklı gösterimi, uyumsuz yapı hizalama sınırları vb. dahil olmak üzere farklı sistem mimarilerine sahip bilgisayarların bulunduğu heterojen ağlarda kullanmayı amaçlamasıdır. prosedür argümanlarının aktarımı, yani yapılandırılmış veriler, o zaman bir sunum katmanı protokolünün varlığı, heterojen bir ortamda acil bir ihtiyaçtır. Bu nedenle, harici veri temsili protokolü (eXternal Data Representation, XDR) kullanılır. İşlemcinin sistem mimarisine bağlı olmayan sözde kanonik veri temsil biçimini açıklar. RPC paketlerini iletirken, istemci yerel verileri kurallı biçime dönüştürür ve sunucu bunun tersini yapar. Kanonik XDR formunun, SPARC ve Motorola işlemci aileleri için benimsenen veri sunumuna karşılık geldiğini unutmayın. Benzer bir veri sunumu biçiminin uygulandığı sunucularda, bu, dosya sunucusuna yoğun erişim durumunda rakiplere göre bazı (ancak büyük olasılıkla mikroskobik) performans avantajı elde etmenizi sağlar.

    NFS v2'de taşıma protokolü olarak UDP seçilmiştir. Geliştiriciler bunu RPC oturumunun kısa sürmesiyle açıklıyor. Ayrıca, uzaktan prosedürlerin yürütülmesi açısından, her bir RPC paketi bağımsızdır, yani her paket, sunucuda yapılması gerekenler veya prosedürün sonuçları hakkında eksiksiz bilgi içerir. RPC hizmetleri genellikle bağlantısızdır, yani sunucu geçmişte hangi istemci isteklerinin işlendiğine ilişkin bilgileri depolamaz: örneğin, istemcinin verileri dosyada en son nereden okuduğu. İstemci, sunucu yeniden başlatıldıktan hemen sonra dosya işlemlerine devam edebildiğinden, bir ağ dosya sistemi için bu kesin bir güvenilirlik avantajıdır. Ancak bu şema, dosyaları yazarken ve kilitlerken sorunlarla doludur ve bunları aşmak için NFS geliştiricileri çeşitli geçici çözümler kullanmak zorunda kaldılar (UDP kullanmak başka bir dizi özel sorun yaratır, ancak bunlara daha sonra değineceğiz).

    NFS'ye dahil olan RPC hizmetleri ile diğer ağ sunucusu hizmetleri arasındaki önemli bir fark, inetd superdaemon'u kullanmamalarıdır. Telnet veya rlogin gibi sıradan ağ hizmetleri, yasak olmasa da genellikle sistem başlangıcında arka plan programı olarak başlatılmaz. Çoğu zaman, TCP ve UDP protokollerinin yazılım portlarını "dinleyen" inetd superdaemon'u kullanırlar. Hizmetler, superdaemon'un yapılandırma dosyasında tanımlanır (genellikle /etc/inetd.conf). için bir talep aldıktan sonra yazılım bağlantı noktası istemci tarafında, inetd uygun süreci bir çocuk olarak başlatır ağ hizmeti(örneğin, isteği işleyen in.rlogind).

    RPC hizmetleri inetd süper arka plan programını kullanmaz, çünkü daha önce de belirtildiği gibi, bir RPC oturumu çok kısa sürer, aslında yalnızca tek bir isteğin işlenmesi sırasında. Yani, her istek için inetd, UNIX için çok pahalı olan RPC hizmetinin yeni bir alt sürecini başlatmaya zorlanacaktır. Benzer nedenlerle, bir RPC işlemi yeni işlemler oluşturamaz ve birden çok isteğe paralel olarak hizmet veremez. Bu nedenle, performansı artırmak için RPC hizmetleri birden çok eşzamanlı arka plan programı örneği olarak çalıştırılır. Aynı zamanda, belirli bir arka plan programının örneklerinin sayısı, istemci sayısıyla doğrudan ilişkili değildir. Bir arka plan programı bile birçok istemciye hizmet verebilir, ancak tek seferde tek bir isteği işleyebilir, geri kalanı kuyruğa alınır.

    RPC hizmetleri ile normal ağ hizmetleri arasındaki bir diğer önemli fark, önceden tanımlanmış UDP yazılım bağlantı noktalarını kullanmamalarıdır. Bunun yerine, sözde bir portmapper bağlantı noktası çeviri sistemi kullanılır. Bunu desteklemek için, sistem önyüklemesinde özel bir portmap arka plan programı başlatılır. Bağlantı noktası çeviri sistemi içinde, her bir RPC hizmetine bir program numarası, sürüm numarası, prosedür numarası ve protokol (UDP veya TCP) atanır. Program numarası, belirli bir RPC hizmetini benzersiz şekilde tanımlar. /etc/rpc dosyasının içeriğinden RPC hizmet adları ile program numaraları arasındaki ilişki görülebilir. Her RPC programı, numaralarıyla tanımlanan bir dizi prosedürü destekler. Prosedür numaraları ilgili başlık dosyalarında bulunabilir: örneğin, NFS hizmeti için /usr/include/nfs/nfs.h dosyasında belirtilirler.

    Özellikle, NFS hizmeti 100003 program numarasına sahiptir ve "dosya aç", "blok oku", "dosya oluştur" vb. prosedürleri içerir. Uzak prosedürler çağrılırken, prosedür argümanlarıyla birlikte, RPC paketi servis programından geçer. numarası, prosedür numarası ve sürüm numarası. Sürüm numarası, hizmetin yeteneklerini tanımlamak için kullanılır. Gerçek şu ki, geliştiriciler NFS hizmetini sürekli olarak geliştiriyorlar. yeni bir versiyonöncekilerle tamamen geriye dönük uyumlu.

    Portmap çevirmeninin çalışma prensibi oldukça basittir. Herhangi bir RPC hizmeti başlatılırken (özellikle işletim sistemi önyüklemesi sırasında), portmap arka plan programı kullanılarak kaydedilir. Bir sunucuda başlatıldığında, RPC hizmeti boş bir yazılım bağlantı noktasını arar, kendisi için ayırır ve bağlantı noktası numarasını bağlantı noktası haritası arka plan programına bildirir. Bir sunucuyla iletişim kurmak için, bir RPC istemcisinin önce sunucunun bağlantı noktası haritasına bakması ve sunucudaki belirli bir RPC hizmeti tarafından hangi yazılım bağlantı noktasının kullanıldığını sorması gerekir. Ancak o zaman müşteri hizmetle doğrudan iletişim kurabilir. Bazı durumlarda, istemci istenen hizmetle dolaylı olarak iletişim kurar, yani önce müşteri adına RPC hizmetini talep eden portmap arka plan programı ile iletişim kurar. RPC hizmetlerinden farklı olarak, portmap port çeviricisi her zaman önceden tanımlanmış port 111'e bağlanır, böylece istemci portmap ile standart şekilde iletişim kurar.

    BİLEŞİM NFS V2

    Genel olarak, portmap'e ek olarak, NFS sunucusu rpc.mountd, nfsd, rpc.lockd, rpc.statd arka plan programlarını içerir. UNIX platformunda çalışan bir NFS istemcisinin biod (isteğe bağlı), rpc.lockd ve rpc.statd arka plan programlarının çalışıyor olması gerekir.

    Daha önce bahsedildiği gibi, NFS desteği UNIX'te çekirdek düzeyinde uygulanmaktadır, bu nedenle tüm arka plan programlarına ihtiyaç yoktur, ancak bunlar dosya işlemlerinin performansını önemli ölçüde artırabilir ve dosyaları yazarken kilitlemenize izin verebilir.

    rpc.mountd arka plan programı, dosya sistemlerini bağlamak için istemci isteklerini işler. Bağlama protokolü NFS'nin bir parçası olmadığı için bağlama hizmeti ayrı bir arka plan programı olarak uygulanır. Bunun nedeni, bağlama işleminin dosya adı sözdizimine yakından bağlı olması ve dosyaları adlandırma ilkelerinin UNIX ile örneğin VMS arasında farklılık göstermesidir.

    nfsd arka plan programı, NFS RPC isteklerini kabul eder ve bunlara hizmet eder. Performansı artırmak için bir sunucuda birden çok nfsd örneği çalıştırmak yaygın bir durumdur.

    Hem istemcide hem de sunucuda çalışan rpc.lockd arka plan programı, dosyaları kilitlemeye adanmışken, rpc.statd arka plan programı (sunucu ve istemcide de çalışır), otomatik olarak geri yüklenmeleri gerekebileceği ihtimaline karşı kilit istatistiklerini tutar. NFS hizmeti çöküyor.

    İstemcide çalışan biod arka plan programı, performansı büyük ölçüde artıran hem ileri okuma hem de arkadan yazma işlemlerini yapabilir. Ancak, müşterinin çalışması için biod varlığı gerekli değildir. İstemci makinede performansı daha da artırmak için birkaç biod arka plan programı yüklenebilir.

    Sunucuda çalışan başka bir daemon, DOS/Windows istemcileri için kimlik doğrulama ve yazdırma hizmetlerinden sorumludur, bazı sistemlerde pcnfsd, bazılarında ise in.pcnfsd olarak adlandırılır.

    Ek olarak, NFS paketi çeşitli sistem yardımcı programlarını ve tanılama programlarını (showmount, rpcinfo, exportfs, nfsstat) içerir.

    İHRACAT KURALLARI

    İstemcilerin NFS sunucusuna uzaktan bağlayabileceği dosya sistemleri ve dizinler açıkça belirtilmelidir. Bu prosedür, NFS'de kaynakları "dışa aktarma" olarak adlandırılır. Aynı zamanda, bir NFS sunucusu, örneğin bir SMB sunucusunun aksine, dışa aktarılan kaynaklarının bir listesini yayınlamaz. Ancak istemci sunucudan böyle bir liste talep edebilir. Sunucu tarafında, bağlama isteklerine hizmet vermekten rpc.mountd arka plan programı sorumludur.

    NFS dosya paylaşımlarını dışa aktarmak için dört temel kural izlenir.

    1. Dosya sistemi, dizinler ve dosyalar olan bir bütün olarak veya parçalar halinde dışa aktarılabilir. Dışa aktarılan en büyük birimin dosya sistemi olduğunu unutmayın. Bir dosya sistemi (/usr/bin) sunucudaki başka bir dosya sisteminin (/usr) altına monte edilmişse, /usr sisteminin dışa aktarılması /usr/bin sistemini etkilemez.
    2. Yalnızca yerel dosya kaynaklarını dışa aktarabilirsiniz, başka bir deyişle, sunucuya yabancı bir dosya sistemi takılıysa, yani başka bir sunucuda bulunuyorsa, yeniden dışa aktarılamaz.
    3. Ayrı dosya sistemleri olmadıkça, zaten dışa aktarılmış bir dosya sisteminin alt dizinlerini dışa aktaramazsınız.
    4. Üst dizin bağımsız bir dosya sistemi olmadığı sürece, zaten dışa aktarılmış bir dizinin üst dizinlerini dışa aktaramazsınız.

    Bu kuralların herhangi bir ihlali, NFS'nin çalışmasında bir hataya neden olacaktır.

    Dışa aktarılan kaynakların tablosu /etc/exports dosyasında bulunur. Ne yazık ki, bu dosyanın sözdizimi UNIX'e özgüdür, bu nedenle Solaris'i örnek olarak kullanacağız. /etc/exports dosyası şu formattaki metin satırlarından oluşur:

    -

    En popüler seçeneklerden bazıları Tablo 1'de listelenmiştir. Aslında seçenekler, istemciler tarafından dışa aktarılan kaynaklara erişim haklarını tanımlar. Dışa aktarma sırasında listelenen izinlerin, dosya sisteminin kendisinde geçerli olan izinleri hiçbir şekilde geçersiz kılmadığını unutmamak önemlidir. Örneğin, dosya sistemi yazılabilir olarak dışa aktarılırsa ve belirli bir dosya salt okunur ise, o zaman onu değiştirmek mümkün olmayacaktır. Böylece dışa aktarırken erişim hakları ek bir filtre görevi görür. Ayrıca, örneğin, dosya sistemi ro (salt okunur) seçeneğiyle dışa aktarılırsa, istemci onu rw (okuma / yazma) seçeneğiyle bağlama hakkına sahiptir, ancak yazma girişimi bir hata mesajıyla sonuçlanacaktır. .

    Erişim seçeneği, kaynağı bağlama izni olan ana bilgisayarları belirtmenize olanak tanır. Buna göre, içinde belirtilenler dışında başka hiçbir ana bilgisayar, kaynak üzerinde işlem yapma ve dolayısıyla işlem gerçekleştirme yeteneğine sahip değildir.

    Bilgi yazabilecek hostların listesi rw seçeneği ile belirtilir. Ana bilgisayar listesi rw seçeneğinde belirtilmemişse, herhangi bir ana bilgisayarın yazma hakkı vardır.

    Kök seçeneği, yerel kök süper kullanıcılarının dışa aktarılan kaynakta sunucunun kök ayrıcalıklarını aldığı ana bilgisayarları belirtmenize olanak tanır. Aksi halde hosta rw hakları verilse bile üzerindeki root kullanıcı, hiçkimse kullanıcı (uid=-2), yani minimum erişim haklarına sahip kullanıcı ile eşitlenir. Yukarıdakiler özellikle uzak kaynağa erişim hakları için geçerlidir ve müşterinin yerel kaynaklarına erişim haklarını etkilemez.

    Anon ve güvenli seçenekler, NFS kimlik doğrulama şeması açıklanırken tartışılacaktır.

    MONTAJ KURALLARI

    Sunucu için dışa aktarılan kaynaklar bir dosya sistemi veya ayrı bir dizin görevi görebilirken, istemci için her zaman dosya sistemleri gibi görünürler. NFS desteği UNIX çekirdeğinde yerleşik olduğundan, NFS dosya sistemlerini bağlama işlemi standart bağlama yardımcı programı tarafından gerçekleştirilir (NFS'yi bağlamak için ayrı bir arka plan programı gerekli değildir) ve yalnızca bağlanan dosya sisteminin NFS. Bağlamanın başka bir yolu da /etc/fstab dosyasıdır (UNIX'in bazı sürümlerinde /etc/filesystems). Bu durumda, uzak NFS sistemleri (ve yerel olanlar) işletim sistemi önyükleme aşamasında monte edilir. Bağlama noktaları, diğer NFS dosya sistemlerinin bir parçası da dahil olmak üzere herhangi biri olabilir, yani NFS sistemleri birbirinin üzerine "dizilebilir".

    Ana NFS bağlama seçenekleri Tablo 2'de listelenmiştir.

    bg seçeneği, arka planda bağlamanıza izin verir, bu durumda diğer bağlama komutlarını çalıştırabilirsiniz.

    Birkaç sert/yumuşak seçenek çok ilginç görünüyor. "Zor" bir bağlamayla, istemci ne olursa olsun dosya sistemini bağlamaya çalışacaktır. Sunucu kapalıysa bu, tüm NFS hizmetinin askıda kalmasına neden olur: dosya sistemine erişen işlemler, RPC isteklerinin yürütmeyi bitirmesini bekleme durumuna geçer. Kullanıcı işlemleri açısından, dosya sistemi çok yavaş bir yerel disk gibi görünecektir. Sunucu çalışma durumuna geri döndüğünde, NFS hizmeti hiçbir şey olmamış gibi çalışmaya devam edecektir. intr seçeneğinin kullanılması, KESME sistem sinyalinin sabit bağlama işlemini iptal etmesine izin verir.

    Yumuşak bağlamayla, NFS istemcisi, retans ve timeo seçenekleri tarafından belirtildiği gibi sunucuya bağlanmak için birkaç girişimde bulunur (bazı sistemler özel bir yeniden deneme seçeneğini de destekler). Sunucu yanıt vermezse, sistem bir hata mesajı verir ve bağlanma girişimini durdurur. Dosya işlemlerinin mantığı açısından bakıldığında, bir sunucu başarısız olduğunda, yumuşak bağlama yerel bir disk arızasını taklit eder. Yeniden aktarım (yeniden deneme) seçeneği belirtilmemişse, yeniden deneme sayısı bu UNIX sistemi için varsayılan değerle sınırlıdır. Retrans ve timeo seçenekleri yalnızca bağlamalar için değil, NFS dosya sisteminde gerçekleştirilen tüm RPC işlemleri için geçerlidir. Diğer bir deyişle, istemci bir yazma işlemi gerçekleştirirse ve bu sırada ağ veya sunucu başarısız olursa, istemci istekleri yeniden denemeye çalışır.

    "Yumuşak" veya "sert" modlardan hangisinin daha iyi olduğu sorusuna kesin olarak cevap vermek imkansızdır. Geçici olarak başarısız olduğunda sunucudaki verilerin tutarlı olması gerekiyorsa, "sabit" bir bağlama tercih edilir. Bu mod, bağlı dosya sistemlerinin, özellikle disksiz makineler için istemcinin çalışması için hayati önem taşıyan programlar ve dosyalar içerdiği durumlarda da vazgeçilmezdir. Diğer durumlarda, özellikle salt okunur sistemler söz konusu olduğunda, yumuşak montaj modu daha çok tercih edilir gibi görünüyor.

    DOĞRULAMA VE GÜVENLİK

    Daha önce de belirtildiği gibi, her bir RPC paketi kendi içindedir. Ayrıca, genel olarak NFS durum bilgisi sağlamaz, yani müşteriler tarafından daha önce hangi isteklerin yapıldığının kaydını tutmaz ve ayrıca müşterilerin çalışmalarını izlemez. Bu nedenle, uzaktan prosedür çağrılarının kullanıldığı sistemlerde güvenlik sorunu son derece alakalı hale gelir.

    NFS'de kimlik doğrulama, yalnızca dosya sistemini bağlama aşamasında ve yalnızca istemci makinenin alan adına (veya IP adresine) dayalı olarak gerçekleştirilir. Yani, bir NFS istemcisi (burada bir bilgisayar kullanıcısını değil, bir bilgisayarı kastediyoruz) sunucuya bir bağlama isteği ile erişirse, sunucu erişim haklarını /etc/exports tablosuna göre belirlerken, istemci tarafından tanımlanır. bilgisayarın adı (IP adresi). İstemcinin dışa aktarılan kaynak üzerinde belirli işlemleri gerçekleştirmesine izin verilirse, müşteriye belirli bir "sihirli sayı" (sihirli çerez) bildirilir. İstemci, yetkisini kanıtlamak için bu numarayı her RPC isteğine dahil etmelidir.

    Aslında bu, tüm basit istemci kimlik doğrulama araçları setidir, ancak kullanıcıların kimliği hiçbir şekilde doğrulanmaz. Ancak, her RPC isteği, isteği başlatan kullanıcının uid'sini ve kullanıcının ait olduğu gid grup kimliklerinin bir listesini içerir. Ancak bu tanımlayıcılar, kimlik doğrulama için değil, belirli bir kullanıcının dosyalara ve dizinlere erişim haklarını belirlemek için kullanılır.

    Uid ve g'nin sunucu tarafında değil, istemci tarafında tanımlandığını unutmayın. Bu nedenle, yöneticiler /etc/passwd (ve /etc/group) içeriğini istemciler ve NFS sunucuları arasında koordine etme sorunuyla karşı karşıyadır, böylece sunucudaki Vasya kullanıcısına Petya kullanıcısının hakları atanmaz. Büyük ağlar için bu, ciddi zorluklar sunar. Ağ Bilgi Hizmetini kullanarak kullanıcı veritabanının ve /etc/hosts, /etc/rpc, /etc/services, /etc/protocols, /etc/aliases, vb. sistem dosyalarının tutarlılığını sağlayabilirsiniz. (Ağ Bilgi Sistemi, NIS), 1985 yılında Sun tarafından geliştirildi ve UNIX'in çoğu sürümüne dahil edildi (daha gelişmiş sürümü olan NIS + geniş kullanım bulamadı). NIS, ilk yaklaşımda Windows NT dizin hizmetine benzeyen ve merkezi olarak depolamanıza ve işlemenize izin veren bir bilgi hizmetidir. sistem dosyaları. Bu arada NIS, NFS ile aynı prensip üzerine kuruludur, özellikle RPC ve XDR protokollerini kullanır.

    NFS'nin bir diğer önemli özelliği de her RPC isteğinde kullanıcının gid listesinin iletilmesidir. Çoğu NFS uygulaması, RFC paketinin boyutunu sınırlamak için grup sayısını 8 veya 16'dan fazla olacak şekilde sınırlar. Bir kullanıcı birden fazla grubun üyesiyse, bu, sunucudaki erişim haklarının belirlenmesinde hatalara yol açabilir. Bu sorun, kurumsal dosya sunucuları için çok önemlidir. ACL'leri kullanmak radikal bir çözümdür, ancak ne yazık ki UNIX'in tüm türleri bunları desteklemez.

    NFS'de benimsenen kimlik doğrulama sistemi çok zayıftır ve güvenilir koruma. NFS ile uğraşan herkes, güvenlik sistemini atlamanın ne kadar kolay olduğunu bilir. Bunu yapmak için, sahte IP adresleri (IP-spoofing) veya adlar (DNS-spoofing) yöntemlerini kullanmak bile gerekli değildir. Bir saldırganın "sihirli numarayı" ele geçirmesi yeterlidir ve gelecekte müşteri adına eylemler gerçekleştirebilir. Ek olarak, "sihirli sayı" bir sonraki sunucu yeniden başlatmasına kadar değişmez.

    Çok sayıda İnternet sunucusunda, NFS'yi kırmanın çok egzotik yolları da dahil olmak üzere başka yollar bulabilirsiniz. Keşfedilen "deliklerin" sayısı binlercedir. Bu nedenle, NFS v.2'nin yalnızca güvenli ağlarda kullanılması önerilir.

    Bu değerlendirmelere dayanarak Sun, hem asimetrik hem de simetrik şifreleme anahtarlarını kullanan SecureRPC protokolünü geliştirdi. Aynı zamanda, yalnızca ana bilgisayarların değil, kullanıcıların da kimliğini doğrulamak için kriptografik yöntemler kullanılır. Ancak, verilerin kendisi şifrelenmez. Ne yazık ki, ABD hükümetinin ihracat kısıtlamaları nedeniyle, tüm UNIX'ler SecureRPC desteği ile gönderilmemektedir. Bu nedenle, bu protokolün yetenekleri üzerinde durmayacağız. Bununla birlikte, UNIX sürümünüz SecureRPC'yi destekliyorsa, Hal Stein'ın O'Reilly & Associates tarafından yazılan "NFS ve NIS'yi Yönetme" kitabı, kurulumda paha biçilmez bir yardım olacaktır.

    Başka bir sorun, MS-DOS ve Windows 3.x/9x platformlarındaki NFS istemcileriyle ilgilidir. Bu sistemler tek kullanıcılıdır ve geleneksel NFS araçlarını kullanarak bir kullanıcıyı tanımlamak mümkün değildir. DOS/Windows kullanıcılarının kimliğinin doğrulanması amacıyla, sunucuda pcnfsd arka plan programı başlatılır. NFS sürücülerini bir istemci makineye bağlarken (bağlarken), bir kullanıcı adı ve parola ister;

    Windows NT çok kullanıcılı bir işletim sistemi olmasına rağmen, kullanıcı veri tabanı ve kullanıcı kimlik doğrulama şeması UNIX'inkilerle uyumsuzdur. Bu nedenle, Windows NT tabanlı NFS istemcileri de pcnfsd'nin yeteneklerini kullanmak zorunda kalır.

    Kullanıcı kimlik doğrulamasına ek olarak pcnfs, DOS/Windows istemci sitelerinden UNIX yazdırmaya izin verir. Doğru, Windows NT başlangıçta UNIX sunucularına yazdırmanıza da izin veren LPR.EXE programını içerir.

    DOS/Windows makinelerinde dosya ve NFS hizmetlerine erişmek için özel istemci yazılımları yüklemeniz gerekir ve bu ürünler çok pahalıdır.

    Ancak, NFS dosyalarını dışa aktarma seçeneklerine geri dönelim (bkz. Tablo 1). Anon seçeneği, DOS/Windows kullanıcısının kendi kimliğini doğrulayamaması (yanlış parola verildiğinde) veya SecureRPC aracılığıyla bağlanan ana bilgisayarın kullanıcısının kimliğinin doğrulanmaması durumunda kullanıcı tanımlayıcı uid'sini belirtir. Varsayılan olarak, anon uid=-2'ye sahiptir.

    SecureRPC protokolü kullanıldığında güvenli seçeneği kullanılır.

    MİMARİ ÖZELLİKLER NFS V2

    NFS dosya sistemleri iki koşula uymalıdır (bu arada, bu gereksinimler yalnızca NFS için değil, diğer ağ dosya sistemleri için de geçerlidir).

    1. İstemci kullanıcı programlarının bakış açısından, NFS dosya sistemi olduğu gibi yerel disk. Programların NFS dosyalarını normal dosyalardan ayırt etme yolu yoktur.
    2. NFS istemcisi, sunucu olarak hangi platformun kullanıldığını belirleyemiyor. UNIX, MVS ve hatta Windows NT olabilir. Sunucu mimarisindeki farklılıklar, NFS yetenekleri açısından değil, yalnızca belirli işlemlerin düzeyini etkiler. müşteri için dosya yapısı NFS, yerel bir sisteme benzer.

    UNIX sanal dosya sistemi (Sanal Dosya Sistemi, VFS) kullanılarak ilk şeffaflık düzeyi elde edilir. VFS, yalnızca NFS ile değil, aynı zamanda UFS, ext2, VxFS vb. yerel sistemlerle de etkileşim kurmaktan sorumludur.

    İkinci şeffaflık düzeyi, yapıları UNIX dosya sistemlerindeki düğümlerle ilişkilendirilebilen sanal düğümlerin (sanal düğümler, vnode'lar) kullanılmasıyla sağlanır.

    NFS dosya sistemlerindeki işlemler, VFS işlemleridir, tek tek dosya ve dizinlerle etkileşimler ise vnode işlemleri tarafından tanımlanır. NFS v2'deki RPC protokolü, yalnızca dosyalar ve dizinler üzerinde değil, aynı zamanda özniteliklerinde de işlemlerle ilgili 16 prosedürü açıklar. RPC çağrıları ile vnode arayüzünün farklı kavramlar olduğunu anlamak önemlidir. Vnode arabirimleri, yerel veya uzak dosya sistemlerine erişim için işletim sistemi hizmetlerini tanımlar. NFS'den RPC, vnode arabirimlerinden birinin özel bir uygulamasıdır.

    Okuma/yazma işlemleri istemci tarafında önbelleğe alınır, yani istemci dosya ve dizinlerin içeriğini önbelleğe alır. Tipik olarak, NFS önbellek arabelleği boyutu 8 KB'dir. İstemcide biyod arka plan programları çalışıyorsa, okuma önceden yapılır ve yazma tembel modda yapılır. Örneğin, bir kullanıcı işlemi bilgi yazarsa, veriler önbellek arabelleğinde toplanır ve ancak o zaman gönderilir, genellikle tek bir RPC paketinde. Yazma işlemi sırasında, çekirdek derhal kontrolü işleme geri verir ve RPC istek iletme işlevleri biod'a aktarılır. Biyod arka plan programları çalışmıyorsa ve çekirdek çok iş parçacıklı RPC işlemeyi desteklemiyorsa, çekirdek RPC paketlerini tek iş parçacıklı modda iletmelidir ve kullanıcı işlemi aktarımın bitmesini bekleme durumuna girer. Ancak bu durumda, NFS önbelleği hala kullanılıyor.

    NFS dosyalarının ve dizinlerinin içeriğine ek olarak, dosya ve dizin öznitelikleri istemci tarafında önbelleğe alınır ve öznitelik önbelleği periyodik olarak (genellikle birkaç saniyede bir) güncellenir. Bunun nedeni, niteliklerin değerinin bir dosyanın veya dizinin durumunu yargılamak için kullanılabilmesidir. Bu yaklaşımı bir örnekle açıklayalım. Bir kullanıcı bir dosyadan okuma işlemi gerçekleştirdiğinde, dosyanın içeriği NFS önbelleğine yerleştirilir, ancak dosyanın öznitelikleri (oluşturma/güncelleme zamanı, boyut vb.) da öznitelik önbelleğine yerleştirilir. Şu anda başka bir istemci aynı dosyaya yazıyorsa, bu, farklı istemcilerin önbelleklerinde içerik tutarsızlığına yol açabilir. Ancak, öznitelik önbelleği ilk istemcide birkaç saniyede bir güncellendiğinden, özniteliklerin değiştiğini (bu durumda dosya güncelleme zamanı) algılayabilir, bu nedenle istemcinin bir dosya içeriği önbellek güncelleme işlemi gerçekleştirmesi gerekir (bu, işlem otomatik olarak gerçekleştirilir).

    İstemci isteklerine hizmet vermek için nfsd arka plan programları sunucuda çalışıyor olmalıdır. Aynı zamanda, arka plan programları sunucu disklerinden okurken bilgileri önbelleğe alır. Tüm arka plan programları, işlemci kaynaklarının en iyi şekilde kullanılmasına izin veren aynı istemci istekleri kuyruğuna hizmet eder.

    Ne yazık ki, optimum biod ve nfsd arka plan programı sayısını belirlemek çok zordur. Bir yandan, çalışan arka plan programı sayısı ne kadar fazlaysa, aynı anda işlenebilecek talep sayısı da o kadar fazladır; Öte yandan, arka plan programlarının sayısını artırmak, artan işlem geçiş yükü nedeniyle sistem performansını olumsuz etkileyebilir. NFS'de ince ayar yapmak çok zahmetli bir prosedürdür ve yalnızca istemcilerin ve kullanıcı işlemlerinin sayısını değil, aynı zamanda işlem bağlamı geçiş süresi (yani işlemci mimarisi özellikleri), RAM boyutu, sistem yükü vb. gibi özellikleri de hesaba katmayı gerektirir. Bu ayarlar en iyisidir. deneysel olarak belirlenir, ancak varsayılan ayarlar çoğu durumda çalışır (genellikle sunucuda 8 nfsd arka plan programı ve istemcilerde 4 biod arka plan programı çalışır).

    Şekil 2. NFS v2 yazma işlemi.

    NFS v2'nin çok önemli bir özelliği, yazma işlemlerinin sunucu tarafında önbelleğe alınmamasıdır (bkz. Şekil 2). Bu, NFS hizmetinin yüksek güvenilirliğini sağlamak ve bir sunucu arızası durumunda sunucu yeniden başlatıldıktan sonra verilerin bütünlüğünü sağlamak için yapıldı. Yazma önbelleği eksikliği en büyük NFS sorunu v2. Yazma işlemlerinde NFS, rakip teknolojilere göre önemli ölçüde daha düşüktür, ancak okuma işlemlerinde onlara çok az şey kaybeder. Düşük yazma performansıyla başa çıkmanın tek yolu, oldukça pahalı RAID dizilerinde olduğu gibi, güçten bağımsız yerleşik önbelleğe sahip disk alt sistemlerini kullanmaktır.

    Dağıtılmış ve küresel ağlarda çalışırken, hizmet için taşıma protokolü olarak UDP'nin seçilmesi nedeniyle NFS v2'nin başka bir dezavantajı vardır. Bildiğiniz gibi UDP, paketlerin teslimini garanti etmez, ayrıca paketlerin alınma sırası, gönderilme sırasına uymayabilir.

    Bu, aşağıdaki iki hoş olmayan sonuca yol açabilir: paket kaybı ve işlenmesinde uzun bir gecikme. İstemcinin büyük bir dosyanın okuma işlemini gerçekleştirdiğini hayal edin. Bu durumda, istemcinin önbellek arabelleğini doldurmak için sunucunun birkaç paket göndermesi gerekir. Paketlerden biri kaybolursa, istemcinin isteği tekrar etmesi ve sunucunun yanıtlar vb. üretmesi gerekir.

    Örneğin, büyük bir sunucu yükü veya ağ sorunları nedeniyle RPC isteklerinin işlenmesinin gecikmesi durumu da oldukça rahatsız edicidir. Belirtilen zaman sınırı aşılırsa, istemci paketin kaybolduğunu düşünecek ve isteği tekrarlamaya çalışacaktır. Birçok NFS işlemi için, yazma işlemi bile sunucu tarafından tekrarlanabileceğinden bu bir sorun değildir. Ancak "dizini sil" veya "dosyayı yeniden adlandır" gibi işlemler ne olacak? Neyse ki çoğu NFS uygulaması, sunucu tarafında yinelenen isteklerin önbelleğe alınmasını destekler. Sunucu, kısa bir süre içinde herhangi bir işlem için tekrarlanan bir istek alırsa, bu tür bir istek dikkate alınmaz.

    RPC sistemi bağlantının durumunu takip etmez, bu da birden fazla istemci aynı dosyaya aynı anda eriştiğinde sorun yaratır. Burada iki zorluk var:

    • özellikle ona yazarken bir dosyanın nasıl kilitleneceği;
    • NFS sunucusunun veya istemcisinin çökmesi ve yeniden başlatılması durumunda kilitlerin bütünlüğü nasıl garanti edilir?

    Bunu yapmak için, NFS iki özel arka plan programı kullanır: rpc.lockd, dosyaları kilitlemekten ve rpc.statd, kilitlerin durumunu izlemekten sorumludur (bkz. Şekil 3). Bu arka plan programları hem istemci tarafında hem de sunucu tarafında çalışır. rpc.lockd ve rpc.statd arka plan programlarının, kilit bilgilerinin saklandığı iki özel dizini (sm ve sm.bak) vardır.

    Tuhaf ve oldukça kullanışlı bir ek otomatik bağlama hizmeti, kullanıcı işlemleri bunlara eriştiğinde dosya sistemlerini otomatik olarak bağlamanıza olanak tanır. Gelecekte, automounter periyodik olarak (varsayılan olarak her beş dakikada bir) sistemin bağlantısını kesmeye çalışır. Meşgulse (örneğin, bir dosya açıksa), hizmet her zamanki gibi çalışmaya devam eder. Dosya sistemine daha fazla erişim yoksa, otomatik olarak bağlantısı kesilecektir. Automounter işlevi, özellikle popüler olan amd ve autofs gibi çeşitli programları uygular.

    NFS V3 ÖZELLİKLERİ

    NFS sürüm 3, sürüm 2 ile tamamen geriye dönük uyumludur, yani NFS v3 sunucusu hem NFS v2 hem de NFS v3 istemcilerini "anlar". Benzer şekilde, bir NFS v3 istemcisi bir NFS v2 sunucusuna erişebilir.

    NFS v3'teki önemli bir yenilik, TCP aktarım protokolü desteğidir. UDP, yerel alan ağları için harikadır, ancak yavaş ve her zaman güvenilir olmayan küresel bağlantılar için değildir. NFS v3'te, tüm istemci trafiği tek bir TCP bağlantısına çoklanır.

    NFS v3'te, özellikle yüksek hızlı ağ teknolojileri Hızlı Ethernet, Gigabit Ethernet ve ATM'nin aktif kullanımı ışığında, önbellek arabellek boyutu performans üzerinde olumlu bir etkiye sahip olan 64 KB'ye yükseltildi. Ek olarak, NFS v3, istemcide önbelleğe alınan bilgileri yalnızca RAM'de değil, aynı zamanda istemcinin yerel diskinde de saklamanıza olanak tanır (adil olmak gerekirse, NFS v2'nin bazı uygulamalarının da bu olasılığı sağladığına dikkat edilmelidir). Bu teknoloji CacheFS olarak bilinir.

    Şekil 4. NFS v3 yazma işlemi.

    Ama belki de NFS v3'ten daha da önemlisi, yazma performansındaki radikal artıştır. Artık, yazılmakta olan bilgilerin önbelleğe alınması da sunucu tarafında gerçekleştirilirken, verilerin diske yazılması gerçeğinin kaydı ve onayı özel bir taahhüt talebi kullanılarak gerçekleştirilir (bkz. Şekil 4). Bu teknolojiye güvenli eşzamansız yazma denir. Veriler sunucunun önbelleğine aktarıldıktan sonra, istemci ona, sunucunun diskine bir yazma işlemi başlatan bir kesinleştirme isteği gönderir. Buna karşılık, bilgi diske yazıldığında, sunucu müşteriye başarıyla tamamlandığına dair bir onay gönderir.

    NFS v3'teki yenilikler, 64 bit dosya sistemleri için destek ve ACL'ler için geliştirilmiş destektir.

    İleriye dönük olarak, Sun şu anda dosya sistemlerine her yerden erişim sağlayan WebNFS teknolojisini desteklemektedir. internet tarayıcısı veya Java ile yazılmış uygulamalar aracılığıyla. Herhangi bir istemci yazılımı yüklemeye gerek yoktur. WebNFS (Sun'a göre) ftp veya HTTP'ye göre üç ila beş kat performans iyileştirmesidir.

    ÇÖZÜM

    NFS protokollerinin ilkelerini bilen yönetici, hizmet için en iyi ayarları yapabilir. NFS ağ dosya sistemi, bu işletim sisteminin hemen hemen tüm sürümleriyle birlikte geldiği için UNIX ağları için idealdir. Ayrıca, NFS desteği UNIX çekirdek düzeyinde uygulanmaktadır. Linux, masaüstü düzeyinde yavaş yavaş zemin kazandıkça, NFS'nin burada da yakalama şansı var. Ne yazık ki, Windows istemci bilgisayarlarında NFS kullanımı, özel ve oldukça pahalı istemci yazılımı yükleme ihtiyacıyla ilgili bazı sorunlar yaratır. Bu tür ağlarda özellikle Samba yazılımı olmak üzere SMB hizmetinin kullanımı daha çok tercih edilir görünmektedir. Ancak, sonraki LAN sorunlarından birinde UNIX için SMB ürünlerine geri döneceğiz.