Network File System v.3

From EIK wiki

Grupi liikmed

-Thomas Tomson A31
-Laas Siimon A31
-Arno Joonsaar A32

Versioon

1.0

Viimase muutmise aeg

15.12.2009 13:15

Sissejuhatus

Network File System (NFS) võimaldab serveri failisüsteemi välja jagamist klientidele nii, et see näib nende jaoks lokaalse failisüsteemina. Vaatluse all on varasem NFSv3 ja uus ning põnev NFSv4. Võrguketas võimaldab lihtsamat failide haldamist, varundamist ja monitooringut.
Järgnev artikkel kirjeldab Network File System v.3 ja v.4 serveri ja kliendi seadistust, testimist ja varundamist Ubuntu 9.04 ja 9.10 versiooniga.

Legend

Eduka väikefirma töötajate töökal grupil on käsil uus ja põnev projekt, mille edukaks edendamiseks on vaja ligipääsu tsentreeritud serveris asuvatele dokumentidele. Nad kuuluvad kõik samasse gruppi ning sellel grupil on vaja pidevalt viimast versiooni töös olevatest failidest.


  • Kõik teenuse kasutajad kuuluvad gruppi "nfsusers"
  • Serveris on NFSv3 puhul jagatud kaust nimega /var/nfs
  • Kliendile näib see mounditud kaustana /var/files
  • Kõikidele klientidele on antud lugemis- ja kirjutamisõigus.
  • Root kasutaja serverisse ühendumist ei lubata

Eeldused

-NFS-i testimiseks on vaja eraldi virtuaalmasinaid serveri ja kliendi jaoks.
-Hetkel testitud Ubuntu Linuxi versioonidega 9.04 ja 9.10.


NFS serveri installeerimine

Logime ennast root kasutajaks:

sudo -i

Enne installerimist tasub uuendada tarkvara nimekirja:

apt-get update

Installeerimine apt-käsu abil:

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


NFS serveri seadistamine

Luua kasutajagrupp nfsusers:

groupadd nfsusers

Luua jagatavate failide jaoks kataloog, näiteks.

mkdir /var/nfs

Määrata loodud kausta grupiks nfsusers.

chgrp nfsusers /var/nfs

Lisa loodud kausta grupiõigustele lugemis- ja kirjutamisbitt

chmod g+rw /var/nfs

Ava nanoga fail /etc/exports

nano /etc/exports

Lisada faili lõppu rida

/var/nfs            <kliendi masina ip>(rw,root_squash,no_subtree_check)

Selgitus: rw - lubame klientidele lugemist ja kirjutamist.
root_squash - Serveriga ühenduda püüdev root kasutaja UID-ga 0 mapitakse anonüümseks kasutajaks. (st. turvariskide vähendamiseks ei lubada sharele ligi)
no_subtree_check - suurendab mõningatel juhtudel natuke süsteemi töökindlust.


NFS serveri reloadiks kasuta järgmist käsklust:

/etc/init.d/nfs-kernel-server restart

Ainult failis /etc/exports tehtud muudatusi saad rakendada ka serverile restarti tegemata, kasutades käsku

exportfs -a

Kontrollida kasutusel olevaid porte käsuga

netstat -lntu

Vaata, et kuulatakse järgmiseid porte

#Väljundist huvitavad meid read:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address      Foreign Address     State
tcp        0      0 0.0.0.0:2049       0.0.0.0:*           LISTEN
tcp        0      0 0.0.0.0:111        0.0.0.0:*           LISTEN

Selgitus: 2049 - standard pordi number NFSi jaoks.
111-portmapper


Kontrollida et NFS on töökorras

rpcinfo -p

#Väljundist huvitavad meid read:
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs

Hiljem kliendi seadistamisel failide jagamise kontrollimiseks on abiks kui tekitada kausta /var/nfs mingi suvaline fail.

touch foo.txt

NFS kliendi installeerimine

Logime ennast root kasutajaks:

sudo -i

Enne installerimist tasub uuendada tarkvara nimekirja:

apt-get update

Installeerimine apt-käsu abil:

apt-get install portmap nfs-common


NFS kliendi seadistamine

Luua kasutajagrupp nfsusers:

groupadd nfsusers

Jälgida et NFSi kasutaja kuuluks gruppi nfsusers. Et kontrollida mis gruppi kasutaja kuulub kasuta groups käsku.

groups <kasutajanimi>

Juhul kui kasutaja ei kuulu nimetatud gruppi lisada ta sinna.

addgroup <kasutajanimi> nfsusers

Loo kataloog, näiteks /var/files, salvestatavate failide jaoks

mkdir /var/files

Määrata loodud kausta grupiks nfsusers.

chgrp nfsusers /var/files

Testimiseks tuleb mountida eelmises punktis loodud kataloog esialgu käsitsi kasutades selleks mount käsku

mount <serveri ip>:/var/nfs /var/files

Mountimise õnnestumise kontrollimiseks sisesta käsk

df -h

Kontrollida et serverisse loodud foo.txt oleks nähtav kliendi /var/files kaustast.

Kontrollida kas on võimalik luua kliendi arvutist uut faili.


Mountimise lõpetamiseks kasutada käsku:

umount /var/files 

Kui mountimine ja kausta jagamine õnnestusid muuda faili /etc/fstab

nano /etc/fstab

Faili lõppu lisada rida

<serveri ip>:/var/nfs /var/files nfs rw 0 0

Ühenda automaatselt kõik mis kuulub automaatsesse ühendamisesse

mount -a

NFSv3 varundamine

Luua serveris ja kliendi masinas kaustad varunduskoopiate jaoks, näiteks /var/backup.

mkdir /var/backup

Serveris tee koopia failist

cp /etc/exports /var/backup

Kliendi arvutis tee koopia failist

cp /etc/fstab /var/backup

Taastamine

Taastamiseks kopeerida varem varundatud failid algupärastesse asukohtadesse.

Serveris:

cp /var/backup/exports /etc

Kliendi masinas:

cp /var/backup/fstab /etc

Network File System version 4

NFSv3 ja NFSv4 võrdlus

-NFSv4 peamine eelis on mitmed keerukad turvamehhanismid mis on kliendile kohustuslikud. Nende mehhanismide seas on Kerberos 5 ja SPKM3, lisaks tradistsioonilisele AUTH_SYS autentimisele. Uus API võimaldab lihtsat turvamehhanismide lisamist tulevikus.
-NFSv4 võimaldab kliendi poolt anda failile seisundi (lukustamine, lugemine, kirjutamine jne) ning teavitada sellest serverit.
-NFSv4 võimaldab faili delegeerimist - server võimaldab kliendil muuta faili oma cache'is, saatmata serverile päringuid kuni serverisse tuleb päring teiselt kliendilt sama faili kohta. See omakorda vähendab liiklust serveri ja kliendi vahel juhul kui teised kasutajad ei soovi ligi pääseda samaaegselt ühele failile.
-NFSv4 kasutab kokkuliidetud RPCsid. NFSv4 klient suudab kombineerida mitu traditsioonilist NFS operatsiooni ühte RPC päringusse ning seega viia läbi keerulisi operatsioone tõhusamalt.
-NFSv4 toetab nimedega atribuute. Kasutajate ja gruppide info talletatakse stringi, mitte numbrilise väärtuse kujul. ACLid, kasutajnimed, grupi nimed ja nimedega atribuudid talletatakse, kasutades UTF-8 kodeeringut.
-NFSv4 kombineerib erinevad NFS protokollid ühte protokolli et võimaldada paremat ühilduvust võrgu tulemüüridega.


Legend

Otsustatakse üle minna NFSv4-le seoses Kerberose autentimise võimalusega. Hetkel toimub ainult NFS protokolli muutus ja Kerberost kasutusele ei võeta. Kui Kerberost mitte kasutada, tuleb ainult olemasolevat süsteemi konfiguratsiooni täiendada.

  • Kasutajad kuuluvad gruppi "nfsusers"
  • Pseudo failisüsteemi juur on kaust /var/nfs
  • Kasutajatele on jagatud kaust nimega /var/nfs/files
  • Kliendile näib see mounditud kaustana /var/files
  • Kõikidele klientidele on antud lugemis- ja kirjutamisõigus.
  • Root kasutaja serverisse ühendumist ei lubata


Serveri uuendamine

Luua kausta /var/nfs kaust nimega files

mkdir /var/nfs/files

Avada nanoga fail /etc/default/nfs-kernel-server

nano /etc/default/nfs-kernel-server

Muuta faili sisu vastavalt

NEED_SVCGSSD=no

Selgitus: SVCGSSD on deemon Kerberosega ühendumiseks, mille lülitame välja. 'No' on vaikimisi seadistus juhul kui Kerberost ei kasutata.


Avada nanoga fail /etc/default/nfs-common

nano /etc/default/nfs-common

Muuta faili sisu vastavalt

NEED_IDMAPD=yes
NEED_GSSD=no

Selgitus: IDMAPD vajalik ainult NFS 4 puhul. Transleerib UID ja GID nimedeks.
GSSD - võimaldab kasutada GSS teenuseid. Vastutab Kerberose mountide eest. 'No' on vaikimisi seadistus juhul kui Kerberost ei kasutata.


Avada nanoga fail /etc/exports

nano /etc/exports

Muuta varem faili lõppu lisatud rida ja lisada rida:

/var/nfs         <kliendi masina ip>(rw,fsid=0,no_subtree_check,async,root_squash)
/var/nfs/files   <kliendi masina ip>(rw,no_subtree_check,async,root_squash)

Avada nanoga fail /etc/idmapd.conf

nano /etc/idmapd.conf

Muuta failis domeeni parameeter õigeks.

Domain = <sinu domeeni nimi>

Tehke teenusele restart

service nfs-kernel-server restart

Failide jagamise kontrollimiseks tekita kausta /var/nfs/files suvaline fail.

touch foo.txt


Kliendi uuendamine

Mountida salvestatavate failide jaoks loodud kataloog esialgu käsitsi

mount -t nfs4 <serveri ip>:/files /var/files

Mountimise õnnestumise kontrollimiseks sisesta käsk

df -h

Kontrollida et serverisse loodud foo.txt oleks nähtav kliendi /var/files kaustast.

Kontrollida kas on võimalik luua kliendi arvutist uut faili.


Avada nanoga fail /etc/fstab

nano /etc/fstab

Muuta viimast rida

<serveri ip>:/files    /var/files   nfs4    _netdev,auto  0  0

Avada nanoga fail /etc/idmapd.conf

nano /etc/idmapd.conf

Muuta failis domeeni parameeter õigeks.

Domain = <sinu domeeni nimi>

Kui tegu on aeglase võrguga või peale alglaadimist on mountimisega probleeme, muuta faili /etc/rc.local

sleep 5
mount /var/files

NFSv4 varundamine

Serveris tee koopia failidest

cp /etc/exports /var/backup
cp /etc/default/nfs-kernel-server /var/backup
cp /etc/default/nfs-common /var/backup
cp /etc/idmapd.conf /var/backup

Kliendi arvutis tee koopia failidest

cp /etc/fstab /var/backup
cp /etc/idmapd.conf /var/backup

Taastamine

Taastamiseks kopeerida varem varundatud failid algupärastesse asukohtadesse.

Serveris:

cp /var/backup/exports /etc
cp /var/backup/nfs-kernel-server /etc/default
cp /var/backup/nfs-common /etc/default
cp /var/backup/idmapd.conf /etc

Kliendi masinas:

cp /var/backup/fstab /etc
cp /var/backup/idmapd.conf /etc

Logid

NFS saadab oma logiteateid syslogisse, kust neid saab vajadusel grepiga otsida. Kuna NFS töötab kerneli teenusena (syslog prefix kernel), ei ole võimalik NFSi logisid eraldi välja suunata. Lahendseks oleks NFS kasutamine userspace teenusena, kuid sellel on jällegi omad puudused.

Lingid

-http://nfs.sourceforge.net/ (ülevaate saamiseks NFS-ist tervikuna)
-http://www.ubuntugeek.com/nfs-server-and-client-configuration-in-ubuntu.html (väga hea step-by-step õpetus NFSv3 jaoks)
-https://help.ubuntu.com/community/NFSv4Howto (väga hea step-by-step õpetus NFSv4 jaoks)
-http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Deployment_Guide-en-US/s1-nfs-client-config-options.html (veel mountimise optioneid)