• Ağ dosya sistemleri ve Linux. Ağ Dosya Sistemi (NFS) - ağ dosya sistemi

    NFS, bir Unix makinesinde dizinleri paylaşmanıza izin verir. NFS'nin ve özellikle NIS'nin güvensizliği, RPC ile ilişkilidir - her tür istismarın sayısı açısından, RPC resmi olmayan lider gibi görünmektedir (Sendmail hariç). Bu protokoller dahili ağlar için tasarlandığından, "onların" kullanıcılarından korunmaları gerekecektir. Bunları kullanmadan önce, gerçekten gerekli olup olmadığına karar vermeniz gerekir.

    İÇİNDE ev ağı oldukça yararlı olabilirler, ancak Şirket ağı güvenlik nedeniyle bunlara daha güvenli bir alternatif bulmak daha iyidir.

    NFS dosya sistemi.

    Ağ Dosya Sistemi (Ağ Dosya sistemi, NFS), Sun tarafından diğer Unix makinelerinde barındırılan dosyalara erişmenin bir yolu olarak geliştirilmiştir. yerel ağ. NFS, yıllar boyunca birçok güvenlik açığının nedeni olan güvenlik göz önünde bulundurularak tasarlanmamıştır.

    NFS, TCP veya UDP üzerinden çalışabilir ve RPC sistemini kullanır; bu, genellikle güvenlik açığı bulunan şu uygulamaların çalışıyor olması gerektiği anlamına gelir: portmapper, nfs, nlockmgr (lockd), rquotad, statd ve mountd.

    NFS çalıştırmanıza gerek yok - alternatif bir çözüm bulmanız gerekiyor. NFS'ye hala ihtiyaç varsa, burada onu kullanma riskini nasıl en aza indireceğimizden bahsedeceğiz.

    /etc/dışa aktarma

    İlk adım, dosya sistemlerini dışa aktaracak makineleri seçmektir. Ardından, ağdaki NFS sunucularına (veya varsa sunucuya) hangi makinelerin bağlanmasına izin verildiğini belirleyebilirsiniz. İnternete doğrudan (doğrudan) bağlı olan makinelerde NFS kullanmayın. Makineler seçildikten sonra, dışa aktarılmak üzere bu makinelerdeki dizinler seçilmelidir.

    Dışa aktarma dizinleri /etc/exports dosyasında tanımlanır. Her girişin biçimi basittir: bir dizin adı, erişime izin verilen kullanıcıların bir listesi ve bir erişim modu. Örneğin:

    /home/user dizinine tam erişime (okuma/yazma) makinede 10.0.0.6 IP adresiyle izin verilir. En iyisi vermemek tam erişim, ancak salt okunur erişim (rо) ile sınırlandırılmalıdır. Buna ek olarak, aşağıdaki seçenekleri de belirleyebilirsiniz:

    • güvenli- Bağlama isteği ayrıcalıklı bir bağlantı noktasından gelmelidir (1024'e kadar). Bu, mount komutunun root ayrıcalıklarına sahip bir kullanıcı tarafından girildiği anlamına gelir.
    • Root_squash- rica etmek kök kullanıcı anonim bir kullanıcıdan gelen bir istek olarak ele alınacaktır. Bu, sisteme en az zararı vermenizi sağlar. Bu seçenek etkinleştirilmelidir.
    • All_squash- tüm istekler (yalnızca kök kullanıcıdan değil) anonim bir kullanıcıdan geliyormuş gibi ele alınacaktır. Genel olarak dışa aktarılan dizinler için kullanışlıdır.

    Bir kök kırıcı, /etc/exports içinde belirtilen bir dizine rw erişimi verilen bir makineye erişim kazanırsa, dosya sistemi üzerinde tam denetime sahip olacaktır, bu nedenle kök dizin (/) dışa aktarılamaz ve sistem açısından önemli dizinler , örneğin /usr, /bin, /sbin, /lib, /opt ve /etc. Kullanıcı ana dizinleri dışa aktarma için iyidir.

    İstemci tarafında, paylaşılan bir dosya sisteminin bağlanması, -o nosuid seçeneği belirtilerek yapılmalıdır:

    # mount -t nfs -o nosuid 10.0.0.3:/home/user/files /mnt/home/frank

    Bu, bir NFS sunucusuna erişen bir korsanın istemcilere kök erişimi elde etmesini önleyecektir.

    Erişim sınırlaması.

    Hizmetten bağımsız olarak, makineye erişimi kısıtlamak için IPTable'ları kullanmanız gerekir. Bir NFS sunucusu söz konusu olduğunda, bu özellikle önemlidir. IPTable'ları kullanırken, NFS arka plan programının 2049/TCP/UDP bağlantı noktasını kullandığını unutmayın.

    Portmapper ve NFS gibi bazı RPC hizmetleri sabit bağlantı noktaları kullanır (sırasıyla 113 ve 2049/tcp/udp), ancak diğer RPC hizmetlerinin sabit bağlantı noktaları yoktur, bu da IPTable'ları kullanarak paketlerin filtrelenmesini zorlaştırır. Bilinen tek şey, RPC'lerin 32768-65535 aralığındaki bağlantı noktalarını kullanmasıdır.

    Çekirdek 2.4.13 veya daha yenisini kullanıyorsanız, -p seçeneğini kullanın<порт>her bir RPC hizmeti için tam bağlantı noktasını belirleyebilirsiniz.

    Dikkate almak başlangıç ​​işlevi() nsflock'u başlatmak için kullanılan /etc/rc.d/init.d/nfslock dosyasından:

    başlangıç()(

    #. Daemon'ları başlatın.

    if [ "$USERLAND_LOCKD" ]; Daha sonra

    echo -n $"NFS kilitlemesi başlatılıyor: "

    daemon rpc.lockd

    echo -n $"NFS durumu başlatılıyor: "

    arka plan programı rpc.statd

    yankı [ $RETVAL -eq 0 ] && touch /var/touch/lock/subsys/nfslock

    $RETVAL döndürür)

    statd arka plan programını belirli bir bağlantı noktasını kullanmaya zorlamak için -p seçeneğini kullanabilirsiniz, örneğin daemon rpc.statd -p 32800 (veya ne isterseniz). Benzer şekilde, mountd, nfsd, rquotad için bağlantı noktasını ayarlamanız gerekir - bunların tümü /etc/rc.d/init.d/nfs betiğinden başlatılır:

    başlangıç()(

    # Daemon'ları başlat.

    action -n $"NFS hizmetleri başlatılıyor: " /usr/sbin/exportfs -r

    if t _x /usr/sbin/rpc.quotad ] ; sonra echo -n $"NFS kotaları başlatılıyor: " daemon rpc.rquotad echo

    fi echo -n $"NFS bağlantısı başlatılıyor: "

    daemon rpc.mountd 3RPCMOUNTDOPTS

    echo -n $"NFS arka plan programı başlatılıyor: " daemon rpc.nfsd $RPCNFSDOPTS echo touch /var/lock/subsys/nfs

    Lockd (nlockmgr) için bağlantı noktasını değiştirme teknolojisi yukarıdakinden farklıdır (/etc/rc.d/init.d/nfslock dosyasını değiştirmeye çalışmayın - hiçbir şey işe yaramaz).

    Lockd ya bir çekirdek modülü olarak uygulanır ya da çekirdeğe statik olarak derlenir. Port numarasını değiştirmek için /etc/modules dosyasını açın ve modüle iletilen seçenekleri bulun:

    seçenekler kilitli nlm_udpport=33000 nlm_tcpport=33000

    Artık RPC hizmetleri bilinen statik bağlantı noktalarını kullandığına göre, IPTable'ların kullanılması gerekir. Aşağıdaki kurallar, NFS'nin makinede çalışan tek sunucu olduğunu ve yalnızca /usr/local/etc/nfsexports.hosts dosyasında listelenen makinelerin buna erişmesine izin verildiğini varsayar:

    IPX="/usr/sbin/iptables"

    # Tüm zincirleri temizle

    $IPT -- yıkama

    $IPT -t nat --flush $IPT -t mangle --flush $IPT -X

    # Geri döngü trafiğine izin ver $IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT

    # Varsayılan kurallar $IPT -P GİRİŞ BIRAK $IPT -P ÇIKIŞ BIRAK $IPT -P İLERİ BIRAK

    $IPT -A GİRİŞ -m devlet-devlet KURULDU,İLGİLİ -j KABUL EDİLMİŞ $IPT -A ÇIKTI -m durum -durum YENİ,KURULMUŞ,İLGİLİ -j KABUL

    # Her bilgisayara erişime izin ver,

    # /usr/local/etc/nfsexports.hosts içinde belirtildi

    "cat /usr/local/etc/nfsexports.hosts" içindeki ana bilgisayar için; $IPT -I INPUT -s $host -p tcp -dport 111 -j KABUL ET

    $IPT -I GİRİŞ -s $host -p udp -dport 111 -j KABUL

    $IPT -I GİRİŞ -s $host -p udp -dport 2049 -j KABUL

    $IPT -I GİRİŞ -s $host -p tcp --dport 32800 -j KABUL

    $IPT -I GİRİŞ -s $host -p tcp --dport 32900 -j KABUL

    $IPT -I GİRİŞ -s $host -p tcp -dport 33000 -j KABUL

    $IPT -I GİRİŞ -s $host -p tcp --dport 33100 -j KABUL

    Tabii ki, bu sadece bir iskelet, daha birçok kuralın eklenmesi gerekecek: en azından SSH'ye izin verin ve /proc ile bazı çekirdek parametrelerini ayarlayın.

    NFS'yi SSH üzerinden tünelleme.

    NFS kısaltması bazen "Dosya Güvenliği Yok" olarak deşifre edilir - bu üç kelime kendileri için konuşur. Bu nedenle, NFS trafiğinin korunmasını sağlamak çok önemlidir. Bunu ssh ile yapmak kolaydır.

    Başlangıçta, NFS sunucusundaki /etc/exports dosyasını, dosya sistemlerinin yerel ana bilgisayara dışa aktarılacağı şekilde değiştirebilirsiniz:

    Ardından, NFS bağlantı noktalarını iletmek ve takmak için SSH kullanmanız gerekir. NFS, 2049/udp bağlantı noktasını kullanır ve mountd, belirtildiği gibi 33000 bağlantı noktasını kullanır:

    #ssh [e-posta korumalı]-L 200: localhost:2049 -f uyku 120m

    #ssh [e-posta korumalı]-L 200: localhost:33000 -f uyku 120m

    Bu iki komut, kullanıcıya etkileşimli bir kabuk sağlar, ancak birine gerek olmadığı için SSH, uyku 120'yi yürütür: geri dön Komut satırı, ancak port yönlendirme 2 saat daha sürecektir.

    Dosya sistemini istemci tarafından bağlamak çok sıra dışı görünüyor:

    mount -t nfs -o nosuid bağlantı noktası=200 mountport=210 nfsserver.test.net:/home/user /mnt/another

    Eğer ssh tünelleme hileleri çok karmaşıksa SHFS (Shell Filesystem) projesini kullanabilirsiniz ( http://shfs.sourceforge.net/ ), bu da tüm bu prosedürü otomatikleştirmeyi mümkün kılar.

    Kurulduktan sonra, SHFS'ye mount -t shfs komutuyla veya yeni shfsmount komutuyla erişilebilir. Bu komutun sözdizimi bir öncekine benzer:

    shfsmount [e-posta korumalı]:/home/kullanıcı /mnt/kullanıcı

    CFS ve TCFS

    Kriptografik Dosya Sistemi, kullanarak NFS trafiğinin şeffaf şifrelemesini ve şifresini çözmeyi kullanır. DES algoritması. Ayrıca, destekler otomatik kontrol işlemi kullanıcı için mümkün olduğunca "şeffaf" yapan tuşlar.

    CFS, SunOS ve BSD için geliştirilmiş olmasına rağmen, paylaşılan dosyaların "şeffaf" kodlamasına yönelik ilk girişim gibi göründüğü için ilginçtir. Şeffaf Şifreleme Dosya Sistemi (TCFS), NFS trafiğini kodlamak için daha da şeffaf bir yol sağlar.

    Veri kodlamaya ek olarak, bu dosya sistemi veri bütünlüğü kontrollerini destekler.

    Ağ Dosya Sistemi (NFS), karışık Windows ve Unix/Linux makine ortamlarına sahip kuruluşlar için bir dosya paylaşım çözümüdür. NFS dosya sistemi, işletim sistemi çalışırken dosyaların belirtilen farklı platformlar arasında paylaşılmasını mümkün kılar. Windows Server Windows Server 2012'de 2012 NFS, aşağıdaki özellikleri ve geliştirmeleri içerir.

    1. Araştır Aktif Dizin. Dosyalara erişmek için Windows Active Directory kullanma olanağına sahipsiniz. Active Directory için Unix şema uzantısı için Kimlik Yönetimi, Unix kullanıcı tanımlayıcısı (UID) ve grup tanımlayıcısı (GID) alanları içerir. Bu, NFS Sunucusu ve NFS İstemcisi hizmetlerinin Unix'teki Windows kullanıcı hesabı eşlemelerini doğrudan hizmetlerden görüntülemesine olanak tanır. aktif alan Dizin (Active Directory Etki Alanı Hizmetleri). Unix için Kimlik Yönetimi, Active Directory Etki Alanı Hizmetlerinde Windows'un Unix kullanıcı hesaplarıyla eşlenmesini yönetmeyi kolaylaştırır.

    2. Geliştirilmiş sunucu performansı. NFS Hizmetleri, sunucudaki genel dosya erişim gecikmesini önemli ölçüde azaltan bir dosya filtresi sürücüsü içerir.

    3. Özel Unix cihazları için destek. NFS Hizmetleri, özel Unix aygıtlarını (mknod) destekler.

    4. Genişletilmiş Unix desteği. NFS Hizmetleri şu Unix sürümlerini destekler: Sun Microsystems Solaris sürüm 9, Red Hat Linux sürüm 9, IBM AIX sürüm 5L 5.2 ve Hewlett Packard HP-UX sürüm 11i'nin yanı sıra birçok modern Linux dağıtımı.

    NFS kullanma ihtiyacı yaratan en yaygın senaryolardan biri, kullanıcılara erişimi açmayı içerir. Windows ortamı Unix tabanlı bir kurumsal kaynak planlama (ERP) sistemine. ERP sistemindeyken, kullanıcılar daha fazla analiz için raporlar oluşturabilir ve/veya finansal verileri Microsoft Excel'e aktarabilir. NFS dosya sistemi, bu dosyalara hala Windows ortamında erişilmesine izin vererek, özel teknik becerilere olan ihtiyacı azaltır ve dosyaları bir Unix komut dosyası kullanarak dışa aktarmak ve ardından bunları belirli bir Windows uygulamasına içe aktarmak için harcanan zamanı azaltır.

    Dosyaları bazı depolama alanı ağlarında depolamak için kullanılan bir Unix sisteminizin olduğu bir durumla da karşılaşabilirsiniz (Depolama Alan Ağı-SAN). Bir Windows Server 2012 makinesinde NFS çalıştırmak, bir kuruluştaki kullanıcıların orada depolanan dosyalara Unix tarafında komut dosyası oluşturma yükü olmadan erişmesine olanak tanır.

    NFS'yi kurmadan önce, Services for Unix'e dahil olan NFS bileşenleri gibi önceden kurulmuş tüm NFS bileşenlerini kaldırmanız gerekir.

    NFS Hizmet Bileşenleri

    NFS Hizmetlerinin aşağıdaki iki bileşeni mevcuttur.

    1. NFS Sunucusu(NFS için Sunucu). Genel olarak, Unix tabanlı bir bilgisayar, Windows tabanlı bir bilgisayarda bulunan dosyalara erişemez. Ancak, Windows Server 2012 R2 ve NFS Sunucusu çalıştıran bir bilgisayar, Windows ve Unix bilgisayarlar için bir dosya sunucusu görevi görebilir.

    2. NFS İstemcisi(NFS İstemcisi). Tipik olarak, Windows tabanlı bir bilgisayar, Unix tabanlı bir bilgisayardaki dosyalara erişemez. Ancak, Windows Server 2012 R2 ve Client for NFS bileşenini çalıştıran bir bilgisayar, Unix tabanlı bir NFS sunucusunda depolanan dosyalara erişebilir.

    PowerShell kullanarak NFS İçin Sunucu Kurma

    Bir sunucuya NFS rolü yüklemek ve bir NFS dosya paylaşımı oluşturmak için PowerShell'i nasıl kullanacağımızı görelim.

    1. Görev çubuğundan yönetici hesabı olarak bir Windows PowerShell penceresi açın.

    2. NFS rolünü sunucuya yüklemek için aşağıdaki komutları girin:

    PS C:\> Import-Module ServerManager PS C:\> Add-WindowsFeature FS-NFS-Services PS C:\> Import-Module NFS

    3. Yeni bir NFS dosya paylaşımı oluşturmak için aşağıdaki komutu girin:

    PS C:\> New-NfsShare - "Test" Adı - "C:\Shares\Test" Yolu

    4. Windows Server 2012 R2'de bulunan tüm yeni NFS ile ilgili PowerShell cmdlet'lerini görüntülemek için aşağıdaki komutu çalıştırın:

    PS C:\> Get-Command -Module NFS

    5. C:\Shares\Test klasörüne sağ tıklayın, "özellikler"i seçin, ardından NFS Paylaşımı sekmesine tıklayın. NFS Paylaşımını Yönet düğmesine tıklayın, beliren iletişim kutusunda klasöre erişim izinlerini yönetebilir, anonim erişime izin verebilir ve dosya kodlama ayarlarını yapılandırabilirsiniz. PowerShell kullanmadan NFS Gelişmiş Paylaşım iletişim kutusunu kullanarak bir klasörü NFS üzerinden paylaşabilirsiniz.

    Standart İzinleri Ayarlama

    Şimdi NFS'nin çalışması için bazı güvenlik duvarı portlarını açmamız gerekiyor. için gerekli portlar normal işleyen NFS hizmetleri aşağıdaki tabloda sunulmaktadır.

    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 - Ağ Dosya Sistemi hakkında konuşmak istiyorum. Bu teknoloji, uzak bir bilgisayardaki tek tek FS noktalarını yerel bilgisayarın dosya sistemine bağlamanıza olanak tanır. 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. Yedeklenen dosyaları ashep-desktop'tan kopyalamak için dizin erişimi gerekir. 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.

    #image.jpg Blogumun okuyucuları ve misafirleri iyi eğlenceler. Gönderiler arasında çok uzun bir ara oldu, ancak savaşa geri döndüm). Bugünün makalesinde, bakacağım NFS protokolünün çalışması, Ve Linux'ta NFS sunucusu ve NFS istemcisi kurma.

    NFS'ye Giriş

    NFS (Ağ Dosya Sistemi- ağ dosya sistemi) bence - mükemmel çözüm 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 ihtiyaç duyduğunuz ve iletilen bilgilerin güvenliğinin ön planda olmadığı bir yerel ağda. NFS protokolü uzak dosya sistemlerini ağ üzerinden bir disk dosya sistemiymiş gibi yerel bir dizin ağacına bağlamanıza olanak tanır.

    Böylece yerel uygulamalar, yerel dosya sistemiyle olduğu gibi uzak dosya sistemiyle de çalışabilir. Ama dikkatli olmak(!) NFS'yi yapılandırma, çünkü belirli bir yapılandırmayla, istemci işletim sistemini sonsuz G/Ç beklerken askıya alabilirsiniz.

    NFS protokolü işe dayalı RPC protokolü, bu hala benim anlayışımın ötesinde)) bu yüzden makaledeki materyal biraz belirsiz olacak ... NFS'yi kullanmadan önce, ister sunucu ister istemci, çekirdeğinizin NFS dosyasını desteklediğinden emin olmalısınız. sistem. /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/filesystems nodev nfs nodev nfs4 nodev nfsd

    /proc/filesystems dosyasında belirtilen satır yoksa, 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 yükledikten sonra, belirtilen dosyada NFS desteği görüntülenmiyorsa, bu özelliği etkinleştirmek için çekirdeğin yeniden derlenmesi gerekecektir.

    Hikaye Ağ Dosya Sistemi

    NFS protokolü Sun Microsystems tarafından geliştirilmiştir ve tarihinde dört versiyonu vardır. NFSv1, 1989'da geliştirildi ve deneyseldi, UDP protokolü üzerinde çalışıyordu. Sürüm Bir, RFC 1094'te açıklanmıştır.

    NFSv2, aynı yıl 1989'da piyasaya sürüldü, aynı RFC1094 tarafından tanımlandı ve aynı zamanda UDP protokolünü temel alırken bir dosyadan en az 2 GB'ın okunmasına izin verdi. NFSv3, 1995'te son haline getirildi ve RFC 1813'te açıklandı.

    Üçüncü versiyonun ana yenilikleri dosya desteğiydi. büyük beden, teknolojinin performansını önemli ölçüde hızlandıran TCP protokolü ve büyük TCP paketleri için destek eklendi. NFSv4, 2000 yılında sonlandırıldı ve RFC 3010'da açıklandı, 2030'da revize edildi ve RFC 3530'da açıklandı.

    4. sürüm, 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 sürüm v4.1, 2010 yılında IESG tarafından onaylandı ve RFC 5661 aldı.

    Sürüm 4.1'in temel yeniliği, bir NFS istemcisinin birden çok dağıtılmış NFS sunucusundan gelen verilere paralel erişimi için bir mekanizma olan pNFS - Paralel NFS özelliğidir. Örnek bir ağ dosya sisteminde böyle bir mekanizmanın varlığı, dağıtılmış "bulut" ("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 açık Linux'ta. (Ayrıca ağların ana kavramları makalesini de okuyabilirsiniz). Ardından, uygun paketi kurmanız gerekir. Debian'da nfs-kernel-server ve nfs-common paketleridir, RedHat'ta ise nfs-utils paketidir.

    Ayrıca, demonun uygun çalışma seviyelerinde başlatılmasına izin vermek gerekir (RedHat'taki komut /sbin/chkconfig nfs on, Debian'da - /usr/sbin/update-rc.d nfs-kernel-server defaults).

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

    ARCHIV ~ # ls -la /etc/rc2.d/ | grep nfs lrwxrwxrwx Tek kök kök 20 18 Ekim 15:02 S15nfs-ortak -> ../init.d/nfs-ortak lrwxrwxrwx Tek kök kök 20 yedi Ekim 20 iki 01:23 S16nfs-kernel-server -> ../init .d/nfs-çekirdek sunucusu

    Başka bir deyişle, ilk çalıştırma 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. profesyonel nfs-ortak Debian sitesi tam anlamıyla bize şunları söylüyor: Paylaşılan dosyalar bir NFS istemcisi ve sunucusu için, bu paketin bir NFS istemcisi veya sunucusu olarak işlev görecek makineye yüklenmesi gerekir.

    Paket, programları içerir: lockd, statd, showmount, nfsstat, gssd ve idmapd. /etc/init.d/nfs-common başlangıç ​​komut dosyasının içeriğini inceledikten sonra, aşağıdaki çalışma sırasını izleyebilirsiniz: komut dosyası /sbin/rpc.statd yürütülebilir ikili dosyasının varlığını denetler, varlığını denetler /etc/default/nfs-common, /etc/fstab ve /etc/exports dosyalarında imp'lerin çalışmasını gerektiren özellikler idmapd Ve gssd, cini başlatır /sbin/rpc.statd, sonra başlatmadan önce /usr/sbin/rpc.idmapd ve /usr/sbin/rpc.gssd bu yürütülebilir ikili dosyaların olup olmadığını kontrol eder, ardından şeytan için /usr/sbin/rpc.idmapd sunrpc, nfs'nin varlığını kontrol eder ve nfsd çekirdek modülleri ve ayrıca çekirdekteki rpc_pipefs dosya sistemi desteği (başka bir deyişle, /proc/filesystems dosyasındaki varlığı), her şey başarılıysa, o zaman başlar /usr/sbin/rpc.idmapd. Ayrıca, bir iblis için /usr/sbin/rpc.gssd rpcsec_gss_krb5 çekirdek modülünü kontrol eder ve imp'i başlatır.

    İçeriği görüntülerseniz NFS sunucusu başlatma betiği Debian'da (/etc/init.d/nfs-kernel-server), aşağıdaki sıralama izlenebilir: başlangıçta, betik /etc/exports dosyasının, nfsd çekirdek modülünün, Linux çekirdeğinde (/proc/filesystems dosyasındaki diğer kelimeler) NFS dosya sistemi desteğinin varlığı, her şey yerindeyse, o zaman iblis başlar /usr/sbin/rpc.nfsd, ardından NEED_SVCGSSD parametresinin ayarlanıp ayarlanmadığını kontrol eder (/etc/default/nfs-kernel-server sunucu seçenekleri dosyasında ayarlanır) ve ayarlanmışsa şeytanı başlatır /usr/sbin/rpc.svcgssd, en son şeytanı başlatır /usr/sbin/rpc.mountd. Bu komut dosyası şunu gösteriyor Bir NFS sunucusunun çalışması şunlardan oluşur: demons rpc.nfsd, rpc.mountd ve Kerberos kimlik doğrulaması kullanılıyorsa, ayrıca demon rcp.svcgssd. İblis rpc.rquotad ve nfslogd hala kırmızı şapkayla çalışıyor (Debian'da nedense bu iblis ve yokluğunun nedenleri hakkında bilgi bulamadım, görünüşe göre silinmiş ...).

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

    • rpc.statd- Ağ durumunu izliyor (diğer adıyla Ağ Durumu İzleyicisi, diğer adıyla NSM). Bir kilitlenme / yeniden başlatma sonrasında kilidi doğru şekilde iptal etmenizi sağlar. İhlalleri bildirmek için /usr/sbin/sm-notify programını kullanır. Bes statd hem sunucularda hem de istemcilerde çalışır. Önceden, rpc.lockd'nin çalışması için bu sunucuya ihtiyaç vardı, ancak şimdi kilitlerden ç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- Bes lockd lockd (aka NFS kilit yöneticisi (NLM)) dosyaları kilitleme isteklerini işler. Bes engelleme hem sunucularda hem de istemcilerde çalışır. İstemciler bir dosya kilidi ister ve sunucular bunu verir. (eski ve yeni dağıtımlarda şeytan olarak kullanılmıyor. Modern dağıtımlardaki (çekirdeği 2.2.18'den eski olan) işlevleri ç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 imp, NFS istemcilerinden gelen isteklere hizmet eder. Debian'da /etc/default/nfs-kernel-server dosyasındaki RPCNFSDCOUNT seçeneği ve RedHat'ta /etc/sysconfig/nfs dosyasındaki NFSDCOUNT seçeneği başlatılacak imps sayısını belirler (varsayılan 8'dir).(RPC programı 100003)
    • rpc.mountd- NFS mountd mount, dizinleri bağlamak için istemci isteklerini işler. Bes mountd, NFS sunucularında çalışır. (RPC programı 100005)
    • rpc.idmapd- Sunucudaki NFSv4 bes için idmapd, kullanıcıların yerel uid/gid'sini ad@etki alanı biçimine dönüştürür ve istemcideki hizmet, ad@etki alanı biçimindeki kullanıcıların/grupların adlarını yerel kullanıcı ve grup tanımlayıcılarına dönüştürür ( /etc/idmapd.conf yapılandırma dosyasına göre, ayrıntılar için man idmapd.conf dosyasına bakın):.
    • Ek olarak, NFS'nin eski sürümlerinde gösterimler kullanılmıştır: nfslogd- NFS günlük şeytanı, dışa aktarılan dosya sistemleri için etkinliği yakalar, NFS sunucularında çalışır ve kota- 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 kimlik doğrulaması) 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 sunucusu.

    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 gerekir. port haritası(yeni dağıtımlarda, şu şekilde yeniden adlandırıldı: rpcbind). Bu paket genellikle NFS ile bir bağımlılık olarak otomatik olarak kurulur ve RPC sunucusunun işini gerçekleştirir, yani RPC sunucusunda kayıtlı bazı servisler için dinamik port atamasından sorumludur.

    Kelimenin tam anlamıyla, belgelere göre bu, RPC (Uzaktan Prosedür Çağrısı) program numaralarını TCP / UDP port numaralarına çeviren 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 bes, NFS hizmetleri başlamadan önce /etc/init.d/portmap betiği tarafından başlatılır.

    Kısacası, bir RPC (Uzaktan Prosedür Çağrısı) sunucusunun işi, yerel ve uzak işlemlerden gelen RPC çağrılarını (RPC prosedürleri olarak adlandırılır) işlemektir.

    RPC çağrılarını kullanarak, hizmetler kendilerini bağlantı noktası eşleyicisine (diğer adıyla bağlantı noktası eşleyici, diğer adıyla portmap, aka portmapper, aka, yeni sürümlerde, rpcbind) kaydeder veya buradan kaldırır ve istekleri portmapper'a yönlendiren RPC çağrılarını kullanan istemciler doğru bilgiyi alır. Program servislerinin kullanıcı dostu isimleri ve bunlara karşılık gelen numaralar /etc/rpc dosyasında tanımlanmıştır.

    Bazı servisler karşılık gelen talebi gönderip bağlantı noktası eşleştiricisinde RPC sunucusuna kaydolduğundan, RPC sunucusu haritaları atar. TCP hizmeti ve hizmetin başladığı ve çalışan hizmet (ad hakkında), hizmetin benzersiz numarası (/etc/rpc ile anlaşmalı olarak), protokol ve bağlantı noktası hakkında ilgili bilgileri çekirdekte depolayan UDP bağlantı noktaları. hizmetin çalıştığı ve hizmetin sürümü hakkında ve istek üzerine istemcilere belirtilen bilgileri sağlar. Bağlantı noktası dönüştürücünün kendisinin bir program numarası (100000), sürüm numarası 2, TCP bağlantı noktası 100 onbir ve UDP bağlantı noktası 111 vardır.

    Yukarıda, NFS sunucusunun şeytanlarının bileşimini belirtirken, ana RPC program numaralarını belirttim. Muhtemelen bu paragrafla sizi biraz karıştırdım, bu yüzden açıklığa kavuşturması gereken ana cümleyi söyleyeceğim: bağlantı noktası eşleştiricisinin ana işlevi, kendisine (müşteriye) istenen programın çalıştığı bağlantı noktasını iade etmektir. Buna göre, bir istemcinin belirli bir program numarası ile RPC ile iletişime geçmesi gerekiyorsa, ihtiyaç duyduğu RPC hizmeti ile iletişim kurabilmesi için öncelikle sunucu makine üzerindeki portmap işlemi ile iletişime geçmesi ve port numarasına bakması gerekir.

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

    rpcinfo yardımcı programı, bir RPC sunucusundan bilgi almak için kullanılır. Özellikleri belirtirken -p barındırma programıüzerindeki tüm kayıtlı RPC programlarını listeler. ev sahibi. Bir ana bilgisayar belirtmeden, program hizmetleri yerel ana bilgisayarda görüntüler. Örnek:

    ARCHIV ~ # rpcinfo -p program vers proto port 100k İki tcp 100 onbir portmapper 100k İki udp 100 onbir portmapper 100k 20 dört Bir udp 50 dokuzk dört yüz 50 bir durum 100k 20 dört Bir tcp Altmış sekiz yüz 70 iki durum 100k 20 bir Bir udp 40 fourk üç yüz 10 nlockmgr 100k 20 bir Üç udp 40 fourk üç yüz 10 nlockmgr 100k 20 bir Four udp 40 fourk üç yüz 10 nlockmgr 100k 20 bir Bir tcp 40 dört sekizinci 50 bir nlockm gr 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 İki bin 40 dokuz nfs 100 bin üç Üç tcp İki 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 monte 100 bin 5 Bir tcp 40 bin dört yüz 5 bağlantılı 100 bin 5 İki udp 50 bin üç yüz 6 bağlantılı 100 bin 5 İki tcp 40 bin dört yüz 5 bağlantılı 100 bin 5 Üç udp 50 bin üç yüz 6 bağlantılı 100 bin 5 Üç tcp 40 bin dört yüz 5 bağlantılı

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

    rpcinfo ile bir programın kaydını kaldırabilir veya belirli bir RPC hizmeti hakkında bilgi alabilirsiniz (man rpcinfo'da daha fazla seçenek). Gördüğünüz gibi, portmapper version Two udp ve tcp portlarına, rpc.statd version One udp ve tcp portlarına, NFS kilidine kayıtlıdır. sürüm yöneticisi 1,3,4, iblis nfs sunucusu sürüm 2,3,4 ve demon mount sürüm 1,2,3.

    NFS sunucusu (daha doğrusu demon rpc.nfsd), istemciden istekleri 2049 numaralı bağlantı noktasında UDP datagramları biçiminde alır. NFS'nin, sunucunun dinamik olarak atanmış bağlantı noktalarını kullanmasına izin veren bir bağlantı noktası dönüştürücü ile çalışmasına rağmen, UDP bağlantı noktası 2000 40 nine, çoğu uygulamada NFS'ye sabit kodlanmıştır.

    Ağ Dosya Sistemi Protokolünün Çalışması

    Uzak NFS Montajı

    Uzak bir NFS dosya sistemini bağlama işlemi aşağıdaki gibi gösterilebilir:

    Bir uzak dizini bağlarken NFS protokolünün açıklaması:

    1. Sunucu ve istemcide (genellikle önyükleme sırasında) bir RPC sunucusu başlatılır, portmapper işlemi tarafından korunur ve tcp/111 ve udp/111 bağlantı noktalarında kaydedilir.
    2. RPC sunucusuna kaydolan ve rastgele ağ bağlantı noktalarına kaydolan (hizmet ayarlarında statik bir bağlantı noktası belirtilmemişse) hizmetler başlatılır (rpc.nfsd, rpc.statd, vb.).
    3. istemci bilgisayardaki mount komutu, çekirdeğe dosya sistemi, ana bilgisayar ve pratik olarak dizin türünü belirten ağ dizinini bağlama isteği gönderir; çekirdek, udp/111 üzerindeki NFS sunucusundaki portmap işlemine bir RPC isteği gönderir bağlantı noktası (istemcinin tcp aracılığıyla çalışacak işlevi yoksa)
    4. NFS sunucusu çekirdeği, RPC'yi rpc.mountd imp'in varlığı için sorgular ve imp'in üzerinde çalıştığı ağ bağlantı noktasını istemci çekirdeğine döndürür.
    5. mount, rpc.mountd'nin çalıştığı bağlantı noktasına bir RPC isteği gönderir. Şu anda NFS sunucusu, bir 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. mount imp, istenen dosya sisteminin bir açıklamasını döndürür.
    7. İstemcinin mount komutu, 5. adımda elde edilen dosya tanıtıcıyı müşterinin ana bilgisayarındaki yerel bir bağlama noktasıyla ilişkilendirmek için bir mount sistem çağrısı gönderir. Dosya tanımlayıcı, NFS istemci kodunda saklanır ve bu noktadan itibaren, sunucunun dosya sistemindeki dosyalara kullanıcı işlemleri tarafından yapılan herhangi bir erişim, dosya tanımlayıcıyı bir başlangıç ​​noktası olarak kullanır.

    NFS istemcisi ve sunucusu arasında veri alışverişi

    Bir uzak dosya sistemine olağan erişim, aşağıdaki şema ile açıklanabilir:

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

    Bir NFS sunucusu kurma

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

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

    Not: Genel olarak internette xtab,etab,rmtab dosyalarının amacına yönelik bir çok yorum ve formülasyon mevcut, kime inanacağımı bilemiyorum #image.jpg http://nfs.sourceforge.net/ adresinde bile yorum kesin değildir.

    /etc/exports dosyasını yapılandırma

    Normalde /etc/exports dosyası, NFS sunucu 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 görüntülenen yerel kullanıcı adlarına

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

    ihracat noktası istemci1(işlevler) [istemci2(işlevler) ...]

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

    İşte sıradan dosya yapılandırma örneğini dışa aktarır:

    ARCHIV ~ # cat /etc/exports /archiv1 dosyaları(rw,sync) 10.0.0.1(ro,sync) 10.0.230.1/24(ro,sync)

    Bu örnekte, dosyaların ve 10.0.0.1 bilgisayarlarının /archiv1 dışa aktarma noktasına erişmesine izin verilirken, dosya ana bilgisayarı okuma/yazma konumundadır ve 10.0.0.1 ana bilgisayarı ve 10.0.230.1/24 alt ağı salt okunur erişime sahiptir.

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

    • Bireysel düğüm adları, dosyalar veya dosyalar.DOMAIN.local olarak tanımlanır.
    • Etki alanı maskesinin açıklaması şurada yapılır: aşağıdaki biçim: *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 ana bilgisayarları içerir.
    • Kaynağa erişimi olan @myclients ağ grubu adını belirtme (bir NIS sunucusu kullanırken)

    Katalog Hiyerarşilerini Dışa Aktarmaya Yönelik Genel İşlevler

    Aşağıdaki ortak işlevler dışa aktarma dosyasında kullanılır(İlk olarak, çoğu sistemde varsayılan olarak kullanılan işlevler belirtilir, varsayılan olmayanlar parantez içinde gösterilir):

    • auth_nlm (no_auth_nlm) veya güvenli_kilitler (güvenli olmayan_kilitler)- sunucunun kilit isteklerinin kimlik doğrulamasını araması gerektiğini belirtir (NFS Kilit Yöneticisi protokolünü kullanarak).
    • gizlemek (gizlemek)- sunucu, biri diğerinde iç içe (bağlı) olmak üzere iki dizin hiyerarşisini dışa aktarırsa. İstemcinin elbette ikinci (alt) hiyerarşiyi bağlaması gerekir, aksi takdirde alt hiyerarşinin bağlama noktası boş bir dizin gibi görünür. Nohide işlevi, önemsiz bir bağlama olmadan 2. bir dizin hiyerarşisi ile sonuçlanır. (not: Bu seçeneği çalışmaya zorlayamadım...)
    • ro(rw)- Yalnızca okuma (yazma) isteklerine izin verir. (Nihayetinde, dosya sistemi izinlerine göre okunabilir/yazılabilir olup olmadığı belirlenirken, sunucu bir dosya okuma isteği ile bir yürütme isteği arasında ayrım yapamaz, bu nedenle kullanıcı okuduysa veya çalıştırırsa okumaya izin verir. izinler.)
    • 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ı dışa aktarılmazsa, 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 yalnızca bu istekler tarafından yapılan yapılandırmalar diske yazıldıktan sonra yanıt vermesi gerektiğini belirtir. Zaman uyumsuz işlevi, sunucuya bilgilerin diske yazılmasını beklememesi talimatını verir, bu da performansı artırır ancak güvenilirliği azaltır. bağlantının kesilmesi veya ekipman arızası durumunda bilgiler kaybolabilir.
    • wdelay (no_wdelay)- sunucuya, sonraki bir yazma isteği beklemedeyse, verileri daha büyük bloklar halinde yazarak, yazma isteklerini yürütmeyi geciktirmesi talimatını verir. Bu, büyük yazma komutları sıraları gönderirken performansı artırır. no_wdelay, yazma komutunun yürütülmesini geciktirmemeyi belirtir; bu, sunucu sınırsız sayıda alakasız komut aldığında yararlı olabilir.

    Sembolik bağlantıları ve cihaz dosyalarını dışa aktarın. Sembolik bağlantılar içeren bir dizin hiyerarşisini dışa aktarırken, bağlantı nesnesi istemci (uzak) sistem tarafından kullanılabilir olmalıdır, başka bir deyişle, aşağıdaki kurallardan biri doğru olmalıdır:

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

    Cihaz dosyası arabirimi ifade eder Linux çekirdekleri. Bir aygıt dosyasını dışa aktardığınızda, bu arabirim dışa aktarılır. İstemci sisteminde aynı türde bir aygıt yoksa, dışa aktarılan aygıt çalışmayacaktır.

    İstemci sistemde, NFS nesnelerini bağlarken, bağlanan dizinlerdeki aygıt dosyalarının kullanılmaması için nodev seçeneği kullanılabilir.

    Farklı sistemlerdeki varsayılan işlevler değişebilir, bunlar /var/lib/nfs/etab dosyasında bulunabilir. Dışa aktarılan dizini /etc/exports içinde tanımladı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ılarını Yönetme makalesini okumanızı tavsiye ederim. 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 ve GID'yi atadığını varsayar. Dosyaları dışa aktarmak, istemci sistem kullanıcılarına, sanki doğrudan sunucuda oturum açmış gibi bu dosyalara aynı erişimi verir. Buna göre, bir NFS istemcisi bir sunucuya istek gönderdiğinde, sunucu kullanıcıyı tanımlamak için UID ve GID'yi kullanır. yerel sistem, bu da bazı sorunlara yol açabilir:


    Aşağıdaki işlevler, uzak kullanıcıları yerel olanlarda görüntüleme kurallarını belirler:

    Bir kullanıcı eşleme dosyası kullanma örneği:

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

    NFS sunucu yönetimi

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

    • nfsstat
    • güvenli (güvensiz) sayımı göster
    • ihracatfs

    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'nin durumu hakkında bilgi görüntüler

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

    • --Tümü- İstemcinin dizini nereye bağladığını gösteren, istemcilerin ve bağlama noktalarının bir listesi verilir. Bu bilgi güvenilir olmayabilir.
    • -- dizinler- bağlama noktalarının listesi
    • -- ihracat- nfsd'nin inançlarına göre dışa aktarılan dosya sistemlerinin bir listesi verilir

    showmount'u bağımsız değişken olmadan çalıştırmak, bağlamaya izin verilen sistemler hakkındaki bilgileri konsola yazdıracaktır. yerel koleksiyonlar. Örneğin, ARCHIV ana bilgisayarı bize, belirtilen koleksiyonları bağlamasına izin verilen ana bilgisayarların IP adreslerini içeren dışa aktarılan dizinlerin bir listesini sağlar:

    DOSYALAR ~ # showmount --exports arşiv Arşiv için dışa aktarma listesi: /archiv-big 10.0.0.2 /archiv-small 10.0.0.2

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

    ARCHIV ~ # showmount dosyaları clnt_create: RPC: Program kayıtlı değil # bu mesaj bize NFSd demonunun ana bilgisayar FILES üzerinde çalışmadığını söyler

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

    Bu komut, dışa aktarılan koleksiyonlara, bir dosyadaki verilere hizmet eder. /etc/dışa aktarma, hizmet etmez, ancak dosya ile senkronize edilir yazmak daha doğru olur /var/lib/nfs/xtab ve var olmayanları xtab'dan kaldırır. exportfs, nfsd iblisini -r argümanıyla başlatırken yapılır. Çekirdek modu 2.6'daki exportfs yardımcı programı, /var/lib/nfs/ dizinindeki dosyalar aracılığıyla rpc.mountd iblisiyle konuşur ve doğrudan çekirdekle konuşmaz. Özellikler olmadan, şu anda dışa aktarılan dosya sistemlerinin bir listesini verir.

    exportfs özellikleri:

    • [client:dirname] - belirtilen istemci için belirtilen dosya sistemini ekleyin veya kaldırın)
    • -v - daha fazla bilgi göster
    • -r - tüm koleksiyonları yeniden dışa aktarın ( /etc/exports ve /var/lib/nfs/xtab senkronizasyonu)
    • -u - dışa aktarma listesinden kaldır
    • -a - tüm dosya sistemlerini ekleyin veya kaldırın
    • -o - virgülle ayrılmış işlevler (/etc/exports'ta kullanılan seçeneklere benzer; bu nedenle önceden bağlanmış dosya sistemlerinin işlevlerini değiştirebilirsiniz)
    • -i - eklerken /etc/exports kullanmayın, yalnızca geçerli komut satırının özelliklerini kullanın
    • -f - 2.6 çekirdeğindeki dışa aktarılan sistemlerin listesini sıfırlayın;

    NFS istemcisi

    Uzak dosya sistemindeki bir dosyaya erişmeden önce, müşteri(ler) monte et ve sunucudan alın ona işaretçi. NFS montajı kullanılarak yapılabilir bağlama komutları veya yumurtlayan otomatik mounter'lardan birinin 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 iblislerin kaçmasına gerek yok, istemci işlevleri uzak bir dosya sistemini bağlarken kullanılan çekirdek modülünü kernel/fs/nfs/nfs.ko yapar. Sunucudan dışa aktarılan koleksiyonlar, istemciye aşağıdaki şekillerde yüklenebilir:

    • mount komutunu kullanarak manuel olarak
    • /etc/fstab içinde belirtilen dosya sistemlerini bağlarken otomatik olarak önyükleme sırasında
    • otomatik olarak autofs iblisini kullanarak

    Autofs ile 3. yöntemi, büyük miktarda bilgi içermesi nedeniyle bu makalede ele almayacağım. Belki ileriki yazılarda ayrı bir açıklama olur.

    Ağ Dosyaları Sistemini mount komutuyla bağlama

    Mount komutunu kullanmanın bir örneği, Blok sonrası cihaz yönetimi komutlarında sunulmuştur. Burada, bir NFS dosya sistemini bağlamak için mount komutunun bir örneğine bakacağım:

    DOSYALAR ~ # mount -t nfs arşiv:/archiv-small /archivs/archiv-small DOSYALAR ~ # mount -t nfs -o ro arşiv:/archiv-big /archivs/archiv-big DOSYALAR ~ # mount ..... ..archiv:/archiv-small on /archivs/archiv-small tip nfs (rw,addr=10.0.0.6)archiv:/archiv-big on /archivs/archiv-big tip nfs (ro,addr=10.0.0.6)

    1. komut, arşiv sunucusundaki dışa aktarılan /archiv-small dizinini, varsayılan seçeneklerle (başka bir deyişle oku/yaz) yerel bağlama noktasına /archivs/archiv-small bağlar.

    Rağmen bağlama komutu son dağıtımlarda, tür belirtmeden ne tür dosya sistemi kullanıldığını düşünebilir, ancak -t nfs seçeneğini belirtmek daha iyidir. 2. komut, arşiv sunucusundaki dışa aktarılan /archiv-big dizinini salt okunur (ro) seçeneğiyle yerel /archivs/archiv-big dizinine bağlar. bağlama komutuözellikler olmadan, bize bineğin sonucunu açıkça gösterir. Salt okunur işlevin (ro) dışında, diğerlerini belirtmek mümkün olabilir. NFS'yi kurarken ana işlevler:

    • susuz - Bu işlev bağlı dizinden setuid programlarının yürütülmesini yasaklar.
    • nodev(cihaz yok - cihaz değil) - Bu fonksiyon, karakter kullanımını yasaklar ve özel dosyaları cihaz olarak engeller.
    • kilit (kilitsiz)- NFS kilitlemeyi etkinleştirir (varsayılan). nolock, NFS kilitlemeyi devre dışı bırakır (lockd iblisini başlatmaz) ve NFS kilitlemeyi desteklemeyen eski sunucularda rahattır.
    • mounthost=isim- NFS mountless çalıştıran ana bilgisayarın adı mountd'dir.
    • mountport=n - mountd imp tarafından kullanılan bağlantı noktası.
    • bağlantı noktası=n- NFS sunucusuna bağlanmak için kullanılan bağlantı noktası (rpc.nfsd şeytanı RPC sunucusunda kayıtlı değilse varsayılan 2049'dur). n=0 (varsayılan) ise, NFS, bağlantı noktasını bulmak için sunucudaki bağlantı noktası haritasına bir istek gönderir.
    • beden=n(blok boyutunu oku - blok boyutunu oku) - NFS sunucusundan tek seferde okunan bayt sayısı. Varsayılan 4096'dır.
    • Geniş beden=n(blok yazma boyutu - yazma bloğunun boyutu) - NFS sunucusuna tek seferde yazılan bayt sayısı. Varsayılan 4096'dır.
    • tcp veya udp- NFS kullanımını bağlamak için TCP protokolü veya sırasıyla UDP.
    • bg- Sunucuya erişiminizi kaybederseniz, sistem önyükleme işlemini engellememek için araştırmaları arka planda tekrarlayın.
    • fg- Sunucuya erişimi kaybederseniz, araştırmaları öncelik modunda tekrarlayın. Bu parametre bağlamayı yeniden deneyerek sistem önyükleme işlemini engelleyebilir. Bu nedenle, fg parametresi esas olarak hata ayıklama amacıyla kullanılır.

    NFS bağlarında öznitelik önbelleğe almayı etkileyen özellikler

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

    Gereksiz kaynak yükünden kaçınmak için şunları yapabilirsiniz: önbellek veri öznitelikleri. Çekirdek, önbellekteki değişiklik zamanı ile dosyanın kendisinin değişiklik zamanını karşılaştırarak önbelleğin eski olup olmadığını öğrenmek için bir dosyanın değiştirilme zamanını kullanır. Nitelik önbelleği, şu parametrelere göre periyodik olarak güncellenir:

    • ac (noak)(öznitelik önbelleği - öznitelik önbelleği) - Öznitelik önbelleğini etkinleştirir (varsayılan). Noac özelliği sunucuyu yavaşlatsa da, birden fazla istemci aktif olarak ortak bir hiyerarşiye bilgi yazarken öznitelik eskimesini önler.
    • acdirmax=n(önbellek dizin dosyası maksimum özniteliği - dizin dosyası için önbellek özniteliği maksimum) - en büyük sayı NFS'nin dizin özniteliklerini güncellemeden önce beklediği saniye (varsayılan değer Altmış saniyedir)
    • acdirmin=n(öznitelik önbellek dizin dosyası minimum - dizin dosyası için minimum öznitelik önbelleğe alma) - NFS'nin dizin özniteliklerini güncellemeden önce beklediği az sayıda saniye (varsayılan olarak 30 saniye)
    • toplamamaks=n(öznitelik önbelleği normal dosya maksimum - normal bir dosya için maksimum öznitelik önbelleğe alma) - NFS'nin normal bir dosyanın özniteliklerini güncellemeden önce beklediği maksimum saniye sayısı (varsayılan değer Altmış saniyedir)
    • agmin=n(öznitelik önbelleği normal dosya minimum) - NFS'nin normal bir dosyanın özniteliklerini güncellemeden önce beklediği az sayıda saniye (varsayılan Üç saniyedir)
    • actimeo=n(öznitelik önbelleği zaman aşımı) - Yukarıdaki seçeneklerin tümü için değerleri geçersiz kılar. actimeo ayarlanmamışsa, yukarıdaki değerler varsayılandır.

    NFS Hata İşleme İşlevleri

    Aşağıdaki işlevler, sunucudan yanıt gelmediğinde veya G/Ç hataları oluştuğunda NFS'nin ne yapacağını denetler:

    • fg (bg)(ön plan - ön plan, arka plan - arka plan) - Ön planda/arka planda başarısız NFS bağlama araştırmaları oluşturun.
    • sert-yumuşak)- zaman aşımına ulaşıldığında konsola "sunucu yanıt vermiyor" mesajını yazdırır ve araştırmaları bağlamaya devam eder. Bu fonksiyon ile yumuşak- zaman aşımında, işlemi çağıran programa bir G/Ç hatası bildirir. (soft seçeneğinin kullanılmaması tavsiye edilir)
    • nointr(intr)(kesme yok - kesme) - Sinyallerin kesilmesine izin vermez dosya işlemleri büyük bir zaman aşımına ulaşıldığında sabit bağlantılı bir dizin hiyerarşisinde. giriş- kesmeyi etkinleştir.
    • yeniden aktarım=n(yeniden iletim değeri) - n küçük zaman aşımından sonra, NFS büyük bir zaman aşımı oluşturur (varsayılan 3). Büyük bir zaman aşımı, donanım/yumuşak işlevinin belirtilip belirtilmediğine bağlı olarak işlemleri sonlandırır veya konsola bir "sunucu yanıt vermiyor" mesajı yazdırır.
    • tekrar dene=n(yeniden deneme değeri) - Vazgeçmeden önce NFS yeniden denemelerinin dakika sayısı (varsayılan 10000).
    • timeo=n(zaman aşımı değeri) - NFS hizmetinin, RPC veya düşük zaman aşımı durumunda yeniden iletmeden önce beklediği 10 saniye sayısı (varsayılan 7). Bu değer, altmış saniyelik daha büyük bir değere kadar veya büyük bir zaman aşımı oluşana kadar her zaman aşımıyla artar. Ağ meşgulse, sunucu yavaşsa veya istek birden çok yönlendirici veya ağ geçidinden geçiyorsa, bu değeri artırmak performansı iyileştirebilir.

    Önyükleme sırasında otomatik NFS bağlama (/etc/fstab içindeki dosya sistemlerinin açıklaması)

    /etc/fstab dosyasının açıklamasından ilgili yazıda bahsetmiştim. Mevcut örnekte, seçeneklerin açıklamasını içeren birkaç NFS dosya sistemi bağlama örneğine bakacağım:

    DOSYALAR ~ # cat /etc/fstab | grep nfs arşivi:/archiv-small /archivs/archiv-small nfs rw,timeo=4,rsize=16384,wsize=16384 null null nfs-server:/archiv-big /archivs/archiv-big nfs rw,timeo=50 ,zor,fg Sıfır 0

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

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

    2. örnek, /archiv-big dosya sistemini nfs-server ana bilgisayarından bağlar. Çünkü nfs-server ana bilgisayarına yavaş bir bağlantıyla bağlandık, timeo parametresi 5 saniyeye (50 10 saniye) yükseltildi ve hard parametresi de sabit kodlandı, böylece NFS uzun bir zaman aşımından sonra dosya sistemini yeniden bağlamaya devam ediyor , fg parametresi de ayarlanmıştır, böylece sistem önyükleme yaptığında ve nfs-server ana bilgisayarı kullanılamadığında askıda kalmaz.

    Yapılandırmaları /etc/fstab dosyasına kaydetmeden önce, manuel olarak kurmayı denediğinizden ve her şeyin çalıştığından emin olun!!!

    NFS performansını iyileştirme

    Özellikle yavaş bağlantılar üzerinde çalışırken birçok şey NFS'nin performansını etkileyebilir. Yavaş ve yüksek yüklü bağlantılarla çalışırken, zaman aşımlarının programların çalışmayı durdurmasına neden olmaması için hard parametresini kullanmak daha iyidir. Ancak, dosya sistemini fstab aracılığıyla sabit seçenekle 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 altı b'nin boyutu modern için çok küçük. hızlı bağlantılar, bu değeri Sekiz bin 100 doksan iki veya daha fazla artırarak, deneysel olarak en iyi hızı bulabilirsiniz.

    Ayrıca gözden kaçırma zaman aşımı işlevleri. NFS, timeo işlevinde belirtilen süre içinde veri göndermek için yanıt bekler, bu süre içinde yanıt alınmazsa yeniden aktarım yapılır.

    Ancak yoğun ve yavaş bağlantılarda bu süre, sunucunun yanıt verme süresinden ve iletişim kanallarının kapasitesinden daha kısa olabilir ve sonuçta gereksiz yeniden iletimlere neden olarak işleri yavaşlatır.Varsayılan olarak, timeo 0,7 saniyedir (700 milisaniye). 700 ms içinde yanıt alınmazsa, sunucu yeniden gönderir ve zaman aşımını ikiye katlayarak 1,4 saniyeye çıkarır, timeo 60 saniye gibi daha büyük bir değere yükselmeye devam eder. Ayrıca, sert / yumuşak parametreye bağlı olarak bazı işlemler gerçekleşir (yukarıya bakın).

    Ping komutunu kullanarak iletilen paketin belirli bir değeri (rsize / wsize değerleri) için en iyi zamanı seçebilirsiniz:

    DOSYALAR ~ # ping -s 30 iki bin yedi yüz altmış sekiz arşiv PING arşiv.DOMAIN.yerel (10.0.0.6) 32768(32796) bayt veri. 30 iki bin yedi yüz 70 6 bayt archiv.domain.local'dan (10.0.0.6): icmp_req=1 ttl=64 süre=0,931 ms 30 iki bin yedi yüz 70 6 bayt archiv.domain.local'dan (10.0.0.6): icmp_req= 2 ttl=64 süre=0,958 ms 30 iki bin yedi yüz 70 6 bayt archiv.domain.local'dan (10.0.0.6): icmp_req=3 ttl=64 süre=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 süre=1,00 ms 30 iki bin yedi yüz 70 6 bayt archiv.domain.local'dan (10.0.0.6): icmp_req=5 ttl=64 süre=1,08 ms ^C ---archive.DOMAIN.local ping istatistikleri --- 5 paket aktarıldı, 5 alındı, %0 paket kaybı, süre 4006ms rtt min/ort/maks/mdev = 0,931/1,002/1,083/0,061 ms

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

    NFS'yi başlatma ve Güvenlik Duvarını yapılandırma

    Not http://bog.pp.ru/work/NFS.html blogundan kopyalanmıştır, bunun için kendisine çok teşekkür ederiz!!!

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

    • istemcilerdeki tüm kaynakları önceden kaldırmak daha iyidir
    • NFSv4 planlanmamışsa rpcidmapd'in başlatılmasını durdurun ve devre dışı bırakın: chkconfig --level Trista 40 5 rpcidmapd off service rpcidmapd stop
    • gerekirse, başlamak için portmap, nfs ve nfslock hizmetlerini etkinleştirin: chkconfig --levels Trista 40 5 portmap/rpcbind on chkconfig --levels Trista 40 5 nfs on chkconfig --levels Trista 40 5 nfslock on
    • gerekirse nfslock ve nfs servislerini durdurun, portmap/rpcbind'i başlatın, çalıştırılması gereken modülleri boşaltın rmmod nfs rmmod nfs_acl rmmod lockd
    • iptables'ta açık portlar
      • RPC için: UDP/111, TCP/111
      • NFS için: UDP/2049, TCP/2049
      • rpc.statd için: UDP/4000, TCP/4000
      • kilitli için: UDP/4001, TCP/4001
      • bağlama 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
    • bağlama 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ı eklemeniz gerekir.
    • rpc.rquota işlevi için eski sürümler için gereklidir (sonuçta kota 3.08 paketine veya daha yeni bir pakete sahip olmanız gerekir) /etc/services rquotad 4003/tcp rquotad 4003/udp'ye ekleyin
    • /etc/exports geçerliliğini kontrol edin
    • rpc.nfsd, mountd ve rpc.rquota hizmetlerini başlatın (silmeyi hatırlarsanız rpcsvcgssd ve rpc.idmapd aynı anda başlatılır) service nfsd start veya daha yeni sürümlerde service nfs start
    • yeni sistemler için kilit sunucusu için LOCKD_TCPPORT=4001 LOCKD_UDPPORT=4001 satırlarını /etc/sysconfig/nfs'ye ekleyin
    • eski sistemler için bir kilit sunucusu için doğrudan /etc/modprobe[.conf] dosyasına ekleyin: options lockd nlm_udpport=4001 nlm_tcpport=4001
    • durum sunucusu rpc.statd'ı bağlantı noktası 4000'e bağlayın (eski sistemler için rpc.statd'yi /etc/init.d/nfslock içinde -p 4000 ile çalıştırın) STATD_PORT=4000
    • lockd ve rpc hizmetlerini başlat.statd hizmeti nfslock başlat
    • tüm bağlantı noktalarının "lsof -i -n -P" ve "netstat -a -n" ile doğru şekilde bağlandığından emin olun (bazı bağlantı noktaları, lsof'un görmediği çekirdek modülleri tarafından kullanılır)
    • sunucu "yeniden inşa edilmeden" önce istemciler tarafından kullanılmışsa ve bunlar kaldırılamazsa, istemcilerde otomatik bağlama hizmetlerini yeniden başlatmanız gerekir (am-utils, autofs)

    NFS sunucusu ve istemci yapılandırma örneği

    Sunucu Yapılandırması

    NFS bölümlenmiş dizininizin açık ve yazılabilir olmasını istiyorsanız, all_squash seçeneğini anonuid ve anongid seçenekleri ile kompozisyonda kullanabilirsiniz. Örneğin, "nobody" grubundaki "nobody" kullanıcısının izinlerini ayarlamak için aşağıdakileri yapabilirsiniz:

    ARCHIV ~ # cat /etc/exports # 192.168.0.100'deki istemci için okuma/yazma erişimi, Ninety-nine kullanıcısı için rw erişimi ile gid Ninety-nine /files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid = 99)) # 192.168.0.100 adresindeki istemci için okuma ve yazma erişimi, Ninety-dokuz kullanıcısı için rw erişimi ile gid Ninety-dokuz /files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99))

    Bu aynı zamanda, belirtilen dizine erişime izin vermek istiyorsanız, paylaşılan dizinin sahibi hiçkimsenin olmaması gerektiği anlamına gelir:

    # chown -R kimse.kimse /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:/files /archivs/files

    Özet

    Phew... Makale tamamlandı. Şu anda okuduk Ağ Dosya Sistemi nedir ve ne ile yenir, bir sonraki yazıda Kerberos kimlik doğrulaması ile NASIL yapmaya çalışacağım. Umarım materyal anlaşılır ve gerekli olmuştur.

    Eklemelerinizden ve yorumlarınızdan memnun olacağım!

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

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

    Herkes veri aktarım protokollerine aşina değildir. Ancak birçoğu bilgisayarlarını tek bir ağa bağlamak veya dosyaları depolamak için bir sunucu kullanmak ister. Bunu yapmanın bir yolu NFS'dir. Ubuntu'da bir NFS sunucusu nasıl kurulur - okumaya devam edin.

    NFS'yi doğru şekilde yapılandırarak, farklı işletim sistemlerindeki bilgisayarları tek bir ağda birleştirebilirsiniz.

    Ağ Dosya Sistemi - protokol Ağ Girişi dosyalara. Her zamanki gibi iki bölümden oluşuyor. Uzak verilerin görüntülendiği bilgisayarda bulunan bir istemci. Başka bir - sunucu - bu verilerin depolandığı bilgisayarda bulunur. Özellikle yerel alan ağında fazladan disk alanını kullanmak oldukça kullanışlıdır. Ve bazı kurumsal bilgisayarlardan bahsediyorsak, bu kesinlikle gereklidir.

    Fark ne?

    Günümüzde aynı işlevleri yerine getiren çok sayıda protokol ve çok çeşitli yazılım bulunmaktadır. NFS'yi öne çıkaran nedir?

    • Farklı işletim sistemlerindeki bilgisayarlardan oluşan bir ağda bağlantı imkanı. Windows işletim sistemini NFS aracılığıyla bir Unix sistemine, örneğin Ubuntu'ya bağlamak genellikle uygundur. Samba vardır ve aynı amaçlar için kullanılır, ancak çekirdek düzeyinde uygulandığı için NFS bu programdan daha hafif, daha basit ve daha hızlıdır. Bu nedenle, kural olarak, üzerinden erişim ayarlamak daha kolay olacaktır.
    • NFS sağlar şeffaf erişim dosyalara. Bu, tüm uzak dosyaların yerel dosyalarla tamamen aynı şekilde oynatıldığı anlamına gelir. Sunucuda bulunan herhangi bir dosyayı oynatmak için programların yükseltilmesi gerekmez.
    • NFS, dosyanın tamamını değil yalnızca istenen kısmını gönderir.

    Tam teşekküllü çalışma için, Ağ Dosya Sistemini en az iki bilgisayara yüklemeniz gerekir: sunucu ve istemci. Doğal olarak, yeni başlayanların en çok sunucu kısmında terlemesi gerekecektir, çünkü orada klasörleri "paylaşmak" (açık erişim) gereklidir. Ancak, bunların hepsini yapmak oldukça kolaydır.

    Çoğu veri aktarım protokolü gibi, NFS de genç olmaktan çok uzaktır. 1984 yılında geliştirilmiştir ve UNIX sistemleri için tasarlanmıştır. Bu hala NFS'nin ana rolüdür, ancak çoğu kişi bunu Windows bilgisayarları Linux bilgisayarlara bağlamak için kullanmanın çok uygun olduğunu bulmuştur. Ek olarak, NFS, yerel bir ev ağı üzerinden multimedya içeriğini oynatmak için harikadır. Bu roldeki Samba genellikle takılıyor ve yavaşlıyor.

    NFS arka ucunu yükleme

    Protokolün sunucu kısmını Ubuntu 16.04 üzerine kuracağız. Doğal olarak, Sunucu sürümüne sahipseniz, süreç hiçbir şekilde farklı değildir. Sadece Ubuntu'nun geleneksel versiyonunda, bazı eylemler bir grafik arayüz kullanılarak gerçekleştirilebilir.

    Programı kuruyoruz. Bunu yapmak için uygulama indirme merkezini kullanabilir veya şu komutu girebilirsiniz:

    sudo apt nfs-kernel-server'ı kurun

    Bundan sonra kurulumun doğruluğunu kontrol etmekte fayda olacaktır. Bunu yapmak zorunda değilsin ama yine de kontrol edeceğiz. Komutu giriyoruz:

    Bağlantı noktası her yerde 2049 olmalıdır.

    Şimdi çekirdeğin NFS'yi destekleyip desteklemediğini kontrol ediyoruz. Bunu yapmak için şunu girin:

    cat /proc/dosya sistemleri | grep nfs

    Ortaya çıkan değer şöyle görünmelidir: nodev nfsd

    Bu, her şeyin doğru çalıştığı anlamına gelir. Değilse, şu komutu girin:

    Bununla çekirdek modülünü kendimiz kuruyoruz.

    Otomatik çalıştırmaya protokol ekleyin. Bunu yapmak gerekli değildir, ancak her seferinde açmak çok sakıncalıdır. kullanarak tekrar ekleyebilirsiniz. özel öğe Ayarlar menüsünde veya şu komutu kullanarak kendiniz yapabilirsiniz:

    sudo systemctl nfs'yi etkinleştir

    Böylece, sunucu bölümünü kurduk, doğru şekilde yapılandırmaya ve istemci kısmına geçmeye devam ediyor.

    Ayar

    Ubuntu'da NFS kurulumu, belirli klasörlerin paylaşılmasını içerir.

    Erişimi açmanın yanı sıra, kullanıcının bu klasörle ilgili yeteneklerini belirleyen parametreleri de belirtmeniz gerekir.

    • rw - okuma ve yazma bu seçenek, klasördeki dosyaların okunmasına ve yazılmasına olanak tanır.
    • ro - sadece okuma - sadece klasörün okunmasına izin verir.
    • senkronizasyon (varsayılan) - parametre, aktarımın güvenilirliğini sağlar. Etkinleştirilirse, birkaç dosyayı aynı anda veya farklı bilgisayarlara aktarmak mümkün olmayacaktır. Bu ayar, diğer isteklerin yanıtlanmasını engelleyecektir. Veri kaybını önler, ancak aktarım daha yavaş olabilir.
    • zaman uyumsuz - önceki parametrenin tersi. Aktarım daha hızlıdır, ancak bilgi kaybı riski vardır.
    • güvenli - bu seçenek yalnızca 1024'ün altındaki bağlantı noktalarının kullanılmasına izin verir. Varsayılan olarak etkindir.
    • güvensiz - herhangi bir bağlantı noktasının kullanılmasına izin verir.
    • nohide - aralarında iç içe geçmiş dizinlerin bulunduğu birkaç dizin bağlarsanız, üst dizinden farklı olarak iç içe olanlar boş olarak görüntülenecektir. Parametre bunu düzeltmeye yardımcı olacaktır.
    • anonuid - anonim için uid'yi belirtir. Bu, özel bir kullanıcı kimliğidir.
    • anongid - anonim için gid'i belirtir. GID (Grup Kimliği) - başka bir kullanıcı kimliği.
    • no_subtree_check - işlev, alt ağaç kontrolünü devre dışı bırakır. Gerçek şu ki, onsuz NFS ayrıca kullanıcıların dizinin yalnızca gerekli bölümlerine erişip erişmediğini kontrol eder. Bu işleri yavaşlatır. Parametre, hızlandırmanıza izin verir, ancak güvenliği düşürür.

    Belirli bir durumda neye ihtiyaç duyulduğuna bağlı olarak bunları kullanacağız.

    hadi yaratalım yeni dosya. Ayrıca yeni kullanabilirsiniz. Klasörümüz /var/network olacaktır.

    Şimdi bu klasörü /etc/exports dosyasına eklememiz gerekiyor. Açık ağ erişimi olan tüm dosya ve klasörler burada saklanır. Giriş şöyle görünmelidir:

    /var/network168.1.1(rw,async,no_subtree_check)

    192.168.1.1, üzerinden iletim yaptığımız IP'dir. Belirttiğinizden emin olun.

    Dışa aktarma tablosunu güncelleyin:

    Şimdi istemci tarafından klasöre erişmeye çalışalım.

    NFS istemcisini yükleme ve yapılandırma

    ubuntu

    Yapılandırılmış bir sunucuyu Ubuntu'ya bağlamak zor değildir. Bu sadece birkaç komutla yapılır.

    Özel bir istemci paketi kurun:

    sudo apt nfs-ortak kurulum

    sudo bağlama 192.168.1.1:/var/ağ/ /mnt/

    Ağ klasörü bağlandı. df'yi kullanarak tüm bağlı ağ klasörlerini kontrol edebilirsiniz:

    Erişim düzeyinizi özel bir komutla da kontrol edebilirsiniz:

    Dosya sistemini aşağıdaki gibi çıkarın:

    mount komutu hemen hemen her yerde kullanılır. Montaj işleminden, yani sabit diskte işletim sistemi tarafından kullanılmak üzere alan hazırlamaktan sorumludur. Kulağa karmaşık geliyor, ancak basitleştirirsek, ağ dosyalarını yeni bir klasörde bilgisayarımıza aktardığımız ortaya çıkıyor. Burada /mnt/ olarak adlandırılır.

    pencereler

    Windows ile, kural olarak, her şey çok daha karmaşıktır. NFS istemcisi, tüm sunucu Windows'larında sorunsuz bir şekilde çalıştırılabilir. Standarttan şu adreste bulunur:

    • Windows 7 Ultimate/Kuruluş
    • Windows 8/8.1 Kurumsal
    • Windows 10 Kurumsal

    Başka hiçbir yerde bulunamadı. Bu sürümlerden birine sahipseniz, aşağıdakileri yapın:

    1. "Programlar ve Özellikler" menüsünü açın.
    2. "Bileşenleri Ekle"yi tıklayın.
    3. Orada NFS'yi buluyoruz ve sadece "Client for NFS" ayarlıyoruz, başka bir bileşene ihtiyacımız yok.

    Bağlandıktan sonra, her şey aynı komutla monte edilir:

    192.168.1.1'i bağla:/var/ağ/ /mnt/

    Bu şekilde bağlantısını kesebilirsiniz:

    Komutlar, yönetici olarak çalıştırılan bir komut istemine girilir. Bundan sonra, Explorer'ı kullanarak istediğiniz ağ sürücüsünü kolayca bulabilirsiniz.

    Peki ya bilgisayarda NFS için istemci yoksa? Yazılımı Microsoft web sitesinden veya üçüncü taraf kaynaklardan indirmeyi deneyebilirsiniz. Burada başka komutlara veya eylemlere ihtiyaç duyulabilir.

    Artık NFC'yi nasıl kullanabileceğiniz ve basit bir kurulum yapabileceğiniz konusunda temel bir anlayışa sahipsiniz. Bu bilgi, bir bilgisayardan diğerine erişim sağlamak için yeterlidir. Ayrıca, bir Windows PC de istemci olarak hareket edebilir.