NFS

NFS (Network File System)

Network File System yani ağ dosya sistemi , Sun Microsystems tarafından 1984 yılında geliştirilmiş , ağdaki bilgisayarların ortak bir dosya sistemine RPC (Remote Produce Call)  temelli dağıtık dosya sistemi yapısıdır. Ağ dosya sistemi (NFS), bir ağ üzerindeki birden fazla bilgisayarda bulunan dosyaların , tek bir sabit diskte yer alır gibi yönetilmesini sağlar.

Bu durumda dosyalara erişebilmek için fiziksel olarak nerede bulunduklarnın bilinmesi gerekmez.

NFS sayesinde bir makinede yer alan belirli bir disk bölümü , başka makinalar tarafından kolayca okunabilir veya yazılabilir. Genellikle bu işleme özellikle büyük organizasyonlarda disk alanından tasarruf etmek için başvurulur. Bu işlemlerin tek bir sunucuda toplanması , her makinada aynı dosyalar ve programlar kullanılmasını zorunlu tutmadan kolayca yapılabilmesi için önemlidir. Tek bir sunucuda toplanan dizinler diğer bilgisayarlar ile bu alanı ortak paylaşırlar ve paylaşılan dosya yerel bilgisayardaki bir dizinmiş gibi davranır.

Kendi disk alanını paylaşan makinaya NFS sunucusu , bu diske erişim yapan makinalara NFS istemcisi adı verilir.

NFS Protokolü hakkında ;

NFS olarak adlandırılan Network File System (Ağ Dosya Sistemi) birbirinden farklı 4 ayrı protokolün birleşiminden meydana gelmiştir. Bu 4 protokolde RPC ve prtmap (rpc.portmap) portmapper , RPC program numaralarnı port numaralarna çevirir. RPC sunucusu çalışmaya başladığında portmap’a hangi kapının kullanılacağını ve yönetilen RPC program numarasını söyler. Bir kullanıcı bir program numarasına bir RPC isteği göndermek istediğinde ise ; istenilen programa erişim veren port numarasını almak için ilk olarak sunucu “portmap” ile bağlantı kurar sonrasında ise RPC paketleri ilgili portlara gönderilir.

Ağ dosya sisteminin çalışmasını sağlayan 4 yardımcı şunlardır ;

  1. NFS : Temel protokol olup dosya yaratma , arama , okuma , yazmaya izin verir. Güvenilirlik ve dosya istatistiğini de yöneten protokoldür.
  2. mountd : İhraç edilen dosya dizgilerinin ağ dosya yönetimi ile erişimlerini sağlamak amacı ile kurulmasından sorumludur. “mount” ve “umount” gibi istekleri alan sunucu ihraç edilen dosya dizgilerine ait bilgileri tutmak zorundadır.
  3. Nsm (Ağ Durum Ekranı) : Bir makinanın durumunu (sunucu – istemci) belirlemek için ağ düğümlerini izleyip kontrol etmek amacı ile kullanır.
  4. Nlm (Ağ Kilit Yöneticisi) : Aynı anda farklı istemcilerin verileri değiştirmesini engellemek için bu protokol bir kilit dizgesi kullanır. Hangi dosyaların kullanıldığını bilir ve nsm protokolünün yardımıyla bir istemcinin ne zaman başladığını saptar. NSM her kullancının kilidini geri vermeden önce serbest bırakır.

Ağ Üzerinde Paylaşım ;

NFS’in çalışması yerel bir diskin mount edilmesi kadar kolaydır.

Örnek olarak NFS sunucusu olan aspendos makinasında yer alan /home dizinini , yerel makinadaki /users dizinine yerleştirmek için :

# mount -t nfs pardus:/home/users kullanılır.

mount , karşı makinanın erişim izinleri doğru olduğunu teyit ettiği anda bu işlemi gerçekleştirir. Sunucu ile istemci arasında mesaj alış-verişini mountd programı üstlenir.

NFS kullanabilmek için çekirdekte NFS desteği olması şartdır. Eğer aşağıdaki satırlarda nfs kelimesi geçmiyorsa çekirdeğe NFS desteği verilerek tekrar derlenmesi gerekir.

$cat /proc/filesystems

minix

ext2

msdos

nodev proc

nodev nfsd

 

NFS için mount programının genel kullanımı ;

mount -t nfs <sunucu-adresi:paylaşma-dizini> <yerel-dizin> -0 <seçenekler>

Sistem açılırken /etc/fstab dosyasında yer alan bilgilerle uzak makinanın diski otomatik olarak paylaştırılabilir.  Mount programı bazı seçenekleri destekler. Bu seçenekler -o yardımıyla komut satırında verilebildiği gibi /etc/fstab

icinde de belirtilebilir. Her iki durumda da birden fazla seçenek kullanılırsa bunlar birbirinden virgulle ayrılırlar.

Açılış sırasında news makinasındaki /usr/spool/news dosyasını yerel makinadaki /usr/spool/news dizini altına yerleştiren /etc/fstab satırı ;

news:/usr/spool/news  /usr/spool/news nfs timeo=20   şeklinde yazılır.

NFS ile kullanılan timeo seçeneğinin karşısında yer alan sayı (saniyenin onda biri) , bağlantının kurulabilmesi için geçecek maksimum zamanı gösterir. Bu zamanın aşılması halinde sunucuyla bağlantı kesilir.

Kurulum ;

Sunucu :

İlk olarak yapılması gereken , NFS de yapılması istenen portmap protokolünü çalıştırmaktır. NFS başlatılmadan önce konfigürasyon ayarları yapılmalıdır. Sadece bir konfigürasyon dosyası vardır ve /etc/exports olarak bilinir. Her satır ihraç yerini ve erişime sahip istemcilerin listesini işaret etmektedir. Her istemci adının sonuna parametre eklemek mümkündür. ‘man exports’ sayfası istemci adları ve parametreler için söz dizimini açıklar. Istemci adları için izin verilen biçimler şunlardır ;

  • Alan adının başındaki ‘wildcard’ karakteri (acemipenguenler-*.alanadi.tr)
  • NFS kullanılıyorsa bir ‘netgroup’
  • Bir IP adresi

Server kurulumu için terminal ekranına yazılması gereken komut apt-get install nfs-common nfs-kernel-server

Client kurulumu için ise apt-get install nfs-common

NFS konfigürasyon seçenekleri ;

/home/olgu/Masaüstü/nfs 192.167.0.22(ro,sync) Belirtilen IP adresine yazma okuma ve zamanlı çalışma kipinde bağlantı izni verir.

/home/olgu/Masaüstü/nfs 192.167.2.0/24(ro,sync)

NFS Servis için senaryomuz şöyle olsun;

Sunucu X : NFS Server

Sunucu Y : NFS Client

Sunucu X ‘in işlem adımları (server için);

apt-get install nfs-common nfs-kernel-server

mkdir /home/olgu/nfs

touch /home/olgu/nfs/test.txt

echo “Pardus NFS Test”> /home/olgu/nfs/test.txt

chmod 777 -R /home/olgu/nfs

/home/olgu/nfs 192.167.0.22(rw,sync) ardından nfs servisi yeniden başlatılır.

Sunucu Y işlem adımları (Client);

apt-get install nfs-common

mkdir /home/olgu/nfs_local

mount -t nfs 192.167.2.0:/home/olgu/ortak/home/olgu/Acemipenguen

#FSTAB eklenmek istenirse ;

192.167.2.0:/home/pardus/nfs~/yedek nfs defaults 0 0

Sistem yeniden başlatılır yada mount -a kullanılır.

python -m SimpleHTTPServer

Kurulum seçeneklerinin önemlileri şunlardır ;

  • ro (read only) : İstemci ihraç edilen dosyayı sadece okuyabilir.
  • rw (read write) : İstemci ihraç edilen dosyayı okuyabilir ve ona yazabilir.
  • root_squash : Bir kullanıcının ‘root’ olarak ‘root’ izni ile yazamaması tercih edilir. no_root_squash kullanılarak önüne geçilebiririz.
  • all_squash : İhraç edilen sisteme erişen tüm kullanıcılar ‘nobody’ kullanıcısına ait UID/GID i kullanır.
  • anonuid , anongid : ‘nobody’ kullanıcısı bu seçeneklerle UID ve GID i kullanır.

NFS Kullanım Avantajları ;

  • Yerel bir işletmede tüm kullanıcılar tek bir bilgisayar üzerindeki aynı disk alanını paylaşabilirler. NFS’nin NIS ile birlikte kullanımı sayesinde bir kullanıcı herhangi bir makinaya girip diğer kullanıcılarla birlikte aynı dosya yapısı ile çalışabilir.
  • Paylaşım sayesinde büyük disk alanı isteyen programlar tek bir sunucuda toplanabilir ve bu sayede önemli miktarda diskten tasarruf sağlanabilir.
  • Bir makina üzerinde yapılan değişiklik , her makinada yapılmış gibi olur. Böylece ayni yazılımı ağ içerisinde olan diğer bilgisayarlara yükleme zorunluluğu ortadan kalkar.

Kaynaklar ;

NFS ile ilgili aktaracaklarım bu kadar arkadaşlar bir sonraki yazımda görüşmek üzere 🙂

Olgu Koze

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir