Серійний номер жорсткого диска з терміналу?


65

У мене є декілька жорстких дисків, які підключаються до мого сервера, і я не впевнений, який з них є тим, що на увазі sdXY. Якщо я можу побачити порядкові номери моїх жорстких дисків з терміналу, я можу їх легко ідентифікувати.

Чи є якийсь спосіб я їх бачити з терміналу?

Відповіді:


57

Ще одне рішення, яке не вимагає привілеїв root:

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

Це фактично бібліотека, яка lsblk, згадана don_crissti, використовує, але моя версія lsblk не включає опцію для послідовного використання.


2
Найкраще рішення, якщо ваш жорсткий диск повністю загинув. Інші методи не працюють.
niieani

1
grep ID_SCSI_SERIALможе бути те, що насправді дає серійний номер накопичувача, на відміну від всесвітнього імені (wwn), про яке повідомляється у ID_SERIAL.
ron

@ron Цікаво! Чи є у вас посилання, які визначають wwn?
Йоганн

Єдине посилання - це мій досвід роботи з жорсткими дисками WD, Seagate, HGST, порівнюючи значення на терміналі з тим, що написано на етикетці. Жорсткі диски - це передусім підприємства / центри обробки даних порівняно з робочим столом споживачів.
ron

1
@ron Просто перевірив це ще раз. Моя версія udevadm (systemd 229) повідомляє про поле ID_WWN. Для накопичувачів у моїй системі також немає ID_SCSI_SERIALні нічого аналогічного (ні ID_ATA_SERIAL): E: ID_SERIAL=TOSHIBA-TR150_23SC51E8J2BI ... E: ID_SERIAL_SHORT=23SC51E8J2BI ... E: ID_WWN=0x5e83a97200463ff3 ... E: ID_WWN_WITH_EXTENSION=0x5e83a97200463ff3
Йоганн

50

У термінальному типі:

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

EDIT: Ви також можете використовувати lshwабоsmartctl

  • lshw

    # lshw -class disk

  • smartctl

    # smartctl -i /dev/sda

Якщо вам не вистачає цих інструментів, просто встановіть наступні пакети

# apt-get install hdparm
# apt-get install smartmontools
# apt-get install lshw

Дякую за відповідь, я перевірив її. Але його не дає dev / sdXX. Спробуйте виправити це. якщо тільки її добро
rɑːdʒɑ

якщо ви hdparm -I /dev/sd?
виймете "греп

3
Не працює, якщо ваш жорсткий диск загинув повністю і ви шукаєте серійний номер несправного пристрою. Використовуйте замість нього метод Йогана.
niieani

Мені довелося встановити hdparmпакет (доречно названий) на ARM (Raspbian на Raspberry Pi).
EthernetCable

Використовуйте hdparm -I /dev/sd? | grep --before-context=4 'Serial\ Number'для співвіднесення серійного номера з пристроєм. Схоже, оригінальний запит вимагає цього результату.
s.co.tt

31

Ім'я пристрою 1 та відповідний серійний номер:

lsblk --nodeps -o name,serial

вихід:

NAME SERIAL
sda  0000000012400917BA30
sdb  0000000012400917BA96

додайте, -nякщо ви не хочете друкувати рядок заголовка:

lsblk --nodeps -no name,serial

вихід:

sda  0000000012400917BA30
sdb  0000000012400917BA96

Передайте deviceяк аргумент, щоб отримати лише серійний номер конкретного пристрою:

lsblk --nodeps -no serial /dev/sda

вихід:

0000000012400917BA30

Майте на увазі lsblk списки інформації про всі доступні (або зазначені) блокові пристрої . Тепер для тих, хто не знає, що означає цей останній термін:
загалом, блокові пристрої - це пристрої, які зберігають або зберігають дані. Дисководні накопичувачі, жорсткі диски та компакт-диски - це все блокові пристрої. Але це не проблема, коли lsblkви можете просто додати більше стовпців, наприклад type(тип пристрою) та / або tran(тип транспорту пристрою) тощо:

lsblk --nodeps -не ім’я, серійний, тип, транш
sda  0000000012400917BA30     disk sata
sdb  0000000012400917BA96     disk sata
sr0  4B583242334C453233353320 rom  usb

10
Зауважте, що це, як видається, вимагає lsblkвід util-linux версії 2.24 або новішої: github.com/karelzak/util-linux/commit/…
Йоганн

Як отримати серійний жорсткий диск, коли я використовую VM ubuntu? Наведені вище команди нічого не
дають

11

Використовуючи hdparm ви можете бачити свій серійний номер жорсткого диска з терміналу.

Відкрийте свій термінал і введіть як

 hdparm -I /dev/sd?|grep -E "Number|/dev"

Добре, але вам потрібно бути суперкористувачем, щоб використовувати цей -Iваріант в hdparm. Я не хотів би цього і вважати за краще читати сер # без дозволів root. Ось чому я підтримав лише рішення don_crissti. - syntaxerror 57 секунд тому
syntaxerror

9
$ ls -al /dev/disk/by-id/*sda*

Це покаже вам серійний номер щодо знайомого імені диска.


Це розумний підхід, але не працює у моїй віртуальній скриньці. Схоже, що вміст by-idрежисера - це просто посилання, тому ls -al /dev/disk/by-id/все одно покаже, що потрібно.
Wildcard

1
Це також працювало для мене в системі debian live boot, в той час як усі інші інструменти доступні не з нуля, без налаштування Інтернету та підходу до їх отримання.
hoijui

3

Найпростіший спосіб мене знати (не вимагає кореня):

inxi -Dplxx

Це видає всі диски, їх серіали та будь-яку додаткову інформацію. -p додає розділи. -ла додає мітки. -u додає UUID для розділів.

Плюс це запам'ятати набагато простіше, хе.

Зразок:

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

Зауважте, що це фільтрує оптичні приводи. Щоб переглянути оптичні дані:

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

Зауважте, що в моїй системі Debian lsblk нічого не показує для серіалів, як root або користувач. Ось чому inxi використовує набагато більш надійний метод отримання цих даних.

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

lsblk --version
lsblk from util-linux 2.25.2

Як бачите, lsblk вважає, що оптичний привід і дискета також є дисками, які в певному сенсі є, хоча і не дуже, оскільки вони не стають дисками, поки диск не вставлений. І він не показує нічого для серійного, а також, до речі, нічого не показує для інших значень, як label. Безумовно, помилка, оскільки ці дані доступні системі, саме там Inxi отримує їх, прямі.


2
Остання частина вашого повідомлення неправильна, lsblkне вважає, що вони є дисками, вона просто перераховує всі блокові пристрої . Дивіться мій оновлений пост для уточнення. Щодо того, щоб не показувати інформацію - це тому, що ви використовуєте debian, який не є норіусом для їх lsblkповедінки. Він працює прекрасно на archlinux, так що, безумовно, не помилка . Крім того, inxiце лише сценарій bash, який використовує інші команди для отримання цієї інформації; він нічого не отримує "безпосередньо".
don_crissti

Технічно правильно, але в царині нормальної мови, диски - це гідний спосіб спілкування цієї концепції. Зміна поведінки - це, звичайно, помилка, неважливо, що є причиною, тому ваш коментар, що помилка lsblk не є помилкою, в основному не має сенсу. Будь-яка помилка створена debian чи ні, не змінює факту, що це помилка. Безпосередньо означає без посередництва, тобто з файлової системи, де inxi отримує послідовну інформацію. Відповідь повинна відображати загальний пейзаж gnu / linux, так що, наприклад, lsblk працює, за винятком debian / buntu, не має значення, оскільки більшість користувачів бачать, що це не працює.
Лізардкс

Ця частина відповіді невірна: lsblk, він вважає, що оптичний привід і дискета також є дисками . Насправді, lsblk перелічує блокові пристрої (до яких відносяться жорсткі диски, SSD, дисководи, оптичні дисководи, логічні томи LVM тощо), а lsblk не розрізняє диски та недиски.
пт

FYI на Debian buster, lsblk --nodeps -o name,serialвідображає серійні номери, я не можу відтворити помилку.
пт

lsblk вдосконалюється, але все ж є деякі тонкі проблеми, я все одно не буду використовувати його в якості основного джерела даних для інструментів, які я створюю, але я зараз використовую його як вторинне джерело, але ми вже стикалися з незрозумілими помилками використовуючи його, працюючи над одним зараз.
Лізард

1

Мені також подобається використовувати, ls -l /dev/disk/by-idтому що він буде показувати WWN диска, якщо він є. WWN зазвичай друкується на етикетці диска, тому його легко ідентифікувати.

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

1
ls -al /dev/disk/by-id/ | grep sdX | grep wwn | awk '{print $9'}

Це покаже wwn-idдиск для диска. awkФільтр може знадобитися коригування в залежності від дистрибутива операційної системи і версії. Мені було потрібно сценарій рішення, щоб прочитати те wwn-id, що потрібно для огородження дисків Pacemaker. Якщо розділи ( /dev/sdX1наприклад) вже створені grep, потрібен інший для фільтрації виводу:

ls -al /dev/disk/by-id/ | grep sdX | grep wwn | grep -v sdX1 | awk '{print $9'}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.