This shows you the differences between two versions of the page.
saisp:labs:06:contents:01 [2014/03/29 17:21] mihai.carabas [01. Partajarea de fișiere folosind protocolul NFS] |
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 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. | Î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'':<code> | + | 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 | root@storage1:~# apt-get install nfs-kernel-server | ||
</code> | </code> | ||
- | Vom crea un director ''/nfs'' cu un fișier ''test-nfs'' în acesta:<code> | + | Vom crea un director ''/nfs'' cu un fișier ''test-nfs'' în acesta:<code bash> |
root@storage1:~# mkdir /nfs | root@storage1:~# mkdir /nfs | ||
root@storage1:~# echo test > /nfs/test-nfs | root@storage1:~# echo test > /nfs/test-nfs | ||
</code> | </code> | ||
- | Toate directoarele exportate către clienți vor fi configurate în fișierul ''/etc/exports''. Vom exporta directorul ''/nfs'' creat anterior:<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 | root@storage1:~# cat /etc/exports |grep /nfs | ||
/nfs 192.168.1.2(rw,sync,no_subtree_check) | /nfs 192.168.1.2(rw,sync,no_subtree_check) | ||
</code> | </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 v-a putea accesa acest director, iar în paranteză se află diferite atribute: | + | 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ă | * 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 | * 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 | * 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> | + | După configurarea fișierului ''/etc/exports'' trebuie resetat serviciul NFS:<code bash> |
root@storage1:~# /etc/init.d/nfs-kernel-server restart | root@storage1:~# /etc/init.d/nfs-kernel-server restart | ||
</code> | </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> | + | 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 | root@storage2:~# apt-get install nfs-common | ||
nfs-common is already the newest version. | nfs-common is already the newest version. | ||
Line 34: | Line 34: | ||
-rw-r--r-- 1 root root 5 Mar 29 16:52 test-nfs | -rw-r--r-- 1 root root 5 Mar 29 16:52 test-nfs | ||
</code> | </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. | + | Î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> | + | Î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 | root@storage2:~# touch /nfs/test-nfs2 | ||
touch: cannot touch ‘/nfs/test-nfs2’: Permission denied | touch: cannot touch ‘/nfs/test-nfs2’: Permission denied | ||
</code> | </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> | + | 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 | root@storage1:~# cat /etc/exports |grep squash | ||
/nfs 192.168.1.2(rw,sync,no_subtree_check,no_root_squash) | /nfs 192.168.1.2(rw,sync,no_subtree_check,no_root_squash) | ||
root@storage1:~# /etc/init.d/nfs-kernel-server restart | root@storage1:~# /etc/init.d/nfs-kernel-server restart | ||
</code> | </code> | ||
- | Observați faptul că acum putem modifica ierarhia de directoare:<code> | + | Observați faptul că acum putem modifica ierarhia de directoare:<code bash> |
root@storage2:~# touch /nfs/test-nfs2 | root@storage2:~# touch /nfs/test-nfs2 | ||
root@storage2:~# ls -l /nfs/ | root@storage2:~# ls -l /nfs/ | ||
Line 53: | Line 53: | ||
</code> | </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''). | + | 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> | <solution -hidden> | ||
- | <code> | + | <code bash> |
root@storage1:~# cat /etc/exports | root@storage1:~# cat /etc/exports | ||
/nfs 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) | /nfs 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) |