nfs-client blockiert backup script

Post Reply
Message
Author
alko_klinik
Posts: 29
Joined: 12. Jun 2008 10:02

nfs-client blockiert backup script

#1 Post by alko_klinik »

Hi Community!

Ich benutze synbak als backup für verschiedene Daten
und das gibt mir im Log File jedesmal die "Active mount points" an
also sozusagen führt das Script den Befehl df aus.
Ja, und df wird von NTF blockiert.

letztes Jahr hab ich voll freude
endlich einmal ein NFS-Netzwerk erstellt
was ja super funktioniert solang mein desktop-Computer eingeschalten ist.
wenn dem aber nicht so ist
friert mir die bash ein, fals ich versuche mit dem Backup-Computer auf meine desktop zuzugreifen. (also zb. ein normales cd in den angelegten Pfad für meinen desktop-PC oder eben ein df)

gibt es da irgendeine Lösung wie ich das abfangen könnte!?

Vielen Dank für eure Hilfe
8) alko_klinik

%PS:
ach ja, mein fstab Eintrag:
pw02zpr006:/home /mnt/Netzwerk/PW02ZPR006 nfs defaults 0 0

User avatar
hastifranki
Posts: 259
Joined: 06. May 2006 19:58

#2 Post by hastifranki »

Hallo,

ich würde die Option noauto in die fstab eintragen und NFS manuell mounten.

Ich verwende Unison bzw. tar (differentielles Backup). Unison funktioniert im Netz und verwendet rsync. Ich habe gerade gelesen, dass synbak auch rsync verwendet. Das ist vielleicht besser als NFS.

Auf die entfernten Daten kann man z.B. mit dem Datei-Browser (Server verbinden...) über ssh zugreifen. Andere Protokolle funktionieren auch im Datei-Browser unter Gnome.

Viele Grüße
Frank

alko_klinik
Posts: 29
Joined: 12. Jun 2008 10:02

#3 Post by alko_klinik »

Hi hastifranki, Hi Community!

Wie ist das eigentlich mit einem Linux-Netzwerk?

bei mir auf der Klinik (LKH-Graz)
haben natürlich (fast) alle 6000 Mann/Damen/Doktor(in)en/Proffesor(in)en als OS Windows .
Wenn sie Ihren PC am Morgen Booten
haben sie neben ihrer C:// Platte
auch noch ein externes home ( U:// ) und ein externes PUBLIC ( G:// )
welches immer präsent ist.
Ich kann mit dem Explorer drauf zugreife, oder der Dos Shell,
auch jedes Programm hat die Möglichkeit dazu.

Das möchte ich jetzt auch unter Linux realisieren
automatischer Zugriff auf U:// und G:// geht natürlich nicht
da das Linux-Passort nicht das gleiche wie das globale Windows-Passwort ist.
Dort möchte ich in Zukunft auch mal hin, dass ich den Winn-Server für die Passwort Registrierung verwende.
Aber das steht ja noch in den Sternen.

Zuerst aber mal die Linux-Kisten untereinander verbinden.
Sind eh nur vier stück :wink:

Aber es hakt ja schon dabei dass ein df -h hängen bleibt
wenn der andere Computer nicht eingeschaltet ist.

Jedoch df -h ist ja eigentlich gar kein so grosses Problem, ausser beim backup mit synbak
(das mit dem Backup hab ich eigentlich nur angeführt weil es mir somit zum Problem geworden ist)
wenns hängen bleibt kann ich immerhin noch ein CTRL + [C] machen.
aber wenn ich mit "change directory" ('cd') in das Verzeichniss des anderen Computers springen will. Und dieser derzeit aber abgeschaltet ist,
auch wenn ich ihn zuvor mal händisch gemountet habe, kann ich den Befehl dann nicht mehr abbrechen.
Da hilft nur mehr den Terminal neu zu starten
und wahrscheinlich hängt dann der cd Befehl trotzdem noch im init-prozess.

Da muss es doch irgend eine Lösung geben !!?
8) pcAlko

User avatar
hastifranki
Posts: 259
Joined: 06. May 2006 19:58

#4 Post by hastifranki »

Hallo,

was macht Windows, wenn plötzlich der Server für G:// und U:// nicht mehr zur Verfügung steht? Ich habe hier leider keinen smb-Server eingerichtet, so dass ich das nicht testen kann.

Ich würde unter Linux ein Script schreiben, das die Verfügbarkeit des Servers (NFS) in regelmäßigen Abständen abruft und bei Zustandswechsel mount oder umount ausführt.

Viele Grüße
Frank

alko_klinik
Posts: 29
Joined: 12. Jun 2008 10:02

#5 Post by alko_klinik »

hastifranki wrote: was macht Windows, wenn plötzlich der Server für G:// und U:// nicht mehr zur Verfügung steht?
Ist das eine Sugestivfrage? :lol:
Ich glaub nicht dass meine Mitarbeiter damit eine Freude hätten wenn ich einen dieser Server mal kurz für Testzwecke ausschalten würde. :wink:
Aber ich muss eigentlich sagen, seit den 7 Jahren dass ich hier arbeite
Ist es vielleicht ein bis zwei-mal vorgekommen dass der Windows Browser nicht startet
Ich vermute dass dann so ein Server steht.
hastifranki wrote: Ich würde unter Linux ein Script schreiben, das die Verfügbarkeit des Servers (NFS) in regelmäßigen Abständen abruft und bei Zustandswechsel mount oder umount ausfü$
hast Du das schon mal versucht?
Wie erkennt man das ein anderer rechner, den man zuvor mit NFS gemountet hat, zur Zeit nicht läuft?
mit nfsstat -o all -234
konnte ich keine Änderungen feststellen
und nfsstat -m
zeigt mir nach wie vor an dass der andere Server gemountet ist

Aber nichts desto trotz
wenn ich versuche, einen Rechner der nicht mehr am Netz ist, mit umount aus zu hängen,
schreibt er mir "device is busy"

mitlerweile hab ich auch schon bemerkt das
ich nirgends auf meinem Rechner ein 'ls' ausführen kann
Dolphin listet mir im Augenblick auch nichts auf
oh Gott! auch nachdem ich die selbe Situation reproduziert habe
Gott sei Dank ist es meinem Chef noch nicht aufgefallen :)

bei mir Stürtzt sogar die Systray-Leiste ab
hab ein Kubuntu 11.04

also da kann ich keine permanennte NFS Verbindung verwenden
8) alko_klinik

User avatar
hastifranki
Posts: 259
Joined: 06. May 2006 19:58

#6 Post by hastifranki »

alko_klinik wrote: mitlerweile hab ich auch schon bemerkt das
ich nirgends auf meinem Rechner ein 'ls' ausführen kann
Dolphin listet mir im Augenblick auch nichts auf
oh Gott! auch nachdem ich die selbe Situation reproduziert habe
Gott sei Dank ist es meinem Chef noch nicht aufgefallen :)

bei mir Stürtzt sogar die Systray-Leiste ab
hab ein Kubuntu 11.04
Wenn der NFS-Server nicht permanent zur Verfügung stehen soll, kann man das gesamte home-Verzeichnis nicht auslagern. Im home-Verzeichnis befinden sich versteckte Konfigurationsdateien, die auch verfügbar sein müssen, wenn der NFS-Server nicht läuft. Du solltest ein anderes Verzeichnis (z.B. /home/<user>/nfs_test) wählen.

Ich halte nicht viel von NFS, weil es genügend Alternativen gibt. Warum versuchst du nicht „Netzordner hinzufügen“ unter Dolphin?

http://wiki.ubuntuusers.de/Heimnetzwerk#KDE-Kubuntu

Für den Fall, dass es unbedingt NFS sein soll, folgen hier ein paar Zeilen, mit denen man sich behelfen könnte:

Code: Select all

#!/bin/bash
VERZ=/home/<user>/nfs_test
while true
	do if ping -c 1 <Servername oder IP-Adresse>
		then 
			echo "Server ist erreichbar!"
			if &#91; $&#40;grep $VERZ /etc/mtab | wc -l&#41; -eq 0 &#93;
				then echo "mount wird ausgeführt."
				mount $VERZ
			fi			
		else 
			echo "Server ist nicht erreichbar!"
			if &#91; $&#40;grep $VERZ /etc/mtab | wc -l&#41; -gt 0 &#93;
				then echo "umount wird ausgeführt."
				umount -f $VERZ
			fi
	fi
sleep 5
done
Die spitzen Klammern müssen noch ersetzt werden.

Viele Grüße
Frank

alko_klinik
Posts: 29
Joined: 12. Jun 2008 10:02

#7 Post by alko_klinik »

hastifranki wrote:Wenn der NFS-Server nicht permanent zur Verfügung stehen soll, kann man das gesamte home-Verzeichnis nicht auslagern. Im home-Verzeichnis befinden sich versteckte Konfigurationsdateien, die auch verfügbar sein müssen, wenn der NFS-Server nicht läuft.
Das home Verzeichnis hab ich gar nicht ausgelagert
Es geht hierbei nur um einen externen Server der unter /mnt/SERVER gemountet ist
$>ls
bleibt hängen und ich kann nur den Terminal mit klick auf das Kreuz rechts oben beenden


aber Egal!
Danke für das snippet :!: :!:
funktioniert super
Habe aber bis jetzt gebraucht um es zu modifizieren
Ich bin nämlich mit der bash auf Kriegs-Fuss :wink:
komm von der C++ Schiene -> aber die Shell ist mit unverständlich
fängt schon an dass beim IF-Vergleich bei dem Operatoren zwischen Zahlen und Strings unterschieden wird
und endet damit dass wenn in einem script ein Array vorkommt
dass es mit
$>sh <script> sowieso nicht funktioniert

Code: Select all

if &#91; $&#40;grep $VERZ /etc/mtab | wc -l&#41; -gt 0 &#93; 
funktioniert bei mir auch nicht
ich habs dann einfach mit

Code: Select all

mtab=`grep $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; /etc/mtab | wc -l`
if &#91; $mtab -gt 0 &#93;
gelöst.

Danke für Deine Mühen
8) pcAlko

%PS: falls jemand mein Script mal brauchen kann
oder Verbesserungsvorschläge hat
(Ich habs gleich für mehrere mount points ausgelegt)
so sieht es zur Zeit aus

Code: Select all

#!/bin/bash

mountpoint&#91;0&#93;="/mnt/SERVER"                     # Server DISK
mountpoint&#91;1&#93;="/mnt/Netzwerk/Linux/SU02ZPR003"  # Server home
mountpoint&#91;2&#93;="/mnt/globaldata"                 # liver PC global
mountpoint&#91;3&#93;="/mnt/Netzwerk/PU02ZPR001"        # liver PC home
ips&#91;0&#93;="su02zpr003"
ips&#91;1&#93;="su02zpr003"
ips&#91;2&#93;="10.15.8.15"
ips&#91;3&#93;="10.15.8.15"
foreign_path&#91;0&#93;="/mnt/DISK"
foreign_path&#91;1&#93;="/home"
foreign_path&#91;2&#93;="/mnt/data/globaldata"
foreign_path&#91;3&#93;="/home"


    while true
    do

        for&#40;&#40;i= 0; i < $&#123;#mountpoint&#91;*&#93;&#125;; ++i&#41;&#41;
        do
           echo
           echo
           echo
           echo try to ping $i address $&#123;ips&#91;i&#93;&#125;
           if ping -c 1 $&#123;ips&#91;i&#93;&#125;
              then
                 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
                 echo "Server $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; ist erreichbar!"
                 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
                 echo "'grep $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; /etc/mtab' has count `grep $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; /etc/mtab | wc -l`"
                 #echo `grep $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; /etc/mtab`
                 mtab=`grep $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; /etc/mtab | wc -l`
                 if &#91; $mtab -eq 0 &#93;
                    then echo "mount wird ausgeführt."
                    mount $&#123;mountpoint&#91;i&#93;&#125;
                 fi
              else
                 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
                 echo "Server $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; ist nicht erreichbar!"
                 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
                 echo "'grep $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; /etc/mtab' has count `grep $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; /etc/mtab | wc -l`"
                 #echo `grep $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; /etc/mtab`
                 mtab=`grep $&#123;ips&#91;i&#93;&#125;&#58;$&#123;foreign_path&#91;i&#93;&#125; /etc/mtab | wc -l`
                 if &#91; $mtab -gt 0 &#93;
                    then echo "server wird ausgehängt."
                    umount -f $&#123;mountpoint&#91;i&#93;&#125;
                 fi
           fi
        done

        echo
        date
       sleep 5
    done
           

Post Reply