[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Festplatte auf Existenz testen
[Thread Prev] | [Thread Next]
- Subject: Re: Festplatte auf Existenz testen
- From: Werner Holtfreter <Holtfreter@xxxxxx>
- Date: Wed, 02 May 2012 22:49:40 +0200
- To: uugrn@xxxxxxxxxxxxxxx
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/