Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
NFSv4 - Hilfe bei Initscript, Howto erwünscht?
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
musv
Advocate
Advocate


Joined: 01 Dec 2002
Posts: 2643
Location: de

PostPosted: Wed Feb 08, 2012 10:39 pm    Post subject: NFSv4 - Hilfe bei Initscript, Howto erwünscht? Reply with quote

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:
  1. Wie starte ich den NFS-Service nach dem Mounten in start() bzw. beende ich den NFSD vor dem Umount in stop()?
  2. Verbesserungen bezüglich der Coding-Standards und Codequalität / Robustheit
  3. 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
View user's profile Send private message
musv
Advocate
Advocate


Joined: 01 Dec 2002
Posts: 2643
Location: de

PostPosted: Sun Feb 19, 2012 5:29 pm    Post subject: Reply with quote

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: http://forums.gentoo.org/viewtopic-t-912836-highlight-.html
Back to top
View user's profile Send private message
LinuxTom
l33t
l33t


Joined: 26 Mar 2006
Posts: 798

PostPosted: Mon Feb 20, 2012 1:53 pm    Post subject: Reply with quote

Hallo musv,

kannst Du Dir mal bitte diesen Thread anschauen? Ich bekomme das einfach nicht ans Laufen. :(
Back to top
View user's profile Send private message
musv
Advocate
Advocate


Joined: 01 Dec 2002
Posts: 2643
Location: de

PostPosted: Tue Feb 21, 2012 10:30 am    Post subject: Reply with quote

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
View user's profile Send private message
LinuxTom
l33t
l33t


Joined: 26 Mar 2006
Posts: 798

PostPosted: Thu Feb 23, 2012 7:14 am    Post subject: Reply with quote

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
View user's profile Send private message
musv
Advocate
Advocate


Joined: 01 Dec 2002
Posts: 2643
Location: de

PostPosted: Mon Apr 30, 2012 11:32 am    Post subject: Reply with quote

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
View user's profile Send private message
LinuxTom
l33t
l33t


Joined: 26 Mar 2006
Posts: 798

PostPosted: Fri Nov 30, 2012 10:13 am    Post subject: Reply with quote

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
View user's profile Send private message
boospy
Apprentice
Apprentice


Joined: 07 Feb 2010
Posts: 249
Location: Austria

PostPosted: Sat Dec 29, 2012 8:43 pm    Post subject: Reply with quote

Ja, ich bin auch reumütig zu NFSv3 zurück gekrochen.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
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