• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Eingabe-/Ausgabefehler bei tar über NFSv4

halo44

Hacker
Ich benutze tar für die Sicherung meiner root- und home-Partitionen bisher problemlos auf eine externe Festplatte. Ich habe auch mehrfach schon diese Sicherungen mit tar zurückgeladen und erhalte immer ein funktionierendes und fehlerfreies System.

Jetzt bin ich auf die Idee gekommen, das gleiche Verfahren mit tar über NFSv4 zu einem anderen Rechner anzuwenden. Diesen Rechner habe ich bisher nur zur Sicherung meiner Datenpartition verwandt. Diese Sicherung habe ich mit rsync realisiert, was auch einwandfrei funktioniert. Auch hierfür benutze ich NFSv4.

Meine jetzt neu projektierte Sicherung der root- und home-Partitionen mittels tar über NFSv4 funktioniert leider nur sporadisch. Manchmal läuft die Sicherung komplett durch. Meistens aber scheitert sie nach unterschiedlichen Laufzeiten mit der Meldung :

Code:
tar: /mnt/bs-sicherungen/Rechner-opensuse-usw : Kann write nicht ausführen: Eingabe:/Ausgabefehler
tar: Error is not recoverable: exiting now

Die Menge der geschriebenen Daten ist sehr unterschiedlich. Mal sind es kaum 300 MB, manchmal 2 GB und wie schon gesagt, hin und wieder läuft die Sicherung erfolgreich durch.

Da ich schon glaubte, daß die Festplatte nicht einwandfrei ist, habe ich sie komplett mit Zeros gelöscht, die Partitionen neu aufgebaut und schließlich auch nochmal formatiert. Dies nur, weil ich Fehlermeldungen erwartete. Aber: nichts dergleichen.

So habe ich dann eine eigene Partition auf der anderen Festplatte des Rechners versucht. Leider ändert sich das Verhalten nicht.

Hat jemand eine Idee, was hier schief läuft? Gibts noch Einstellungen für tar, wie empfehlenswerte Block-, Puffer oder andere Speicherwerte?

Ich muß das geplante Sicherungsverfahren nicht so anwenden, würde aber gerne das Problem lösen, weil es doch eigentlich funktionieren muß.

Bin für jede Hilfe dankbar.

Gruss H.
 

spoensche

Moderator
Teammitglied
Wie sehen deine Mountoptionen aus, mit der du die Freigabe einbindest? Welche Konfigurationswerte verwendest du in der /etc/exports? Was sagt nfsstat?
 
OP
H

halo44

Hacker
spoensche schrieb:
Wie sehen deine Mountoptionen aus, mit der du die Freigabe einbindest? Welche Konfigurationswerte verwendest du in der /etc/exports? Was sagt nfsstat?

Mit Mountoptionen meinst Du sicher den Eintrag in der /etc/fstab des Clients :

Code:
linux-4wfb:/nfs4exports/bs-sicherungen	/mnt/bs-sicherungen		nfs	noauto,soft,timeo=10,user 0 0

Hier die /etc/exports :

Code:
/nfs4exports/bs-sicherungen	192.168.100.0/24(rw,nohide,insecure,sync,no_subtree_check)

Ab hier EDITIERT :

Zu nfsstat sagt der Client nach einem Fehlversuch :

Code:
Client rpc stats:
calls      retrans    authrefrsh
858        17         858     

Client nfs v3:
null         getattr      setattr      lookup       access       readlink     
0         0% 6         0% 1         0% 0         0% 4         0% 0         0% 
read         write        create       mkdir        symlink      mknod        
0         0% 806      95% 0         0% 0         0% 0         0% 0         0% 
remove       rmdir        rename       link         readdir      readdirplus  
0         0% 0         0% 0         0% 0         0% 0         0% 2         0% 
fsstat       fsinfo       pathconf     commit       
19        2% 2         0% 1         0% 4         0% 

Client nfs v4:
null         read         write        commit       open         open_conf    
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
open_noat    open_dgrd    close        setattr      fsinfo       renew        
0         0% 0         0% 0         0% 0         0% 2        18% 0         0% 
setclntid    confirm      lock         lockt        locku        access       
0         0% 0         0% 0         0% 0         0% 0         0% 2        18% 
getattr      lookup       lookup_root  remove       rename       link         
1         9% 1         9% 1         9% 0         0% 0         0% 0         0% 
symlink      create       pathconf     statfs       readlink     readdir      
0         0% 0         0% 1         9% 0         0% 0         0% 0         0% 
server_caps  delegreturn  getacl       setacl       fs_locations rel_lkowner  
3        27% 0         0% 0         0% 0         0% 0         0% 0         0% 
secinfo      exchange_id  create_ses   destroy_ses  sequence     get_lease_t  
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
reclaim_comp layoutget    getdevinfo   layoutcommit layoutreturn getdevlist   
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
(null)       
0         0%


Gruss H.
 
OP
H

halo44

Hacker
Ich habe inzwischen etwas mit den mount-Optionen für die NFS-Serverfreigaben experimentiert.

Wenn ich die timeo-Option in der /etc/fstab des Clients von 10 auf 16 setze, dann laufen meine Sicherungen problemlos durch. Wobei der Wert 16 von mir willkürlich gewählt wurde. Eventuell geht auch 12 oder ein anderer Wert niedriger als 16.

Da ich aber diesen Mount nur für die eine Aufgabe (Sicherung) einsetzen werde, neige ich dazu hier nicht weiter zu experimentieren.

Mehr Gedanken mache ich mir darüber, ob die gesicherten Daten auch so "sauber" sind, daß ein Zurückladen zu einem funktionierenden System führt. Da ich über ausreichend (andere) Sicherungen verfüge, werde ich das bestimmt in den nächsten Tagen mal ausprobieren.

Wenn ich mehr über die "Qualität" meiner Lösung weiß, werde ich das Thema als gelöst markieren. - Noch ist mir das zu früh. :/

Gruss H.
 

Zerberus

Member
Hi Halo44,

Was Du benutzt ist NFS und nicht NFS4! U.U. ist das Dein Problem, dass die Anbindung hakelig ist. Probier mal ein ziemlich großes File normal auf das "NFS4" Laufwerk zu kopieren.

Um eine NFS v4 Anbindung zu erhalten sind mehrere Faktoren notwendig. U.A. muss in /etc/fstab die mount Zeile ein nfs4 anstelle von nfs enthalten.

Überprüfe Dein Settup des NFS v4 Servers und das des NFS v4 Clients. Hier muss nicht nur das "allgemeine" NFS v4 gesetzt sein, sondern auch noch bei jeder gemounteten Option. Achtung Falle! Wenn Du auf dem Server ein "/NFS4-Server-Disk" exportiert hast, welche die Subdirectories "SubA" und "SubB" enthält, dann wirst Du auf dem Client nicht "/NFS4-Server-Disk" sondern "/" mounten!

CIAO Zerberus
 
OP
H

halo44

Hacker
spoensche schrieb:
Füge mal bei den Mountoptionen noch
Code:
rsize=8192,wsize=8192
ein.

Wenn ich timeo wieder auf 10 stelle und rsize/wsize jeweils auf 8192, dann laufe ich wieder auf den Eingabe-/Ausgabefehler.

Mit der Einstellung timeo= 16 läuft der Transfer auch ohne Eintrag der rsize/wsize-Optionen. Warum also ändern?

Die Einstellung timeo=14 funktioniert übrigens, wenn ich von openSuse aus Kubuntu sichere. Umgekehrt scheitert Kubuntu an dieser Einstellung. Hier ist 16 erforderlich.

Zerberus schrieb:
... U.A. muss in /etc/fstab die mount Zeile ein nfs4 anstelle von nfs enthalten ...

Das hatte ich auch im Vorfeld erfolglos versucht. Habe mich dann nicht mehr weiter damit beschäftigt, als ich irgendwo im Netz fand, daß die NFSv4-Mountoptionen nfs und nfs4 in der /etc/fstab gleichbedeutend sind.

Übrigens bin ich sicher, daß ich NFSv4 benutze. ;)

Gruss H.
 

Zerberus

Member
Hi Halo44,

halo44 schrieb:
Das hatte ich auch im Vorfeld erfolglos versucht. Habe mich dann nicht mehr weiter damit beschäftigt, als ich irgendwo im Netz fand, daß die NFSv4-Mountoptionen nfs und nfs4 in der /etc/fstab gleichbedeutend sind.

Nun bei Fundstellen 'irgendwo', muss man auch einkalkulieren, dass da u.U. Schwachfug steht. :???: IMHO hat jemand der das geschrieben hat, einfach keine Ahnung (oder nicht viel!)

Also zur Einstellung bei Server: NFSv4 checkbox ist an, Domänenname ist vergeben? (Das sind nur die Basics!)
Wie heisst das Directory, das Du freigegeben hast? Z.B. in /etc/exports und den Namen des directories, welches Dein NFSv4 Main-Directory sein soll?
halo44 schrieb:
Hier die /etc/exports :
Code:
/nfs4exports/bs-sicherungen	192.168.100.0/24(rw,nohide,insecure,sync,no_subtree_check)
Code:
linux-4wfb:/nfs4exports/bs-sicherungen	/mnt/bs-sicherungen		nfs	noauto,soft,timeo=10,user 0 0
Also /nfs4exports/bs-sicherungen ist Dein NFSv4 Main-Directory.
Welche Optionen sind es, die Du dafür angegeben hast? Es muß auf jeden Fall fsid=0 dabei stehen, sonst hast Du hinterher nicht das volle NFS v4 für dieses Directory. Und das fehlt auf jeden Fall in Deiner /etc/exports!

Und was mountest Du von Deinen Clients aus?
halo44 schrieb:
Übrigens bin ich sicher, daß ich NFSv4 benutze.
Und ich bin ziemlich sicher, dass Du mindestens in irgend einem Aspekt einen Fallback von NFS v4 auf v3 bei Dir hast und nicht das volle FeatureSet von NFS v4 benutzt.
halo44 schrieb:
Zu nfsstat sagt der Client nach einem Fehlversuch :

Code:
Client rpc stats:
calls      retrans    authrefrsh
858        17         858     

Client nfs v3:
null         getattr      setattr      lookup       access       readlink     
0         0% 6         0% 1         0% 0         0% 4         0% 0         0% 
read         write        create       mkdir        symlink      mknod        
0         0% 806      95% 0         0% 0         0% 0         0% 0         0% 
remove       rmdir        rename       link         readdir      readdirplus  
0         0% 0         0% 0         0% 0         0% 0         0% 2         0% 
fsstat       fsinfo       pathconf     commit       
19        2% 2         0% 1         0% 4         0% 

Client nfs v4:
null         read         write        commit       open         open_conf    
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
open_noat    open_dgrd    close        setattr      fsinfo       renew        
0         0% 0         0% 0         0% 0         0% 2        18% 0         0% 
setclntid    confirm      lock         lockt        locku        access       
0         0% 0         0% 0         0% 0         0% 0         0% 2        18% 
getattr      lookup       lookup_root  remove       rename       link         
1         9% 1         9% 1         9% 0         0% 0         0% 0         0% 
symlink      create       pathconf     statfs       readlink     readdir      
0         0% 0         0% 1         9% 0         0% 0         0% 0         0% 
server_caps  delegreturn  getacl       setacl       fs_locations rel_lkowner  
3        27% 0         0% 0         0% 0         0% 0         0% 0         0% 
secinfo      exchange_id  create_ses   destroy_ses  sequence     get_lease_t  
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
reclaim_comp layoutget    getdevinfo   layoutcommit layoutreturn getdevlist   
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
(null)       
0         0%

Hmm: Client nfs v3: create 95%, aber Client nfs v4: create 0%?
Aber Du bist Dir sicher, dass Du NFS v4 benutzt?
Wie bist Du denn auf dieses schmale Brett gekommen? :D

CIAO Zerberus
 
OP
H

halo44

Hacker
Hallo Zerberus,

da Du es anscheinend genau wissen willst, hier meine NFS-Konfiguration :

Auf Client und Server ist per YaST das Häkchen für die Aktivierung von NFSv4 gesetzt.

Auf beiden sind in der Firewall die Dienste für NFS-Client, NFS-Server und SSH erlaubt. Darüber hinaus ist
noch der TCP-Port 2049 geöffnet.

Auf dem Server ist das Pseudo-Basisverzeichnis /nfs4exports eingerichtet. Dieses ist auch in der /etc/exports
mit fsid=0 eingetragen. Dort ist allen Rechnern meines Netzes der Zugriff erlaubt. Weitere Optionen sind:
insecure, crossmnt, rw, sync und no_subtree_check.

Unterhalb dieses Pseudo-Basisverzeichnisses liegen weitere Verzeichnisse, die ich exportiere. Darunter auch
das für die Sicherungen der Betriebssysteme: bs-sicherungen. Vollständiger Pfad also /nfs4exports/bs-sicherungen.

Dieses wird per

Code:
mount --bind /BS-Sicherungen /nfs4exports/bs-sicherungen

verbunden und ebenfalls in die /etc/exports eingetragen.

Die Optionen hierbei rw, nohide, insecure, sync und no_subtree_check. Auch hier erlaube ich allen Rechnern
meines Netzwerks den Zugriff.

Selbstverständlich habe ich die Verzeichnisse auch per exportfs exportiert.

Auch ist das Verzeichnis (wie die anderen freigegebenen) in die /etc/fstab eingetragen :

Code:
/BS-Sicherungen  /nfs4exports/bs-sicherungen  none  rw,bind  0  0

Beim Client ist neben dem bereits oben Erwähnten der Eintrag in der /etc/fstab zu berichten :

Code:
linux-4wfb:/nfs4exports/bs-sicherungen   /mnt/bs-sicherungen      nfs   noauto,soft,timeo=14,user 0 0

Das wars. Und das ist meiner bescheidenen Meinung nach NFSv4, wenn man von dem Eintrag "nfs" statt "nfs4" in der
/etc/fstab des Clients absieht.

Wenn dieser "Mangel" wirklich dazu führen sollte, daß trotz aller anderen "richtigen" Einstellungen für NFSv4
doch NFSv3 ausgeführt wird, lasse ich mich gerne eines besseren belehren.

Aber, wie bereits vorher geschrieben, mein Eingabe-/Ausgabefehler trat auch beim Versuch mit "nfs4" auf.

Gruss H.
 

mahol

Newbie
Nunja bei mir sieht es so aus:
Kein nfs v3 !
Code:
# nfsstat
Client rpc stats:
calls      retrans    authrefrsh
1090       0          1090    

Client nfs v4:
null         read         write        commit       open         open_conf    
0         0% 2         0% 0         0% 0         0% 60        5% 54        4% 
open_noat    open_dgrd    close        setattr      fsinfo       renew        
0         0% 0         0% 54        4% 1         0% 21        1% 0         0% 
setclntid    confirm      lock         lockt        locku        access       
33        3% 33        3% 0         0% 0         0% 0         0% 129      11% 
getattr      lookup       lookup_root  remove       rename       link         
506      46% 43        3% 9         0% 0         0% 0         0% 0         0% 
symlink      create       pathconf     statfs       readlink     readdir      
0         0% 0         0% 12        1% 54        4% 0         0% 37        3% 
server_caps  delegreturn  getacl       setacl       fs_locations rel_lkowner  
33        3% 0         0% 0         0% 0         0% 0         0% 0         0% 
secinfo      exchange_id  create_ses   destroy_ses  sequence     get_lease_t  
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
reclaim_comp layoutget    getdevinfo   layoutcommit layoutreturn getdevlist   
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
(null)       
0         0%

/etc/fstab:
Code:
myserver:/     /server  nfs4   rw,noauto   0 0

Auf dem Server:
cat /etc/exports
Code:
/shares/allusers   192.168.1.0/24(fsid=0,crossmnt,rw,sync,no_subtree_check)

service nfsserver status
Code:
redirecting to systemctl
nfsserver.service - LSB: Start the kernel based NFS daemon
          Loaded: loaded (/etc/init.d/nfsserver)
          Active: active (running) since Sat, 14 Jan 2012 10:56:32 +0100; 5h 38min ago
         Process: 11100 ExecStop=/etc/init.d/nfsserver stop (code=exited, status=0/SUCCESS)
         Process: 11122 ExecStart=/etc/init.d/nfsserver start (code=exited, status=0/SUCCESS)
          CGroup: name=systemd:/system/nfsserver.service
                  ├ 11143 /usr/sbin/rpc.idmapd
                  ├ 11149 /usr/sbin/rpc.statd --no-notify
                  └ 11159 /usr/sbin/rpc.mountd

Server und Client:
cat /etc/idmapd.conf
Code:
[General]

Verbosity=0
Pipefs-Directory=/var/lib/nfs/rpc_pipefs
Domain=mydomain.lan

[Mapping]

Nobody-User=nobody
Nobody-Group=nobody
 

Zerberus

Member
Hi Halo44,

das Beispiel von mahol ist schon mal ein gutes Beispiel. Dein Fehler ist, dass Du versuchst den exportierten branch auf dem Client anzugeben. Dort ist aber nur noch ein "/" für das exportierte nfs4-Verzeichnis übrig.

ACHTUNG! Böse Falle! Das ist ein wichtiger Unterschied zu NFS v3! Das Main-Verzeichnis auf dem exportierenden Server darf nicht angegeben werden. Wenn es sich trotzdem mounten läßt, und dann nur, weil nicht nfs4 sondern nur nfs im /etc/fstab steht, ist das dann nicht mehr v4 sondern ein Fallback auf v3 und es fehlen Dir ein paar Features, die zunächst mal nicht auffallen werden, weil ja prinzipiell das Verzeichnis, das Du mounten wolltest zu sehen ist.

Versuche entweder v4 so aufzusetzen, dass es auch als v4 läuft oder nimm gleich sauber v3 und dann versuche die eigenartigen Fehler bei tar anzugehen. Wenn die Grundlage schon nicht stimmt, wird auch die darüber liegende Schicht das nicht korrigieren können.

CIAO Zerberus
 
OP
H

halo44

Hacker
Hallo ihr beiden,

danke für Eure Antworten. Ich werde mir das alles mal zu Gemüte führen, sprich: das durchprobieren. - Vermutlich morgen.

Ich melde mich dann wieder.

Gruss H.
 
OP
H

halo44

Hacker
Es ist doch später geworden, aber jetzt ist alles in Ordnung, d.h. mit dem Eintrag "nfs4" und dem korrigierten Pfad zum
freigegebenen Server-Verzeichnis habe ich keinen "Mischmasch" von NFSv3 und NFSv4 mehr.

Nochmals vielen Dank für die guten Tips.

Gruss H.

P.S.: mein Eingabe-/Ausgabefehler läßt sich nach wie vor nur durch einen erhöhten timeo-Wert beherrschen.
 
OP
H

halo44

Hacker
Zum Thema ist ein Update fällig :

Inzwischen habe ich den Rechner, auf den ich gelegentlich meine Sicherungen mit Hilfe von tar über NFS durchführte, verschenkt. Alternativ habe ich auf dem Rechner meiner Frau als zweites Betriebssystem eine Linuxdistribution installiert um meine Sicherungen auf diesen Rechner zu machen.

Hierfür hatte ich zunächst openSuse 12.2 eingerichtet. Leider scheiterten die Sicherungen fast immer mit dem erwähnten Eingabe-/Ausgabefehler trotz immer höher gesetztem timeo-Wert (bis 40).

Daraufhin habe ich Debian 6.06 installiert und hiermit mein Glück versucht. Leider mit dem gleichen Ergebnis: Eingabe-/Ausgabefehler, meist schon wenn noch nicht mal ein GB übertragen war.

Als nächstes versuchte ich die Sicherung mit tar zunächst in einer freien Partition auf dem Quellrechner zwischen zu speichern und dann die fertige Datei mit scp auf den anderen zu übertragen. Zwar umständlich und zeitaufwendiger, aber hierdurch machte ich wenigstens die Erfahrung, daß auch scp mit dem gleichen Fehler scheitert.

Irgendwann aber kam mir Samba in den Sinn. Und das war eine gute Idee. Seit zwei Wochen läuft die Sicherung meiner Partitionen mittels tar auf die Samba-Freigabe ohne Fehler. Die Ausgabedatei habe ich auch testweise (mit einer funktionierenden Sicherung auf externer Festplatte in der Hinterhand) zurückgeladen. Sie ist fehlerfrei.

Warum Samba im Gegensatz zu NFS "fehlerfrei" läuft, kann ich nicht beurteilen. Das mag jemand Kompetenterer tun.

Einen Update war mir meine Erfahrung aber wert. Vielleicht hilft sie ja auch einem anderen Betroffenen ;) .

Gruss H.
 
Oben