Festplatten-Seriennummer vom Terminal?

66

Ich habe mehrere Festplatten, die mit meinem Server verbunden werden, und ich bin mir nicht sicher, welche aus Sicht von sdXY welche ist. Wenn ich die Seriennummern meiner Festplatten vom Terminal aus sehen kann, kann ich sie leicht identifizieren.

Kann ich sie auf irgendeine Weise vom Terminal aus sehen?

rɑːdʒɑ
quelle

Antworten:

58

Eine andere Lösung, für die keine Root-Rechte erforderlich sind:

udevadm info --query=all --name=/dev/sda | grep ID_SERIAL

Dies ist eigentlich die Bibliothek, die lsblk, wie von don_crissti erwähnt, nutzt, aber meine Version von lsblk enthält keine Option für serielle.

Johann
quelle
2
Beste Lösung, wenn Ihre Festplatte vollständig ausgefallen ist. Andere Methoden funktionieren nicht.
Niiieani
1
grep ID_SCSI_SERIALMöglicherweise gibt dies tatsächlich die Seriennummer des Laufwerks an, im Gegensatz zum weltweiten Namen (wwn), der unter angegeben ist ID_SERIAL.
Ron
@ron Interessant! Haben Sie Referenzen, die wwn definieren?
Johann
Die einzige Referenz ist meine Erfahrung aus erster Hand mit WD-, Seagate- und HGST-Festplatten, die Werte am Terminal mit den Angaben auf dem Etikett vergleichen. Festplatten sind in erster Linie für Unternehmen / Rechenzentren geeignet, im Vergleich zu Consumer-Desktops.
Ron
1
@ron Gerade nochmal getestet. Meine Version von udevadm (systemd 229) meldet ein ID_WWN-Feld. Für die Laufwerke in meinem System gibt es auch keine ID_SCSI_SERIALoder nichts Analoges (nein ID_ATA_SERIAL): E: ID_SERIAL=TOSHIBA-TR150_23SC51E8J2BI ... E: ID_SERIAL_SHORT=23SC51E8J2BI ... E: ID_WWN=0x5e83a97200463ff3 ... E: ID_WWN_WITH_EXTENSION=0x5e83a97200463ff3
Johann
50

Im Terminaltyp:

# hdparm -I /dev/sd? | grep 'Serial\ Number'

BEARBEITEN: Sie können auch lshwoder verwendensmartctl

  • lshw

    # lshw -class disk

  • smartctl

    # smartctl -i /dev/sda

Wenn Sie diese Tools vermissen, installieren Sie einfach die folgenden Pakete

# apt-get install hdparm
# apt-get install smartmontools
# apt-get install lshw
Robert Jonczy
quelle
Danke für die Antwort, die ich getestet habe. Aber es gibt keine dev / sdXX. Bitte versuchen Sie es zu beheben. es sei denn, es ist gut
rɑːdʒɑ
Wenn Sie den 'grep'-Teil hdparm -I /dev/sd?
herausnehmen
3
Funktioniert nicht, wenn Ihre Festplatte vollständig ausgefallen ist und Sie nach der Seriennummer des fehlerhaften Geräts suchen. Verwenden Sie stattdessen @ Johanns Methode.
Niiieani
Ich musste das (passend benannte) hdparmPaket auf ARM installieren (Raspbian auf Raspberry Pi).
EthernetCable
Verwenden Sie, hdparm -I /dev/sd? | grep --before-context=4 'Serial\ Number'um die Seriennummer mit dem Gerät zu korrelieren. Es sieht aus wie die ursprünglichen Fragenanforderungen, die resultieren.
s.co.tt
31

Name von Gerät 1 und entsprechende Seriennummer:

lsblk --nodeps -o name,serial

Ausgabe:

NAME SERIAL
sda  0000000012400917BA30
sdb  0000000012400917BA96

hinzufügen, -nwenn die Kopfzeile nicht gedruckt werden soll:

lsblk --nodeps -no name,serial

Ausgabe:

sda  0000000012400917BA30
sdb  0000000012400917BA96

Übergeben Sie deviceals Argument, um nur die Seriennummer eines bestimmten Geräts abzurufen:

lsblk --nodeps -no serial /dev/sda

Ausgabe:

0000000012400917BA30

Beachten Sie, dass lsblk Listen Informationen zu allen verfügbaren (oder den angegebenen) Blockgeräten enthalten . Für diejenigen, die nicht wissen, was dieser letzte Begriff bedeutet: Blockgeräte sind
im Allgemeinen Geräte, die Daten speichern oder speichern. Diskettenlaufwerke, Festplatten und CD-ROM-Laufwerke sind alle Blockgeräte. Dies ist jedoch kein Problem, da Sie einfach weitere Spalten hinzufügen können, z. B. (Gerätetyp) und / oder (Gerätetransporttyp) usw.:lsblktypetran

lsblk --nodeps -no name, serial, type, tran
sda  0000000012400917BA30     disk sata
sdb  0000000012400917BA96     disk sata
sr0  4B583242334C453233353320 rom  usb
don_crissti
quelle
10
Beachten Sie, dass dies lsblkab util-linux Version 2.24 oder höher erforderlich zu sein scheint : github.com/karelzak/util-linux/commit/…
Johann
Wie rufe ich eine serielle Festplatte ab, wenn ich ein VM Ubuntu verwende? Die obigen Befehle geben in dieser Situation nichts zurück
Benyamin Jafari
11

Mit hdparm können Sie Ihre Festplatten-Seriennummer vom Terminal aus sehen.

Öffnen Sie Ihr Terminal und geben Sie als

 hdparm -I /dev/sd?|grep -E "Number|/dev"
rɑːdʒɑ
quelle
Nun, aber Sie müssen Superuser sein , um die -IOption in zu verwenden hdparm. Ich möchte das auch nicht und bevorzuge eine Möglichkeit, die ser # ohne root-Berechtigungen auszulesen . Aus diesem Grund habe ich nur die Lösung von don_crissti empfohlen. - syntaxerror vor 57 Sekunden
syntaxerror
9
$ ls -al /dev/disk/by-id/*sda*

Dies zeigt Ihnen die Seriennummer gegen den vertrauten Namen der Festplatte.

Ed Neville
quelle
Dies ist ein kluger Ansatz, funktioniert aber bei meiner virtuellen Box nicht. Es sieht so aus, als ob der Inhalt des by-idVerzeichnisses nur Symlinks sind. ls -al /dev/disk/by-id/Sie werden also trotzdem sehen, was Sie brauchen.
Wildcard
1
Dies funktionierte auch für mich auf einem Debian-Live-Boot-System, während alle anderen Tools nicht von Grund auf verfügbar sind, ohne das Internet einzurichten und sie zu installieren.
Hoijui
3

So einfach wie ich es kenne (root ist nicht erforderlich):

inxi -Dplxx

Damit werden alle Datenträger, ihre Seriennummern und alle zusätzlichen Informationen ausgegeben. -p fügt Partitionen hinzu. -l fügt Labels hinzu. -u Fügt die UUID für die Partitionen hinzu.

Außerdem ist es viel einfacher, sich daran zu erinnern.

Stichprobe:

inxi -Dxx
Drives:    HDD Total Size: 810.2GB (42.9% used)
           ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
           ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
           ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
           ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX

Beachten Sie, dass hierdurch optische Laufwerke herausgefiltert werden. So zeigen Sie optische Daten an:

inxi -Dxxd 
Drives:    HDD Total Size: 810.2GB (42.9% used)
           ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
           ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
           ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
           ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX
           Optical-1: /dev/sr0 model: LITE-ON DVDRW SOHW-1693S
           rev: KS09 dev-links: dvd,dvdrw
           Features: speed: 48x multisession: yes
           audio: yes dvd: yes rw: cd-r,cd-rw,dvd-r state: running
           Optical-2: /dev/sr1 model: LITE-ON LTR-52327S rev: QS0C dev-links: cdrom,cdrw
           Features: speed: 52x multisession: yes
           audio: yes dvd: no rw: cd-r,cd-rw state: running

Beachten Sie, dass lsblk auf meinem Debian-System nichts für Serien anzeigt, egal ob als Root oder Benutzer. Aus diesem Grund verwendet inxi eine viel zuverlässigere Methode, um diese Daten abzurufen.

lsblk --nodeps -o name,serial
NAME SERIAL
fd0  
sda  
sdb  
sdc  
sdd  
sr0  
sr1  

lsblk --version
lsblk from util-linux 2.25.2

Wie Sie sehen, ist lsblk der Ansicht, dass ein optisches Laufwerk und ein Diskettenlaufwerk ebenfalls Disks sind. In gewissem Sinne handelt es sich jedoch nicht um Disks, da sie erst nach dem Einlegen einer Diskette zu Disks werden. Und es zeigt nichts für serielle, es zeigt übrigens auch nichts für andere Werte, wie Label. Dies ist definitiv ein Fehler, da diese Daten dem System zur Verfügung stehen und von inxi direkt abgerufen werden.

Lizardx
quelle
2
Der letzte Teil deines Beitrags ist falsch, lsblkglaubt nicht, dass es sich um Festplatten handelt, sondern listet einfach alle blockierten Geräte auf . Weitere Informationen finden Sie in meinem aktualisierten Beitrag. Um keine Informationen anzuzeigen - das liegt daran, dass Sie Debian verwenden, das für sein lsblkVerhalten notorisch ist . Es funktioniert absolut gut auf Archlinux, also definitiv kein Fehler . Es inxiist auch nur ein Bash-Skript, das andere Befehle verwendet, um diese Informationen abzurufen. es bekommt nichts "direkt".
don_crissti
Technisch korrekt, aber im Bereich der normalen Sprache sind Festplatten eine anständige Möglichkeit, dieses Konzept zu kommunizieren. Ein fehlerhaftes Verhalten ist natürlich ein Fehler. Es ist unerheblich, welche Ursachen es hat. Ihre Bemerkung, dass ein fehlerhaftes lsblk kein Fehler ist, macht im Grunde keinen Sinn. Ob der Fehler durch Debian erzeugt wurde oder nicht, ändert nichts an der Tatsache, dass es sich um einen Fehler handelt. Direkt bedeutet ohne Vermittlung, dh aus dem Dateisystem, in dem inxi serielle Informationen erhält. Eine Antwort sollte die gesamte Gnu / Linux-Landschaft widerspiegeln. Wenn Sie also zum Beispiel sagen, dass lsblk funktioniert, außer in debian / buntu, hat dies keinen Wert, da die meisten Benutzer feststellen, dass es nicht funktioniert.
Lizardx
Dieser Teil der Antwort ist falsch: Lsblk, es denkt, dass ein optisches Laufwerk und ein Diskettenlaufwerk auch Datenträger sind . Tatsächlich listet lsblk Blockgeräte auf (einschließlich Festplatten, SSDs, Diskettenlaufwerke, optische Laufwerke, logische LVM-Volumes usw.), und lsblk unterscheidet nicht zwischen Festplatten und Nicht-Festplatten.
Pkt.
Zu Ihrer Information auf Debian Buster, lsblk --nodeps -o name,serialzeigt die Seriennummern an, ich kann den Fehler nicht reproduzieren.
Pkt
lsblk verbessert sich, aber es gibt immer noch einige subtile Probleme. Ich werde es immer noch nicht als primäre Datenquelle für von mir erstellte Tools verwenden, aber ich verwende es jetzt als sekundäre Quelle, aber es sind bereits unerklärliche Fehler aufgetreten benutze es und arbeite jetzt an einem.
Lizardx
1

Ich benutze ls -l /dev/disk/by-ides auch gerne, weil es den WWN einer Festplatte anzeigt, falls verfügbar. Der WWN ist normalerweise auf dem Etikett der Festplatte aufgedruckt, sodass er leicht zu identifizieren ist.

root@server (16:27:58):~# ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root  9 Dec 20 01:51 ata-Samsung_SSD_850_EVO_250GB_S3PZNF0JB57579N -> ../../sda
lrwxrwxrwx 1 root root 10 Dec 20 01:51 ata-Samsung_SSD_850_EVO_250GB_S3PZNF0JB57579N-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Dec 20 01:51 ata-Samsung_SSD_850_EVO_250GB_S3PZNF0JB57579N-part2 -> ../../sda2
...
lrwxrwxrwx 1 root root  9 Dec 20 01:51 wwn-0x50014ee25ffd0a5c -> ../../sdc
lrwxrwxrwx 1 root root  9 Dec 20 01:51 wwn-0x50014ee2b554c0b4 -> ../../sdb
lrwxrwxrwx 1 root root  9 Dec 20 01:51 wwn-0x5002538d427700f0 -> ../../sda
user208145
quelle
1
ls -al /dev/disk/by-id/ | grep sdX | grep wwn | awk '{print $9'}

Dies zeigt die wwn-idfür die Festplatte. Der awkFilter muss möglicherweise in Abhängigkeit von der Betriebssystemverteilung und -version angepasst werden. Ich brauchte eine Skriptlösung, um das zu lesen wwn-id, was für das Pacemaker Disk Fencing benötigt wird. Wenn bereits Partitionen /dev/sdX1erstellt wurden, wird eine weitere grepbenötigt, um die Ausgabe zu filtern:

ls -al /dev/disk/by-id/ | grep sdX | grep wwn | grep -v sdX1 | awk '{print $9'}
Tschakka
quelle