Wie kann ich ein einzelnes Laufwerk in einem RAID-Array physisch identifizieren?


16

Ich habe einen externen Laufwerksschacht mit 4 eSATA-Festplatten. Mein System verfügt über eine 4-Port-eSATA-Karte sowie ein Paar interner Hardware-RAID1-Laufwerke. Die externen Laufwerke sind als /dev/md0und in Software-RAID1-Paaren /dev/md1. Beide wurden als physische LVM-Volumes konfiguriert, um meine storagevgLVM-Volume-Gruppe zu erstellen . Vor kurzem wurde ein einzelnes Laufwerk offline geschaltet (ich vermute, Kabel), aber es scheint keine gute Möglichkeit zu geben, das zu überprüfende Laufwerk physisch zu identifizieren, zumal die Initialisierungsreihenfolge zwischen den Startvorgängen nicht identisch ist. Wie finde ich die Festplatte, die Aufmerksamkeit benötigt?

Antworten:


15

Das Festplatten-Dienstprogramm (unter System -> Administration) gibt Ihnen die Seriennummern für alle Ihre Festplatten an.

Folgendes sehe ich (siehe oben rechts für die Serie). Sie werden feststellen, dass sich dieses Laufwerk in einem mdadm-RAID-Array befindet. Das Festplatten-Dienstprogramm kann das Array für den unformatierten Festplattenzugriff durchdringen.

Festplattendienstprogramm

Ich habe 6 Festplatten desselben Modells in meinem PC, daher habe ich ein kleines Diagramm gezeichnet, das deren Position im Gehäuse und die Seriennummer zeigt, damit ich sie im Notfall schnell über die Seriennummer finden kann.

Das Gegenteil ist auch der Fall, wenn eine Festplatte stirbt, muss ich nur herausfinden, welche Festplatten angezeigt werden, und ich kann sie beseitigen, bis ich weiß, welche Seriennummer fehlt.

Bearbeiten: Ich versuche, mein Bash-Fu zu verbessern. Deshalb habe ich diese Befehlszeilenversion geschrieben, um Ihnen nur eine Liste der Festplatten-Seriennummern zu geben, die auf Ihrem Computer aktuell sind. fdiskkann einige Fehler ausschütten, aber das verdirbt die Liste nicht:

for disk in `sudo fdisk -l | grep -Eo '(/dev/[sh]d[a-z]):' | sed -E 's/://'`;
do
    sudo hdparm -i $disk | grep -Eo 'SerialNo=.*' | sed -E 's/SerialNo=//';
done

(Und Sie können das in eine Zeile zerlegen, wenn Sie müssen - ich habe es für die Lesbarkeit aufgeschlüsselt)

Edit 2: ls /dev/disk/by-id/ ist etwas einfacher;)


Die Verwendung von Seriennummern kann gut funktionieren, wenn sie bereits extern aufgezeichnet wurden. Bei einem System, das nicht ausgeschaltet werden kann, aber über Hot-Swap-Laufwerke verfügt, ist es hilfreich, das ausgefallene Laufwerk über LEDs lokalisieren zu können.
Kees Cook

Sie werden auch feststellen, dass im Festplatten-Dienstprogramm eine "Standort" -Kennung vorhanden ist, die angibt, an welchen Port des Host-Adapters das Laufwerk angeschlossen ist. Sie können möglicherweise bestimmen, welche Ports welche sind, ohne die Laufwerke abzuziehen, aber ich kann nicht darüber spekulieren das funktioniert tatsächlich.
Oli

In Ihrem Fall sollte es nicht allzu unvernünftig sein, das RAID-Array für 5 Minuten anzuhalten, die einzelnen Laufwerke vom Stromnetz zu trennen und die Seriennummer zu beziehen. Außerdem sollte der Computer nicht ausgeschaltet werden müssen, es sei denn, Sie möchten dies wünschen es baut wieder auf.
Oli

"Ort" ist nicht immer nützlich, z. B. bei PATA befinden sich häufig 2 Festplatten an einem Port, und wenn Ihre Festplatten für die Master / Slave-Aushandlung beide auf "AUTO" eingestellt sind, gibt es wahrscheinlich keine Möglichkeit, herauszufinden, welche welche sind ? Es könnte aber für SATA
funktionieren

1
Gibt es noch PATA-Laufwerke? Ich bin seitdem nur noch SATA-fähig. Nun, seitdem wurde eine 112-Gigabyte-Festplatte als groß angesehen. Das Problem, den Anschluss zu finden, zählt hier nicht wirklich, da es sich um einen externen Laufwerksschacht handelt. Aber sicher. Auf Consumer-Motherboards müssen Sie wahrscheinlich das Handbuch zu Rate ziehen, um eine Vorstellung davon zu bekommen, welcher Port was ist ... Selbst dann weist die Software ihnen möglicherweise eine andere Reihenfolge zu.
Oli

5

Wenn Sie die Laufwerk Seriennummer oder Port Probleme Anpassung haben Anzeige mit Ihren Festplatten räumlichen Positionen, können Sie laufen cat /dev/sdz >/dev/null(wo sdzdas ausgefallene Laufwerk ist) , und suchen Sie das Laufwerk durch seine LED (oder Ohr , wenn Sie nicht in einem lauten Serverraum sind ). Wenn sich das Laufwerk nicht einmal einschalten lässt, sollte dies ausreichen, um festzustellen, um welches Laufwerk es sich handelt. Achten Sie darauf, dass Sie beim nächsten Mal ein sichtbares Etikett auf den Datenträgern anbringen.


Dies ist ein reines Genie, da es den Nebeneffekt hat, dass das Licht auf fest
bleibt

3

Die Informationen udisks(entweder in der Befehlszeile oder im GNOME-Festplatten-Dienstprogramm ) enthalten die Seriennummer der Festplatte. Auf den Datenträgern, die ich habe, ist die Seriennummer auf der Oberseite und auf der Vorderseite (die auf der anderen Seite derjenigen, die die Anschlüsse enthält) als Zahlen und mit einem Barcode aufgedruckt. Leider machen es die meisten PC-Gehäuse unmöglich, diese Serien zu lesen, ohne die Diskette herauszuziehen ...

Die Seriennummern finden Sie auch in /dev/disk/by-id/.

Da Ihre Festplatte offline ist, nehme ich an, dass sie vom Kernel derzeit nicht "gesehen" wird. In diesem Fall müssen Sie möglicherweise ausschließen: Sie möchten die Festplatte mit einer Seriennummer versehen, die nicht aufgeführt ist ...


2

Bei Software Raid ist dies ein häufiges Problem. Hardware-Raids verfügen in der Regel über eine Funktion, mit der Sie die LED eines Laufwerks blinken lassen können, vorausgesetzt, Ihre Hardware unterstützt dies.

Bei Software-RAID verfügt jedes Laufwerk jedoch über einige eindeutige Metadaten. Diese können Sie von jedem Laufwerk mit dem Befehl mdadm -E /dev/sda1für jedes Laufwerk im Array lesen und die Geräte an Ihre Umgebung anpassen. Wenn Sie also eine Situation haben, in der ein Laufwerk Probleme verursacht und derzeit offline ist. Ich würde dies auf jedem Laufwerk ausführen, das online ist, und die untergeordnete Nummer für jedes Laufwerk aufzeichnen. Wenn Sie dann eine Live-CD verwenden, die MD unterstützt, ist die Systemrettungs-CD eine gute CD, bei der jeweils nur ein Laufwerk angeschlossen ist und dieser Befehl ausgeführt wird, um den Täter zu finden. Dies ist wahrscheinlich nicht so einfach, wie Sie möchten, aber es sollte funktionieren.


Vielleicht gibt es Seriennummern, die Sie über Linux erhalten können und die auch auf dem physischen Laufwerk aufgedruckt sind?
Erjiang

1

lsscsi

$ lsscsi -l
[0: 0: 0: 0] Festplatte ATA TOSHIBA THNS128G AGLA / dev / sda
  state = running queue_depth = 1 scsi_level = 6 type = 0 device_blocked = 0 timeout = 30
[1: 0: 0: 0] CD / DVD HL-DT-ST DVD-RAM GT30N LT09 / dev / sr0
  state = running queue_depth = 1 scsi_level = 6 type = 5 device_blocked = 0 timeout = 30

Wenn die Festplatte nicht in Betrieb ist, ist das ein ziemlich gutes Zeichen. / Proc / mdstat teilt Ihnen also mit, welches Mitglied versagt hat. Vorausgesetzt, Sie haben keinen netten Laufwerkskäfig, müssen Sie nach Seriennummer aufschlüsseln, sollte sg_inq dabei helfen.

Wenn Sie einen guten Laufwerkskäfig haben, sollten Sie in der Lage sein, das Disk Beacon zu aktivieren, um das fehlerhafte Mitglied zu identifizieren.

http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg07307.html


1

So rufen Sie die Seriennummern aller Festplatten ab:

lsblk -i -o kname,mountpoint,fstype,size,maj:min,name,state,rm,rota,ro,type,label,model,serial


KNAME MOUNTPOINT   FSTYPE   SIZE MAJ:MIN NAME   STATE   RM ROTA RO TYPE LABEL         MODEL            SERIAL
sda                         3.7T   8:0   sda    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX4
sda1                        3.7T   8:1   `-sda1          0    1  0 part
sdb   /mnt/backup3 ext4     3.7T   8:16  sdb    running  0    1  0 disk backup_netops WDC WD4000F9YZ-0 WD-WCCXXX1
sdc                         3.7T   8:32  sdc    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX3
sdc1  /mnt/backup2 ext4     3.7T   8:33  `-sdc1          0    1  0 part
sdd                         3.7T   8:48  sdd    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX2
sdd1  /mnt/backup1 ext4     3.7T   8:49  `-sdd1          0    1  0 part

0

Es ist einfach. Dies ist zum Beispiel die Ausgabe auf meinem PC:

andrea@centurion:~$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdh1[1] sdg1[0]
      312568576 blocks [2/2] [UU]

unused devices: <none>

wie man sehen kann Ich habe / dev / sdh1 sowie / dev / steht 'sdg1' verbunden in / dev / md0


1
Richtig, aber das sagt mir nichts darüber aus, wo sie sich physisch im externen Laufwerksgehäuse befinden.
Kees Cook

0

Da Ihr Array nicht über SES-Smarts verfügt und die Festplattenaktivitäts-LED nicht direkt ansteuerbar ist, benötigen Sie hierfür beispielsweise Firmware-Unterstützung. Das einzige andere, was Sie tun können, ist, die E / A so gut wie möglich in den Ruhezustand zu versetzen und dann mit ddoder sg_readauf den Mitgliedern selbst ein Muster von Lesevorgängen auf der Festplatte abzulegen, das mithilfe der Aktivitäts-LED ein eindeutig identifizierbares Blinkmuster erzeugt Manns Leuchtfeuer, wenn Sie so wollen. Es ist wirklich Ihre einzige Alternative, es sei denn, das Array herunterzufahren ist eine Option.

Diese Art der Wartungsfreundlichkeit unterscheidet externe Speicher-Arrays. Da Sie nicht im Voraus geplant haben, indem Sie die Seriennummern und ihre Positionen notiert haben, können Sie den einfachen Einstellungsunterschied nicht durchführen, um das fehlerhafte Laufwerk zu identifizieren. Es ist der Preis, den Sie für die von Ihnen bereitgestellte Lösung zahlen, unabhängig davon, ob Sie sie realisieren oder nicht, aber hey, leben und lernen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.