 | Online |
 |
|
 |
Currently no members online:)
 You are an anonymous user. You can register for free by clicking here |
There are 1 unlogged users online ! |
|
|
 |
Author |
Message |
|
Post subject: NFS4 HURDÅ (HOWTO)
Posted: Nov 09, 2005 - 08:44
|
|
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
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
|
|
|
|
 |
|
Post subject: RE: NFS4 HURDÅ (HOWTO)
Posted: Nov 09, 2005 - 16:27
|
|
Order of the Pegasos

Joined: Jan 22, 2004
Posts: 2517
Location: Göteborg
|
|
|
|
 |
|
Post subject: RE: NFS4 HURDÅ (HOWTO)
Posted: Nov 09, 2005 - 22:04
|
|
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
|
|
|
|
 |
|
Post subject: RE: NFS4 HURDÅ (HOWTO)
Posted: Nov 11, 2005 - 17:02
|
|
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.
|
|
|
|
 |
|
Post subject: RE: NFS4 HURDÅ (HOWTO)
Posted: Nov 15, 2005 - 16:29
|
|
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 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.
|
|
|
|
 |
|
Post subject: RE: NFS4 HURDÅ (HOWTO)
Posted: Nov 15, 2005 - 16:59
|
|
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.
|
|
|
|
 |
|
| |
|