Número de série do disco rígido do terminal?


66

Eu tenho vários discos rígidos que são conectados ao meu servidor e não tenho certeza de qual é o que, na visão do sdXY. Se eu puder ver os números de série dos meus discos rígidos no terminal, posso identificá-los facilmente.

Existe alguma maneira de vê-los no terminal?

Respostas:


58

Outra solução que não requer privilégios de root:

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

Esta é realmente a biblioteca que lsblk, mencionada por don_crissti, aproveita, mas minha versão do lsblk não inclui a opção serial.


2
Melhor solução se o seu disco rígido morreu completamente. Outros métodos não funcionam.
Niieani 30/03/16

11
grep ID_SCSI_SERIALpode ser o que realmente fornece o número de série da unidade, em oposição ao nome mundial (wwn) relatado em ID_SERIAL.
ron

@ron Interessante! Você tem alguma referência que define o wwn?
Johann

A única referência é minha experiência em primeira mão com discos rígidos WD, Seagate e HGST, comparando valores no terminal com o que está escrito na etiqueta. Os discos rígidos são principalmente de nível empresarial / data center versus desktop de consumidor.
ron

11
@ron Acabei de testar isso novamente. Minha versão do udevadm (systemd 229) relata um campo ID_WWN. Para as unidades no meu sistema, também não há ID_SCSI_SERIALnem coisa semelhante (não 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

No tipo de terminal:

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

EDIT: Você também pode usar lshwousmartctl

  • lshw

    # lshw -class disk

  • smartctl

    # smartctl -i /dev/sda

Se estiver faltando essas ferramentas, basta instalar os seguintes pacotes

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

Obrigado pela resposta que eu testei. Mas não está dando o dev / sdXX. Por favor, tente consertá-lo. a não ser que seja bom #
31714

se você tirar a parte 'grep', você vai obter a informação completa como emhdparm -I /dev/sd?
Loopo

3
Não funciona se o seu disco rígido morreu completamente e você está procurando o número de série da unidade com defeito. Use o método de @ Johann.
Niieani 30/03/16

Eu tive que instalar o hdparmpacote (apropriadamente chamado) no ARM (Raspbian no Raspberry Pi).
EthernetCable

Use hdparm -I /dev/sd? | grep --before-context=4 'Serial\ Number'para correlacionar o número de série com o dispositivo. Parece que a pergunta original solicita esse resultado.
s.co.tt

31

Nome do dispositivo 1 e número de série correspondente:

lsblk --nodeps -o name,serial

resultado:

NAME SERIAL
sda  0000000012400917BA30
sdb  0000000012400917BA96

adicione -nse você não quiser imprimir a linha do cabeçalho:

lsblk --nodeps -no name,serial

resultado:

sda  0000000012400917BA30
sdb  0000000012400917BA96

Passe devicecomo argumento para obter apenas o número de série de um dispositivo específico:

lsblk --nodeps -no serial /dev/sda

resultado:

0000000012400917BA30

Lembre-se de lsblk listar informações sobre todos os dispositivos de bloco disponíveis (ou os especificados) . Agora, para aqueles que não sabem o que esse último termo significa:
Em geral, dispositivos de bloco são dispositivos que armazenam ou mantêm dados. Unidades de disquete, unidades de disco rígido e unidades de CD-ROM são todos dispositivos de bloco. Mas isso não é um problema ao usar, lsblkpois você pode simplesmente adicionar mais colunas, por exemplo type(tipo de dispositivo) e / ou tran(tipo de transporte de dispositivo) etc:

lsblk --nodeps -sem nome, serial, tipo, tran
sda  0000000012400917BA30     disk sata
sdb  0000000012400917BA96     disk sata
sr0  4B583242334C453233353320 rom  usb

10
Observe que isso parece exigir lsblkdo util-linux versão 2.24 ou superior: github.com/karelzak/util-linux/commit/…
Johann

Como recuperar serial do disco rígido quando uso uma VM ubuntu? Os comandos acima não retornam nada a esta situação
Benyamin Jafari

11

Ao usar, hdparm você pode ver o número de série do Harddisk no terminal.

Abra seu terminal e digite como

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

Bem, mas você precisa ser superusuário para usar a -Iopção hdparm. Eu também não gostaria disso e prefiro uma maneira de ler o número do servidor sem permissões de root. É por isso que votei apenas na solução de don_crissti. - syntaxerror 57 secs atrás
syntaxerror

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

Isso mostrará o número de série do nome do disco familiar.


Essa é uma abordagem inteligente, mas não funciona na minha caixa virtual. Parece que o conteúdo do by-iddiretório é apenas um link simbólico, então ls -al /dev/disk/by-id/mostrará o que você precisa de qualquer maneira.
Curinga

11
Isso também funcionou para mim em um sistema de inicialização ao vivo da debian, enquanto todas as outras ferramentas não estão disponíveis do zero, sem configurar a Internet e obtê-las.
hoijui

3

Maneira mais fácil que eu conheço (não requer raiz):

inxi -Dplxx

Isso gera todos os discos, seus folhetins e qualquer informação extra. -p adiciona partições. -l adiciona rótulos. -u adiciona UUID para as partições.

Além disso, é muito mais fácil lembrar, heh.

Amostra:

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

Observe que isso filtra as unidades ópticas. Para ver dados ópticos:

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

Note que no meu sistema Debian, o lsblk não mostra nada para seriais, seja como root ou usuário. É por isso que a inxi usa um método muito mais confiável para obter esses dados.

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

lsblk --version
lsblk from util-linux 2.25.2

Como você pode ver, para o lsblk, ele pensa que uma unidade óptica e uma unidade de disquete também são discos, o que, em certo sentido, são, embora não sejam realmente, uma vez que não se tornam discos até que um disco seja inserido. E não mostra nada para serial, também não mostra nada para outros valores, como label. Definitivamente um bug, já que esses dados estão disponíveis para o sistema, é onde a inxi os obtém, diretamente.


2
A última parte da sua postagem está errada, lsblknão acredita que sejam discos, ela simplesmente lista todos os dispositivos de bloco . Veja minha postagem atualizada para um esclarecimento. Quanto a não mostrar informações - é porque você está usando o debian, que é notório pelo lsblkcomportamento deles . Funciona absolutamente bem no archlinux, então definitivamente não é um bug . Além disso, inxié apenas um script bash que usa outros comandos para obter essas informações; não recebe nada "diretamente".
31515 Don

Tecnicamente correto, mas no domínio da fala normal, os discos são uma maneira decente de comunicar esse conceito. É claro que uma falha de comportamento é um bug, é irrelevante o que causa, portanto, seu comentário de que um bsbk lsblk não é um bug basicamente não faz sentido. Se o bug foi criado ou não pelo debian não altera o fato de que é um bug. Diretamente significa sem mediação, ou seja, a partir do sistema de arquivos, onde o inxi obtém informações seriais. Uma resposta deve refletir o cenário geral do gnu / linux, dizendo que, por exemplo, o lsblk funciona, exceto no debian / buntu, não tem valor, já que a maioria dos usuários verá que ele não funciona.
Lizardx

Esta parte da resposta está incorreta: lsblk, considera que uma unidade óptica e uma unidade de disquete também são discos . De fato, o lsblk lista os dispositivos de bloco (que incluem discos rígidos, SSDs, unidades de disquete, unidades de disco óptico, volumes lógicos LVM etc.) e o lsblk não faz distinção entre discos e não discos.
pts

FYI no Debian buster, lsblk --nodeps -o name,serialexibe os números de série, não consigo reproduzir o bug.
pts

O lsblk está melhorando, mas ainda existem alguns problemas sutis, ainda não vou usá-lo como fonte de dados primária para as ferramentas que faço, mas agora o uso como fonte secundária, mas já encontramos bugs inexplicáveis usá-lo, trabalhando em um agora.
Lizardx

1

Eu também gosto de usar, ls -l /dev/disk/by-idporque mostrará o WWN de um disco, se disponível. O WWN geralmente é impresso na etiqueta do disco, por isso é fácil de identificar.

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'}

Isso mostrará o wwn-idpara o disco. O awkfiltro pode precisar ser ajustado, dependendo da distribuição e versão do SO. Eu precisava de uma solução com script para ler o arquivo wwn-id, o que é necessário para cercar o disco Pacemaker. Se as partições ( /dev/sdX1por exemplo) já foram criadas, outra grepé necessária para filtrar a saída:

ls -al /dev/disk/by-id/ | grep sdX | grep wwn | grep -v sdX1 | awk '{print $9'}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.