View previous topic :: View next topic |
Author |
Message |
musv Advocate
Joined: 01 Dec 2002 Posts: 3337 Location: de
|
Posted: Wed Feb 08, 2012 10:39 pm Post subject: NFSv4 - Hilfe bei Initscript, Howto erwünscht? |
|
|
Guten Abend,
ich hatte jahrelang NFS (v3) im Einsatz. Seit ich dann diverse Partitionen von Reiser4 auf BTRFS umgerüstet hab, kam NFS damit irgendwie nicht mehr klar. Also hab ich mich mal hingesetzt und etwas mit NFSv4 beschäftigt. Ziele:
- Sicherheitsstandard für ein lokales Heimnetz, d.h. ACL, Kerberos usw. wird nicht benötigt
- etwas Performance-Tuning (Server-Parameter, Mountoptionen)
- keine zusätzlicher Aufwand beim Starten gegenüber NFSv3. Gemeint ist damit das Mounten der freizugebenden Verzeichnisse ins virtuelle NFS-Root
Meine /etc/exports:
/etc/exports: | # /etc/exports: NFS file systems being exported. See exports(5).
# Kommentar
/export 192.168.109.0/24(rw,fsid=0,insecure,no_subtree_check,async)
# /var/portage/distfiles
/export/distfiles 192.168.109.0/24(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
# /home/blubb
/export/home_blubb 192.168.109.0/24(rw,nohide,insecure,no_subtree_check,async,all_squash,anonuid=1000,anongid=100) |
Dabei ist mir das manuelle Mounten der Verzeichnisse ins /export zu blöd. In die fstab will ich die Verzeichnisse jetzt auch nicht eintragen, da der NFS-Server nur bei Bedarf gestartet werden soll. Also dachte ich mir, ich schreib ein Init-Script, dass die Verzeichnisse der Kommentarzeilen in die dazugehörigen Verzeichnisse mounted und anschließend den NFS-Server startet. Das Mounten funktioniert. Nur weiß ich nicht, wie ich jetzt korrekterweise den NFS-Daemon über das Init-Script anstoß.
/etc/init.d/nfsexportmnt: | #!/sbin/runscript
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
#
# mounts the specified directories in /etc/exports
depend() {
use net
before nfs
}
is_mounted() {
echo $(mount | grep "$1 on $2" | wc -l)
}
mount_export() {
retval=$(is_mounted "$1" "$2")
if [ "$retval" == 0 ]; then
einfo "Mounting $1 on $2"
mount -o bind "$1" "$2"
fi
}
umount_export() {
retval=$(is_mounted "$1" "$2")
if [ "$retval" != 0 ]; then
einfo "Unmounting $2"
umount "$2"
fi
}
scan_export() {
unset DIR_SRC
unset DIR_MNT
while read x
do
case "${x:0:1}" in
"#") if [[ -z "$(echo "$x" | sed -n "/^#\s\([^/]\|\/etc\/\).*/p")" ]]; then
DIR_SRC="$(echo "$x" | sed "s/^#\s\([^\t\$ ]\+\).*/\1/")"
else
unset DIR_SRC
unset DIR_MNT
fi
;;
"/") if [[ -n "$DIR_SRC" ]]; then
DIR_MNT="$(echo "$x" | sed "s/^\([^\t\$ ]\+\).*/\1/")"
$1 "$DIR_SRC" "$DIR_MNT"
unset DIR_SRC
unset DIR_MNT
fi
esac
done < /etc/exports
}
start() {
einfo "Binding export directories"
scan_export mount_export
eend 0
}
stop() {
einfo "Unmounting export directories"
scan_export umount_export
eend 0
} |
Jetzt bräuchte ich mal ein paar Kommentare:
- Wie starte ich den NFS-Service nach dem Mounten in start() bzw. beende ich den NFSD vor dem Umount in stop()?
- Verbesserungen bezüglich der Coding-Standards und Codequalität / Robustheit
- Sofern gewünscht, erstell ich auch vom Gesamtergebnis zur Konfiguration des Heimnetzwerks via NFSv4 eine Anleitung in der Dokumentation. Ich hab zumindest einige Zeit gebraucht, mich durch die ganzen Tutorials der anderen Distributionen zu wühlen, um die benötigten Teile rauszupicken.
|
|
Back to top |
|
|
musv Advocate
Joined: 01 Dec 2002 Posts: 3337 Location: de
|
Posted: Sun Feb 19, 2012 5:29 pm Post subject: |
|
|
Falls es doch jemanden interessiert, ich hab jetzt eine Konfiguration, die ganz gut funktioniert.
- nfs hab ich als Abhängigkeit in mein Script eingetragen (need nfs). Damit werden zwar die Verzeichnisse auf dem Server erst nach dem Start in /export/ gemountet, ist aber scheinbar kein Problem.
- Ich hatte noch ein paar Probleme mit der Freigabe des Root-Verzeichnisses. Lösung: https://forums.gentoo.org/viewtopic-t-912836-highlight-.html
|
|
Back to top |
|
|
LinuxTom l33t
Joined: 26 Mar 2006 Posts: 798
|
Posted: Mon Feb 20, 2012 1:53 pm Post subject: |
|
|
Hallo musv,
kannst Du Dir mal bitte diesen Thread anschauen? Ich bekomme das einfach nicht ans Laufen. |
|
Back to top |
|
|
musv Advocate
Joined: 01 Dec 2002 Posts: 3337 Location: de
|
Posted: Tue Feb 21, 2012 10:30 am Post subject: |
|
|
Sorry, dass ich nicht eher dazu kam.
Das Problem ist bei Dir das IDMapping. In den älteren NFS-Versionen hast du die ID in /etc/exports angegeben. Ab NFS4 kannst du das über /etc/idmapd.conf regeln, musst du aber nicht. Soweit ich das verstanden hab, wird beim Exportieren ein Anonymous-Nutzer verwendet, der eine zufällige ID bekommt (all_squash). Über anonuid und anongid kannst du festlegen, welche ID der Anonymous-Nutzer bekommt.
In meinem Netzwerk ist das so konfiguriert, dass ich auf allen Rechnern meinen Standardnutzer mit der UID=1000 und der GID=100 hab. Alle weiteren Nutzer haben logischerweise eine höher UID und dürfen nur lesen. Ich brauch somit kein ID-Mapping, da die User-ID auf allen beteiligten Rechnern übereinstimmt.
Soweit ich das überflogen hab, kannst du als Client-Nutzer mit der UID=117 schreiben, aber nicht als Nutzer vdr (410). In Deiner idmapd.conf hast du auch kein User-Mapping angegeben. In Deinem Fall kannst du entweder die UID auf allen beteiligten Rechnern angleichen, oder du konfigurierst die idmapd.conf so, dass der vdr-User auf dem Server auf den vdr-User auf den Client gemapped wird. Frag mich aber nicht nach der Syntax. Ich denk mal, du musst für nobody in der idmapd.conf irgendwie den vdr-User angeben. |
|
Back to top |
|
|
LinuxTom l33t
Joined: 26 Mar 2006 Posts: 798
|
Posted: Thu Feb 23, 2012 7:14 am Post subject: |
|
|
Es sollen eigentlich (zumindest nach Anleitung) alle User-ID automatisch gemappt werden. Aber es funktioniert nicht. Die Kernel-Upcall-Funktion wird nicht aufgerufen. |
|
Back to top |
|
|
musv Advocate
Joined: 01 Dec 2002 Posts: 3337 Location: de
|
Posted: Mon Apr 30, 2012 11:32 am Post subject: |
|
|
Ich muss mal den Thread wieder hervorholen. Seit einem der letzteren Updates weigert sich der NFS-Server bei mir die angegebenen IDs in der /etc/exports zu verwenden und schreibt mir hin, dass er explizit den idmapper verwenden will. Tja und jetzt bin ich am Suchen, wie ich User + Group irgendwie in den Mapper reinkrieg. Tutorials, die diesen Inhalt abhandeln, sind irgendwie Mangelware. |
|
Back to top |
|
|
LinuxTom l33t
Joined: 26 Mar 2006 Posts: 798
|
Posted: Fri Nov 30, 2012 10:13 am Post subject: |
|
|
Ich habe es aufgegeben und bin wieder auf NFS3 zurück. Jetzt nach einem Update auf eine aktuelle Gentoo-Version (incl. Kernel) könnte ich es ja wieder probieren. |
|
Back to top |
|
|
boospy Guru
Joined: 07 Feb 2010 Posts: 308 Location: Austria
|
Posted: Sat Dec 29, 2012 8:43 pm Post subject: |
|
|
Ja, ich bin auch reumütig zu NFSv3 zurück gekrochen. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|