380 likes | 490 Views
23.02.2007. Network File System NFS. Linux-harjoitustyö Raine Kelkka. Sisältö. Teoriaa Johdanto / taustaa Rakenne Muut vaihtoehdot Käytännössä Huomioitavaa ennen asennusta Asennus Konfigurointi Ylläpito. Teoriaa – Johdanto / taustaa. Jo 1980-luvulta peräisin
E N D
23.02.2007 Network File SystemNFS Linux-harjoitustyö Raine Kelkka
Sisältö • Teoriaa • Johdanto / taustaa • Rakenne • Muut vaihtoehdot • Käytännössä • Huomioitavaa ennen asennusta • Asennus • Konfigurointi • Ylläpito
Teoriaa – Johdanto / taustaa • Jo 1980-luvulta peräisin • Sun Microsystems kehitti aluksi • Sittemmin julkaistu vapaaseen käyttöön • Neljä eri versiota: NFSv1 … NFSv4 • NFSv3 vallalla (myös tässä työssä) • NFSv4 tulossa • University of Michigan: NFSv4 for Linux: • http://www.citi.umich.edu/projects/nfsv4/
Teoriaa – Johdanto / taustaa • Arkkitehtuurista riippumaton • Yleisesti käytössä Unix-maailmassa • Myös esimerkiksi Windowsille olemassa erilaisia toteutuksia
Teoriaa – Johdanto / taustaa • Käyttökohteita • Kotihakemistot • ”Projektikansion” jako • Levyttömät työasemat • Käyttöjärjestelmän asennus • LAN / WAN • Usein käyttö lähiverkon sisällä • Toimii myös laajemmissa verkoissa • ks. ieee: ”NFS Dynamics Over Flow-Controlled Wide Area Networks” Koling Chang, Robert Morris and H.T. Kung, 1997
Teoriaa – Johdanto / taustaa • Perustana Client / Server –arkkitehtuuri • NFS-palvelin jakaa osan tiedostojärjestelmästään • NFS-asiakkaat liittävät verkkojaon omaan tiedostojärjestelmäänsä
Teoriaa – Rakenne • Koostuu useista osista • Remote Procedure Call (RPC) -palveluja • Yhteydet eivät ainoastaan portista porttiin • Asiakkaan ja palvelimen RPC-palvelut kommunikoivat suoraan keskenään • Käyttäjän käskyt kulkevat usean lohkon läpi
Verkko [Linux NFS and Automounter Administration; Erez Zadok (Sybex, 2001)]
Teoriaa – Rakenne • Lisäksi komentojen välittämiseen: • Remote Procedure Call (RPC) –lohko • eXternal Data Representation (XDR) -lohko
Teoriaa – Rakenne • Komponenttien tehtävät tiivistettynä • XDR: Erilaisten arkkitehtuurien yhteensopivuus • RPC: Etäjärjestelmän funktiokutsut • portmap: RPC-kutsujen välitys oikealle palvelulle
Teoriaa – Rakenne • Komponentit jatkuu.. • NFS Mount Daemon (mountd) • Käsittelee asiakkaiden levyjakojen liittämispyynnöt • NFS Locking (lockd) & Status Daemon (statd) • Tiedostolukitukset • NFS I/O Daemon (rpciod) • Lähtevän datan puskurointi • NFS Quota Daemon (rquotad) • Levykiintiöt
Teoriaa – Rakenne • Komponentit jatkuu.. • knfsd: NFS-palvelindemoni • Ajetaan kernelissä • Kuuntelee ja tulkkaa RPC-kutsut • knfs: NFS-asiakas • Myös kernelissä • Kääntää järjestelmäkutsut NFS-protokollan mukaisiksi RPC-viesteiksi • Lähettää viestit palvelimelle
Teoriaa – Muut vaihtoehdot • Samba • Vahvuutena myös muiden resurssien jako • Unix <=> Windows • Andrew File System • Hajautettu järjestelmä: useita palvelimia • Yhteinen nimiavaruus • Laajemmat käyttöoikeusmäärittelyt • Access Control List (ACL)
Teoriaa – Muut vaihtoehdot • Coda File System • AFS:n perillinen • Kaksi mainittavampaa eroa • Server replication • Luku- ja kirjoitusoperaatiot usealle palvelimelle yhtä aikaa • Disconnected operation • Käytetään hyödyksi asiakaan välimuistia • Lyhyet katkokset verkossa eivät haittaa
Teoriaa – Muut vaihtoehdot • NFSv4 • Yhtäaikaisten käyttäjien lukumäärän kasvatus muutamasta sadasta tuhansiin • Kaikki erilliset komponentit yhdistetty yhdeksi demoniksi • Laajemmat käyttöoikeudet (ACL-lista) • Sisäänrakennettu autentikointi • Myös Kerberos mahdollisuus
Käytännössä – Huomioitavaa.. • Vaatii NFS-tuen kerneliin • Usein valmiina, voi tarkistaa: • modprobe nfs • cat /proc/filesystems • ”nfs” = asiakastuki • ”nfsd” = palvelintuki • Jos tukea ei ole, tarvitsee kernelin konfiguroinnista valita ”File Systems => Network File Systems”
Käytännössä – Asennus • NFS-palvelin office3-koneella • office-aliverkko asiakkaina • Myös dmz-verkosta voi käyttää levyjakoa
Käytännössä – Asennus • Debianille valmiit paketit • nfs-common • Sekä palvelin että asiakas tarvitsevat tämän • nfs-kernel-server TAI nfs-user-server • Palvelinohjelmisto • kernel-server: ohjelma ajetaan kernelissä • user-server: ohjelma ajetaan user-spacessa • portmap: • Myös vaadittu, mutta asentuu riippuvuuksien johdosta em. pakettien mukana, mikäli se ei ole asennettu valmiina
Käytännössä – Asennus • Siis: • Asiakkaalla: aptitude install nfs-common • Palvelimella aptitude install nfs-kernel-server • Asentaa samalla nfs-common-paketin • Asennusohjelma lisää myös skriptit /etc/init.d/-hakemistoon
Käytännössä – Konfigurointi • NFS-palvelin • Jaettavien hakemistojen määrittelyt • /etc/exports • Sallittujen yhteyksien määrittely • /etc/hosts.allow • /etc/hosts.deny
Käytännössä – Konfigurointi • /etc/exports • Syntaksi: • jaettava_hakemisto mille_koneille(asetukset) • /nfsjako/ 192.168.10.0/255.255.255.0(rw,root_squash,async) • /nfsjako/ 192.168.10.1(ro,no_root_squash,async) • /nfsjako/ 192.168.1.0/255.255.255.0(ro,no_root_squash,async)
Käytännössä – Konfigurointi • Esimerkki: • /nfsjako/ 192.168.10.0/255.255.255.0(rw,root_squash,async) • Jaetaan hakemisto ”/nfsjako” • Office-aliverkolle (192.168.10.0 – 192.168.10.255) • Asetuksilla: • Luku-kirjoitus-oikeudet (rw) • Ei sallita root-käyttäjää (root_squash) • Asynkroninen kirjoitus (async)
Käytännössä – Konfigurointi • /etc/hosts.allow • Sallitaan office-aliverkko • portmap: 192.168.10.0/255.255.255.0 • nfsd: 192.168.10.0/255.255.255.0 • lockd: 192.168.10.0/255.255.255.0 • mountd: 192.168.10.0/255.255.255.0 • statd: 192.168.10.0/255.255.255.0 • rquotad: 192.168.10.0/255.255.255.0
Käytännössä – Konfigurointi • /etc/hosts.deny • Kielletään muut paitsi juuri sallitut • portmap:ALL • nfsd:ALL • lockd:ALL • mountd:ALL • statd:ALL • rquotad:ALL
Käytännössä – Konfigurointi • NFS-asiakas: • Liitettävien jakojen määrittelyt • /etc/fstab • Ei ole pakollinen, mutta mahdollistaa mm. levyjakojen automaattisen liittämisen käynnistyksessä
Käytännössä – Konfigurointi • /etc/fstab • Syntaksi: • palvelimen_ip:/jaettu_hakemisto • hakemisto mihin liitetään • tiedostojärjestelmän tyyppi • asetukset • Huom! Määrittelyt yhdellä rivillä vaikka tässä jaettu luettavuuden parantamiseksi
Käytännössä – Konfigurointi • Esimerkki: • 192.168.10.3:/nfsjako (<= Sama kuin /etc/exports) • /mnt/nfsmount • nfs • user,auto,async,rw,bg,rsize=8192,wsize=8192,nfsvers=3,tcp 0 0
Käytännössä – Konfigurointi • Käytetyt asetukset • user: myös tavallinen käyttäjä voi liittää • auto: liitetään koneen käynnistyessä • async: asynkroninen kirjoitus • rw: luku-kirjoitus-oikeudet • bg: liitos suoritetaan taustalla* • rsize & wsize: luku-/kirjoitus-paketin koko • tcp: käytetään TCP-protokollaa
Käytännössä – Konfigurointi • Huomioitavaa: • Palvelimen /etc/exports-asetukset määräävät, mitä asiakas saa tehdä • Asiakkaan /etc/fstab-asetukset ilmoittavat, mitä asiakas haluaa tehdä • Esim: Jos palvelin määrää jaon vain luettavaksi (”ro”), ei asiakas saa siihen kirjoitusoikeuksia ”rw”-asetuksella
Käytännössä - Ylläpito • Palvelujen käynnistys / sammutus • /etc/init.d/portmap start / stop / restart • /etc/init.d/nfs-common start / stop / restart • /etc/init.d/nfs-kernel-server start / stop / restart • Levyjakojen liittäminen / irrottaminen • Jos määritelty /etc/fstab:ssa: • mount /mnt/nfsmount • mount –a –t nfs / umount –a –t nfs • Jos ei määritelty: • mount 192.168.10.3:/nfsjako /mnt/nfsmount • umount /mnt/nfsmount
Käytännössä - Ylläpito • Palvelimella • Levyjakojen lisäys / muuttaminen: /etc/exports • Muutokset päivitettävä käyttöön • /usr/sbin/exportfs –r • Voi lisätä myös suoraan em. komennolla • exportfs -io ro 192.168.10.1:/usr • Vastaa: /usr 192.168.10.1(ro) • Tämä ei kirjaudu /etc/exports-tiedostoon!
Käytännössä - Ylläpito • Valvonta -- ohjelmat • Sekä palvelimella että asiakkaalla • /usr/sbin/nfsstat • tilastotietoa luku-, kirjoitus- yms. –operaatioista • rpcinfo –p • listaa käynnissä olevat RPC-palvelut • Vain palvelimella • /sbin/showmount • näyttää levyjakoja käyttävät asiakkaat
Käytännössä - Ylläpito • Valvonta -- tiedostot palvelimella • Kernelin ”näkemys” levyjaoista • /proc/fs/nfs/exports • Sama informaatio ”fyysisessä” tiedostossa • /var/lib/nfs/xtab • Vastaava kuin /etc/exports, mutta täällä näkyvät myös exportfs-komennolla erikseen lisätyt levyjaot • /etc/var/lib/nfs/etab • Asiakkaiden tällä hetkellä liittämät levyjaot • /var/lib/nfs/rmtab
Käytännössä - Ylläpito • Valvonta -- tiedostot • NFS ei luo erikseen lokitiedostoja • Mount- ja virheilmoitukset: • /var/log/messages
Käytännössä - Palomuuri • NFS-palvelin palomuurin kanssa • Vain portmap ja nfsd vakioporteissa (111 & 2049) • Muille määrättävä manuaalisesti • rpc.statd –p 32765 –o 32766 • rpc.mountd –p 32767 • options lockd nlm_udpport=32768 nlm_tcpport=32768 • Palomuuriin vastaavat asetukset (seur.sivu)
Käytännössä - Palomuuri • #Päästää NFS:n läpi DMZ verkosta NFS-serverille (192.168.10.3) • iptables -A FORWARD -p udp --source 192.168.1.0/24 --destination 192.168.10.3 --destination-port 32765:32768 -j ACCEPT • iptables -A FORWARD -p tcp --source 192.168.1.0/24 --destination 192.168.10.3 --destination-port 32765:32768 -j ACCEPT • iptables -A FORWARD -p udp --source 192.168.1.0/24 --destination 192.168.10.3 --destination-port 2049 -j ACCEPT • iptables -A FORWARD -p tcp --source 192.168.1.0/24 --destination 192.168.10.3 --destination-port 2049 -j ACCEPT • iptables -A FORWARD -p udp --source 192.168.1.0/24 --destination 192.168.10.3 --destination-port 111 -j ACCEPT • iptables -A FORWARD -p tcp --source 192.168.1.0/24 --destination 192.168.10.3 --destination-port 111 -j ACCEPT • #Sallii NFS:n tälle koneelle • iptables -A INPUT --source 0/0 -p udp --destination-port 32765:32768 -j ACCEPT • iptables -A INPUT --source 0/0 -p tcp --destination-port 32765:32768 -j ACCEPT • iptables -A INPUT --source 0/0 -p udp --destination-port 2049 -j ACCEPT • iptables -A INPUT --source 0/0 -p tcp --destination-port 2049 -j ACCEPT • iptables -A INPUT --source 0/0 -p udp --destination-port 111 -j ACCEPT • iptables -A INPUT --source 0/0 -p tcp --destination-port 111 -j ACCEPT