Wie verbinde ich Linux-Scsi-Gerätenamen mit Festplattengeräten?

14503
David Mackintosh

Ich habe einen CentOS 4.x-Server, auf dem Software-Raid ausgeführt wird. Der Server verfügt über zwei Scsi-Festplatten in Hot-Swap-Fächern. mdadm berichtet, dass der Überfall gescheitert ist, und ich möchte ihn gerne ersetzen.

Ich überprüfe / proc / mdstat, was mir sagt, dass meine zwei RAID-Geräte Komponenten auf den Festplatten sda und sdb haben. Es sagt mir auch, dass sdb derjenige ist, der versagt hat.

Ich untersuche / proc / scsi / scsi, was bedeutet, dass ich zwei physische Geräte unter den SCSI-IDs 0 0 0 0 und 0-0-1-0 habe.

Da ich die Änderung heiß machen möchte, gehe ich davon aus, dass sdb 0-0-1-0 ist. Also sage ich:

# echo "scsi remove-single-device 0 0 1 0" > /proc/scsi/scsi 

... und der Computer erscheint barfs, weil sda gerade entfernt wurde und das System keine gültigen Laufwerke hat.

Beim Nachdenken war der Weg, als ich in dieses Chaos geraten bin, das letzte Mal, dass ein Laufwerk ausgefallen ist, sda / 0-0-0-0, und ich habe es auf die alte Schule getan: Stoppen Sie den Computer, entfernen Sie das tote Laufwerk, dann booten Sie vom Überlebenden in seinem alten Slot. Dies verließ mich mit einem Computer, der meinte, dass sda 0-0-1-0 war. Ich holte mir dann einen heißen Ersatz und fügte ihn wie folgt hinzu:

# echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi 

... was funktionierte, was bedeutete, dass ich eine Datenträgerbezeichnung anwenden, partitionieren und meine RAID-Arrays rekonstruieren konnte. Dies bedeutete auch, dass der Computer denkt, dass sdb 0-0-0-0 ist. Jetzt stirbt sdb wieder (350 Tage später, aber das ist ein anderes Thema) und ich habe das alles vergessen.

So. Wenn ich davon ausgehe, dass sowohl mein Gedächtnis als auch meine Fähigkeiten zum Speichern von Aufzeichnungen unzureichend sind, um mich daran zu erinnern, dass dies geschehen ist, gibt es eine Möglichkeit, dass ich in Zukunft die Namen der scsi-Geräte (0-0- $ n-0) vergleichen und sie mit benannten Geräten verknüpfen kann (sd $ x)?

3

1 Antwort auf die Frage

5
larsks

Sie können hineinschauen /sys/block/sda/device, which will have a symlink starting with scsi_device that identifies the device:

$ ls -d /sys/block/sda/device/scsi_device* /sys/block/sda/device/scsi_device:0:0:0:0 

Or you can look in /sys/bus/scsi/devices:

$ ls /sys/bus/scsi/devices/ 0:0:0:0 1:0:0:0 2:0:0:0 3:0:0:0 7:0:0:0 8:0:0:0 

Each entry here represents a SCSI device. Inside each directory is a symlink starting with block: that identifies the corresponding block device:

$ ls -d /sys/bus/scsi/devices/0\:0\:0\:0/block* /sys/bus/scsi/devices/0:0:0:0/block:sda 
CentOS 4.x hat keine / sys / blocl / sd? / Device / scsi_device * -Datei (en). / Sys / bus / scsi / devices / 0 \: 0 \:? \: 0 / blockiert jedoch korrekt. Vielen Dank. David Mackintosh vor 14 Jahren 0