So identifizieren Sie physische Festplatten in Linux RAID

So identifizieren Sie physische Festplatten in Linux RAID

Gibt es eine Möglichkeit, zuverlässig festzustellen, welches physische Laufwerk in einem RAID sich auf den ihm vom Betriebssystem zugewiesenen Softwaregerätenamen bezieht?

Ich habe ein RAID5-Array aus USB-Festplatten für den Privatgebrauch (und eine Ersatzfestplatte) auf einem Hub, der an einen PC angeschlossen ist. Dies dient als billiges NAS.

Jedes Gerät wird /proc/mdstatdurch seinen Gerätenamen identifiziert (z. B. sdb, sdc).

Soweit ich weiß, sind Linux-Gerätenamen von der Reihenfolge abhängig, in der die Hardware beim Booten gelesen wird. Ich sollte also beispielsweise nicht auf jedes Laufwerk einen Aufkleber mit diesen Gerätenamen kleben, denn sdcheute könnte es schon sdbin der Zukunft sein.

Im Fehlerfall könnte ich die aktuelle Gerätenamenzuordnung testen, indem ich das RAID anhalte und dann zuschaue, dmesg -Wwie ich jedes Gerät einzeln entferne, bis ich das ausgefallene Gerät durch Ausschlussverfahren entferne. Aber gibt es einen besseren Weg?

Ich sehe, dass ich RAID-Mitglieder nicht einzeln benennen kann – sie müssen alle den gleichen Namen wie das Array haben:https://wiki.archlinux.org/title/persistent_block_device_naming#by-label

Ich habe es mir angesehen ledctl, aber das funktioniert nicht mit Consumer-Laufwerken:https://linux.die.net/man/8/ledctl

Antwort1

Verwenden Sie lsblk -Sdiese Option, um jedem Gerät die Seriennummer der Festplatte zuzuordnen (oder den WWN, wenn Sie hinzufügen -o +wwn).

Die angezeigten USB-Hub-Pfade lsusb.py -cisollten udevadm info /dev/sdd | grep ID_PATH=eine feste Zuordnung zu den physischen USB-Anschlüssen haben, z. B. sind auf meinem Server „1-1.1“ und „1-1.2“ mit den Anschlüssen auf der Vorderseite verbunden. Die Reihenfolge der Anschlüsse auf einem externen Hub ist möglicherweise nicht immer offensichtlich, sollte aber statisch bleiben, wenn Sie sie einmal herausgefunden haben.

Alternative zu LEDs: Die scsi_start/ scsi_stop-Skripte von sg3_utils können Festplatten bei Bedarf hoch- oder herunterfahren lassen (ohne sie tatsächlich zu trennen). Wenn das Array im Leerlauf ist, stoppen Sie alle Festplatten und fahren Sie sie nacheinander hoch, bis Sie alle Gehäuse den Festplattenseriennummern zugeordnet haben.

Antwort2

Ich habe eine Antwort geschrieben, aber inzwischen herausgefunden, dass die Verwendung des lsblk- UUID_SUBWerts KEINE Lösung ist. Ein kürzlich aufgetretener Festplattenfehler hat mir gezeigt, dass UUID_SUBer anscheinend nicht an den Superblock der Festplattenpartition angeschlossen ist, wie ich zunächst dachte.

Ich streiche daher meine ursprüngliche Antwort und überlasse es anderen, für ihre Löschung abzustimmen.

Bislang besteht die einzige bewährte Antwort auf diese Frage darin, nackte Festplatten zu verwenden, deren Seriennummern auf dem Laufwerksgehäuse selbst sichtbar sind und nicht auf einem äußeren Gehäuse, das durchaus anders sein kann. Verwenden Sie diese dann, lsbk -Sum herauszufinden, mit welchem ​​physischen Laufwerk im Fehlerfall gearbeitet werden soll.

verwandte Informationen