[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Festplatte auf Existenz testen


Am Mittwoch, den 02.05.2012, 21:46 +0200 schrieb Markus Hochholdinger:
> Am 27.04.2012 um 13:59 Uhr schrieb Werner Holtfreter <Holtfreter@xxxxxx>:
> > wie kann ich in einem Linux-Shell-Script pruefen, ob an
> >         /dev/disk/by-path/pci-0000:00:09.0-scsi-3:0:0:0
> > eine Festplatte steckt? (In diesem Fall soll ein Backup-Script laufen.)
> 
> ich verwende fuer solche Faelle gerne blockdev:
> blockdev --getsize64 /dev/disk/by-path/pci-0000:00:09.0-scsi-3:0:0:0
> 
> Wenn das mit Exit-Code 0 und einem Wert groesser 0 auf stdout antwortet, ist 
> sehr wahrscheinlich ein Blockdevice dahinter angeschlossen. Problematisch ist, 
> dass die Antwort auch im Cache landet und nach erneutem Aufruf garnichtmehr 
> direkt die Festplatte gefragt wird.
> 
> Alternativ koennte man noch udev fragen, aber da Du ja davon ausgehst, dass 
> "disk/by-path" da ist (zumindest nehme ich das an), die Festplatte aber evtl. 
> nicht, dann hat es udev auch nicht mitbekommen.
> 
> Evtl. willst Du aber auch in /sys/block/ nachschauen? Dort kannst Du z.B. in 
> /sys/block/sdX/size auch die Groesse abfragen.
> 
> Wenn ich wuesste, wieso Du genau auf /dev/disk/by-path/pci-0000:00:09.0-
> scsi-3:0:0:0 losgehst, kann ich Dir vlt. besser weiterhelfen? Der Pfad ist 
> auch nur ein symbolischer Link zu /dev/sdX welcher ueber udev angelegt wird.

Eine interne Festplatte soll auf eine SATA-Festplatten im traegerlosen
Rahmen kopiert werden, *WENN* sie im Rechner steckt. Die Ziel-Festplatte
kann wechseln, nur der SATA-Anschluss bleibt immer der gleiche.

Nach meiner Kenntnis wird /dev/sdX dynamisch vergeben und kann sich
durch Wettlaufeffekte beim Booten aendern. Ganz sicher aendert sie sich,
wenn die Zahl der eingebauten Festplatten variiert, was hier staendig
vorkommt. Die einzig zuverlaessige Art der Adressierung schien mir daher
by-path zu sein.

Naheliegender Weise koennte ich einfach ein paar Bytes von der Festplatte
lesen und mit der Fehlerbehandlung verzweigen. Ich frage nur, ob es
einen einfachen, besseren Weg gibt. Im Idealfall wird dabei auch eine
vorhandene defekte Platte als vorhanden erkannt, um nicht vorhanden und
defekt unterscheiden zu koennen.


Hier das bisher genutzte Script. Interessant vielleicht, das man auch cp
statt dd nehmen kann!


#! /bin/sh -e

quelle="/dev/disk/by-path/pci-0000:00:09.0-scsi-2:0:0:0"
  ziel="/dev/disk/by-path/pci-0000:00:09.0-scsi-3:0:0:0"

/sbin/hdparm -S 60 $ziel
# in 5-s-Einheiten, 5 * 120 = 600 s = 10 min
# in 5-s-Einheiten, 5 *  60 = 300 s =  5 min
echo "dauert 126 min"
echo $(date -I;date +%T)" Festplatten werden jetzt kopiert"
nice -n 19 ionice -c 3 cp $quelle $ziel
echo $(date -I;date +%T)" Festplatten werden jetzt verglichen"
nice -n 19 ionice -c 3 diff -s $quelle $ziel
/sbin/hdparm -y $ziel
sleep 25
aplay /usr/share/sounds/speech-dispatcher/test.wav 2> /dev/null
echo $(date -I;date +%T)" Wechsellaufwerk wurden angehalten, FERTIG"


-- 
Viele Gruesse
Werner Holtfreter

-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/