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 integrate. S-a pus problema ca datele stocate să fie accesibile din orice nod al rețelei. Un 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:

root@storage1:~# apt-get install nfs-kernel-server

Vom crea un director /nfs cu un fișier test-nfs în acesta:

root@storage1:~# mkdir /nfs
root@storage1:~# echo test > /nfs/test-nfs

Toate directoarele exportate către clienți vor fi configurate în fișierul /etc/exports. Vom exporta directorul /nfs creat anterior:

root@storage1:~# cat /etc/exports |grep /nfs
/nfs    192.168.1.2(rw,sync,no_subtree_check)

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:

root@storage1:~# /etc/init.d/nfs-kernel-server restart

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):

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

Î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:

root@storage2:~# touch /nfs/test-nfs2
touch: cannot touch/nfs/test-nfs2’: Permission denied

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:

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

Observați faptul că acum putem modifica ierarhia de directoare:

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

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).

saisp/labs/06/contents/01.txt · Last modified: 2014/03/30 15:51 by alexandru.carp
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