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


66

У меня есть несколько жестких дисков, которые подключаются к моему серверу, и я не уверен, какой из них, по мнению sdXY. Если я могу видеть серийные номера моих жестких дисков с терминала, я могу легко идентифицировать их.

Есть ли способ, которым я могу видеть их из терминала?

Ответы:


59

Другое решение, которое не требует привилегий root:

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

На самом деле это библиотека, которую lsblkупоминает don_crissti, но моя версия lsblk не включает опцию serial.


2
Лучшее решение, если ваш жесткий диск полностью умер. Другие методы не работают.
niieani

1
grep ID_SCSI_SERIALможет быть тем, что на самом деле дает серийный номер диска, в отличие от всемирного имени (wwn), указанного в разделе ID_SERIAL.
рон

@ron Интересно! Есть ли у вас ссылки, которые определяют wwn?
Иоганн

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

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
Иоганн

51

В типе терминала:

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

РЕДАКТИРОВАТЬ: Вы также можете использовать 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
Не работает, если ваш жесткий диск полностью умер, и вы ищете серийный номер неисправного устройства. Вместо этого используйте метод @ Johann.
niieani

Мне пришлось установить hdparmпакет (apt-ly named) на 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 списки информации обо всех доступных (или указанных) блочных устройствах . Теперь для тех, кто не знает, что означает этот последний термин.
В общем, блочные устройства - это устройства, которые хранят или хранят данные. Дисководы для гибких дисков, жесткие диски и приводы CD-ROM являются блочными устройствами. Но это не проблема при использовании, так lsblkкак вы можете просто добавить больше столбцов, например type(тип устройства) и / или tran(тип транспорта устройства) и т. Д .:

lsblk --nodeps -no name, serial, type, tran
sda  0000000012400917BA30     disk sata
sdb  0000000012400917BA96     disk sata
sr0  4B583242334C453233353320 rom  usb

10
Обратите внимание, что для этого требуется lsblkверсия 2.24 util-linux или новее
Иоганн

Как получить серийный жесткий диск, когда я использую Ubuntu VM? Приведенные выше команды ничего не возвращают в этой ситуации
Беньямин Джафари

11

С помощью hdparm вы можете увидеть свой серийный номер жесткого диска с терминала.

Откройте свой терминал и введите как

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

Хорошо, но вы должны быть суперпользователем, чтобы использовать -Iопцию в hdparm. Я бы тоже этого не хотел и предпочел бы способ считывания ser # без прав root. Вот почему я проголосовал только за решение don_crissti. - syntaxerror 57 секунд назад
syntaxerror

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

Это покажет вам серийный номер против знакомого имени диска.


Это умный подход, но он не работает на моей виртуальной коробке. Похоже, что содержимое by-idкаталога - это просто символические ссылки, поэтому в ls -al /dev/disk/by-id/любом случае покажет вам, что вам нужно.
Wildcard

1
Это также сработало для меня в системе live boot Debian, в то время как все остальные инструменты не доступны с нуля, без настройки интернета и получения их.
hoijui

3

Самый простой способ, который я знаю (не требует рута):

inxi -Dplxx

Это выводит все диски, их серийные номера и любую дополнительную информацию. -p добавляет разделы. -l добавляет ярлыки. -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 он думает, что оптический привод и дисковод гибких дисков также являются дисками, которые в некотором смысле являются, хотя и не совсем, поскольку они не становятся дисками, пока диск не вставлен. И он ничего не показывает для последовательных, он также, кстати, ничего не показывает для других значений, таких как метка. Определенно ошибка, так как эти данные доступны системе, вот где inxi получает их напрямую.


2
Последняя часть вашего сообщения неверна, lsblkона не думает, что это диски, а просто перечисляет все блочные устройства . Смотрите мой обновленный пост для уточнения. Что касается не показа информации - это потому, что вы используете debian, который известен своим lsblkповедением. На archlinux он работает абсолютно нормально, поэтому определенно не ошибка . Кроме того, inxiэто всего лишь скрипт bash, который использует другие команды для получения этой информации; он ничего не получает "напрямую".
don_crissti

Технически правильно, но в сфере нормальной речи диски - достойный способ передать эту концепцию. Сбой поведения - это, конечно, ошибка, не имеет значения причины, поэтому ваш комментарий о том, что ошибочный lsblk не является ошибкой, в принципе не имеет смысла. Независимо от того, была ли ошибка создана Debian, это не меняет того факта, что это ошибка. Непосредственно означает без посредничества, т. Е. Из файловой системы, откуда inxi получает последовательную информацию. Ответ должен отражать общий ландшафт gnu / linux, так что, например, lsblk работает, за исключением debian / buntu, не имеет значения, так как большинство пользователей увидят, что он не работает.
Lizardx

Эта часть ответа неверна: lsblk считает, что оптический привод и дисковод гибких дисков также являются дисками . Фактически, lsblk перечисляет блочные устройства (которые включают жесткие диски, твердотельные накопители, дисководы гибких дисков, оптические дисководы, логические тома LVM и т. Д.), А lsblk не различает диски и не-диски.
Очки

К вашему сведению на Debian Buster, lsblk --nodeps -o name,serialотображает серийные номера, я не могу воспроизвести ошибку.
Очки

lsblk улучшается, но все еще есть некоторые тонкие проблемы, я все еще не собираюсь использовать его в качестве основного источника данных для инструментов, которые я делаю, но я использую его сейчас как вторичный источник, но мы уже столкнулись с необъяснимыми ошибками используя его, работая над одним сейчас.
Lizardx

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.