cellolein
Goto Top

Cifs unter Linux permanent mounten

Guten Morgen zusammen!

Ich habe ein Problem bezüglich Linux und ich hoffe ihr könnt mir weiterhelfen.

Für unsere E-Mail Archivierung haben wir einen SLES10 SP1 Server aufgestellt. Die Archivierungssoftware wird per init-Skript in den Runleveln 3 und 5 gestartet (Das Skript hat der Anbieter der Archivierungslösung mitgebracht, bzw. war Bestandteil der Software).

Soweit so gut. Die E-Mails werden in einer Datenbank abgelegt, welche auf einem 1,5 TB CIFS Volume auf unserem NetApp Filer liegt. Wir haben uns für CIFS entschieden, da wir für den Filer keine NFS Lizenzen haben und eine LUN über iSCSI zu statisch ist. Zudem kann man CIFS Volumes Snapshotten und gezielter rücksichern als eine LUN.

Soviel zum Hintergrund. Nun mein Problem.
Damit die Archivierungssoftware starten kann, benötigt sie eine Verbindung zur Datenbank. Das CIFS Share muss also gemountet sein, bevor das Skript in einem der beiden Runlevel gestartet wird. Ich muss das Skript also irgendwie permanent mounten. Ich habe versucht einen Mountbefehl mit in das init-Skript der Archivierungssoftware zu schreiben, aber das funktioniert nicht. Weiter habe ich es mit einem Eintrag in die fstab versucht, aber die fstab wird ja noch vor der Initialisierung des Netzwerks ausgeführt. Ein eigenes init-Skript für den Mountbefehl funktionierte auch nicht. Nach dem Verlinken des Scriptes auf S99skript zum Beispiel, hat Linux die Verlinkung nach einem reboot auf S01skript geändert.

Im Internet habe ich dann noch weiter gegooglet und bin auf Lösungen wie smbmount und automount gestoßen, aber das ist mir alles zu aufwändig. Am liebsten wäre mir ein Aufruf des Mountbefehls aus dem init-Skript der Application heraus. Der Zugriff ist nur mit root notwendig. Andere User müssen nicht mounten können oder auf das Share zugreifen können. (Ich weiß es ist prinzipiell unsicher nur mit root zu arbeiten, aber hier kennt sich sonst keiner mit Linux aus und Angriffe von außen sind nicht zu befürchten)

Der Mountbefehl ist korrekt, auch der Eintrag in die fstab. Wenn ich nach dem Systemstart mount -a ausführe, kann ich ganz normal auf das Share zugreifen und damit arbeiten.

Hier ist mein Mountbefehl:
mount -t cifs -o username=SCHMITZ/xxxx,password=xxxx,perm,auto,rw,directio,_netdev,exec,suid,sync //192.168.1.70/share /mountpoint

Der Eintrag in der fstab sieht dementsprechend aus. Berechtigungen für den Mountpoint sind passend gesetzt.

Nun gehen mir die Ideen aus, ich hoffe hier hat vielleicht noch jemand den ein oder anderen alternativen Lösungsweg parat.

Danke für eure Hilfe und Grüße,


Cello

Content-ID: 104257

Url: https://administrator.de/contentid/104257

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

64748
64748 17.12.2008 um 11:15:44 Uhr
Goto Top
Hallo Cellolein,

mount geht nicht für cifs (habe die manpage aber nur überflogen). Sieh Dir mal mount.cifs an.
http://linux.die.net/man/8/mount.cifs

Markus
Cellolein
Cellolein 17.12.2008 um 11:18:34 Uhr
Goto Top
Hi Markus,

der Befehl "mount -t" erzeugt den Aufruf von mount.cifs.
Trotzdem danke.

Grüße
datasearch
datasearch 17.12.2008 um 14:17:44 Uhr
Goto Top
lol

naja, hauptsache etwas geschrieben face-smile

Also, bei SuSE ist das sysv init etwas sehr automatisiert und man sollte eigentlich nicht manuel herumbasteln. Aber, schau mal in deinem Script zum starten der Archivierungssoftware ob er überhaupt nach dem Netzwerk startet. Bei Gentoo würde ich zb. "depend on: network netfs" bei SuSE sieht das etwas komplizierter aus:

### BEGIN INIT INFO
# Provides:                     myscript
# Required-Start:               $local_fs $remote_fs $network
# Should-Start:                 apache $named
# Required-Stop:                $local_fs $remote_fs $network
# Should-Stop:
# Default-Start:                3 5
# Default-Stop:                 0 1 2 6
# Short-Description:            my backup script
# Description:                  Start the net backup script :-)
### END INIT INFO
Du müsstest sicherstellen das das Script nach dem Netzwerk getsartet wird. Nun kannst du an passender Stelle einen Check einbauen, der prüft ob der Pfad tatsächlich gemountet wurde und falls er es nicht ist, mounten. zb. if [ ! -e $mountpath/.checkfile]; do mount -t cifs -o bla blu bb; fi

Irgend etwas in der Art eben.
Cellolein
Cellolein 17.12.2008 um 15:29:10 Uhr
Goto Top
Das hört sich gut an und klingt logisch, leider kann ich es heute nicht mehr testen.
Ich werde es aber morgen mal ausprobieren und Meldung geben.

Hab grad mal in das Script geschaut, dort steht nur die Info zu Default Start/Stop und Description drin. Werde dann mal Required-Start hinzufügen.

Danke vorab
6890
6890 19.12.2008 um 02:52:33 Uhr
Goto Top
Nabend,

warum schreibst du nicht einfach in die fstab als option _netdev mit hinein?? Diese Option besagt "...to prevent the system from attempting to mount these filesystems until the network has been enabled on the system..."

MfG
datasearch
datasearch 19.12.2008 um 12:06:26 Uhr
Goto Top
Sein runscript wird dann aber leider immernoch vor dem Netzwerk starten wenn es im Header nicht definiert wurde, das es netzwerk benötigt face-wink
6890
6890 19.12.2008 um 16:23:58 Uhr
Goto Top
Tach,

Was haben gewisse Init-Scripte mit einem Filessystem-Eintrag in der fstab zu tun?! Ich sagte nicht er solle sein Init-Script und den fstab nutzen. Sondern nur den fstab, sodass es beim bouten gemountet wird.

MfG
datasearch
datasearch 19.12.2008 um 16:30:43 Uhr
Goto Top
Wenn das Init-System nicht weiß, das es den Dienst erst starten kann wenn das Netzwerk und die Netzwerkdateisysteme gestartet hat, kann das nicht wirklich funktionieren. Wenn du Glück hast, und die Netzwerkinit durch ist bevor das Script startet, klappt es. Anersherum leider nicht. Wie gesagt, SuSE steuert die Abhängigkeiten über diesen header. Wenn dieser fehlt, startet es irgendwo. (siehe Doku readme.SuSE)