Numer seryjny dysku twardego z terminala?

65

Mam wiele dysków twardych, które łączą się z moim serwerem i nie jestem pewien, który z nich jest według sdXY. Jeśli widzę numery seryjne moich dysków twardych z terminala, mogę je łatwo zidentyfikować.

Czy mogę je zobaczyć z terminala?

rɑːdʒɑ
źródło

Odpowiedzi:

57

Inne rozwiązanie, które nie wymaga uprawnień roota:

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

To właściwie biblioteka lsblk, o której wspomina don_crissti, wykorzystuje, ale moja wersja lsblk nie zawiera opcji serial.

Johann
źródło
2
Najlepsze rozwiązanie, jeśli dysk twardy całkowicie zmarł. Inne metody nie działają.
niieani
1
grep ID_SCSI_SERIALmoże być tym, co faktycznie podaje numer seryjny napędu, w przeciwieństwie do ogólnoświatowej nazwy (wwn) zgłoszonej pod ID_SERIAL.
ron
@ron Ciekawe! Czy masz jakieś odniesienia, które definiują wwn?
Johann
Jedynym odniesieniem jest moje pierwsze doświadczenie z dyskami twardymi WD, Seagate, HGST, porównujące wartości w terminalu z danymi zapisanymi na etykiecie. Dyski twarde to przede wszystkim komputery klasy korporacyjnej / centrum danych w porównaniu do komputerów stacjonarnych.
ron
1
@ron Właśnie przetestowałem to ponownie. Moja wersja udevadm (systemd 229) zgłasza pole ID_WWN. W przypadku napędów w moim systemie nie ma ID_SCSI_SERIALani analogii (nie 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

W typie terminala:

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

EDYCJA: Możesz także użyć lshwlubsmartctl

  • lshw

    # lshw -class disk

  • smartctl

    # smartctl -i /dev/sda

Jeśli brakuje Ci tych narzędzi, po prostu zainstaluj następujące pakiety

# apt-get install hdparm
# apt-get install smartmontools
# apt-get install lshw
Robert Jonczy
źródło
Dzięki za odpowiedź, którą przetestowałem. Ale to nie daje dev / sdXX. Spróbuj to naprawić. chyba że jest to dobre
rɑːdʒɑ
jeśli wyjmiesz część „grep”, otrzymasz pełne informacje jak whdparm -I /dev/sd?
Loopo,
3
Nie działa, jeśli dysk twardy całkowicie zmarł i szukasz numeru seryjnego uszkodzonego urządzenia. Zamiast tego użyj metody @ Johanna.
niieani
Musiałem zainstalować hdparmpakiet (trafnie nazwany) na ARM (Raspbian na Raspberry Pi).
EthernetCable,
Służy hdparm -I /dev/sd? | grep --before-context=4 'Serial\ Number'do korelowania numeru seryjnego z urządzeniem. Wygląda na to, że wynikają pierwotne zapytania.
s.co.tt
31

Nazwa urządzenia 1 i odpowiedni numer seryjny:

lsblk --nodeps -o name,serial

wynik:

NAME SERIAL
sda  0000000012400917BA30
sdb  0000000012400917BA96

dodaj, -njeśli nie chcesz drukować wiersza nagłówka:

lsblk --nodeps -no name,serial

wynik:

sda  0000000012400917BA30
sdb  0000000012400917BA96

Podaj devicejako argument, aby uzyskać tylko numer seryjny określonego urządzenia:

lsblk --nodeps -no serial /dev/sda

wynik:

0000000012400917BA30

Pamiętaj, że lsblk wyświetla informacje o wszystkich dostępnych (lub określonych) urządzeniach blokowych . Teraz dla tych, którzy nie wiedzą, co oznacza ten ostatni termin:
ogólnie, urządzenia blokowe to urządzenia, które przechowują lub przechowują dane. Napędy dyskietek, dyski twarde i napędy CD-ROM są urządzeniami blokowymi. Ale to nie jest problem przy użyciu, lsblkponieważ możesz po prostu dodać więcej kolumn, np. type(Typ urządzenia) i / lub tran(typ transportu urządzenia) itp .:

lsblk --nodeps -no name, serial, type, tran
sda  0000000012400917BA30     disk sata
sdb  0000000012400917BA96     disk sata
sr0  4B583242334C453233353320 rom  usb
don_crissti
źródło
10
Zauważ, że wydaje się, że wymaga to lsblkwersji Utina
Johann
Jak odzyskać szeregowy dysk twardy, gdy używam Ubuntu VM? Powyższe polecenia nic nie zwracają w tej sytuacji
Benyamin Jafari,
11

Za pomocą hdparm możesz zobaczyć swój numer seryjny dysku twardego z terminala.

Otwórz terminal i wpisz jako

 hdparm -I /dev/sd?|grep -E "Number|/dev"
rɑːdʒɑ
źródło
Cóż, ale musisz być superużytkownikiem, aby użyć -Iopcji w hdparm. Nie chciałbym tego i wolę sposób, w jaki można odczytać ser # bez uprawnień roota. Właśnie dlatego oceniłem tylko rozwiązanie don_crissti. - syntaxerror 57 sekund temu
syntaxerror
9
$ ls -al /dev/disk/by-id/*sda*

Spowoduje to wyświetlenie numeru seryjnego względem znanej nazwy dysku.

Ed Neville
źródło
To sprytne podejście, ale nie działa na moim wirtualnym pudełku. Wygląda na to, że zawartość katalogu by-idto tylko dowiązania symboliczne, więc i tak ls -al /dev/disk/by-id/pokaże ci, czego potrzebujesz.
Wildcard
1
Działa to również dla mnie w systemie rozruchowym na żywo Debiana, podczas gdy wszystkie inne narzędzia nie są dostępne od zera, bez konfigurowania Internetu i apt-get.
hoijui 30.09.17
3

Najłatwiejszy sposób, jaki znam (nie wymaga rootowania):

inxi -Dplxx

Wyprowadza wszystkie dyski, ich numery seryjne i wszelkie dodatkowe informacje. -p dodaje partycje. -l dodaje etykiety. -u dodaje UUID dla partycji.

Poza tym łatwiej jest zapamiętać, heh.

Próba:

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

Pamiętaj, że to odfiltrowuje napędy optyczne. Aby zobaczyć dane optyczne:

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

Zauważ, że w moim systemie Debian lsblk nie pokazuje nic dla seriali, czy to jako root, czy jako użytkownik. Dlatego inxi używa znacznie bardziej niezawodnej metody uzyskiwania tych danych.

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

lsblk --version
lsblk from util-linux 2.25.2

Jak widać, lsblk uważa, że ​​napęd optyczny i napęd dyskietek są również dyskami, które w pewnym sensie są, choć nie tak naprawdę, ponieważ nie stają się dyskami, dopóki dysk nie zostanie włożony. I nie pokazuje nic dla numeru seryjnego, a przy okazji również nie pokazuje niczego dla innych wartości, takich jak etykieta. Zdecydowanie błąd, ponieważ te dane są dostępne dla systemu, i tam bezpośrednio dostaje je INXI.

Lizardx
źródło
2
Ostatnia część twojego postu jest nieprawidłowa, lsblknie sądzi, że to dyski, po prostu zawiera listę wszystkich urządzeń blokowych . Zobacz mój zaktualizowany post, aby uzyskać wyjaśnienie. Jeśli chodzi o nie pokazywanie informacji - to dlatego, że używasz debiana, który jest notorius za ich lsblkzachowanie. Działa absolutnie dobrze na archlinux, więc na pewno nie jest to błąd . Ponadto, inxijest to skrypt bash, który używa innych poleceń, aby uzyskać te informacje; nic nie dostaje „bezpośrednio”.
don_crissti
Technicznie poprawne, ale w dziedzinie normalnej mowy dyski są dobrym sposobem na przekazanie tej koncepcji. Niepowodzenie zachowania jest oczywiście błędem, nie ma znaczenia, co powoduje, więc twój komentarz, że błędny lsblk nie jest błędem, w zasadzie nie ma sensu. To, czy błąd został stworzony przez Debiana, czy nie, nie zmienia faktu, że jest to błąd. Bezpośrednio oznacza bez mediacji, tj. Z systemu plików, w którym inxi otrzymuje informacje szeregowe. Odpowiedź powinna odzwierciedlać ogólny krajobraz GNU / Linux, więc powiedzmy na przykład, że lsblk działa, z wyjątkiem debian / buntu, nie ma żadnej wartości, ponieważ większość użytkowników zauważy, że nie działa.
Lizardx,
Ta część odpowiedzi jest niepoprawna: lsblk uważa, że ​​napęd optyczny i napęd dyskietek są również dyskami . W rzeczywistości lsblk wymienia urządzenia blokowe (w tym dyski twarde, dyski SSD, dyskietki, napędy optyczne, woluminy logiczne LVM itp.), A lsblk nie rozróżnia dysków od dysków innych niż dyski.
pkt
Informacja dla Bustera Debiana, lsblk --nodeps -o name,serialwyświetla numery seryjne, nie mogę odtworzyć błędu.
pkt
Lsblk się poprawia, ale wciąż istnieją pewne subtelne problemy, nadal nie będę go używać jako podstawowego źródła danych dla narzędzi, które tworzę, ale używam go teraz jako źródła wtórnego, ale napotkaliśmy już niewytłumaczalne błędy używając go, pracując nad jednym teraz.
Lizardx
1

Lubię też używać, ls -l /dev/disk/by-idponieważ pokaże WWN dysku, jeśli jest dostępny. Numer WWN jest zwykle drukowany na etykiecie dysku, więc łatwo go zidentyfikować.

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
użytkownik208145
źródło
1
ls -al /dev/disk/by-id/ | grep sdX | grep wwn | awk '{print $9'}

To pokaże wwn-iddla dysku. awkFiltr, konieczne może być regulowana w zależności od dystrybucji i wersji systemu operacyjnego. Potrzebowałem skryptu rozwiązania, aby przeczytać wwn-id, który jest potrzebny do ogrodzenia dysku Pacemaker. Jeśli partycje ( /dev/sdX1np.) Zostały już utworzone, grepkonieczne jest przefiltrowanie danych wyjściowych:

ls -al /dev/disk/by-id/ | grep sdX | grep wwn | grep -v sdX1 | awk '{print $9'}
tschakka
źródło