Debian HDD hot swap


jimb0p

Erfahrenes Mitglied
#1
Hallo Zusammen,

ich habe eine Festplatte die mittels rsync jede Stunde auf eine Platte (/dev/sdc1, /media/backup) backupt. Diese Platte ist in einem Wechselrahmen in meinem Server. Jetzt möchte ich wissen was ich konfigurieren muss damit die Platte jedes mal direkt gemounted wird, da 1x die Woche die Festplatte getauscht wird. Ich möchte dann natürlich nicht jedes mal manuell die Platte wieder mounten. Gibt es generell Dinge die für den Hotswap konfiguriert werden müssen?

Hoffe habe mich verständlich ausgedrückt :)

Im Windows Forum folgt noch ein ähnlicher Thread :D

Gruß!
 
#2
Hi

bevor wir da beim ursprünglichen Thema weiterreden,
hast du dir über das Unmounten vor Entfernen Gedanken gemacht?
bez. Filesystem-Korruption bzw. zumindest unvollständiges Schreiben

Nur weil halbwegs gute Mainboards mit nach Start angesteckten Festplatten umgehen können
und bei Entfernen auch nicht abstürzen heißt das nicht, dass alles ok ist.
 
Zuletzt bearbeitet:

jimb0p

Erfahrenes Mitglied
#3
Hi,

Kurz: Nein habe ich nicht :D Das Backup findet jede volle Stunde statt und dauert ca. 3-5 Minuten dachte man tauscht einfach immer um halb. Unter Windows soll wohl der Schreibcache noch deaktiviert werden bei der HDD. Gibt es hier überhaupt einen guten Arbeitsablauf oder sollte man es lieber doch alles manuell machen?

Gruß!
 
#4
Für Linux:
Wenn du dir sicher bist dass a) das Backup zur Absteckzeit fertig ist,
und b) das Backup über cron etc. gesteuert wird (statt irgendein Programm, das
überhaupt nicht über die Shell gesteuert werden kann, und selbst die Zeit mitverfolgt)
könnte man schon was machen.
Beim cron-Ereignis auf ein Script verweisen, dass die HDD per UUID erst mountet,
nur bei Erfolg das Backup machen und dann sofort wieder unmountet.
Ist nicht weiter schwierig. Irgendwas a la
Code:
#!/bin/bash
umount /mnt/backup
mount UUID=blubberdiblub /mnt/backup
if [[ "$?" -ne 0 ]]; then
    exit 1
fi
#Backup auf /mnt/backup
umount /mnt/backup
Für Windows wüsste ich nichts außer manuell.
 
Zuletzt bearbeitet:

jimb0p

Erfahrenes Mitglied
#5
Danke für die gute Idee! Ist ein unmounten vorab notwendig? Und könntest du mir diesen Teil mal bitte erläutern:
Code:
if [[ "#?" -ne 0 ]]; then
    exit 1
fi
 
#6
:eek:
#? ist ein Tippfehler, muss heißen $?
(oben auch ausgebessert)
$? ist eine Art "Pseudovariable" in Bash, die immer den Exitcode vom letzten vorher aufgerufenen Programm beinhaltet. Für die meisten Standardprogramme in Linux ist das 0 für "ok" und andere Zahlen für verschiedene Fehler. -ne steht in dem Fall für "not equal".

Der Codeausschnitt prüft eben, ob der Returnwert von mount einen Fehler signalisiert, wenn ja dann wird das ganze Script abgebrochen. Man könnte bzw. sollte evt. noch irgendwas reintun, dass der Nutzer merkt, dass kein Backup stattgefunden hat...

Das Unmounten vorher ist eigentlich nicht nötig, wenn alles so funktioniert wie es soll, schadet aber nicht.
Drin ist es, falls einmal nicht alles so funktioniert wie es soll und die Platte aus irgendeinem Grund vorher
noch gemountet war. Zu dem Zweck wäre eigentlich "umount -A UUID=blub" noch angebrachter,
falls es mehrere Mountpoints gibt.
 

jimb0p

Erfahrenes Mitglied
#8
Mir fällt gerade noch ein: Die Platten werden ja getauscht, also mounten über UUID klappt dann nicht mehr, kann ich es über /dev/sdc1 oder so mounten, sodass immer zwei bestimmte UUIDs diesem /dev/sdc1 zugewiesen werden?
 
#9
/dev/sd-irgendwas kann schon auch genommen werden, mit dem Risiko dass es eine andere Platte sein könnte.
Für mehrere UUIDs, von denen nur eine gleichzeztig da sein kann, könnte man auch einfach mehrere
mount-Anweisungen hintereinander ins Script schreiben (gleich für umount).

Code:
#!/bin/bash
$success=0
if [[ "$success" -eq 0 ]]; then
    mount UUID=u1 /mnt/backup
    if [[ "$?" -eq 0 ]]; then
        $success=1
    fi
fi
if [[ "$success" -eq 0 ]]; then
    mount UUID=u2 /mnt/backup
    if [[ "$?" -eq 0 ]]; then
        $success=1
    fi
fi
if [[ "$success" -eq 0 ]]; then
    mount UUID=u3 /mnt/backup
    if [[ "$?" -eq 0 ]]; then
        $success=1
    fi
fi
if [[ "$success" -eq 0 ]]; then
    exit 1
fi
...die genaue Syntax für Array und Schleife in Bash will mir grad nicht einfallen :D
 

Neue Beiträge