mount USB 2.0 Platte via script

Probleme mit Samba, NFS, FTP und Co.
Antworten
gugus
Beiträge: 381
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

mount USB 2.0 Platte via script

Beitrag von gugus » 09.10.2016 13:45:01

Servus
Ich habe für mein automatisiertes Backup in einem script einen mount eingebaut.
Zum Test habe ich logger eingebaut um zu sehen wo das script steht.
Der mount, wenn ich diesen von hand ausführe dauert ca 1 Minute.

Code: Alles auswählen

if [ -L /dev/usb-backup ];   then
     logger USB Device ist da
     mount -t ext4 /dev/usb-backup /media/usb-backup
     logger Backup device gemountet
   else
     logger Backup device ist nicht vorhanden !!!
     exit
fi
Log:

Code: Alles auswählen

Oct  9 13:27:46 sonne rdu: usb-backup gestartet .......
Oct  9 13:27:46 sonne rdu: USB Device ist da
Oct  9 13:28:48 sonne kernel: [17779720.110384] EXT4-fs (sdd1): mounted filesystem with ordered data mode. Opts: (null)
Oct  9 13:28:48 sonne rdu: Backup device gemountet
Oct  9 13:28:48 sonne rdu: Vorbereiten des rsync
Das Problem ist, wenn ich diesen Mount aus den UDEV heraus aufrufe wird abgebrochen.
Das backup-Script rufe ich mit einem anderen script "Wrapper" auf: /usr/local/bin/usb-backup.sh &

Das Log:

Code: Alles auswählen

ct  9 13:37:12 sonne kernel: [17780224.483038] scsi 19:0:0:0: Direct-Access     Generic  External         0200 PQ: 0 ANSI: 4
Oct  9 13:37:12 sonne kernel: [17780224.483379] sd 19:0:0:0: Attached scsi generic sg4 type 0
Oct  9 13:37:13 sonne kernel: [17780224.983019] sd 19:0:0:0: [sdd] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
Oct  9 13:37:13 sonne kernel: [17780225.283019] sd 19:0:0:0: [sdd] Write Protect is off
Oct  9 13:37:15 sonne kernel: [17780226.983029]  sdd: sdd1
Oct  9 13:37:17 sonne kernel: [17780228.882992] sd 19:0:0:0: [sdd] Attached SCSI disk
Oct  9 13:37:54 sonne logger: usb-backup gestartet .......
Oct  9 13:37:54 sonne logger: USB Device ist da
Oct  9 13:38:48 sonne kernel: [17780320.183023] JBD2: recovery failed

Was ist der Unterschied ob ich den wrapper aus Udev oder von Hand starte ...

gruss
gugus

Benutzeravatar
heisenberg
Beiträge: 3556
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: mount USB 2.0 Platte via script

Beitrag von heisenberg » 09.10.2016 14:37:12

Was ist der Unterschied ob ich den wrapper aus Udev oder von Hand starte ...
Da gibt es zunächst 2 prominente Unterschiede:
  1. Der Prozess läuft ohne virtuelles Terminal
  2. Die Umgebung(Variablen, Programmsuchpfade) sind anders
zu a)
Manche Programme verhalten sich anders, wenn diese nicht in einem Terminal laufen. Manche Programme setzen ein Terminal strikt voraus oder funktionieren nicht richtig.

zu b)
Verlasse dich nicht darauf, dass Variablen gesetzt sind, sondern setze die Variablen bei Bedarf selbst. Verwende für alle Programme, die nicht in /bin liegen absolute Pfadnamen, also: statt logger verwende /usr/bin/logger.

Sonstige Anmerkungen
  • Das Zeichen "!" hat eine Sonderbedeutung in der bash. Verwende es nicht ohne quoting! (Also "..." oder '...')
  • Verwende für die Meldung mit Logger quoting: /usr/bin/logger "Deine Meldung"
  • Für die Fehlersuche protokolliere die Ausgaben Deines Scriptes(stdout + stderr):

    Code: Alles auswählen

    #!/bin/bash
    {
    # dein script hier...
    befehl1
    befehl2
    } >/tmp/debug.log 2>&1 
    
    ...oder praktischerweise gleich noch mit Zeitstempeln:

    Code: Alles auswählen

    #!/bin/bash
    {
    # dein script hier...
    befehl1
    befehl2
    } 2>&1 | perl -pe 's/(.*)/localtime()." ".$1/e' >/tmp/debug.log
    
Jede Rohheit hat ihren Ursprung in einer Schwäche.

gugus
Beiträge: 381
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: mount USB 2.0 Platte via script

Beitrag von gugus » 09.10.2016 16:27:32

Sodele, ich habe verschiedene Varianten ausprobiert.
Das einzige was ich herausbekomme ist die Fehlermeldung die ich mount zuordne:
Oct 9 16:08:58 sonne kernel: [17789329.983029] sdd: sdd1
Oct 9 16:09:00 sonne kernel: [17789331.883035] sd 22:0:0:0: [sdd] Attached SCSI disk
Oct 9 16:09:37 sonne logger: usb-backup gestartet .......
Oct 9 16:09:37 sonne logger: USB Device existiert, vor dem mount
Oct 9 16:10:14 sonne kernel: [17789406.182998] JBD2: recovery failed
wie kann ich den mount Befehl zu mehr Ausgabe überreden. Ich habe bereits versucht
/bin/mount -v -t ext4 /dev/sdd1 /media/usb-backup 2>&1 > /tmp/debug.log

Es liegt eindeutig an mount der den Fehler JBD2: recovery failed auslöst.
Seltsamerweise hat dies bis anhin in einer anderen Konfiguration funktioniert ...

Gruss

TomL

Re: mount USB 2.0 Platte via script

Beitrag von TomL » 09.10.2016 17:32:45

Das liegt bestimmt nicht am "mount". Was bedeutet eigentlich, den Job per UDEV starten? Soll die Udev-Regel beim Systemstart angewendet werden oder soll der Job automatisch anlaufen, wenn Du die (im Regelfall nicht angeschlossene) Platte verbindest?

Kannst Du mal die Udev-Regel und die aktuelle Script-Variante posten? Ist das eine USB-Platte oder ein USB-Stick?

Ausserdem würde ich mal das Mount-Statement ändern, auf (var's natürlich ersetzen):

Code: Alles auswählen

/bin/mount $Device $MountTo -t ext4 -o user,rw,relatime

gugus
Beiträge: 381
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: mount USB 2.0 Platte via script

Beitrag von gugus » 09.10.2016 18:13:27

ok, also
USB 2.0 Festplatte 2TB
Server Debian stable

/etc/udev/rules.d/usb-backup.rules

Code: Alles auswählen

SUBSYSTEM=="block", KERNEL=="sd?1", ATTRS{serial}=="FF2000DF000000000000005FD5F76F", SYMLINK+="usb-backup", RUN+="/usr/local/bin/wrapper-usb-backup.sh"
Script (wrapper-usb-backup.sh) das von udev aufgerufen wird :

Code: Alles auswählen

!/bin/bash
# Die logger Einträge dienen der Einfachheit in /var/log/messages
logger Start usb-backup

/usr/local/bin/usb-backup.sh &

logger Backup script
exit
Script (usb-backup.sh) das von Wrapper aufgerufen wird

Code: Alles auswählen

#!/bin/bash
# Die logger Einträge dienen der Einfachheit in /var/log/messages

if [ -L /dev/usb-backup ]; then
     logger "USB Device existiert, vor dem mount"
     /bin/mount -v -t ext4 /dev/sdd1 /media/usb-backup 2>&1 > /tmp/debug.log 
     logger "Backup device gemountet"
   else
     logger "Backup device ist nicht vorhanden"
     exit
fi

logger "Start rsnapshot"
rsnapshot daily
logger "Backup fertig ..."

exit
Wenn ich das Script "wrapper-usb-backup.sh" manuell starte läuft es durch.
Wenn ich die Festplatte einschalte, die udev Regel funktioniert, wrapper startet und ruft das usb-backup.sh auf, es bricht beim mount ab.
Fehlermeldung nur in messages: JBD2: recovery failed

Gruss
gugus

TomL

Re: mount USB 2.0 Platte via script

Beitrag von TomL » 09.10.2016 18:20:43

Versuchs noch mal mit dem geänderten Mount-Statement.... aus meinem Vorposting.....

Bin gerade etwas in Eile.... aber wenn man den Fehler googelt, findet man sowa hier: "Corrupted linux partition: EXT4-fs error loading journal". Kann da vielleicht was mit der Platte faul sein? :roll:

Benutzeravatar
heisenberg
Beiträge: 3556
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: mount USB 2.0 Platte via script

Beitrag von heisenberg » 09.10.2016 18:53:58

Code: Alles auswählen

2>&1 >/tmp/debug.log
Die Reihenfolge ist wichtig! Das obige bewirkt nicht das, was Du willst. Es bedeutet,
dass stderr dahin umgeleitet wird wo stdout bis exakt diesem Zeitpunkt hinzeigte und
anschliessend wird stdout in die Datei /tmp/debug.log umgeleitet.

So wird stderr nach /tmp/debug.log umgeleitet:

Code: Alles auswählen

2>/tmp/debug.log
...oder so...

Code: Alles auswählen

>/tmp/debug.log 2>&1
...oder so...

Code: Alles auswählen

&>/tmp/debug.log
Jede Rohheit hat ihren Ursprung in einer Schwäche.

gugus
Beiträge: 381
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: mount USB 2.0 Platte via script

Beitrag von gugus » 09.10.2016 19:08:44

jupp, auf den Gedanken bin ich jetzt auch gekommen.
Die Platte habe ich bereits komplett neu initialisiert und formatiert.
Es kann aber auch am Gehäuse (controller) liegen. Ich baue erstmal um.

Aber dennoch, von Hand funktioniert es .... seltsam seltsam.

Umleiten muss ich auch noch lernen ...

Danke soweit.
Gruss
gugus

Antworten