Einrichten eines NFS Servers und Clients unter Debian Etch

Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>

Dieser Leitfaden erklärt, wie man einen NFS Server und einen NFS Client auf Debian Etch einrichtet. NFS steht für Network File System; durch NFS kann ein Client auf eine entfernte Freigabe auf einem NFS Server zugreifen (lesen, schreiben) als ob sie auf der lokalen Festplatte wäre.

Ich übernehme keine Garantie, dass dies auch bei Dir funktionieren wird!

1 Vorbemerkung

Ich verwende hier zwei Debian Systeme:

  • NFS Server: server.example.com, IP Adresse: 192.168.0.100
  • NFS Client: client.example.com, IP Adresse: 192.168.0.101

2 Installation von NFS

Server:

Auf dem NFS Server lassen wir Folgendes laufen:

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

Client:

Auf dem Client können wir NFS wie folgt installieren:

apt-get install nfs-common portmap

3 Verzeichnisse Auf Den Server Exportieren

Server:

Ich möchte, dass der Client auf die Verzeichnisse /home und /var/nfs zugreifen kann; daher müssen wir sie auf den Server „exportieren“.

Wenn ein Client auf eine NFS Freigabe zugreift, passiert dies normalerweise als Benutzer nobody. Für gewöhnlich gehört das /home Verzeichnis nicht dem Benutzer nobody (und ich würde nicht empfehlen den Besitz für nobody zu ändern!), und da wir in dem Verzeichnis / home lesen und schreiben wollen, teilen wir NFS mit, dass ein Zugriff als Root gewährleistet werden soll. Das /var/nfs Verzeichnis existiert nicht, also können wir es erstellen und seinen Besitz für nobody und nogroup ändern:

mkdir /var/nfs
chown nobody:nogroup /var/nfs

Nun müssen wir /etc/exports bearbeiten, in der wir unsere NFS Freigaben konfigurieren. Wir definieren /home und /var/nfs als NFS Freigaben und veranlassen NFS den Zugriff auf /home als Root zu gewährleisten (wenn Du mehr über /etc/exports, ihr Format und verfügbare Optionen erfahren möchtest, sieh Dir Folgendes an

man 5 exports

)

vi /etc/exports

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync) hostname2(ro,sync)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt)
# /srv/nfs4/homes  gss/krb5i(rw,sync)
#
/home           192.168.0.101(rw,sync,no_root_squash)
/var/nfs        192.168.0.101(rw,sync)

(Die no_root_squash Option bewirkt, dass auf /home als Root zugegriffen werden kann)

Immer wenn wir /etc/exports bearbeiten, müssen wir danach dies laufen lassen

exportfs -a

um die Änderungen zu übernehmen.

4 Einhängen Von NFS Freigaben Auf Dem Client

Client:

Zuerst erstellen wir die Verzeichnisse, in denen wir die NFS Freigaben einhängen wollen, z.B.:

mkdir -p /mnt/nfs/home
mkdir -p /mnt/nfs/var/nfs

Danach können wir sie wie folgt einhängen:

mount 192.168.0.100:/home /mnt/nfs/home
mount 192.168.0.100:/var/nfs /mnt/nfs/var/nfs

Nun solltest Du die zwei NFS Freigaben in der Ausgabe von

df -h

sehen

client:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 30G 748M 27G 3% /
tmpfs 63M 0 63M 0% /lib/init/rw
udev 10M 52K 10M 1% /dev
tmpfs 63M 0 63M 0% /dev/shm
192.168.0.100:/home 30G 764M 27G 3% /mnt/nfs/home
192.168.0.100:/var/nfs
30G 764M 27G 3% /mnt/nfs/var/nfs
client:~#

und

mount

client:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
192.168.0.100:/home on /mnt/nfs/home type nfs (rw,addr=192.168.0.100)
192.168.0.100:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,addr=192.168.0.100)
client:~#

5 Testen

Auf dem Client kannst Du nun versuchen Testdateien auf den NFS Freigaben anzulegen:

Client:

touch /mnt/nfs/home/test.txt
touch /mnt/nfs/var/nfs/test.txt

Gehe nun zum Server und überprüfe, ob Du beide Testdateien siehst:

Server:

ls -l /home/

server:~# ls -l /home/
total 4
drwxr-xr-x 2 administrator administrator 4096 2007-04-23 14:25 administrator
-rw-r–r– 1 root root 0 2007-11-29 21:43 test.txt
server:~#

ls -l /var/nfs

server:~# ls -l /var/nfs
total 0
-rw-r–r– 1 nobody nogroup 0 2007-11-29 21:49 test.txt
server:~#

(Bitte beachte die Eigentümerschaft der Testdateien: auf die /home NFS Freigabe wird als Root zugegriffen, daher gehört /home/test.txt dem Benutzer Root; auf die /var/nfs Freigabe wird als nobody zugegriffen, daher gehört /var/nfs/test.txt dem Benutzer nobody.)

6 Einhängen Von NFS Freigaben Beim Hochfahren

Anstatt die NFS Freigaben auf dem Client immer manuell einzuhängen, kannst Du /etc/fstab so bearbeiten, dass die NFS Freigaben automatisch eingehängt werden wenn der Client startet.

Client:

Öffne /etc/fstab und füge folgende Zeilen an:

vi /etc/fstab

[...]
192.168.0.100:/home  /mnt/nfs/home   nfs      rw,sync,hard,intr  0     0
192.168.0.100:/var/nfs  /mnt/nfs/var/nfs   nfs      rw,sync,hard,intr  0     0

An Stelle von rw,sync,hard,intr kannst Du andere Einhängepunkte verwenden. Wenn Du mehr über verfügbare Optionen erfahren möchtest, sieh Dir Folgendes an

man nfs

Um zu teste, ob Deine bearbeitete Datei /etc/fstab funktioniert, starte den Client neu:

reboot

Nach dem Neustart müsstest Du die zwei NFS Freigaben in der Ausgaben von

df -h

sehen

client:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 30G 748M 27G 3% /
tmpfs 63M 0 63M 0% /lib/init/rw
udev 10M 52K 10M 1% /dev
tmpfs 63M 0 63M 0% /dev/shm
192.168.0.100:/home 30G 764M 27G 3% /mnt/nfs/home
192.168.0.100:/var/nfs
30G 764M 27G 3% /mnt/nfs/var/nfs
client:~#

und

mount

client:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
192.168.0.100:/home on /mnt/nfs/home type nfs (rw,sync,hard,intr,addr=192.168.0.100)
192.168.0.100:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,sync,hard,intr,addr=192.168.0.100)
client:~#

7 Links

Das könnte dich auch interessieren …