
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/mdstat
durch 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 sdc
heute könnte es schon sdb
in der Zukunft sein.
Im Fehlerfall könnte ich die aktuelle Gerätenamenzuordnung testen, indem ich das RAID anhalte und dann zuschaue, dmesg -W
wie 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 -S
diese 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 -ci
sollten 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_SUB
Werts KEINE Lösung ist. Ein kürzlich aufgetretener Festplattenfehler hat mir gezeigt, dass UUID_SUB
er 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 -S
um herauszufinden, mit welchem physischen Laufwerk im Fehlerfall gearbeitet werden soll.