www.pegasos.org :: View topic - NFS4 HURDÅ (HOWTO)
http://www.ggsdata.se
Home   News   Forum   Gallery   
Search 
Login




 


 Log in Problems?
 New User? Sign Up!

Navigation

Online
Currently no members online:)

You are an anonymous user. You can register for free by clicking here
There are 1 unlogged users online !

Latest Web Links

Latest Downloads

Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Author Message
Trizt
Post subject: NFS4 HURDÅ (HOWTO)  PostPosted: Nov 09, 2005 - 08:44
Order of the Butterfly
Order of the Butterfly


Joined: Sep 08, 2003
Posts: 1370
Location: EU
NFS är ett nätverks filsystem som Sun Microsystems tog fram i början av 1980-talet och första offentliga version var NFS2 som släpptes i mitten av 80-talet. Sen dess så har NFS3 släppts och nu NFS4 som har blivit lång myckter mer CPU vänlig än vad NFS2/3 har varit.

Vad behövs?
- 2st datorer med linux med nätverkskontakt med varandra (nfsserver och nfsclient)
- En stabil version av kernel 2.6 (2.6.14 om möjligt)


Kernel inställningar

Gå till /usr/src/linux och kör make menuconfig

Gå ner till

Code:
   File systems  --->


Där leta efter

Code:
      Network File Systems  --->


På maskinen som ska agera som server (den som delar ut filerna), så välj

Code:
   <*> NFS file system support                                         
   [*]   Provide NFSv3 client support                                   
   [ ]     Provide client support for the NFSv3 ACL protocol extension 
   [*]   Provide NFSv4 client support (EXPERIMENTAL)                   
   [*]   Allow direct I/O on NFS files (EXPERIMENTAL)                   
   <*> NFS server support                                               
   [*]   Provide NFSv3 server support                                   
   [ ]     Provide server support for the NFSv3 ACL protocol extension 
   [*]     Provide NFSv4 server support (EXPERIMENTAL)

   --- Secure RPC: Kerberos V mechanism (EXPERIMENTAL)


Secure RPC bör bli automatiskt markerad när du väljer NFS4 support, om den inte blir det, så bygg in den. Om du vill så kan du bygga NFS som modul istället för en del av kärnan.

På client maskinen (den som importerar filerna) så räcker

Code:
   <*> NFS file system support                                         
   [*]   Provide NFSv3 client support                                   
   [ ]     Provide client support for the NFSv3 ACL protocol extension 
   [*]   Provide NFSv4 client support (EXPERIMENTAL)                   
   [*]   Allow direct I/O on NFS files (EXPERIMENTAL)                   

   --- Secure RPC: Kerberos V mechanism (EXPERIMENTAL)


Kompilera nu om kärnan (make zImage ifall du bygger om kärnan, eller make modules && make modules_install om du bygger NFS som modul).


Program som behövs

Du kommer att behöva installera åtminstone två program för att få NFS4 att fungera, de två packten du behöver är

nfs-utils version 1.0.8 eller senare
nfsidmap version 0.10 eller senare

för Gentoo Linux så räcker det att köra en

emerge nfs-utils

detta kommer att åtminstone installera en patchad version av nfs-utils 1.0.7 som har NFS4 stöd (så länge man inte använder USE=nonfs4).



Vad ska vi exportera?

Jag trötnade ganska snabbt att jag hade olika inställningar på olika maskiner o sen göra inställningarna om och om igen för att få dem fungera på samma sätt och jag hade aldrig tillgång till mina personliga filer, här kommer NFS till sin rätta, nämligen att dela ut /home, på detta sätt så kan man ha tillgång till alla sina filer och inställningar oavsett vilken dator man sitter vid och det fungerar att sitta på flera datorer samtidigt.
I Gentoo Linux kan det vara en fördel att dela ut sin /usr/portage/distfiles, så slipper man ladda ner samma filer om och om igen, samt $PORTDIR_OVERLAY. Det kan finnas fler kataloger som du vill expotera men i detta exemple så kommer vi att exportera

Quote:
/home
/usr/portage/distfiles
/usr/local/portage (en möjlig $PORTDIR_OVERLAY)



Exportera

Vi börjar med att skapa en NFS katalog, som vi kommer att exportera

mkdir /nfs

denna katalog blir rooten till din exporterar, vi kommer att behöva subkataloger för de tre katalogerna som vi ville exportera.

mkdir /nfs/home
mkdir /nfs/distfiles
mkdir /nfs/portage

Dessa behöver inte ha samma namn som de katalogerna som du verkligen vill exportera.

Nu är alla kataloger in /nfs tomma, nu ska vi fylla dessa med materialet som du ville ha exporterat, men nej vi ska inte kopiera filer eller flytta dessa, utan vi kommer editera /etc/fstab och lägga till följande rader

Code:
## BIND mounting for the NFS4 filesystem
/home                    /nfs/home            none    bind 0 0
/usr/portage/distfiles   /nfs/distfiles       none    bind 0 0
/usr/local/portage       /nfs/portage         none    bind 0 0


Nu är det bar att mounta dessa genom att köra

mount -a -t none

Din df kommer nu att innehålla dessa /nfs kataloger, procenten som anges är hur full det filsystems som katalogen är del av, dvs om /usr är till 60% full, så kommer /nfs/portage också vara till 60% full.


Nu ska vi till att editera /etc/exports

Code:
/nfs    *(rw,insecure,sync,wdelay,no_subtree_check,no_root_squash,fsid=0)
/nfs/distfiles    *(rw,insecure,sync,wdelay,no_subtree_check,nohide,no_root_squash)
/nfs/portage    *(rw,insecure,sync,wdelay,no_subtree_check,nohide,no_root_squash)


Nu är inte våran export så värst säker, root på alla maskiner har rätt att göra va de vill (no_root_squash) och vi har valt att expotera till * (alla), men här kan man lägga till ip-nummer på maskinen som man vill expotera till.

Code:
/nfs    192.168.0.0/24(...)


I detta fall så skulle vi enbart expotera till ipnummer 192.168.0.1 till 192.168.0.254. Man kan ha olika regler för olika ip-nummer

Code:
/nfs    192.168.0.1(...) 192.168.0.2(...)


glöm nu inte att byta ut '...' till de värden som du igentligen vill ha och man kan använda ip-namn istället för ip-nummer.

Om vi ska höja säkerheten, så kan vi skapa/editera två filer, vi börjar med att förbjuda andra maskiner åtkomst till vissa typer av services genom att ha följande i /etc/hosts.deny

Code:
#
# hosts.deny    This file describes the names of the hosts which are
#               *not* allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!
portmap:ALL
lockd:ALL
mountd:ALL
rquoted:ALL
statd:ALL


Men nu måste vi tillåta att maskinerna som vi expoterar NFS till får tillgång till de services som de behöver genom att editera /etc/hosts.allow

Code:
#
# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
portmap: 192.168.0.1, 192.168.0.2
lockd: 192.168.0.1, 192.168.0.2
mountd: 192.168.0.1, 192.168.0.2
rquotad: 192.168.0.1, 192.168.0.2
statd: 192.168.0.1, 192.168.0.2


Nu är vi nästan färdiga med servern, vi ska nu titta till en fil, den finns på klient maskinen också och måste vara identisk med den som finns på servern. Vi tar en titt på /etc/idmapd.conf

Code:
[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = example.com

[Mapping]
Nobody-User = nfsnobody
Nobody-Group = nfsnobody


På Fedora Core 4 så har de följande två linjer med också

Code:
[Translation]
Method = nsswitch


men dessa är inte nödvändiga.


Vad som återstår är att starta om ett par services

/etc/init.d/nfs restart
/etc/init.d/portmap restart


Importera

Se till att du har åtminstone servicen portmap startad.
Först börjar vi att se ifall vi kan accessa våran nfsserver

showmount -e nfsserver

Code:
Export list for nfsserver:
/nfs            *
/nfs/home       *
/nfs/portage    *
/nfs/distfiles  *


För att testa att vi kan importera filsystemet så gör vi följande

mkdir -p /mnt/nfs
mount -t nfs4 nfsserver:/ /mnt/nfs
ls /mnt/nfs

om du hittar katalogerna home, disfiles och portage så har allt gått rätt till.

Nu kan vi se till att vi mountar saker o ting mer permanent på nfsclient och då måste vi editera /etc/fstab och lägga till

Code:
nfsserver:/home /home nfs4 auto,rw,nodev,sync,_netdev,retry=10,rsize=32768,wsize=32768,hard,intr 0 0
nfsserver:/portage /usr/local/portage nfs4 auto,rw,nodev,sync,_netdev,retry=10,rsize=32768,wsize=32768,hard,intr 0 0
nfsserver:/distfiles /usr/portage/distfiles nfs4 auto,rw,nodev,sync,_netdev,retry=10,rsize=32768,wsize=32768,hard,intr 0 0


Nu ska det gå att mounta de nya filsystemen

mount -a -t nfs4

Om ditt nätverk är väldigt långsamt, att du kör via ppp eller plip, så kan du lägga till proto=tcp till mount-options i din /etc/fstab, man kör inte över tcp ifall du har ett hemma nätverk med 10Mb eller högre, för du kommer att få sämre prestanda.

Om du har fråger/undringar eller nått du vill tillägga, så posta i denna tråd.

_________________
Join the Pegasos.Org Team at Seti@Home.


Last edited by Trizt on Jan 11, 2006 - 19:18; edited 2 times in total
 
 View user's profile Send private message MSN Messenger ICQ Number 
Reply with quote Back to top
ironfist
Post subject: RE: NFS4 HURDÅ (HOWTO)  PostPosted: Nov 09, 2005 - 16:27
Order of the Pegasos
Order of the Pegasos


Joined: Jan 22, 2004
Posts: 2517
Location: Göteborg
Super! Jag postar en nyhet om denna.

_________________
www.SecureHosting.se | Egen server med 512 MB RAM och 10 Mbit trafik 250 kr/mån | www.SecureNetworks.se
 
 View user's profile Send private message ICQ Number 
Reply with quote Back to top
gunne
Post subject: RE: NFS4 HURDÅ (HOWTO)  PostPosted: Nov 09, 2005 - 22:04
Order of the Pegasos
Order of the Pegasos


Joined: Aug 16, 2003
Posts: 2538
Location: Göteborg
Trizt,

Trevlig guide !

Får läsa mer ingående lite senare.

_________________
Mvh Gunne
 
 View user's profile Send private message Send e-mail Visit poster's website  
Reply with quote Back to top
Trizt
Post subject: RE: NFS4 HURDÅ (HOWTO)  PostPosted: Nov 11, 2005 - 17:02
Order of the Butterfly
Order of the Butterfly


Joined: Sep 08, 2003
Posts: 1370
Location: EU
Hittade ett fel i Gentoos nfsmount init script, den startar inte rpc.idmapd, så här är min modifierade

Code:
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-ppc/net-fs/nfs-utils/files/nfsmount,v 1.6.1 2005/11/11 08:21:24 eradicator Exp $

depend() {
        need net portmap
        use ypbind
}

start_statd() {
        # Don't start rpc.statd if already started by init.d/nfs
        killall -0 rpc.statd &>/dev/null && return 0
        ebegin "Starting NFS statd"
        start-stop-daemon --start --quiet --exec /sbin/rpc.statd 1>&2
        eend $? "Error starting NFS statd"
}

start_idmapd() {
        ebegin "Start NFS idmap"
        start-stop-daemon --start --quiet --exec /usr/sbin/rpc.idmapd 1>&2
        eend $? "Error starting NFS idmap"
}

stop_statd() {
        # Don't stop rpc.statd if it's in use by init.d/nfs
        killall -0 nfsd &>/dev/null && return 0
        # Make sure it's actually running
        killall -0 rpc.statd &>/dev/null || return 0
        # Okay, all tests passed, stop rpc.statd
        ebegin "Stopping NFS statd"
        start-stop-daemon --stop --quiet --exec /sbin/rpc.statd 1>&2
        eend $? "Error stopping NFS statd"
}

stop_idmapd() {
        # Make sure it's actually running
        killall -0 rpc.idmapd &>/dev/null || return 0
        # Okay, all tests passed, stop rpc.statd
        ebegin "Stopping NFS idmap"
        start-stop-daemon --stop --quiet --exec /usr/sbin/rpc.idmapd 1>&2
        eend $? "Error stopping NFS idmap"
}


start() {
        start_statd
        ebegin "Mounting NFS filesystems"
        mount -a -t nfs
        eend $? "Error mounting NFS filesystems"
        start_idmapd
}

stop() {
        stop_idmapd
        ebegin "Unmounting NFS filesystems"
        umount -a -t nfs
        eend $? "Error unmounting NFS filesystems"
        stop_statd
}

restart() {
        svc_stop
        svc_start
}

_________________
Join the Pegasos.Org Team at Seti@Home.
 
 View user's profile Send private message MSN Messenger ICQ Number 
Reply with quote Back to top
kozz
Post subject: RE: NFS4 HURDÅ (HOWTO)  PostPosted: Nov 15, 2005 - 16:29
Butterfly
Butterfly


Joined: Aug 16, 2003
Posts: 883
Location: Göteborg
Provade lite häromdan, kompilerade om kärnan med nfs4 stöd och så. Men det va tydligen mer avancerat än jag trodde Smile Verkar inte som att nfs-common (nfs-utils) har support för nfs v4 i Debian, är det meningen att nfsstat ska visa även nfs v4 i listan om nfs-utils supportar det? Får ta å ladda ner såsen och testa med den istället till nfs-utils.

Provade väl iof inte jätte mycket, men men, får prova mer igen nån gång.

_________________
Programmers are tools for converting caffeine into code.
 
 View user's profile Send private message Send e-mail Visit poster's website MSN Messenger ICQ Number 
Reply with quote Back to top
Trizt
Post subject: RE: NFS4 HURDÅ (HOWTO)  PostPosted: Nov 15, 2005 - 16:59
Order of the Butterfly
Order of the Butterfly


Joined: Sep 08, 2003
Posts: 1370
Location: EU
Det kommer inte upp som nfs4 i en fungerande nfs-utils utan som rpc, fråga inte varför.

_________________
Join the Pegasos.Org Team at Seti@Home.
 
 View user's profile Send private message MSN Messenger ICQ Number 
Reply with quote Back to top
Display posts from previous:     
Jump to:  
All times are GMT + 1 Hour
Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Powered by PNphpBB2 © 2003-2004 The PNphpBB Group
Credits
All logos and trademarks in this site are property of their respective owner.
The comments are property of their posters, all the rest © 2004-2012 by pegasos.org

backend|avantgo