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
- Linux NFS: http://nfs.sourceforge.net
- Debian: http://www.debian.org