NFSv4, birleşik ağ erişimi sağlar. Paylaşılan dizinleri bir NFS istemcisine bağlayın. NFS, RPC'dir

  • 23.06.2019

Ağ Dosya Sunucusu (NFS) protokolü, kullanıcılara dosya sistemlerine uzaktan erişim sağlamak için açık bir standarttır. Merkezi dosya sistemleri, yedekleme veya virüs taraması gibi günlük görevleri gerçekleştirmeyi kolaylaştırır ve birleştirilmiş disk bölümlerinin bakımı, birçok küçük ve dağıtılmış olandan daha kolaydır.

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

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

HER ŞEY NEREDE BAŞLADI...

NFS, Sun Microsystems tarafından geliştirildi ve 1989'da İnternette Ağ Dosya Sistemi Protokolü Spesifikasyonu (NFS) başlığı altında RFC 1094 olarak göründü. Novell'in o zamanki stratejisinin dosya hizmetlerini daha da geliştirmek olduğunu belirtmek ilginçtir. Yakın zamana kadar, açık kaynak hareketi ivme kazanmadan önce Sun, ağ çözümlerinin sırlarını açıklamaya hevesli değildi, ancak o zaman bile şirket, diğer sistemlerle birlikte çalışabilirliğin önemini anladı.

RFC 1094, iki orijinal spesifikasyon içeriyordu. Sun, yayınlandığı sırada, belirtimin RFC 1813 NFS Sürüm 3 Protokol Belirtimi'nde belirtilen sonraki, üçüncü sürümünü zaten geliştiriyordu. Bu protokolün 4. Sürümü, RFC 3010 NFS Sürüm 4 Protokolünde tanımlanmıştır.

NFS, her tür UNIX ana bilgisayarında, Microsoft ve Novell ağlarında ve AS400 ve OS/390 gibi IBM çözümlerinde yaygın olarak kullanılmaktadır. Ağ krallığının dışında bilinmeyen NFS, belki de en yaygın kullanılan platformdan bağımsız ağ dosya sistemidir.

PROFESÖR UNIX'ti

NFS platformdan bağımsız bir sistem olmasına rağmen, UNIX onun atası. Başka bir deyişle, mimarinin hiyerarşisi ve dosya sisteminin yapısı, kullanıcıların ve grupların nasıl belirleneceği ve dosyalarla nasıl çalışılacağı dahil olmak üzere dosyalara erişim yöntemlerinin tümü UNIX dosya sistemine çok benzer. Örneğin, yapı olarak UNIX dosya sistemiyle aynı olan NFS dosya sistemi, doğrudan üzerine monte edilmiştir. NFS ile diğer işletim sistemlerinde çalışırken, kullanıcı kimlik bilgileri ve dosya izinleri eşleştirilir.

NFS

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

Birçok istemci/sunucu sisteminden farklı olarak NFS, bilgi alışverişi için Uzaktan Yordam Çağrıları (RPC'ler) kullanır. Tipik olarak, istemci önceden belirlenmiş bir bağlantı noktasına bağlantı kurar ve ardından protokolün özelliklerine uygun olarak belirli bir eylemi gerçekleştirmek için bir istek gönderir. Uzak prosedür çağrısı durumunda, istemci bir prosedür çağrısı oluşturur ve ardından yürütme için sunucuya gönderir. NFS'nin ayrıntılı bir açıklaması 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ının bu dizinin kaynaklarına ihtiyacı varsa, işletim sistemine kendisi ve NFS istemcisi aracılığıyla erişim sağlayan dosya adı için bir istek gönderir. Örnek olarak, ağ protokolleri hakkında "hiçbir şey bilmeyen" basit bir UNIX komut cd'sini düşünün. Emretmek

Cd / kök / usr2 /

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

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

YAKLAŞALIM

Müşterinin bakış açısından, NFS kullanarak yerel olarak uzak bir dosya sistemi kurma işlemi birkaç adım içerir. Belirtildiği gibi, NFS istemcisi, sunucuda yürütmek için bir uzaktan prosedür çağrısı yayınlayacaktır. UNIX'te istemcinin tek bir program (mount komutu) olduğunu, sunucunun ise aşağıdaki minimum set ile birkaç program olarak uygulandığını unutmayın: port eşleyici, mount arka plan programı ve NFS sunucusu ...

Başlangıçta, istemci bağlama komutu, sunucunun bağlantı noktası 111'deki istekleri dinleyen bağlantı noktası çeviri hizmetiyle etkileşime girer. İstemci bağlama komutunun çoğu uygulaması, istemci ile sunucu arasında ortak bir protokol sürümü bulma olasılığını artıran birden çok NFS sürümünü destekler. . Arama en eski sürümden başlayarak yapılır, bu nedenle paylaşılan bir sürüm bulunduğunda, istemci ve sunucu tarafından desteklenen en yeni sürüm otomatik olarak olur.

(Sunulan materyal, şu anda en yaygın olan NFS'nin üçüncü versiyonuna odaklanmıştır. Dördüncü versiyon henüz çoğu uygulama tarafından desteklenmemektedir.)

Sunucunun bağlantı noktası çeviri hizmeti, desteklenen protokole ve mount arka plan programının üzerinde çalıştığı bağlantı noktasına göre isteklere yanıt verir. Mount istemci programı önce sunucunun mount arka plan programına bağlanır ve ardından mount komutunu RPC'ye gönderir. Bu prosedür başarılı olursa, istemci uygulaması NFS sunucusuna (port 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şim kazanır.

Komutların çoğunun anlamı sezgiseldir ve sistem yöneticileri için herhangi bir zorluk yaratmaz. Aşağıdaki tcdump listesi, test-file adlı bir dosyayı okumak için UNIX cat komutu tarafından oluşturulan okuma komutunu gösterir:

10:30: 16.012010 et0> 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: 144 arama fh 32.0 / 224145 "test dosyası" 10:30: 16.012729 eth0 192.168.1.254.3476097947: yanıt ok 128 arama fh 32.0 / 224307 (DF) 10:30: 16.012729 eth0 192.168. 1.254.3476097947: yanıt 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: yanıt tamam 108 okuma (DF) 10:30: 16.013650 eth0 192.168.1.254.3492875163 : yanıt tamam 108 oku (DF)

NFS, geleneksel olarak UDP üzerinden uygulanmıştır. Ancak, NFS'nin bazı sürümleri TCP'yi destekler (TCP desteği protokol belirtiminde tanımlanmıştır). TCP'nin ana avantajı, güvenilmez ağlarda daha verimli bir yeniden iletim mekanizmasıdır. (UDP durumunda, bir hata oluşursa, birkaç UDP paketinden oluşan tam RPC mesajı yeniden gönderilir. TCP varsa, yalnızca bozuk parça yeniden gönderilir.)

NFS'DE ERİŞİM

NFS uygulamaları genellikle erişim hakları vermenin dört yolunu destekler: kullanıcı/dosya öznitelikleri aracılığıyla, paylaşılan kaynak düzeyinde, ana düğüm düzeyinde ve diğer erişim yöntemlerinin bir kombinasyonu.

İlk yöntem, tek bir kullanıcı veya grup için UNIX'in yerleşik dosya izinleri sistemine dayanır. Bakımı basitleştirmek için, kullanıcı ve grup kimliği tüm NFS istemcileri ve sunucuları arasında tutarlı olmalıdır. Güvenlik dikkatlice düşünülmelidir: NFS, oluşturuldukları sırada 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 yalnızca belirli eylemlere izin verecek şekilde hakları kısıtlamanıza olanak tanır. Örneğin, NFS dosya sistemiyle çalışmak yalnızca okuma ile sınırlandırılabilir. Çoğu NFS uygulaması, belirli kullanıcılara ve/veya gruplara paylaşılan kaynak erişimini daha fazla kısıtlamanıza izin verir. Örneğin, "İnsan Kaynakları" grubunun bilgileri görüntülemesine izin verilir, başka bir şey değil.

Ana düğüm erişimi, yalnızca dosya sisteminin belirli düğümlere bağlanmasına izin verir; bu, dosya sistemleri herhangi bir NFS özellikli düğümde kolayca oluşturulabildiğinden genellikle iyi bir fikirdir.

Birleşik erişim, yukarıdaki türleri basitçe birleştirir (örneğin, belirli bir kullanıcıya verilen erişim ile paylaşılan kaynaklar düzeyinde erişim) veya kullanıcıların yalnızca belirli bir düğümden NFS ile çalışmasına izin verir.

PENGUEN TARZINDA NFS

Sunulan Linux ile ilgili materyal, 0.1.6 nfs-utils paketi ile birlikte gelen 2.4.9 çekirdeğe sahip Red Hat 6.2'ye dayanmaktadır. Daha yeni sürümler var: Bu yazının yazıldığı sırada, nfs-utils paketinin en son güncellemesi 0.3.1'dir. Şuradan indirilebilir:.

nfs-utils paketi şu ikili dosyaları içerir: exportfs, lockd, mountd, nfsd, nfsstat, nhfsstone, rquotad, showmount ve statd.

Ne yazık ki, bazen NFS desteği Linux yöneticileri için kafa karıştırıcı olabilir, çünkü şu veya bu işlevin kullanılabilirliği doğrudan hem çekirdeğin hem de nfs-utils paketinin sürüm numaralarına bağlıdır. Neyse ki, bu alandaki durum şu anda 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ü, her çekirdek ve nfs-utils paketi kombinasyonu için kullanılabilen sistem işlevlerinin tam bir listesini sağlar. Geliştiriciler, güvenlik ve hata düzeltmelerine güçlü bir şekilde odaklanarak paketin önceki sürümlerle geriye dönük uyumluluğunu korur.

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

Linuxconf'u destekleyen dağıtımlar için, hem istemciler hem de sunucular için NFS hizmetlerini yapılandırmak kolaydır. Ancak, NFS'yi linuxconf kullanarak kurmanın hızlı yolu, hangi dosyaların oluşturulduğu veya düzenlendiği hakkında bilgi sağlamaz, bir sistem arızası durumunda durumu anlamak için bir yöneticinin bilmesi çok önemlidir. Linux'un NFS mimarisi BSD ile gevşek bir şekilde ilişkilidir, bu nedenle BSD, Sun OS 2.5 veya önceki NFS sürümlerine sahip yöneticiler için gerekli dosyaları ve destek programlarını bulması kolaydır.

/ etc / dışa aktarma dosyası, önceki BSD sürümlerinde olduğu gibi, NFS istemcilerinin erişmesine izin verilen dosya sistemlerini tanımlar. Ayrıca, yönetim ve güvenlik sorunlarıyla ilgili bir dizi ek özellik içerir ve yöneticiye bir ince ayar olanağı sağlar. Girişlerden, boş veya yorumlanmış satırlardan (yorumlar # karakteriyle başlar) oluşan bir metin dosyasıdır.

İstemcilere Lefty düğümündeki / home dizinine salt okunur erişim vermek istediğimizi varsayalım. Aşağıdaki giriş / etc / dışa aktarmada buna karşılık gelecektir:

/ ev (ro)

Burada sisteme rpc.mountd mount daemon kullanarak hangi dizinleri kullanıma açacağımızı söylememiz gerekiyor:

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

Çalıştırıldığında, exportfs komutu / etc / export belirli bir düğüme erişimi kısıtlamadığına dair bir uyarı görüntüler ve / var / lib / nfs / etab from /etc / export içinde hangi kaynakların cat ile görüntülenebileceğini söyleyen ilgili bir giriş oluşturur :

# cat / var / lib / nfs / etab / home (ro, async, wdelay, hide, güvenli, root_ squash, no_all_squash, subtree_check, secure_locks, eşleme = kimlik, 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

mount arka plan programını (rpc.mountd) başlattıktan sonra herhangi bir zamanda, / proc / fs / nfs / export dosyasının içeriğine bakarak çıktı alınabilecek tek tek dosyalar hakkında bilgi edinebilirsiniz:

# cat / proc / fs / nfs / dışa aktarma # Sürüm 1.0 # Yol İstemcisi (Bayraklar) # IP'ler / ana sayfa 192.168.1.252 (ro, root_squash, async, wdelay) # 192.168.1.252 #

Aynısı, -e parametresiyle showmount komutu kullanılarak görüntülenebilir:

# showmount -e Lefty için listeyi dışa aktar: / home (herkes) #

Kendimden biraz ileride olan showmount komutu, tüm bağlı dosya sistemlerini tanımlamak veya başka bir deyişle, showmount komutunu çalıştıran sistem için hangi düğümlerin NFS istemcisi olduğunu bulmak için de kullanılabilir. showmount -a komutu, tüm istemci bağlama noktalarını listeler:

# showmount -a Tüm bağlama noktaları solda: 192.168.1.252:/home #

Yukarıda belirtildiği gibi, çoğu NFS uygulaması bu protokolün farklı sürümlerini destekler. Linux uygulaması, mount arka plan programı için -N anahtarını belirterek çalıştırılacak NFS sürümlerinin listesini sınırlamanıza olanak tanır. Ö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

Dikkatli kullanıcılar, Linux'taki NFS arka plan programının (rpc.nfsd) 1 ve 2 sürüm paketlerini beklemesini uygunsuz bulabilir, ancak bu, ilgili protokolü desteklememe gibi istenen etkiyi sağlar. Umalım ki sonraki sürümlerin geliştiricileri gerekli düzeltmeleri yapacak ve protokolün farklı sürümlerine göre paket bileşenlerinde daha fazla tutarlılık elde edebilecektir.

"PENGUENLERLE YÜZMEK"

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

Solaris 2.6'dan devralınan özellikler, onu bir NFS istemcisi olarak çalışacak şekilde yapılandırmayı kolaylaştırır. Bu yalnızca bir komut gerektirir:

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

Önceki mount komutunun başarılı olduğunu varsayarsak, parametresiz mount komutu aşağıdaki çıktıyı verir:

# mount / on / dev / dsk / c0t0d0s0 okuma / yazma / setuid / büyük dosyalar 3 Eylül Pazartesi 10:17:56 2001 ... ... / tmp / tmp2 192.168.1.254'te:/home okuma / yazma / uzaktan kumanda açık 3 Eyl Pzt 23:19:25 2001

Kullanıcı Sunny düğümünde ls / tmp / tmp2 komutunu girdikten sonra Lefty düğümünden tcpdump çıktısını analiz edelim:

# tcpdump ana bilgisayar lefty ve ana bilgisayar 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 lefty.mcwrite.n.nfs> güneşli. 2191983953: yanıt tamam 112 getattr DIR 40755 kimlikleri 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: 43.491463 sol. mcwrite.n.nfs> güneşli.2191983954: yanıt tamam 120 erişim c0001 (DF) 06: 07: 43.492296 güneşli.2191983955> lefty.mcwrite.n.nfs: 152 readdirplus fh 0,1 / 16777984 1048 bayt @ 0x000000000 (DF) 06: 07: 43.492417 lefty.mcwrite.n.nfs> güneşli.2191983955: cevap tamam 1000 readdirplus (DF)

Sunny'nin ls'den bir dosya tanıtıcısı (fh) istediğini, Lefty'nin OK ile yanıt verdiğini ve dizin yapısını döndürdüğünü görüyoruz. Sunny daha sonra dizinin içeriğine erişim iznini kontrol eder (132 erişim fh) ve Lefty'den bir izin yanıtı alır. Sunny daha sonra tüm dizin içeriğini readdirplus rutinini kullanarak okur. Uzaktan yordam çağrıları RFC 1813'te açıklanmıştır ve bunları bu makalenin başında tanıtmıştık.

Uzak dosya sistemlerine erişim için komut dizisi çok basit olmasına rağmen, bir dizi durum yanlış bir sistem montajına yol açabilir. Bağlama noktası, dizinin monte edilebilmesi için önceden mevcut olmalıdır, aksi takdirde mkdir komutu kullanılarak oluşturulmalıdır. Genellikle istemci tarafı hatalarının tek nedeni, yerel bir bağlama dizininin olmamasıdır. NFS ile ilgili sorunların çoğu, istemci ile sunucu arasındaki uyumsuzluktan veya yanlış sunucu yapılandırmasından kaynaklanmaktadır.

Sunucu sorunlarını gidermenin en kolay yolu, sunucunun çalıştığı sitedir. Ancak, sunucuyu sizin yerinize başka biri yönetiyorsa bu her zaman mümkün değildir. Uygun sunucu hizmetlerinin düzgün yapılandırıldığından emin olmanın hızlı bir yolu, -p parametresiyle rpcinfo komutunu kullanmaktır. Solaris Sunny ana bilgisayarından, Linux ana bilgisayarında hangi RPC işlemlerinin kaydedildiğini belirleyebilirsiniz:

# rpcinfo -p 192.168.1.254 program vers proto 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 1024 mountd / 100005 3 tcp 1024 mountd 100003 2 udp 2049 udp 2049 nfs 100021 1 udp 1026 nlockmgr 100021 3 udp 1026 nlockmgr 100021 4 udp 1026 nlockmgr #

Burada, sistem çeşitli NFS protokolleri için destek gerektirdiğinde oldukça yararlı olan sürüm oluşturma bilgilerinin de sağlandığını unutmayın. Sunucuda herhangi bir servis çalışmıyorsa, bu durum düzeltilmelidir. Bağlama başarısız olursa, aşağıdaki rpcinfo -p komutu, sunucudaki mountd hizmetinin kapalı olduğunu gösterir:

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

rpcinfo komutu, belirli bir uzak işlemin etkin olup olmadığını öğrenmek için çok kullanışlıdır. -p seçeneği seçeneklerden en önemlisidir. rpcinfo'nun özelliklerine tam bir genel bakış için kılavuz sayfasına bakın.

Bir başka kullanışlı araç da nfsstat komutudur. İstemcilerin dışa aktarılan dosya sistemine gerçekten erişip erişmediğini öğrenmek ve protokol sürümüne göre istatistiksel bilgileri görüntülemek için kullanılabilir.

Son olarak, tcpdump, sistem çökmelerinin nedenini belirlemek için başka bir yararlı araçtır:

# tcpdump ana bilgisayar lefty ve ana bilgisayar güneşli -s512 tcpdump: eth0 06: 29: 51.773646'da dinleme.2191984020> lefty.mcwrite.n.nfs: 140 arama fh Bilinmeyen / 1 "test.c" (DF) 06: 29: 51.773819 lefty.mcwrite.n.nfs> güneşli.2191984020: yanıt 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 Bilinmeyen / 1 ( DF) 06: 29: 51.774670 lefty.mcwrite.n.nfs> güneşli.2191984021: yanıt 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 ok 116 arama HATA: Böyle bir dosya veya dizin yok (DF) 06:29: 51.776029 sunny.2191984023> lefty.mcwrite.n.nfs: 184 oluştur 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)

touch test.c deyimi yürütüldükten sonra elde edilen yukarıdaki liste, aşağıdaki eylem sırasını yansıtır: ilk olarak, touch komutu test.c adlı bir dosyaya erişmeye çalışır, ardından aynı ada sahip bir dizini arar ve başarısız olduktan sonra denerse, test.c dosyasını oluşturmaya çalışır ve bu da başarıya yol açmaz.

Dosya sistemi bağlandığında, en yaygın hatalar normal UNIX izinleriyle ilgilidir. Sun'ın kullanıcı kimliği veya NIS + kullanımı, tüm dosya sistemlerinde global olarak izinlerin ayarlanmasını önler. Bazı yöneticiler, okuma izinlerinin "tüm dünyaya" verildiği "açık" dizinler uygular. Ancak güvenlik nedeniyle bundan kaçınılmalıdır. Güvenlik endişelerini bir kenara bıraksanız bile, bunu kötü bir uygulama olarak kabul etmeniz gerekir, çünkü kullanıcılar nadiren herkes tarafından okunabilir kılmak amacıyla veri oluştururlar.

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

NFS SUNUCUSU SOLARIS VERSİYONU

Solaris'i bir NFS sunucusu olarak çalışacak şekilde yapılandırmak Linux kadar kolaydır. Ancak, komutlar ve dosya konumları biraz farklıdır. Solaris başlatıldığında, çalışma düzeyi 3'e ulaştığı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 / mountd

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

# / usr / lib / nfs / nfsd

2.6'dan itibaren Solaris, dışa aktarılan dosya sistemlerini belirtmek için artık bir dışa aktarma dosyası kullanmamaktadır. Dosyalar artık share komutu kullanılarak dışa aktarılır. Diyelim ki uzak ana bilgisayarların mount/export/home yapmasına izin vermek istiyoruz. Bunun için aşağıdaki komutu girelim:

Paylaş -F nfs / dışa aktarma / ana sayfa

Güvenlik önlemleri

LINUX'TA GÜVENLİK

Bazı Linux tabanlı NFS sistem hizmetleri, kontrol listeleri veya tablolar aracılığıyla erişimi kısıtlamak için ek bir mekanizmaya sahiptir. Dahili olarak, 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/denk. tcp_wrapper ile çalışma kurallarına kapsamlı bir genel bakış bu makalenin kapsamı dışındadır, ancak temel ilke şu şekildedir: eşleme önce etc / hosts.allow ve ardından / etc / hosts ile yapılır. inkar etmek. Kural bulunamazsa, istenen sistem hizmeti sunulmaz. İkinci gereksinimi atlamak 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:

TÜMÜ: Hepsi

Bundan sonra, bir veya başka bir çalışma modunu ayarlamak için / etc / hosts.allow kullanabilirsiniz. Örneğin, / etc / hosts dosyası. Bu makaleyi yazarken kullandığım izin aşağıdaki satırları içeriyordu:

Kilitli: 192.168.1.0/255.255.255.0 mountd: 192.168.1.0/255.255.255.0 bağlantı noktası haritası: 192.168.1.0/255.255.255.0 kota: 192.168.1.0/255.255.255.0 stat: 192.168.1.0/255.255.255.0

Bu, uygulama düzeyinde erişim verilmeden önce düğümlere belirli bir erişim türüne izin verir. Linux'ta, uygulama düzeyinde erişim / etc / dışa aktarma dosyası tarafından kontrol edilir. Aşağıdaki formattaki kayıtlardan oluşur:

Dışa aktarılan dizin (boşluk) düğümü | ağ (seçenekler)

"Dışa aktarılan dizin", nfsd arka plan programının istekleri işlemesine izin verilen dizindir. "Ana bilgisayar | ağ", dışa aktarılan dosya sistemine erişimi olan düğüm veya ağdır ve "seçenekler", nfsd arka plan programının bu paylaşılan kaynağın kullanımına getirdiği kısıtlamaları tanımlar - salt okunur erişim veya kullanıcı kimliği eşlemesi ...

Aşağıdaki örnekte, mcwrite.net etki alanının tamamına /home/mcwrite.net'e salt okunur erişim verilmiştir:

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

İhracat kılavuz sayfasında daha fazla örnek bulunabilir.

SOLARIS'TA NFS GÜVENLİĞİ

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

#share -F nfs -o ro = .mcwrite.net / dışa aktarma / mcwrite.net

share_nfs için kılavuz sayfası, Solaris'teki kontrol listelerini kullanarak nasıl erişim verileceğini ayrıntılı olarak açıklar.

İnternet kaynakları

NFS ve RPC deliksiz değildir. Genel olarak, NFS İnternette kullanılmamalıdır. Herhangi bir NFS erişimi sağlayarak güvenlik duvarları “delik” olmamalıdır. Ortaya çıkan herhangi bir RPC ve NFS yamasına dikkat edin; ç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 olabilir. İkincisi, belki de diğerlerine kıyasla o kadar hızlı değil, ancak oldukça eksiksiz bir ciltte ve bilgi güvenliğine ayrılmış bazı sitelerin doğasında bulunan bir sansasyon dokunuşu olmadan bilgi sağlar.

NFS: Kullanışlı ve Geleceğe Hazır Ağ Dosya Sistemi

Ağ dosya sistemi Normal bir dosya sisteminin üzerinde bir ağ soyutlaması olup, uzak bir istemcinin yerel dosya sistemlerine erişirken olduğu gibi ağ üzerinden ona erişmesine izin verir. NFS, ağ bağlantılı ilk dosya sistemi olmasa da, günümüzde UNIX®'te en işlevsel ve talep edilen ağ dosya sistemi haline geldi. NFS, birden çok kullanıcının ortak bir dosya sistemini paylaşmasına ve verileri depolamak için gereken disk alanı miktarını en aza indirecek şekilde merkezileştirmesine olanak tanır.

Bu makale, NFS tarihine kısa bir genel bakışla başlar ve ardından NFS mimarisini ve nasıl gelişeceğini keşfetmeye devam eder.

NFS'nin kısa bir tarihi

İlk ağ dosya sistemine FAL (File Access Listener) adı verildi ve 1976'da DEC (Digital Equipment Corporation) tarafından geliştirildi. Veri Erişim Protokolünün (DAP) bir uygulamasıydı ve DECnet protokol paketinin bir parçasıydı. TCP / IP'de olduğu gibi DEC, DAP dahil olmak üzere ağ protokolleri için spesifikasyonlar yayınladı.

NFS, IP üzerinden oluşturulan ilk modern ağ dosya sistemiydi. Prototipi, 1980'lerin başında Sun Microsystems tarafından geliştirilen deneysel bir dosya sistemi olarak kabul edilebilir. Bu çözümün popülaritesi göz önüne alındığında, NFS protokolü bir RFC belirtimi olarak tanıtıldı ve ardından NFSv2'ye geliştirildi. NFS, diğer istemciler ve sunucularla birlikte çalışma yeteneği nedeniyle kendisini hızla bir standart haline getirdi.

Standart daha sonra RFC 1813'te tanımlanan NFSv3 sürümüne güncellendi. Protokolün bu sürümü önceki sürümlerden daha ölçeklenebilirdi ve daha büyük dosyaları (2 GB'nin üzerinde), eşzamansız yazmayı ve aktarım protokolü olarak TCP'yi destekledi. NFSv3, geniş alan (WAN) ağları için dosya sistemlerinin yönünü belirler. 2000 yılında, RFC 3010 spesifikasyonunun bir parçası olarak (RFC 3530 versiyonunda revize edilmiştir), NFS kurumsal ortama taşınmıştır. Sun, durum bilgisi desteğiyle daha güvenli NFSv4'ü tanıttı (NFS'nin önceki sürümleri durum bilgisini desteklemiyordu, yani durum bilgisizdi). Şu anda, NFS'nin en son sürümü, RFC 5661'de tanımlanan sürüm 4.1'dir; pNFS dağıtılmış sunucular için paralel erişim desteği eklendi.

Sürümlerini açıklayan belirli RFC'ler de dahil olmak üzere NFS geliştirme tarihi, Şekil 1'de gösterilmektedir.


Şaşırtıcı bir şekilde, NFS yaklaşık 30 yıldır geliştirilmektedir. Olağanüstü ölçeklenebilirlik, performans ve hizmet kalitesi ile son derece kararlı ve taşınabilir bir ağ dosya sistemidir. Bir ağ içinde veri alışverişinin artan hızı ve azalan gecikme süresi ile NFS, bir ağ içinde bir dosya sistemi uygulamak için popüler bir yol olmaya devam ediyor. LAN'larda bile sanallaştırma, sanal makinelere ek mobilite sağlamak için verilerin ağ üzerinde depolanmasını teşvik eder. NFS, sanal altyapıları optimize etmek için tasarlanmış en son bilgi işlem ortam modellerini de destekler.

NFS mimarisi

NFS, standart bir istemci-sunucu mimarisi modeli kullanır (Şekil 2'de gösterildiği gibi). Sunucu, istemcilerin bağlandığı paylaşılan dosya sistemini ve depolamayı uygulamaktan sorumludur. İstemci, istemcinin yerel dosya alanına monte edilmiş paylaşılan bir dosya sistemine bir kullanıcı arabirimi uygular.

Şekil 2. İstemci-sunucu modelinin NFS mimarisinde uygulanması

Linux®'ta, bir sanal dosya sistemi anahtarı (VFS), tek bir ana bilgisayarda birden çok dosya sistemini (örneğin, bir CD-ROM'da bir ISO 9660 dosya sistemi ve bir yerel sabit sürücüde bir ext3fs dosya sistemi) desteklemek için araçlar sağlar. Sanal anahtar, isteğin hangi sürücüye yapıldığını ve bu nedenle isteği işlemek için hangi dosya sisteminin kullanılması gerektiğini belirler. Bu nedenle, NFS, Linux'ta kullanılan diğer dosya sistemleriyle aynı uyumluluğa sahiptir. NFS ile tek farkı, G/Ç isteklerinin ana bilgisayarda yerel olarak işlenmek yerine yürütülmek üzere ağa yönlendirilebilmesidir.

VFS, aldığı isteğin NFS olduğunu belirler ve bunu çekirdekteki NFS işleyicisine iletir. NFS işleyicisi, G/Ç isteğini işler ve bunu bir NFS prosedürüne dönüştürür (AÇ, ERİŞİM, OLUŞTUR, OKU, KAPAT, KALDIR, vb.). Ayrı bir RFC belirtiminde açıklanan bu prosedürler, NFS protokolünün davranışını tanımlar. Talebe göre gerekli prosedür seçilir ve RPC (Uzaktan Prosedür Çağrısı) teknolojisi kullanılarak yürütülür. Adından da anlaşılacağı gibi, RPC, farklı sistemler arasında prosedür çağrılarının yapılmasına izin verir. RPC hizmeti, NFS isteğini bağımsız değişkenleriyle birleştirir ve sonucu uygun uzak ana bilgisayara gönderir ve ardından, istek sahibine geri göndermek için yanıtın alınıp alınmadığını ve işlenmesini izler.

RPC ayrıca önemli bir XDR katmanı içerir ( harici veri gösterimi- verilerin bağımsız sunumu), bu, aynı veri türleri için tüm NFS kullanıcılarının aynı formatı kullanmasını sağlar. Bir platform bir istekte bulunduğunda, kullandığı veri türü, isteği işleyen ana bilgisayar tarafından kullanılan veri türünden farklı olabilir. XDR, farklı mimarileri kullanan platformların dosya sistemlerini etkileşime sokabilmesi ve paylaşabilmesi için standart gösterime (XDR) tür dönüştürme işini üstlenir. XDR, sabit ve değişken uzunluklu diziler gibi türler için kayan nokta ve bayt sıralaması gibi türler için bir bit biçimi tanımlar. XDR, öncelikle NFS'deki kullanımıyla bilinmesine rağmen, bu belirtim, farklı mimarilerle aynı ortamda çalışmanız gerektiğinde faydalı olabilir.

XDR, verileri standart gösterime dönüştürdükten sonra, istek, belirli bir aktarım protokolü kullanılarak ağ üzerinden gönderilir. NFS'nin erken uygulamaları UDP'yi kullandı, ancak bugün daha fazla güvenilirlik için TCP kullanılmaktadır.

NFS sunucu tarafında da benzer bir algoritma kullanılmaktadır. İstek, ağ yığınını RPC / XDR katmanı aracılığıyla yükseltir (veri türlerini sunucu mimarisine göre dönüştürmek için) ve isteği işlemekten sorumlu olan NFS sunucusuna gider. Orada, istek, adreslendiği hedef dosya sistemini belirlemek için NFS arka plan programına iletilir ve ardından yerel diskteki bu dosya sistemine erişmek için tekrar VFS'ye girer. Bu işlemin tam bir diyagramı Şekil 3'te gösterilmiştir. Sunucunun yerel dosya sistemi, örneğin ext4fs gibi standart bir Linux dosya sistemidir. Aslında NFS, terimin geleneksel anlamında bir dosya sistemi değil, dosya sistemlerine uzaktan erişim için bir protokoldür.


Uzun gecikmeli ağlar için NFSv4, özel bir bileşik prosedür sunar ( bileşik prosedür). Bu prosedür, ağ üzerinden istek gönderme ek yükünü en aza indirmek için birden çok RPC çağrısını tek bir istek içinde sarmanıza olanak tanır. Ayrıca, bu prosedür, yanıtları almak için geri arama işlevlerinin mekanizmasını uygular.

NFS protokolü

Bir istemci NFS ile başladığında, ilk adım, uzak dosya sistemini yerel dosya sistemi alanına monte etmek olan bağlama işlemidir. Bu işlem, VFS aracılığıyla NFS bileşenine yeniden yönlendirilen mount prosedürüne (Linux sistem işlevlerinden biri) yapılan bir çağrıyla başlar. Ardından uzak sunucudaki get_port işlevine yapılan bir RPC çağrısı ile mount için kullanılacak port numarası belirlenir ve client RPC üzerinden mount request gönderir. Bu sunucu tarafı isteği, bağlama protokolünden sorumlu özel bir rpc.mountd arka plan programı tarafından işlenir ( bağlama protokolü). Daemon, istemci tarafından istenen dosya sisteminin verilen sunucuda bulunan sistemler listesinde olduğunu doğrular. İstenen sistem mevcutsa ve istemcinin buna erişimi varsa, RPC bağlama prosedürünün yanıtında dosya sistemi tanımlayıcısı belirtilir. İstemci, yerel ve uzak bağlama noktaları hakkındaki bilgileri tutar ve G/Ç istekleri yapabilir. Bağlama protokolü güvenlik açısından kusursuz değildir, bu nedenle NFSv4, bunun yerine bağlama noktalarını da değiştirebilen dahili RPC çağrılarını kullanır.

Bir dosyayı okumak için önce onu açmalısınız. RPC'de OPEN prosedürü yoktur; bunun yerine, istemci yalnızca belirtilen dosya ve dizinin bağlı dosya sisteminde var olduğunu doğrular. İstemci, dizin için, dizinin özniteliklerini veya dizinin mevcut olmadığını gösteren bir göstergeyi döndüren bir RPC GETATTR isteğinde bulunarak başlar. Ardından, dosyanın varlığını kontrol etmek için istemci bir RPC LOOKUP isteğinde bulunur. Dosya varsa, dosya özniteliklerini bulması için bir RPC GETATTR isteği yapılır. İstemci, başarılı LOOKUP ve GETATTR çağrılarından elde edilen bilgileri kullanarak, kullanıcıya ilerideki istekler için sunulan bir dosya tanıtıcısı oluşturur.

Dosya uzak dosya sisteminde tanımlandıktan sonra, istemci RPC READ istekleri gönderebilir. Bu istek, bir dosya tanıtıcı, durum, konum ve okunacak bayt sayısından oluşur. İstemci durumu kullanır ( durum) işlemin o anda gerçekleştirilip gerçekleştirilemeyeceğini belirlemek, yani. dosyanın kilitli olup olmadığı. Telafi etmek ( telafi etmek) okumaya nereden başlayacağınızı ve bayt sayacını ( saymak) kaç bayt okunacağını belirler. Bir RPC READ çağrısının sonucu olarak, sunucu her zaman istendiği kadar bayt döndürmez, ancak her zaman döndürülen verilerle birlikte istemciye kaç bayt gönderildiğini iletir.

NFS'de Yenilik

En çok ilgi çeken, NFS teknolojisinin evriminin en önemli yönlerini incelemek için kullanılabilen NFS - 4 ve 4.1'in en son iki sürümüdür.

NFSv4'ün ortaya çıkmasından önce, montaj, kilitleme vb. dosya yönetimi görevlerini gerçekleştirmek için. özel ek protokoller vardı. NFSv4'te dosya yönetim süreci tek bir protokolle basitleştirilmiştir; ek olarak, bu sürüm UDP artık bir aktarım protokolü olarak kullanılmadığından. NFSv4, UNIX ve Windows® dosya erişim semantiği için destek içerir, bu da NFS'nin diğer işletim sistemleriyle "doğal olarak" bütünleşmesini sağlar.

NFSv4.1 şu konsepti tanıttı: paralel NFS(paralel NFS - pNFS). Daha fazla ölçeklenebilirlik sağlamak için NFSv4.1, veri ve meta verilerin ( işaretleme) kümelenmiş dosya sistemlerinde olduğu gibi cihazlar arasında dağıtılır. Gösterildiği gibi, pNFS ekosistemi üç sütuna böler: istemci, sunucu ve depolama. Bu durumda iki kanal belirir: biri veri iletimi için, diğeri kontrol komutlarının iletimi için. pNFS, verileri onu tanımlayan meta verilerden ayırarak iki kanallı bir mimari sağlar. Bir istemci bir dosyaya erişmek istediğinde, sunucu ona "işaretleme" meta verileri gönderir. Meta veriler, dosyanın depolama aygıtlarındaki konumu hakkında bilgi içerir. Bu bilgilerle istemci, sunucuyla etkileşime girmek zorunda kalmadan doğrudan depolamaya erişebilir, bu da ölçeklenebilirliği ve performansı artırır. İstemci dosyayla çalışmayı bitirdiğinde, dosyada yapılan değişiklikleri ve "işaretini" onaylar. Gerekirse sunucu, istemciden biçimlendirme meta verilerini isteyebilir.

pNFS'nin tanıtılmasıyla, bu mekanizmayı desteklemek için NFS protokolüne birkaç yeni işlem eklendi. LayoutGet yöntemi, sunucudan meta veri almak için kullanılır, LayoutReturn yöntemi, istemci tarafından "yakalanan" meta verileri "serbest bırakır" ve LayoutCommit yöntemi, istemciden alınan "işaretlemeyi" depoya yükler, böylece diğer kullanıcılar tarafından kullanılabilir olur. kullanıcılar. Sunucu, LayoutRecall yöntemini kullanarak istemciden meta verileri iptal edebilir. "İşaretli" meta veriler, eşzamanlı erişim ve yüksek performans sağlamak için birden çok depolama aygıtına yayılır.


Veriler ve meta veriler, depolama aygıtlarında depolanır. İstemciler, elde edilen işaretlemeye göre doğrudan G/Ç istekleri yapabilir ve NFSv4.1 sunucusu meta verileri depolar ve yönetir. Bu işlevin kendisi yeni değildir, ancak depolama aygıtlarına erişmenin çeşitli yöntemleri için destek pNFS'ye eklenmiştir. Bugün pNFS, blok protokollerinin (Fiber Kanal), nesne protokollerinin ve NFS'nin kendisinin (pNFS biçiminde bile değil) kullanımını desteklemektedir.

NFS gelişmeye devam ediyor ve NFSv4.2 gereksinimleri Eylül 2010'da yayınlandı. Bazı yenilikler, depolama teknolojilerinin devam eden sanallaştırmaya geçişiyle ilgilidir. Örneğin, bir hipervizör bulunan sanal ortamlarda veri çoğaltması çok olasıdır (birden çok işletim sistemi aynı verileri okur/yazar ve önbelleğe alır). Bu nedenle, depolama sisteminin bir bütün olarak çoğaltmanın nerede meydana geldiğini anlaması arzu edilir. Bu yaklaşım, istemci önbellek alanını ve genel depolama kapasitesini korumaya yardımcı olacaktır. NFSv4.2, bu sorunu çözmek için bir "paylaşılan blokların blok haritası" kullanılmasını önerir. Modern depolama sistemleri giderek artan bir şekilde kendi dahili bilgi işlem gücüyle donatıldığından, depolama aygıtının kendisinde verimli bir şekilde yapılabildiğinde, verileri dahili ağ üzerinde kopyalama yükünü azaltmak için sunucu tarafı kopyalama tanıtılmaktadır. Diğer yenilikler arasında flash için alt dosya önbelleğe alma ve istemci tarafı G / Ç'yi özelleştirmeye yönelik öneriler (örneğin, mapadvise kullanarak) bulunur.

NFS alternatifleri

NFS, UNIX ve Linux'ta en popüler ağ dosya sistemi olmasına rağmen, başka ağ dosya sistemleri de vardır. Windows® platformunda, en yaygın olarak SMB olarak da bilinir. CIFS; ancak Windows, Linux'un SMB'yi desteklediği gibi NFS'yi de destekler.

Linux tarafından desteklenen en yeni dağıtılmış dosya sistemlerinden biri olan Ceph, orijinal olarak hataya dayanıklı POSIX uyumlu bir dosya sistemi olarak tasarlanmıştır. Ceph hakkında daha fazla bilgi bölümünde bulunabilir.

Ayrıca OpenAFS dosya sistemleri (Carnegie Mellon Üniversitesi ve IBM'de geliştirilen Andrew dağıtılmış dosya sisteminin Açık Kaynak versiyonu), GlusterFS (ölçeklenebilir veri depolamayı organize etmek için genel amaçlı dağıtılmış dosya sistemi) ve Lustre (büyük ölçüde paralel ağ dosya sistemi) sayılabilir. küme çözümleri). Bu açık kaynak sistemlerinin tümü, dağıtılmış depolama oluşturmak için kullanılabilir.

Çözüm

NFS dosya sisteminin geliştirilmesi devam ediyor. Linux'a benzer şekilde, bütçe, yerleşik ve yüksek performanslı çözümleri desteklemek için uygun olan NFS, hem bireyler hem de kuruluşlar için uygun, ölçeklenebilir bir depolama çözümleri mimarisi sunar. NFS'nin kat ettiği yola ve gelecekteki gelişimine bakıldığında, bu dosya sisteminin dosya depolama teknolojilerinin nasıl uygulandığına ve kullanıldığına dair düşüncelerimizi değiştirmeye devam edeceği açıkça görülüyor.

"Ve zaten" ağ dosya sistemi ", yetenekleri ve güvenlik derecesi hakkında bir fikriniz var. Ancak, bu makalede her şey esas olarak müşterinin bakış açısından anlaşıldı ... ama ya kendi NFS sunucunuza sahip olmak istiyorsanız? (not: "sahip olmak", "kırmak" anlamına gelmez, ancak "kurmak ve yapılandırmak" anlamına gelir).

Peki, böyle bir arzunuz varsa, kendinize sormanız gereken ilk soru şudur: “Keçi akordeon ne için?”. Evde bir NFS sunucusu koymak için
oldukça anlamsız - kimse bunu takdir etmeyecek, ancak ofiste veya yeni moda "ev ağında" "siyahlı insanları" yönetecek kadar şanslıysanız - o zaman tamamen farklı bir mesele ...

Sunucunun kendisini başlatmak oldukça basit bir konudur, önceki makaleyi okursanız, oldukça iyi halledebilirsiniz. Yani, aşağıdaki şeytanlara ihtiyacınız var:

  • nfsd - doğrudan protokol servisi
    NFS;
  • mountd - montaj işlemlerine hizmet etme;
  • rpc.portmap - RPC bağlantı noktaları arka plan programı; NFS sunucusuna yapılan istekler paket olarak gönderildiğinden gerekli
    RPC;

Nasıl yapılır? Çok basit - "/etc/rc.d/rc.inet2" dosyasına gidin ve uygun satırları kaldırın. İlk lansmanın yapıldığı her şey düşünülebilir, tüm bunları kurmak biraz daha zor olacak ...
Karar verilmesi gereken ilk şey, şu veya bu bilgiyle ilgili olarak kimin hangi haklara sahip olduğudur. Bu, / etc / dışa aktarma dosyası aracılığıyla yapılandırılır. İzinler "okuma" ve "okuma ve yazma" şeklindedir. Bunun nasıl yapılandırıldığı "Temel Bilgiler" bölümünde açıklanmaktadır.
NFS".

İkincisi, elbette, sunucudaki yük, yani. aktif kullanıcı sayısı ve yaklaşık istekleri. NFS sunucusuna yapılan istekler genellikle iki türe ayrılır: birincisi, istemcinin özniteliklerle çalıştığı zamandır ve ikincisi, istemcinin doğrudan veri istediği zamandır. İlk türdeki istekler, bir dosya aramak, izin listesini okumak vb., elbette, ağı hafifçe yüklediklerini anlıyorsunuz. İkinci tür istekler, dosyaların içeriğinin doğrudan istemciden iletilmesi ve alınmasıdır; ve işte burada soru ortaya çıkıyor: "ne iletilecek ve ne sıklıkla?" Bu, özellikle 10 Mbps ağınız varsa (başka bir deyişle standart bir Rus ağınız) geçerlidir. Biliyorsanız, 10 Mbps saniyede 1 Mb'ın biraz üzerindedir; doğal olarak, onlarca megabayt boyutundaki dosyalar sürekli olarak aktarılırsa, ağ basitçe ölür. Durumunuz buysa, istemci makinede (biod arka plan programı) verileri önbelleğe almayı ayarlamanız gerekir. Daha sonra, bir kez bir dosya talep ettikten ve ona tekrar başvurduktan sonra, istemci onu tekrar sunucudan "indirmeyecek", fakat onu önbellekten alacaktır; aynı zamanda, sunucuda dosyanın değişip değişmediğini düzenli olarak kontrol edecek, eğer değişiklik gerçeği tespit edilirse, önbellekteki dosya "yeni bir sürüm" ile değiştirilecektir.
(Tahmin edebileceğiniz gibi, "bir dosya değişti mi" kontrolü, genellikle dosyanın kendisinden yüzlerce kez daha küçük olan "özniteliklere göre" bir istektir).

Peki: NFS sunucusunu başlattık, erişim izinlerini belirledik, yükü sıraladık ... Şimdi gerekli bilgi ve kullanımla vidayı sürmek kaldı
NFS yetenekleri sonuna kadar ...

Sonuç yerine:

Ağdaki veri alışverişini organize etme sorunuyla karşı karşıya kalırsanız, NFS'yi seçmekten çekinmeyin - NFS, bir kafadan üç kafa daha yüksektir
FTP ve Windows "topları" üzerinde baş ve omuzlar ve yapılandırma o kadar zor değil ...

NFS (Ağ Dosya Sistemi)- Linux / UNIX OS ailesinde popüler olan NFS sunucusunun dosyalarına ve dosya sistemine ve çeşitli depolama sistemlerine erişmek için bir ağ protokolü. Microsoft ayrıca, rekabetin gerisinde kalmak istemeyerek, Windows Server 2003 R2'de temel NFS sunucu işlevselliğini tanıttı. Microsoft sunucu platformlarının sonraki sürümlerinde, yerleşik NFS Windows sunucusunun yetenekleri genişletildi, yeni işlevler ve yönetim araçları ortaya çıktı. Windows Server 2012'deki NFS sunucusu, bu teknolojinin geliştirilmesinde bir başka kilometre taşıdır.

Bu üründe bize Microsoft geliştiricilerinin sunduğu yenilikler neler? Windows Server 2012'de NFS Sunucusunun yeni özellikleri:

  1. NFS v4.1 desteği... NFS 4.1'in en son sürümü için destek, Windows Server 2012'deki en büyük yeniliklerden biridir. NFS v3 ile karşılaştırıldığında, bu protokol, RFC 5661'in tüm yönlerini tam olarak uygulayarak gelişmiş güvenlik, performans ve birlikte çalışabilirlik sağlar.
  2. Kutunun dışında performans. Yeni RPC-XDR aktarım altyapısını kullanarak, sistem parametrelerini ayarlamaya gerek kalmadan kutudan çıkar çıkmaz optimum NFS sunucu performansı elde edilebilir. Otomatik ayar önbelleği, çalışan süreçlerinin havuza alınması ve yüklerine göre dinamik havuz yönetimi yoluyla optimum performans elde edilir.
  3. Basitleştirilmiş dağıtım ve yönetim... Bu gerçek şu nedenlerle elde edildi:
    • - NFS sunucusunu yapılandırmak ve paylaşılan klasörleri yönetmek için 40'tan fazla PowerShell cmdlet'i
    • - hem SMB hem de NFS paylaşımlarının yanı sıra dosya tarama ayarlarını vb. aynı anda yönetmenize izin veren basit bir grafik yönetim arayüzü.
    • - güvenlik duvarlarını yapılandırma kolaylığı için RPC bağlantı noktasını (port 2049) sabitleme
    • - yeni sağlayıcı WMI v2
    • - düz bir eşleme dosyası nedeniyle basitleştirilmiş tanımlama
  4. NFSv3 iyileştirmeleri... Ağ Durumu İzleyicisi (NSM) tarafından istemcilere hızlı bir şekilde yük devretme bildirimleri göndererek, eski NFS istemcileri yük devretmeyi daha hızlı ve daha iyi işler, bu da daha az kesinti anlamına gelir.

Bu nedenle, Windows Server 2012'deki NFS sunucusu, dağıtım kolaylığı, ölçeklenebilirlik, kararlılık, kullanılabilirlik, güvenilirlik, güvenlik ve uyumluluk açısından büyük ölçüde geliştirildi. Paylaşılan klasörlere SMB ve NFS üzerinden aynı anda erişilebilir, bu da Windows Server 2012'nin heterojen ağlarda depolama olarak kullanılabileceği anlamına gelir.

Windows Server 2012'deki NFS sunucusu, GUI ve Powershell kullanılarak kurulabilir. Grafik arayüzü kullanarak bir NFS sunucusu kurmak için Dosya ve Depolama Hizmetleri rolünü açın ve bileşeni kontrol edin. NFS Sunucusu.

NFS bileşeninin kurulumunu tamamladıktan sonra sunucu yeniden başlatılmalıdır.

Aynı rolü Powershell kullanarak kurmak da basittir, sadece şu komutu çalıştırın:

Add-WindowsFeature "FS-NFS-Service"

Windows Server 2012'de NFS Paylaşımlı Klasör Yapılandırma

Ardından, yüklediğimiz rolü kullanarak bir Windows sunucusunda nasıl bir NFS paylaşımı (paylaşılan klasör) oluşturduğunu göstereceğiz. Tekrar bir NFS paylaşımı oluşturmanın birkaç yolu vardır: grafik arabirimi veya Powershell'i kullanma.

Sunucu Yöneticisi Konsolunu Kullanarak NFS Paylaşımı Oluşturun

Konsolu aç Sunucu Yöneticisi, bölüme git Paylaşım yönetimi(rolün içinde Dosya ve Depolama Hizmetleri).
Bağlam menüsünde Yeni Paylaşılan Dizin Sihirbazını başlatın - Yeni Paylaşım...

Topların türünü seçin NFSPaylaş -Hızlı

Ardından, NFS istemcileri için kimlik doğrulama türünü ayarlamanız gerekir: muhtemelen hem Kerberos kimlik doğrulamasını hem de anonim olarak kullanın.

Oluşturulan NFS kaynağının tüketicisinin, NFS bağlantılarının kimliğini doğrulama yeteneği olmayan bir ESXi sanallaştırma sunucusu olacağını varsayalım (ESXi, NFSv4'ü desteklemez). Bu nedenle, kimlik doğrulama türü Sunucu Kimlik Doğrulaması Yok, seçenekleri de not ediyoruz Eşlenmemiş kullanıcı erişimini etkinleştir ve UID / GID ile eşlenmemiş kullanıcı erişimine izin ver.

Oluşturulan NFS paylaşımını üçüncü taraf erişiminden biraz korumak için, müşterinin IP adresiyle NFS kaynağına erişimi kısıtlayacağız.

Ev sahibi: 192.168.1.100
Dil Kodlaması: BÜYÜK 5
İzinleri Paylaş: Okuma yazma
Kök erişimine izin ver: Evet

Ardından, NTFS düzeyinde, bağlanan kullanıcının eşlendiği kullanıcının okuma / yazma erişimine sahip olup olmadığını kontrol etmek kalır (anonim erişim kullanmaya karar verirseniz, NTFS'de Herkes kullanıcısına tam r / w hakları vermeniz gerekir) seviye).

Powershell kullanarak bir NFS paylaşımı nasıl oluşturulur

Yeni bir NFS paylaşımı oluşturalım:

Yeni-NfsShare -Adı "NFS" -Yol "d: \ paylaşımlar \ nfr" -AllowRootAccess $ true -İzin Okuma Yazma -Kimlik doğrulama sistemi

192.168.1.100 IP adresi için topa erişime izin verelim ve kodlamayı BIG5 olarak ayarlayalım (ESXi istemcisi için NFS toplarının içeriğini görüntüleme yeteneği).

Grant-NfsSharePermission -Adı “NFS” -ClientName 192.168.1.100 -ClientType ana bilgisayarı -LanguageEncoding BIG5

Oluşturulan NFS topu, örneğin bir sanallaştırma ortamında bir NFS veri deposu olarak veya diğer Unix benzeri istemcilerden gelen verilere erişmek için kullanılabilir. Windows'ta bir NFS paylaşımı nasıl bağlanır - istemciler makalede anlatılmaktadır.

# image.jpg Kötü bir zaman değil, blogumun okuyucuları ve misafirleri. Gönderiler arasında çok uzun bir ara oldu, ama savaşa geri döndüm). Bugünün makalesinde ele alacağım NFS protokolü işlemi, ve Linux'ta bir NFS sunucusu ve NFS istemcisi kurma.

NFS'ye Giriş

NFS (Ağ dosya sistemi- ağ dosya sistemi) bence - hızlı (SAMBA'dan daha hızlı ve şifrelemeli uzak dosya sistemlerine kıyasla daha az kaynak yoğun - sshfs, SFTP, vb ...) veri alışverişine ve veri alışverişine ihtiyaç duyduğunuz yerel bir ağda ideal bir çözüm. temel taşı iletilen bilgilerin güvenliği değildir. NFS protokolü uzak dosya sistemlerinin sanki bir disk dosya sistemi takılıymış gibi bir ağ üzerinden yerel bir dizin ağacına bağlanmasına izin verir.

Ancak yerel uygulamalar, yerel bir dosya sistemiyle olduğu gibi uzak bir dosya sistemiyle de çalışabilir. Ama dikkatli olmalısın(!) NFS'yi kurmak, çünkü belirli bir konfigürasyonla, sonsuz G / Ç bekleyerek müşterinin işletim sistemini askıya almak mümkündür.

NFS protokolü işe dayalı RPC protokolü, bu hala benim anlayışıma meydan okuyor)) bu nedenle makaledeki materyal biraz belirsiz olacak ... NFS'yi kullanmadan önce, ister sunucu ister istemci olsun, çekirdeğinizin NFS dosya sistemini desteklediğinden emin olmalısınız. . / proc / filesystems dosyasında karşılık gelen satırları arayarak çekirdeğin NFS dosya sistemini destekleyip desteklemediğini kontrol edebilirsiniz:

ARCHIV ~ # grep nfs / proc / dosya sistemleri nodev nfs nodev nfs4 nodev nfsd

Belirtilen satırlar / proc / filesystems dosyasında görünmüyorsa, aşağıda açıklanan paketleri kurmanız gerekir. Bu, büyük olasılıkla, uygun dosya sistemlerini desteklemek için bağımlı çekirdek modüllerinin kurulmasına izin verecektir.

Paketleri kurduktan sonra belirtilen dosyada NFS desteği görüntülenmezse, bu işlev etkin durumdayken çekirdeği yeniden derlemek gerekecektir.

Tarih Ağ dosya sistemi

NFS protokolü Sun Microsystems tarafından geliştirilmiştir ve tarihinde dört versiyona sahiptir. NFSv1, Bin dokuz yüz seksen dokuzda geliştirildi ve UDP protokolünde çalışan deneyseldi. Sürüm Bir, RFC 1094'te açıklanmıştır.

NFSv2 aynı Bin dokuz yüz seksen dokuzda yayınlandı, aynı RFC1094 tarafından tanımlandı ve ayrıca bir dosyadan en az 2GB okumanıza izin verirken UDP protokolüne dayanıyordu. NFSv3, One K995'te sonlandırılmıştır ve RFC 1813'te açıklanmıştır.

Üçüncü versiyonun ana yenilikleri, büyük dosyalar için destek, TCP protokolü için ek destek ve teknolojinin çalışmasını önemli ölçüde hızlandıran büyük TCP paketleri idi. NFSv4, İki Bin'de rafine edilmiş ve RFC 3010'da, İki Bin Yıl'da revize edilmiş ve RFC 3530'da açıklanmıştır.

Sürüm 4, performans iyileştirmeleri, çeşitli kimlik doğrulama araçları için destek (özellikle, RPCSEC GSS protokolünün uygulanmasıyla Kerberos ve LIPKEY) ve erişim kontrol listelerini (hem POSIX hem de Windows türleri) içeriyordu. NFS v4.1, 2000 yılında IESG tarafından onaylandı ve 5661 numaralı RFC'yi aldı.

Sürüm 4.1'in temel yeniliği, bir NFS istemcisinin birçok dağıtılmış NFS sunucusunun verilerine paralel erişimi için bir mekanizma olan pNFS - Paralel NFS belirtimidir. Örnek bir ağ dosya sisteminde böyle bir mekanizmanın varlığı, dağıtılmış "bulut" depolama ve bilgi sistemlerinin oluşturulmasına yardımcı olacaktır.

NFS sunucusu

sahip olduğumuzdan beri NFS- bu dosya sistemi, yapılandırmanız gerekir Linux'ta. (Ağların temel kavramları hakkındaki makaleyi de okuyabilirsiniz). Ardından, uygun paketi yüklemeniz gerekir. Debian'da bu, nfs-kernel-server ve nfs-common paketidir ve RedHat'ta bu, nfs-utils paketidir.

Ayrıca, imp'nın uygun çalışma düzeylerinde başlatılmasını etkinleştirmek gerekir (RedHat'taki komut / sbin / chkconfig nfs on, Debian'da - /usr/sbin/update-rc.d nfs-kernel-server varsayılanları).

Debian'da kurulu paketler aşağıdaki sırayla çalıştırılır:

ARŞİV ~ # ls -la /etc/rc2.d/ | grep nfs lrwxrwxrwx Bir kök kök 20 Ekim Onsekiz 15:02 S15nfs-common -> ../init.d/nfs-common lrwxrwxrwx Bir kök kök 20 yedi Ekim 20 iki 01:23 S16nfs-kernel-server -> ../init .d / nfs-kernel-server

Başka bir deyişle, önce çalışır nfs-ortak, daha sonra sunucunun kendisi nfs-çekirdek-sunucusu.

RedHat'ta durum benzerdir, tek istisna 1. betiğin çağrılmasıdır. nfslock ve sunucu basitçe çağrılır nfs... Hakkında nfs-ortak debian sitesi tam anlamıyla bize şunu söylüyor: NFS istemcisi ve sunucusu için ortak dosyalar, bu paketin NFS istemcisi veya sunucusu olarak görev yapacak bir makineye yüklenmesi gerekiyor.

Paket programları içerir: lockd, statd, showmount, nfsstat, gssd ve idmapd. /etc/init.d/nfs-common başlatma komut dosyasının içeriğine bakarak, aşağıdaki çalışma sırasını izleyebilirsiniz: komut dosyası /sbin/rpc.statd yürütülebilir ikili dosyasının varlığını kontrol eder, varlığını kontrol eder / etc / default / nfs-common, / etc / fstab ve / etc / dışa aktarma dosyalarında, gösterimlerin çalışmasını gerektiren özelliklerin dışa aktarılması idmapd ve gssd, arka plan programını başlatır /sbin/rpc.statd, daha sonra /usr/sbin/rpc.idmapd'yi başlatmadan önce ve /usr/sbin/rpc.gssd bu yürütülebilir ikili dosyaların varlığını kontrol eder, ardından /usr/sbin/rpc.idmapd iblisi sunrpc çekirdek modüllerinin varlığını kontrol eder , nfs ve nfsd ve ayrıca çekirdekteki rpc_pipefs dosya sistemini (başka bir deyişle, / proc / filesystems dosyasındaki varlığı) destekler, her şey başarılı olursa başlar /usr/sbin/rpc.idmapd... Ek olarak, imp için /usr/sbin/rpc.gssd rpcsec_gss_krb5 çekirdek modülünü kontrol eder ve şeytanı başlatır.

İçeriği görüntülerseniz NFS sunucusu başlangıç ​​komut dosyası Debian'da (/etc/init.d/nfs-kernel-server), ardından aşağıdaki sırayı takip edebilirsiniz: başlangıçta, komut dosyası / etc / dışa aktarma dosyasının varlığını, nfsd çekirdek modülünün varlığını, Linux çekirdeğinde NFS dosya sistemi desteğinin varlığı (dosya / proc / dosya sistemlerinde başka bir deyişle), her şey yerindeyse, şeytan başlar /usr/sbin/rpc.nfsd, ardından NEED_SVCGSSD parametresinin ayarlanıp ayarlanmadığını kontrol eder (sunucu seçenekleri dosyasında / etc / default / nfs-kernel-server'da ayarlanır) ve ayarlanırsa iblisi başlatır /usr/sbin/rpc.svcgssd, sonuncusu imp'ı başlatır /usr/sbin/rpc.mountd... Bu komut dosyasından bunu görebilirsiniz NFS sunucu işlemi şunlardan oluşur:şeytanlar rpc.nfsd, rpc.mountd ve Kerberos kimlik doğrulaması kullanılıyorsa, şeytan rcp.svcgssd. Şeytan rpc.rquotad ve nfslogd hala kırmızı şapkada çalışıyor (Nedense, bu arka plan programı ve Debian'daki yokluğunun nedenleri hakkında bilgi bulamadım, görünüşe göre silindi ...).

Bundan anlaşılıyor ki Ağ Dosya Sistemi sunucusu aşağıdaki işlemlerden oluşur (okuma - şeytanlar)/ sbin ve / usr / sbin dizinlerinde bulunur:

  • rpc.statd- Ağ durumunu izleyen iblis (aka Ağ Durumu İzleyicisi, diğer adıyla NSM). Bir kilitlenme / yeniden başlatma sonrasında kilidi doğru şekilde serbest bırakmanıza izin verir. İhlali bildirmek için /usr/sbin/sm-notify programını kullanır. Bes statd hem sunucularda hem de istemcilerde çalışır. Önceden, bu sunucu rpc.lockd'nin çalışması için gerekliydi, ancak şimdi engellemeden çekirdek sorumludur (not: yanılmıyorsam # image.jpg). (RPC programı 100 bin 20 bir ve 100 bin 20 dört - yeni sürümlerde)
  • rpc.lockd- Kilitleme imp lockd (diğer adıyla NFS kilit yöneticisi (NLM)) dosya kilitleme isteklerini işler. İblisi engellemek hem sunucularda hem de istemcilerde çalışır. İstemciler dosya kilitleme ister ve sunucular buna izin verir. (eski ve yeni dağıtımlarda şeytan olarak kullanılmaz. Modern dağıtımlardaki işlevleri (2.2.18'den eski bir çekirdeğe sahip) çekirdek tarafından, daha doğrusu çekirdek modülü (lockd) tarafından gerçekleştirilir.) (RPC programı 100024)
  • rpc.nfsd- NFS sunucusunun ana şeytanı nfsd'dir (yeni sürümlerde bazen denir nfsd4). Bu iblis, NFS istemcilerinden gelen isteklere hizmet eder. Debian'daki / etc / default / nfs-kernel-server dosyasındaki RPCNFSDCOUNT parametresi ve RedHat'taki / etc / sysconfig / nfs dosyasındaki NFSDCOUNT parametresi, çalıştırılacak uygulama sayısını belirler (varsayılan 8'dir). (RPC programı 100003)
  • rpc.mountd- Bağlanamayan NFS mountd, istemcilerin dizinleri bağlama isteklerini işler. mountd imp, NFS sunucularında çalışır. (RPC programı 100005)
  • rpc.idmapd- Sunucudaki NFSv4 için Bes idmapd, yerel kullanıcı kimliği / gid kullanıcılarını @ etki alanı biçimine dönüştürür ve istemcideki hizmet, ad @ etki alanı gibi kullanıcı / grup adlarını yerel kullanıcı ve grup tanımlayıcılarına ( /etc yapılandırma dosyasına göre) dönüştürür /idmapd.conf, ayrıntılar için man idmapd.conf'a bakın) :.
  • ek olarak, NFS'nin eski sürümlerinde şeytanlar kullanıldı: nfslogd- hiçbir NFS günlüğü, dışa aktarılan dosya sistemleri için etkinliği yakalamaz, NFS sunucularında çalışır ve rkota- uzak kota sunucusu, uzak dosya sistemlerindeki kullanıcı kotaları hakkında bilgi sağlar, hem sunucularda hem de istemcilerde çalışabilir.(RPC programı 100011)

NFSv4'te Kerberos kullanılırken şeytanlar ek olarak başlatılır:

  • rpc.gssd- Bes NFSv4, GSS-API (Kerberos Authentication) aracılığıyla kimlik doğrulama yöntemleri sağlar. İstemci ve sunucu üzerinde çalışır.
  • rpc.svcgssd- Sunucu tarafı istemci kimlik doğrulaması sağlayan NFSv4 sunucu imp.

portmap ve RPC protokolü (Sun RPC)

Yukarıdaki paketlerin dışında NFSv2 ve v3'ün düzgün çalışması için ek bir paket gereklidir. portmap(daha yeni dağıtımlarda, rpcbind). Bu paket genellikle bağımlı olarak NFS ile otomatik olarak kurulur ve RPC sunucusunun çalışmasını uygular, başka bir deyişle, RPC sunucusunda kayıtlı bazı hizmetler için bağlantı noktalarının dinamik olarak atanmasından sorumludur.

Kelimenin tam anlamıyla, belgelere göre, bu, Uzaktan Yordam Çağrısı (RPC) program numaralarını TCP/UDP port numaralarına dönüştüren bir sunucudur. portmap birkaç varlık üzerinde çalışır: RPC çağrıları veya istekleri, TCP / UDP bağlantı noktaları, protokol sürümü (tcp veya udp), program numaraları ve program sürümleri. portmap imp, NFS hizmetlerini başlatmadan önce /etc/init.d/portmap betiği tarafından başlatılır.

Kısacası, bir RPC (Uzaktan Yordam Çağrısı) sunucusunun işi, yerel ve uzak süreçlerden gelen RPC çağrılarını (diğer adıyla RPC prosedürleri) ele almaktır.

RPC çağrılarını kullanarak, servisler kendilerini port mapper'a / port mapper'a (aka port mapper, diğer adıyla portmap, diğer adıyla portmapper, diğer adıyla yeni sürümlerde, rpcbind) kaydeder veya kaldırır ve istekleri portmapper'a yönlendiren RPC çağrılarını kullanan istemciler doğru bilgiyi alır. Kullanıcı dostu program hizmet adları ve bunlara karşılık gelen numaralar / etc / rpc'de tanımlanmıştır.

Bir hizmet karşılık gelen bir istek gönderdiğinde ve bağlantı noktası eşleyicisinde RPC sunucusuna kaydettirildiğinde, RPC sunucusu hizmetin başlatıldığı hizmete TCP ve UDP bağlantı noktalarını atar ve çalışan hizmetle ilgili ilgili bilgileri kendi içinde saklar (ad ), benzersiz hizmet numarası ( / etc / rpc ile anlaşarak), hizmetin çalıştığı protokol ve bağlantı noktası ve hizmetin sürümü hakkında ve talep üzerine istemcilere belirtilen bilgileri sağlar. Bağlantı noktası dönüştürücünün kendisi bir program numarasına (100000), sürüm numarası 2'ye, TCP bağlantı noktası 100 onbir ve UDP bağlantı noktası 111'e sahiptir.

Yukarıda, NFS sunucusunun imp'lerinin bileşimini belirtirken, ana RPC program numaralarını belirttim. Elbette, bu paragrafla biraz kafanızı karıştırdım, bu yüzden açıklığa kavuşturması gereken ana ifadeyi söyleyeceğim: bağlantı noktası eşleyicisinin ana işlevi, kendisine (istemci) istenen programın bulunduğu bağlantı noktasını geri vermektir. çalışıyor. Buna göre bir istemcinin belirli bir program numarası ile RPC'ye erişmesi gerekiyorsa, öncelikle sunucu makine üzerindeki portmap işlemi ile iletişime geçmeli ve ihtiyaç duyduğu RPC hizmeti ile iletişim port numarasını bulması gerekmektedir.

Bir RPC sunucusunun çalışması aşağıdaki adımlarla temsil edilebilir:

RPC sunucusundan bilgi almak için rpcinfo yardımcı programı kullanılır. -p ana bilgisayar özelliklerini belirtirseniz, program ana bilgisayarda kayıtlı tüm RPC programlarını listeler. Bir ana bilgisayar belirtmeden, program hizmetleri localhost'ta görüntüler. Örnek:

ARCHIV ~ # rpcinfo -p prog-ma versiyonu proto port 100 bin İki tcp 100 onbir portmapper 100 bin İki udp 100 onbir portmapper 100 bin 20 dört Bir udp 50 dokuz bin dört yüz 50 bir durum 100 bin 20 dört Bir tcp Altmış bin sekiz yüz 70 iki statü 100 bin 20 bir Bir udp 40 dört bin üç yüz 10 nlockmgr 100 bin 20 bir Üç udp 40 dört bin üç yüz 10 nlockmgr 100 bin 20 bir Dört udp 40 dört bin üç yüz 10 nlockmgr 100 bin 20 bir Bir tcp 40 dört bin sekiz yüz 50 bir nlockmgr 100 bin 20 bir Üç tcp 40 dört bin sekiz yüz 50 bir nlockmgr 100 bin 20 bir Dört tcp 40 dört bin sekiz yüz 50 bir nlockmgr 100 bin üç İki tcp iki bin 40 dokuz nfs 100 bin üç Üç tcp iki bin 40 dokuz nfs 100 bin üç Dört tcp İki bin 40 dokuz nfs 100 bin üç İki udp İki bin 40 dokuz nfs 100 bin üç Üç udp İki bin 40 dokuz nfs 100 bin üç Dört udp İki bin 40 dokuz nfs 100 bin 5 Bir udp 50 bin üç yüz 6 bin 100 bin 5 Bir tcp 40 bin dört yüz 5 mount 100 bin 5 İki udp 50 bin üç yüz 6 bin 100 bin 5 İki tcp 40 bin dört yüz 5 bin 100 bin 5 Üç udp 50 bin üç yüz 6 bin 100 bin 5 Üç tcp 40 bin dört yüz 5 bin

Gördüğünüz gibi, rpcinfo (soldan sağa sütunlarda) kayıtlı program numarasını, sürümünü, protokolü, bağlantı noktasını ve adını gösterir.

Bir programın kaydını silmek veya tek bir RPC hizmeti hakkında bilgi almak için rpcinfo'yu kullanabilirsiniz (daha fazla seçenek için man rpcinfo'ya bakın). Gördüğünüz gibi, udp ve tcp bağlantı noktalarında kayıtlı iblis portmapper sürüm İki, udp ve tcp bağlantı noktalarında rpc.statd sürüm Bir, NFS kilit yöneticisi sürüm 1,3,4, nfs sunucusu sürüm 2,3,4 yok, 1,2,3 montaj versiyonlarının yanı sıra.

NFS sunucusu (daha doğrusu, rpc.nfsd olmadan), 2049 numaralı bağlantı noktasında istemciden UDP datagramları biçiminde istek alır. NFS'nin, sunucunun dinamik olarak atanmış bağlantı noktalarını kullanmasına izin veren bir bağlantı noktası eşleyicisi ile çalışmasına rağmen, UDP bağlantı noktası 409, çoğu uygulamada NFS'ye sabit kodlanmıştır.

Ağ Dosya Sistemi Protokol İşlemi

Uzak NFS'yi bağlayın

Uzak bir NFS dosya sistemini kurma işlemi aşağıdaki şema ile gösterilebilir:

Bir uzak dizini kurarken NFS protokolünün açıklaması:

  1. Sunucuda ve istemcide (genellikle önyüklemede) bir RPC sunucusu başlatılır, portmapper işlemi tarafından hizmet verilir ve tcp/111 ve udp/111 bağlantı noktalarına kaydedilir.
  2. RPC sunucusunda kayıtlı ve rastgele ağ bağlantı noktalarında kayıtlı olan hizmetler (rpc.nfsd, rpc.statd, vb.) başlatılır (hizmet ayarlarında statik bir bağlantı noktası belirtilmediği sürece).
  3. istemci bilgisayardaki mount komutu, dosya sistemi türü, ana bilgisayar ve pratik olarak dizin, çekirdek, NFS sunucusundaki portmap işlemine bir RPC isteği gönderir. udp / 111 bağlantı noktası (istemcinin tcp üzerinden çalışma işlevi yoksa)
  4. NFS sunucu çekirdeği, imp rpc.mountd'nin varlığı için RPC'yi yoklar ve istemci çekirdeğine, imp'nin üzerinde çalıştığı ağ bağlantı noktasını döndürür.
  5. mount, rpc.mountd'nin çalıştığı bağlantı noktasına bir RPC isteği gönderir. Bu noktada, NFS sunucusu, istemcinin belirlenen dosya sistemini bağlayıp bağlayamayacağını görmek için bir istemciyi IP adresine ve bağlantı noktası numarasına göre doğrulayabilir.
  6. Mountless, istenen dosya sisteminin bir açıklamasını döndürür.
  7. İstemci bağlama komutu, 5. adımda elde edilen dosya tanıtıcısını istemci ana bilgisayarındaki yerel bağlama noktasına bağlamak için bağlama sistemi çağrısını yayınlar. Dosya tanımlayıcı, NFS istemcisinin kodunda depolanır ve o andan itibaren, kullanıcı işlemlerinin sunucunun dosya sistemindeki dosyalara herhangi bir erişimi, dosya tanımlayıcısını başlangıç ​​noktası olarak kullanacaktır.

İstemci ve NFS sunucusu arasındaki iletişim

Uzak bir dosya sistemine olağan erişim aşağıdaki gibi tanımlanabilir:

NFS sunucusunda bulunan bir dosyaya erişim sürecinin açıklaması:

NFS sunucusu kurma

Sunucu Ayarı genellikle / etc / export dosyasında uzak sistemler tarafından bağlanmasına izin verilen yerel dizinleri belirtmekle ilgilidir. Bu eylem denir dizin hiyerarşisini dışa aktar... Dışa aktarılan dizinlerle ilgili ana bilgi kaynakları aşağıdaki dosyalardır:

  • / vb / ihracat- dışa aktarılan dizinlerin yapılandırmasını saklayan ana yapılandırma dosyası. NFS ve exportfs yardımcı programını başlatırken kullanılır.
  • / var / lib / nfs / xtab- uzak istemciler tarafından monte edilen dizinlerin bir listesini içerir. Bir istemci bir hiyerarşi eklemeye çalıştığında (bir bağlama kaydı oluşturulur) imp rpc.mountd tarafından kullanılır.
  • / var / lib / nfs / etab- dışa aktarılan dizinlerin tüm özelliklerini gösteren, uzak sistemler tarafından kurulabilen dizinlerin listesi.
  • / var / lib / nfs / rmtab- şu anda dışa aktarılmayan dizinlerin listesi.
  • / proc / fs / nfsd- NFS sunucusunu yönetmek için özel bir dosya sistemi (çekirdek 2.6).
    • ihracat- dışa aktarıldıkları etkin dışa aktarılan hiyerarşilerin ve istemcilerin bir listesi ve ayrıca özellikler. Çekirdek bu bilgiyi / var / lib / nfs / xtab'dan alır.
    • İş Parçacığı- iş parçacığı sayısını içerir (ayrıca değiştirilebilir)
    • filehandle kullanarak bir dosya işaretçisi alabilirsiniz
    • ve benzeri...
  • / proc / net / rpc- çeşitli önbelleklerin yanı sıra nfsstat kullanılarak elde edilebilecek ham istatistikleri içerir.
  • / var / çalıştır / portmap_mapping- RPC hizmetlerinde kayıtlı hakkında bilgi

Not: genel olarak, internette xtab, etab, rmtab dosyalarının amacına dair birçok yorum ve formülasyon var, kime inanacağımı bilmiyorum # image.jpg http://nfs.sourceforge.net/ üzerinde bile , yorum açık değildir.

/ etc / dışa aktarma dosyasını yapılandırma

Normalde, / etc / dışa aktarma dosyası, NFS sunucusu işlevi için düzenlenmesi gereken tek dosyadır. Bu dosya aşağıdaki özellikleri kontrol eder:

  • Hangi müşteriler sunucudaki dosyalara erişebilir
  • hangi hiyerarşiler sunucudaki dizinlere her istemci tarafından erişilebilir
  • Özel müşteri adları nasıl olacak? görüntülenmek yerel kullanıcı adlarına

Dışa aktarma dosyasındaki hangi satırın aşağıdaki biçime sahip olduğu önemli değildir:

export_point client1 (fonksiyonlar) [client2 (fonksiyonlar) ...]

Nereye export_point dışa aktarılan dizin hiyerarşisinin mutlak yolu, müşteri1 - n 1 veya daha fazla istemcinin adı veya boşluklarla ayrılmış, bağlanmasına izin verilen IP adresleri export_point. Fonksiyonlar seçeneklerden önce belirtilen istemci için bağlama kurallarını ana hatlarıyla belirtin.

İşte sıradan örnek dosya yapılandırmasını dışa aktarır:

ARCHIV ~ # cat / etc / dışa aktarma / arşiv1 dosyaları (rw, sync) 10.0.0.1 (ro, sync) 10.0.230.1/24(ro,sync)

Bu örnekte, ana bilgisayar dosyaları okunurken / yazılırken bilgisayar dosyalarının ve 10.0.0.1'in dışa aktarma noktası / arşiv1'e erişimine ve ana bilgisayar 10.0.0.1 ve alt ağ 10.0.230.1/24 için salt okunur erişime izin verilir.

/ etc / dışa aktarma içindeki ana bilgisayar açıklamalarına aşağıdaki biçimde izin verilir:

  • Tek tek düğümlerin adları dosyalar veya dosyalar olarak tanımlanır.DOMAIN.local.
  • Etki alanı maskeleri aşağıdaki biçimde açıklanmıştır: * DOMAIN.local, DOMAIN.local etki alanındaki tüm düğümleri içerir.
  • Alt ağlar, IP adresi / maske çiftleri olarak belirtilir. Örneğin: 10.0.0.0/255.255.255.0, adresleri 10.0.0 ile başlayan tüm düğümleri içerir.
  • Kaynağa erişen @myclients ağ grubunun adını ayarlama (bir NIS sunucusu kullanırken)

Dizin hiyerarşileri için ortak dışa aktarma işlevleri

Dışa aktarma dosyası aşağıdaki genel işlevleri kullanır(çoğu sistemde varsayılan olarak kullanılan işlevler ilk önce parantez içinde belirtilir - varsayılan olarak değil):

  • auth_nlm (no_auth_nlm) veya güvenli_kilitler (güvensiz_kilitler)- Sunucunun kilit isteği kimlik doğrulamasını zorlaması gerektiğini belirtir (NFS Kilit Yöneticisi protokolünü kullanarak).
  • nohide (gizlemek)- sunucu, tüm bunlar diğerinde yuvalanmış (bağlı) olarak iki dizin hiyerarşisini dışa aktarırsa. İstemci elbette ikinci (alt) hiyerarşiyi bağlamalıdır, aksi takdirde alt hiyerarşinin bağlama noktası boş bir dizin gibi görünecektir. nohide işlevi, önemsiz bir bağlama olmadan 2. dizin hiyerarşisine neden olur. (not: Bu seçeneği çalışmaya zorlayamadım ...)
  • ro (rw)- Yalnızca okuma (yazma) isteklerine izin verir. (Sonuçta - okuma/yazma olup olmadığı dosya sistemi izinlerine göre belirlenir, sunucu bir dosya okuma isteğini bir yürütme isteğinden ayırt edemez, bu nedenle kullanıcının okuma veya yürütme izinleri varsa okumaya izin verir.)
  • güvenli (güvensiz)- NFS isteklerinin güvenli bağlantı noktalarından gelmesini ister (< 1024), чтобы программа без прав root не могла монтировать иерархию каталогов.
  • subtree_check (no_subtree_check)- Dosya sisteminin bir alt dizini dışa aktarılırsa ancak dosya sisteminin tamamı verilmezse, sunucu istenen dosyanın dışa aktarılan alt dizinde olup olmadığını kontrol eder. Doğrulamayı devre dışı bırakmak güvenliği azaltır ancak veri aktarım hızını artırır.
  • senkronizasyon (zaman uyumsuz)- sunucunun isteklere ancak bu istekler tarafından yürütülen yapılandırmalar diske yazıldıktan sonra yanıt vermesi gerektiğini belirtir. Zaman uyumsuz işlevi, sunucuya bilgilerin diske yazılmasını beklememesini söyler, bu da performansı artırır, ancak güvenilirliği azaltır, çünkü bağlantı kesilirse veya ekipman arızalanırsa bilgiler kaybolabilir.
  • wdelay (no_wdelay)- Sunucuya, sonraki bir yazma isteği beklemedeyse, verileri daha büyük bloklar halinde yazarak, yazma isteklerinin yürütülmesini geciktirmesini söyler. Bu, büyük yazma kuyrukları gönderirken performansı artırır. no_wdelay, yazma için komutun yürütülmesini ertelememeyi belirtir; bu, sunucu birbirine bağlı olmayan sınırsız sayıda komut alırsa yararlı olabilir.

Sembolik bağların ve cihaz dosyalarının dışa aktarılması. Sembolik bağlantılar içeren bir dizin hiyerarşisini dışa aktarırken, bağlantı nesnesine istemci (uzak) sistem tarafından erişilebilir olmalıdır, başka bir deyişle aşağıdaki kurallardan biri karşılanmalıdır:

  • istemci dosya sisteminde başvurulan bir nesne bulunmalıdır
  • bağlantı nesnesini dışa aktarmanız ve bağlamanız gerekir

Aygıt dosyası, Linux çekirdek arabirimini ifade eder. Bir aygıt dosyasını dışa aktardığınızda, bu arabirim dışa aktarılır. İstemci sistemde aynı türde bir cihaz yoksa, dışa aktarılan cihaz çalışmayacaktır.

İstemci sistemde, NFS nesnelerini monte ederken, bağlı dizinlerdeki cihaz dosyalarının kullanılmaması için nodev seçeneğini kullanabilirsiniz.

Varsayılan işlevler sistemden sisteme değişebilir, / var / lib / nfs / etab dosyasında görüntülenebilirler. Dışa aktarılan dizini / etc / dışa aktardıktan ve NFS sunucusunu yeniden başlattıktan sonra, tüm eksik işlevler (okuma: varsayılan işlevler) / var / lib / nfs / etab dosyasına yansıtılacaktır.

Kullanıcı kimliklerini görüntüleme (eşleştirme) işlevleri

Aşağıdakileri daha iyi anlamak için Linux Kullanıcı Yönetimi makalesini okumanızı öneririm. Her Linux kullanıcısının / etc / passwd ve / etc / group dosyalarında açıklanan kendi UID'si ve ana GID'si vardır.

NFS sunucusu, uzak ana bilgisayarın işletim sisteminin kullanıcıların kimliğini doğruladığını ve onlara doğru UID'leri ve GID'leri atadığını varsayar. Dosyaları dışa aktarmak, istemcinin sistemindeki kullanıcılara, doğrudan sunucuya giriş yapıyormuş gibi bu dosyalara aynı erişimi sağlar. Buna göre, bir NFS istemcisi bir sunucuya istek gönderdiğinde, sunucu yerel sistemdeki kullanıcıyı tanımlamak için UID ve GID'yi kullanır ve bu da bazı sorunlara yol açabilir:


Aşağıdaki işlevler, uzak kullanıcıları yerel olanlara eşlemek için kuralları belirler:

Kullanıcı eşleme dosyası kullanımına bir örnek:

ARCHIV ~ # cat / etc / file_maps_users # Kullanıcıları eşleme # uzak yerel yorum uid 0-50 Bin iki # kullanıcıları uzak bir UID 0-50'ye yerel bir UID'ye eşleme Bin iki gid 0-50 Bin iki # kullanıcıları eşleme / uzak GID 0-50'yi yerel GID 1002'ye yay

NFS Sunucu Yönetimi

NFS sunucusu, aşağıdaki yardımcı programlar kullanılarak yönetilir:

  • nfsstat
  • showmsecure (güvensiz) sayı
  • ihracat

nfsstat: NFS ve RPC istatistikleri

nfsstat yardımcı programı, RPC ve NFS sunucularının istatistiklerini görüntülemenizi sağlar. Komut işlevleri man nfsstat'ta görüntülenebilir.

showmount: NFS durum bilgilerini görüntüle

Showmount yardımcı programı bağlı dosya sistemleri için uzak ana bilgisayar rpc.mountd'yi sorgular. Varsayılan olarak, sıralanmış bir istemci listesi döndürülür. Anahtarlar:

  • --herşey- İstemcinin dizini nereye bağladığını gösteren bir istemci ve bağlama noktaları listesi görüntülenir. Bu bilgi güvenilir olmayabilir.
  • --dizinler- bağlama noktalarının bir listesi verilir
  • --ihracat- nfsd'nin inançlarına dayalı olarak dışa aktarılan dosya sistemlerinin bir listesini verir

showmount'u bağımsız değişkenler olmadan çalıştırırsanız, konsol, bağlanmasına izin verilen sistemler hakkında bilgi görüntüler. yerel koleksiyonlar. Örneğin, ARCHIV ana bilgisayarı bize, belirlenmiş koleksiyonları bağlamasına izin verilen ana bilgisayarların IP adreslerine sahip dışa aktarılan dizinlerin bir listesini sağlar:

DOSYALAR ~ # showmount --exports arşiv arşivi için dışa aktarma listesi: / arşiv-büyük 10.0.0.2 / arşiv-küçük 10.0.0.2

Argümanda ana bilgisayar adını / IP'yi belirtirseniz, bu ana bilgisayarla ilgili bilgiler görüntülenecektir:

ARCHIV ~ # showmount files clnt_create: RPC: Program kayıtlı değil # bu mesaj bize NFSd iblisinin FILES ana bilgisayarında çalışmadığını söylüyor

exportfs: dışa aktarılan dizinleri yönetin

Bu komut, dışa aktarılan koleksiyonlara, dosyadaki verilere hizmet eder. / vb / ihracat, yazmamak daha doğru olur hizmet etmez ama dosya ile senkronize olur / var / lib / nfs / xtab ve var olmayanları xtab'dan kaldırır. exportfs, nfsd imp -r argümanı ile başlatıldığında yapılır. 2.6 çekirdek modundaki exportfs yardımcı programı, / var / lib / nfs / dizinindeki dosyalar aracılığıyla demon rpc.mountd ile konuşur ve doğrudan çekirdekle konuşmaz. Şu anda dışa aktarılan dosya sistemlerini satırsız listeler.

Exportfs özellikleri:

  • [istemci: dizin adı] - belirlenen istemci için belirlenmiş dosya sistemini ekleyin veya kaldırın)
  • -v - daha fazla bilgi göster
  • -r - tüm derlemeleri yeniden dışa aktar (sync / etc / dışa aktarma ve / var / lib / nfs / xtab)
  • -u - dışa aktarılanlar listesinden kaldır
  • -a - tüm dosya sistemlerini ekleyin veya kaldırın
  • -o - virgülle ayrılmış işlevler ( / etc / dışa aktarmalarda kullanılan seçeneklere benzer; böylece önceden monte edilmiş dosya sistemlerinin işlevlerini değiştirebilirsiniz)
  • -i - eklerken / etc / dışa aktarma kullanmayın, yalnızca geçerli komut satırının özellikleri
  • -f - 2.6 çekirdeğinde dışa aktarılan sistemlerin listesini sıfırlayın;

NFS istemcisi

Uzak dosya sistemindeki bir dosyaya erişmeden önce, istemci (istemci) monte et ve sunucudan al işaretçi. NFS'yi Montaj ile yapılabilir komutları bağla veya yetiştirilmiş otomatik montajcılardan 1'inin yardımıyla (amd, autofs, automount, supermount, superpupermount). Montaj işlemi, yukarıdaki resimde mükemmel bir şekilde gösterilmiştir.

Açık NFS istemcileri herhangi bir iblis çalıştırmana gerek yok, istemci işlevleri uzak bir dosya sistemi kurarken kullanılan çekirdek modülünü kernel / fs / nfs / nfs.ko yapar. Sunucudan dışa aktarılan koleksiyonlar, istemciye aşağıdaki yollarla yüklenebilir:

  • mount komutunu kullanarak manuel olarak
  • / etc / fstab içinde özetlenen dosya sistemlerini kurarken, açılışta otomatik olarak
  • iblis autofs kullanarak otomat

Bu yazıda autofs ile üçüncü yöntemi, büyük miktarda bilgi nedeniyle ele almayacağım. Belki sonraki makalelerde ayrı bir açıklama olacaktır.

Ağ Dosyaları Sistemini mount komutuyla bağlayın

Mount komutunun kullanımına bir örnek, blok cihazlarını kontrol etmek için Komutlar sonrası sunulmuştur. İşte bir NFS dosya sistemini bağlamak için bir mount komutu örneği:

DOSYALAR ~ # mount -t nfs arşivi: / arşiv-küçük / arşivler / arşiv-küçük DOSYALAR ~ # mount -t nfs -o ro arşiv: / arşiv-büyük / arşivler / arşiv-büyük DOSYALAR ~ # mount ..... .. arşiv: / arşiv-küçük tür / arşivler / arşiv-küçük tür nfs (rw, adres = 10.0.0.6) arşiv: / arşiv-büyük tür / arşivler / arşiv-büyük tür nfs (ro, adres = 10.0.0.6)

1. komut, arşiv sunucusundaki dışa aktarılan /archiv-small dizinini, varsayılan seçeneklerle (diğer bir deyişle, okuma / yazma) yerel bağlama noktasına / arşivler / arşiv-küçük dizinine bağlar.

Rağmen mount komutu en son dağıtımlarda, tür belirtmeden hangi tür dosya sisteminin kullanıldığını düşünmeyi bilir, yine de -t nfs parametresini belirtmek daha iyidir. 2. komut, arşiv sunucusundaki dışa aktarılan /archiv-big dizini, salt okunur (ro) seçeneğiyle yerel /archivs /archiv-big dizinine bağlar. Komutu bağlaözellikleri olmadan montajın sonucunu bize açıkça gösterir. Salt okunur işlev (ro) dışında, diğer NFS'yi monte ederken ana işlevler:

  • nosuid- Bu işlev, bağlı bir dizinden setuid programlarının yürütülmesini engeller.
  • düğüm(cihaz yok) - Bu işlev, karakter kullanımını yasaklar ve özel dosyaları cihaz olarak engeller.
  • kilit (kilitsiz)- NFS kilitlemesine izin verir (varsayılan). nolock, NFS kilitlemesini devre dışı bırakır (kilitsiz çalışmaz) ve NFS kilitlemesini desteklemeyen eski sunucular için kullanışlıdır.
  • mounthost = isim- Bağlanmamış NFS'nin üzerinde çalıştığı ana bilgisayar adı mountd.
  • bağlantı noktası = n - Demon mountd tarafından kullanılan bağlantı noktası.
  • bağlantı noktası = n- NFS sunucusuna bağlanmak için kullanılan bağlantı noktası (varsayılan olarak, rpc.nfsd besp RPC sunucusunda kayıtlı değilse 2049). n = 0 (varsayılan) ise, NFS, bağlantı noktasını bulmak için sunucudaki bağlantı noktası haritasına bir istek gönderir.
  • boyut = n(okuma bloğu boyutu) - NFS sunucusundan bir kerede okunan bayt sayısı. Standart - 4096.
  • wsize = n(blok boyutunu yaz) - NFS sunucusuna bir kerede yazılan bayt sayısı. Standart - 4096.
  • tcp veya udp- NFS'yi bağlamak için sırasıyla TCP veya UDP protokolünü kullanın.
  • erkek arkadaş- Sunucuya erişimi kaybederseniz, sistem önyükleme işlemiyle çakışmamak için testleri arka planda tekrarlayın.
  • fg- Sunucuya erişimi kaybederseniz, testleri öncelik modunda tekrarlayın. Bu seçenek, bağlama denemelerini tekrarlayarak önyükleme işlemini engelleyebilir. Bu nedenle fg parametresi öncelikle hata ayıklama amacıyla kullanılır.

NFS Bağlandığında Özniteliğin Önbelleğe Alınmasını Etkileyen İşlevler

Dosya öznitelikleri inod'da (inode) saklanan değişiklik zamanı, boyut, sabit bağlantılar, sahip gibi bilgiler genellikle sıradan dosyalar için ara sıra ve dizinler için daha az sıklıkla değiştirilir. ls gibi birçok program dosyalara salt okunur olarak erişir ve dosya özniteliklerini veya içeriğini değiştirmez, ancak sistem kaynaklarını maliyetli ağ işlemlerinde boşa harcar.

Gereksiz kaynak israfını önlemek için şunları yapabilirsiniz: önbellek verilen nitelikler... Çekirdek, önbellekteki değişiklik zamanını ve dosyanın kendisinin değişiklik zamanını karşılaştırarak önbelleğin güncel olup olmadığını öğrenmek için bir dosyanın değişiklik zamanını kullanır. Öznitelik önbelleği, şu parametrelere göre periyodik olarak güncellenir:

  • ac (noac)(öznitelik önbelleği - özniteliklerin önbelleğe alınması) - Özniteliklerin önbelleğe alınmasını etkinleştirir (varsayılan olarak). noac işlevi sunucuyu yavaşlatsa da, birden çok istemci aktif olarak paylaşılan hiyerarşiye bilgi yazarken öznitelik süresinin dolmasını önler.
  • adirmaks = n(öznitelik önbellek dizini dosyası maksimum - NFS'nin dizin özniteliklerini güncellemeden önce beklediği maksimum saniye sayısı (varsayılan Altmış saniyedir)
  • acdirmin = n(öznitelik önbellek dizini dosyası minimum - dizin dosyası için öznitelik önbelleği minimum) - NFS'nin dizin özniteliklerini güncellemeden önce beklediği az sayıda saniye (varsayılan olarak 30 saniye)
  • aregmaks = n(öznitelik önbelleği normal dosya maksimumu - normal bir dosya için öznitelik önbelleği maksimumu) - NFS'nin normal bir dosyanın özniteliklerini güncellemeden önce beklediği maksimum saniye sayısı (varsayılan Altmış saniyedir)
  • aregmin = n(öznitelik önbelleği normal dosya minimumu - normal bir dosya için minimum öznitelik önbelleğe alma) - NFS'nin normal bir dosyanın özniteliklerini güncellemeden önce beklediği az sayıda saniye (varsayılan Üç saniyedir)
  • eylem = n(öznitelik önbellek zaman aşımı - öznitelik önbellek zaman aşımı) - Yukarıdaki seçeneklerin tümü için değerleri geçersiz kılar. actimeo belirtilmemişse, yukarıdaki değerler varsayılan değerlerine ayarlanır.

NFS Hata İşleme İşlevleri

Aşağıdaki işlevler, sunucudan yanıt gelmediğinde veya G/Ç hataları oluştuğunda NFS'nin ne yapması gerektiğini kontrol eder:

  • fg (bg)(ön plan - ön plan, arka plan - arka plan) - Başarısız NFS'nin ön plan / arka plan montaj problarını oluşturun.
  • sert-yumuşak)- zaman aşımına ulaşıldığında konsola "sunucu yanıt vermiyor" mesajını görüntüler ve montaj denemelerine devam eder. Bu fonksiyon ile yumuşak- bir zaman aşımı oluştuğunda, çağıran programa bir G/Ç hatası bildirir. (yumuşak seçeneği kullanmamanız önerilir)
  • nointr (iç)(kesinti yok) - Uzun bir zaman aşımına ulaşıldığında, sinyallerin sabit monteli dizin hiyerarşisinde dosya işlemlerini kesmesini önler. - kesinti sağlar.
  • yeniden aktar = n(yeniden iletim değeri) - n küçük zaman aşımından sonra, NFS büyük bir zaman aşımı (varsayılan olarak 3) oluşturur. Uzun bir zaman aşımı, belirtilen donanım / yazılım işlevine bağlı olarak işlemleri durdurur veya konsola "sunucu yanıt vermiyor" mesajı görüntüler.
  • tekrar dene = n(yeniden deneme değeri) - NFS hizmetinin bağlama işlemlerini vazgeçmeden önce yeniden denediği dakika sayısı (varsayılan olarak 10.000).
  • zaman = n(zaman aşımı değeri) - RPC veya düşük zaman aşımı durumunda NFS hizmetinin yeniden iletimden önce beklediği saniyenin 10'u sayısı (varsayılan 7). Bu değer, her zaman aşımında Altmış saniyelik daha büyük bir değere veya büyük bir zaman aşımı gerçekleşene kadar artar. Ağ meşgulse, sunucu yavaşsa veya bir istek birden çok yönlendiriciden veya ağ geçidinden geçiyorsa, bu değeri artırmak performansı artırabilir.

Önyüklemede otomatik NFS montajı (/ etc / fstab içindeki dosya sistemlerinin açıklaması)

İlgili yazıda /etc/fstab dosyasının açıklamasına değinmiştim. Mevcut örnekte, seçeneklerin bir açıklamasıyla NFS dosya sistemlerini bağlamanın birkaç örneğini ele alacağım:

DOSYALAR ~ # cat / etc / fstab | grep nfs arşivi: / arşiv-küçük / arşivler / arşiv-küçük nfs rw, zaman = 4, rsize = 16384, wsize = 16384 Sıfır Sıfır nfs-sunucusu: / arşiv-büyük / arşivler / arşiv-büyük nfs rw, zaman = 50 , zor, fg Sıfır 0

1. örnek, /archiv-small dosya sistemini ana bilgisayar arşivinden bağlama noktasına /archivs /archiv-small bağlar, dosya sistemi türü nfs'dir (her zaman bu tür için belirtilmelidir), dosya sistemi, okuma/yazma seçeneği (rw) ...

Arşiv ana bilgisayarı hızlı bir yerel bağlantı üzerinden bağlanır, bu nedenle performansı artırmak için timeo parametresi düşürüldü ve rsize ve wsize değerleri önemli ölçüde artırıldı. Bu programların NFS'ye bağlı bir dosya sistemi kullanmasını önlemek için döküm ve fsck alanları sıfıra ayarlanır.

2. örnek, /archiv-big dosya sistemini host nfs-server'dan bağlar. Çünkü yavaş bir bağlantı yoluyla nfs sunucusu ana bilgisayarına bağlıyız, timeo parametresi 5 saniyeye (50 10. saniye) yükseltildi ve sabit parametre de sabit kodlandı, böylece NFS uzun bir zaman aşımından sonra dosya sistemini yeniden bağlamaya devam ediyor , fg parametresi de ayarlanır, böylece sistem önyüklendiğinde ve ana bilgisayar nfs sunucusu kullanılamadığında askıda kalmaz.

Yapılandırmaları / etc / fstab'a kaydetmeden önce, manuel olarak monte etmeyi deneyin ve her şeyin çalıştığından emin olun !!!

NFS performansını iyileştirme

Çeşitli özellikler, özellikle yavaş bağlantılarda NFS performansını etkileyebilir. Yavaş ve yüksek yük bağlantılarıyla çalışırken, zaman aşımlarının programların sonlandırılmasına neden olmaması için sabit parametreyi kullanmak daha iyidir. Ancak, dosya sistemini fstab aracılığıyla hard parametresiyle NFS aracılığıyla bağlarsanız ve uzak ana bilgisayar kullanılamıyorsa, sistemin önyükleme sırasında askıda kalacağını göz önünde bulundurmanız gerekir.

Ayrıca, NFS performansını iyileştirmenin en kolay yollarından biri, bir seferde aktarılan bayt sayısını artırmaktır. Dört bin doksan 6 b'nin boyutu modern hızlı bağlantılar için çok küçüktür, bu değeri sekiz bin 100 doksan iki veya daha fazlasına çıkararak deneysel olarak en iyi hızı bulabilirsiniz.

Ayrıca, gözden kaçırmayın ve zaman aşımı işlevleri... NFS, timeo fonksiyonunda belirtilen süre kadar veri aktarımına yanıt bekler, bu süre içinde yanıt alınmazsa yeniden aktarım yapılır.

Ancak meşgul ve yavaş bağlantılarda, bu süre sunucunun yanıt süresinden ve iletişim kanallarının kapasitesinden daha az olabilir ve bu da sonuçta işi yavaşlatan gereksiz yeniden iletimlere neden olabilir.Varsayılan olarak, süre 0,7 saniyedir (700 milisaniye) . Yedi yüz ms içinde yanıt alınmazsa, sunucu yeniden gönderecek ve bekleme süresini 1.4 saniyeye iki katına çıkaracak, timeo'daki artış Altmış saniyeden daha büyük bir değere devam edecektir. Ayrıca, sert / yumuşak parametresine bağlı olarak bazı işlemler gerçekleşir (yukarıya bakın).

İletilen paketin belirli bir değeri (rsize / wsize değerleri) için en iyi zaman değerini bulmak için ping komutunu kullanın:

DOSYALAR ~ # ping -s 30 iki bin yedi yüz altmış sekiz arşiv PING arşivi.DOMAIN.local (10.0.0.6) 32768 (32796) bayt veri. Archiv.domain.local'den 30 iki bin yedi yüz 70 6 bayt (10.0.0.6): icmp_req = 1 ttl = 64 zaman = 0.931 ms 30 iki bin yedi yüz 70 6 bayt, archiv.domain.local'den (10.0.0.6): icmp_req = 2 ttl = 64 zaman = 0,958 ms 30 iki bin yedi yüz 70 6 bayt archiv.domain.local'den (10.0.0.6): icmp_req = 3 ttl = 64 zaman = 1.03 ms 30 iki bin yedi yüz 70 6 bayt arşivden .domain.local (10.0.0.6): icmp_req = 4 ttl = 64 zaman = 1,00 ms 30 iki bin yedi yüz 70 6 bayt archiv.domain.local'den (10.0.0.6): icmp_req = 5 ttl = 64 zaman = 1.08 ms ^ C --- arşiv.DOMAIN.local ping istatistikleri --- 5 paket iletildi, 5 paket alındı, %0 paket kaybı, zaman 4006ms rtt min / ort / max / mdev = 0.931 / 1.002 / 1.083 / 0.061 ms

Gördüğünüz gibi, 30 iki bin yedi yüz altmış sekiz (32 Kb) boyutunda bir paket gönderirken, istemciden sunucuya ve geri dönüş süresi Bir milisaniye bölgesinde yüzer. Bu süre iki yüz ms için ölçeğin dışına çıkarsa, zaman değerini, değişim değerini üç ila dört kat aşacak şekilde artırmayı düşünmelisiniz. Buna göre, bu test en iyi şekilde güçlü bir ağ yükü sırasında yapılır.

NFS'yi Başlatma ve Güvenlik Duvarını Yapılandırma

http://bog.pp.ru/work/NFS.html blogundan kopyalanan not, çok teşekkür ettiği için !!!

NFS sunucusunu başlatın, bağlayın, kilitleyin, kota ve durum "doğru" bağlantı noktalarıyla (güvenlik duvarı için)

  • önceden istemcilerdeki tüm kaynakların bağlantısını kesmek daha iyidir
  • NFSv4 dağıtımı planlanmamışsa rpcidmapd'nin başlatılmasına izin vermeyin ve durdurun: chkconfig --level Üç yüz 40 5 rpcidmapd off service rpcidmapd stop
  • gerekirse portmap, nfs ve nfslock hizmetlerinin başlatılmasını etkinleştirin: chkconfig --levels chkconfig üzerinde üç yüz 40 5 portmap / rpcbind --levels chkconfig üzerinde üç yüz 40 5 nfs --levels Üç yüz 40 5 nfslock açık
  • gerekirse, nfslock ve nfs servislerini durdur, portmap / rpcbind'i başlat, modülleri kaldır servis nfslock stop servisi nfs servisi durdur portmap başlat # servis rpcbind başlat umount / proc / fs / nfsd servisi rpcidmapd stop rmmod nfsd servisi autofs stop # daha sonra bir yerde gerekir çalıştırılabilir rmmod nfs rmmod nfs_acl rmmod lockd
  • iptables portlarını aç
    • RPC için: UDP / 111, TCP / 111
    • NFS için: UDP / 2049, TCP / 2049
    • rpc.statd için: UDP / 4000, TCP / 4000
    • lockd için: UDP / 4001, TCP / 4001
    • mountd için: UDP / 4002, TCP / 4002
    • rpc.rquota için: UDP / 4003, TCP / 4003
  • rpc.nfsd sunucusu için / etc / sysconfig / nfs'ye RPCNFSDARGS = "- port 2049" satırını ekleyin
  • mount sunucusu için MOUNTD_PORT = 4002 satırını / etc / sysconfig / nfs'ye ekleyin
  • yeni sürümler için rpc.rquota işlevi için, / etc / sysconfig / nfs'ye RQUOTAD_PORT = 4003 satırını ekleyin
  • rpc.rquota işlevi için daha eski sürümler için gereklidir (sonuçta, kota 3.08 veya daha yeni bir pakete sahip olmanız gerekir) rquotad 4003 / tcp rquotad 4003 / udp to / etc / services ekleyin
  • / etc / ihracatın yeterliliğini kontrol edecek
  • rpc.nfsd, mountd ve rpc.rquota hizmetlerini başlatın (aynı anda rpcsvcgssd ve rpc.idmapd başlatılır, eğer bunları kaldırmayı unutmadıysanız) service nfsd start veya yeni sürümlerde service nfs start
  • yeni sistemler için kilit sunucusu için LOCKD_TCPPORT = 4001 LOCKD_UDPPORT = 4001 - / etc / sysconfig / nfs satırlarını ekleyin
  • eski sistemler için kilit sunucusu /etc/modprobe [.conf] dosyasına doğrudan ekleyin: options lockd nlm_udpport = 4001 nlm_tcpport = 4001
  • durum sunucusu rpc.statd'yi dört bin bağlantı noktasına bağlayın (eski sistemler için rpc.statd'yi /etc/init.d/nfslock içindeki -p 4000 anahtarıyla çalıştırın) STATD_PORT = 4000
  • start services lockd ve rpc.statd service nfslock start
  • tüm bağlantı noktalarının "lsof -i -n -P" ve "netstat -a -n" ile düzgün şekilde bağlandığından emin olun (bağlantı noktalarından bazıları lsof'un görmediği çekirdek modülleri tarafından kullanılır)
  • sunucu "yeniden inşa edilmeden" önce istemciler tarafından kullanıldıysa ve sunucunun bağlantısı kaldırılamıyorsa, istemcilerde otomatik bağlama hizmetlerini yeniden başlatmanız gerekir (am-utils, autofs)

Örnek NFS Sunucusu ve İstemci Yapılandırması

Sunucu yapılandırması

NFS bölümlenmiş dizininizi açık ve yazılabilir yapmak istiyorsanız, all_squash seçeneğini anonuid ve anongid seçenekleriyle birlikte kullanabilirsiniz. Örneğin, "hiç kimse" grubundaki "hiç kimse" kullanıcısının haklarını ayarlamak için aşağıdakileri yapabilirsiniz:

ARCHIV ~ # cat / etc / export # 192.168.0.100'de istemci için okuma / yazma erişimi, doksan dokuz kullanıcı için rw erişimi ile doksan dokuz / dosyalar 192.168.0.100 (rw, sync, all_squash, anonuid = 99, anongid = 99)) # 192.168.0.100'de istemci için okuma / yazma erişimi, kullanıcı için rw erişimi ile doksan dokuz / dosya 192.168.0.100 (rw, sync, all_squash, anonuid = 99, anongid = 99))

Bu ayrıca, belirtilen dizine erişime izin vermek istiyorsanız, hiç kimse.nobody'nin paylaşılan dizinin sahibi olmaması gerektiği anlamına gelir:

# chown -R kimse.nobody / dosyalar

İstemci yapılandırması

İstemcide, uzak dizini uygun bir şekilde, örneğin mount komutuyla bağlamanız gerekir:

DOSYALAR ~ # mount -t nfs arşivi: / dosyalar / arşivler / dosyalar

Özet

Fuh ... Yazı bitti. Şu anda okuduk Ağ Dosya Sistemi nedir ve neyle yenir, bir sonraki yazımda Kerberos kimlik doğrulaması ile NASIL yapmaya çalışacağım. Umarım malzeme anlaşılır ve gerekli olmuştur.

Eklemelerinizi ve yorumlarınızı almaktan memnuniyet duyarım!

NFS NASIL, nfs.sourceforge, man nfs? adam dağı, adam ihracatı

RFC Bin doksan dört - NFSv1, v2
RFC Bin sekiz yüz on üç - NFSv3
RFC Üç bin 500 30 - NFSv4
RFC 5 bin 600 altmış bir - NFSv4.1
NFS NASIL YAPILIR
nfs.sourceforge.net
adam dağı
adam ihracat