Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:06:contents:01 [2014/03/29 14:54]
mihai.carabas [01. Lorem ipsum]
saisp:labs:06:contents:01 [2014/03/30 15:51] (current)
alexandru.carp
Line 1: Line 1:
-==== 01. Partajarea de fișiere folosind protocolul NFS ====+==== 01. [10p] Partajarea de fișiere folosind protocolul NFS ====
  
-...+În general, în centrele de date, dezvoltarea puterii de calcul a fost realizată pe orizontală (scale-out),​ preferându-se achiziționarea mai multor sisteme cu putere de calcul medie decât super-calculatoare integrateS-a pus problema ca datele stocate să fie accesibile din orice nod al rețeleiUn serviciu ce poate oferi această facilitate este NFS (Network File System). În arhitectura ''​NFS''​ există un server de stocare care va pune la dispoziție un subset al ierarhiei sale de directoare altor stații numite în continuare clienți.
  
 +Vom instala serverul de NFS pe stația ''​storage1''​ (pe distribuții Debian-based pachetul poartă numele ''​nfs-kernel-server'':<​code bash>
 +root@storage1:​~#​ apt-get install nfs-kernel-server
 +</​code>​
  
 +Vom crea un director ''/​nfs''​ cu un fișier ''​test-nfs''​ în acesta:<​code bash>
 +root@storage1:​~#​ mkdir /nfs
 +root@storage1:​~#​ echo test > /​nfs/​test-nfs
 +</​code>​
 +
 +Toate directoarele exportate către clienți vor fi configurate în fișierul ''/​etc/​exports''​. Vom exporta directorul ''/​nfs''​ creat anterior:<​code bash>
 +root@storage1:​~#​ cat /​etc/​exports |grep /nfs
 +/nfs    192.168.1.2(rw,​sync,​no_subtree_check)
 +</​code>​
 +Pe prima poziție se află directorul care va fi exportat (''/​nfs''​),​ pe a doua poziție se află adresa IP a clientului care va putea accesa acest director, iar în paranteză se află diferite atribute:
 +   * rw (read/​write) - ierarhia de directoare va putea fi citită și scrisă
 +   * sync - toate datele scrise de către clienți vor ajunge la server în momentul apelului de sistem. Nu se va stoca informația în buffere. Acest lucru este necesar în momentul în care mai multe entități folosesc același director exportat pentru a asigura consistența
 +   * no_subtree_check - la accesarea oricărui fișier din sistemul de directoare nu se face nici o verificare asupra existenței acelei căi de acces. Acest lucru crește performanța serviciului NFS, dar poate cauza probleme în situații în care un client accesează un anume fișier, iar altul îl redenumește
 +
 +După configurarea fișierului ''/​etc/​exports''​ trebuie resetat serviciul NFS:<​code bash>
 +root@storage1:​~#​ /​etc/​init.d/​nfs-kernel-server restart
 +</​code>​
 +
 +Pentru a testa funcționalitatea vom crea directorul ''/​nfs''​ pe stația ''​storage2''​ și vom monta directorul exportat de ''​storage1''​ (este necesar să aveți instalat pachetul ''​nfs-common''​):<​code bash>
 +root@storage2:​~#​ apt-get install nfs-common
 +nfs-common is already the newest version.
 +root@storage2:​~#​ mkdir /nfs
 +root@storage2:​~#​ mount -t nfs storage1:/​nfs /nfs
 +root@storage2:​~#​ ls -l /nfs/
 +total 4
 +-rw-r--r-- 1 root root 5 Mar 29 16:52 test-nfs
 +</​code>​
 +În general, este o bună practică să montăm directorul exportat în aceeași ierarhie și pe client, pentru ca sistemul de stocare să fie transparent utilizatorilor,​ indiferent de nodul folosit.
 +
 +Încercați să creați un nou fișier sau să scrieți în fișierul existent:<​code bash>
 +root@storage2:​~#​ touch /​nfs/​test-nfs2
 +touch: cannot touch ‘/​nfs/​test-nfs2’:​ Permission denied
 +</​code>​
 +Implicit serverul de NFS nu permite modificarea ierarhiei de directoare exportate dacă aceasta aparține utilizatorului privilegiat ''​root''​. Pentru a permite acest lucru trebuie adăugată opțiunea ''​no_root_squash''​ la exportarea directorului și resetarea serverului de NFS:<​code bash>
 +root@storage1:​~#​ cat /​etc/​exports |grep squash
 +/nfs    192.168.1.2(rw,​sync,​no_subtree_check,​no_root_squash)
 +root@storage1:​~#​ /​etc/​init.d/​nfs-kernel-server restart
 +</​code>​
 +Observați faptul că acum putem modifica ierarhia de directoare:<​code bash>
 +root@storage2:​~#​ touch /​nfs/​test-nfs2
 +root@storage2:​~#​ ls -l /nfs/
 +total 4
 +-rw-r--r-- 1 root root 5 Mar 29 16:52 test-nfs
 +-rw-r--r-- 1 root root 0 Mar 29 17:14 test-nfs2
 +</​code>​
 +
 +Montați directorul ''/​nfs''​ și pe stația ''​storage3''​. Nu uitați să adăugați adresa IP a acesteia în fișierul de configurare al serverului NFS și să îl resetați pe acesta (Hint: ''​man exports; /IP networks''​).
 +<​solution -hidden>
 +<code bash>
 +root@storage1:​~#​ cat /​etc/​exports
 +/nfs    192.168.1.0/​24(rw,​sync,​no_subtree_check,​no_root_squash)
 +root@storage1:​~#​ /​etc/​init.d/​nfs-kernel-server restart
 +
 +root@storage3:​~#​ mkdir /nfs
 +root@storage3:​~#​ mount -t nfs storage1:/​nfs /nfs
 +root@storage3:​~#​ ls -l /nfs/
 +total 4
 +-rw-r--r-- 1 root root 5 Mar 29 16:52 test-nfs
 +-rw-r--r-- 1 root root 0 Mar 29 17:14 test-nfs2
 +</​code>​
 +</​solution>​
saisp/labs/06/contents/01.1396097683.txt.gz · Last modified: 2014/03/29 14:54 by mihai.carabas
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0