Numéro de série du disque dur du terminal?

66

J'ai plusieurs disques durs qui sont connectés à mon serveur et je ne suis pas sûr de savoir lequel est quoi dans la vue de sdXY. Si je peux voir les numéros de série de mes disques durs depuis le terminal, je peux facilement les identifier.

Est-il possible de les voir depuis le terminal?

rɑːdʒɑ
la source

Réponses:

59

Une autre solution qui ne nécessite pas de privilèges root:

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

C'est en fait la bibliothèque que lsblk, mentionnée par don_crissti, exploite, mais ma version de lsblk n'inclut pas l'option pour les publications en série.

Johann
la source
2
La meilleure solution si votre disque dur est mort complètement. Les autres méthodes ne fonctionnent pas.
niieani
1
grep ID_SCSI_SERIALpeut être ce qui donne réellement le numéro de série du lecteur, par opposition au nom mondial (wwn) indiqué sous ID_SERIAL.
ron
@ron Intéressant! Avez-vous des références qui définissent wwn?
Johann
La seule référence est mon expérience de première main avec les disques durs WD, Seagate, HGST comparant les valeurs du terminal à ce qui est écrit sur l’étiquette. Les disques durs sont principalement de type entreprise / centre de données par rapport aux ordinateurs de bureau grand public.
ron
1
@ron Je viens juste de tester à nouveau. Ma version de udevadm (systemd 229) indique un champ ID_WWN. Pour les lecteurs de mon système, il n'y a pas ID_SCSI_SERIALnon plus d'analogue (non 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
51

En type de terminal:

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

EDIT: Vous pouvez également utiliser lshwousmartctl

  • lshw

    # lshw -class disk

  • smartctl

    # smartctl -i /dev/sda

Si ces outils vous manquent, il suffit d'installer les packages suivants

# apt-get install hdparm
# apt-get install smartmontools
# apt-get install lshw
Robert Jonczy
la source
Merci pour la réponse je l'ai testé. Mais ce n'est pas donner le dev / sdXX. S'il vous plaît essayez de le réparer. à moins que son bon
rddʒɑ
si vous supprimez la partie 'grep', vous obtiendrez toutes les informations telles quehdparm -I /dev/sd?
Loopo
3
Ne fonctionne pas si votre disque dur est complètement mort et que vous recherchez le numéro de série de l'unité défectueuse. Utilisez plutôt la méthode de @ Johann.
niieani
Je devais installer le hdparmpaquet (apt-ly nommé) sur ARM (Raspbian sur Raspberry Pi).
EthernetCable
Utilisez hdparm -I /dev/sd? | grep --before-context=4 'Serial\ Number'pour corréler le numéro de série avec le périphérique. Cela ressemble à la demande de question initiale qui en résulte.
s.co.tt
31

Nom du périphérique 1 et numéro de série correspondant:

lsblk --nodeps -o name,serial

sortie:

NAME SERIAL
sda  0000000012400917BA30
sdb  0000000012400917BA96

ajoutez -nsi vous ne voulez pas imprimer la ligne d'en-tête:

lsblk --nodeps -no name,serial

sortie:

sda  0000000012400917BA30
sdb  0000000012400917BA96

Passer deviceen argument pour obtenir uniquement le numéro de série d'un périphérique spécifique:

lsblk --nodeps -no serial /dev/sda

sortie:

0000000012400917BA30

Gardez à l'esprit les lsblk listes d'informations sur tous les périphériques de bloc disponibles (ou spécifiés) . Maintenant, pour ceux qui ne savent pas ce que ce dernier terme signifie:
En général, les périphériques en mode bloc sont des périphériques qui stockent ou conservent des données. Les lecteurs de disquette, les disques durs et les lecteurs de CD-ROM sont tous des périphériques en mode bloc. Mais ce n'est pas un problème lors de l'utilisation lsblkcar vous pouvez simplement ajouter plus de colonnes, par exemple type(type de périphérique) et / ou tran(type de transport de périphérique), etc.:

lsblk --nodeps -no nom, série, type, tran
sda  0000000012400917BA30     disk sata
sdb  0000000012400917BA96     disk sata
sr0  4B583242334C453233353320 rom  usb
don_crissti
la source
10
Notez que cela semble nécessiter une lsblkversion 2.24 ou supérieure de util-linux: github.com/karelzak/util-linux/commit/…
Johann
Comment récupérer une série de disques durs lorsque j'utilise une VM Ubuntu? Les commandes ci-dessus ne renvoient rien sur cette situation
Benyamin Jafari
11

En utilisant, hdparm vous pouvez voir votre numéro de série de disque dur à partir du terminal.

Ouvrez votre terminal et tapez comme

 hdparm -I /dev/sd?|grep -E "Number|/dev"
rɑːdʒɑ
la source
Bien, mais vous devez être superutilisateur pour utiliser cette -Ioption hdparm. Je ne voudrais pas cela non plus et préfère un moyen de lire le numéro de série sans autorisations root. C'est pourquoi j'ai voté uniquement pour la solution don_crissti. - syntaxerror Il y a 57 secondes
syntaxerror
9
$ ls -al /dev/disk/by-id/*sda*

Cela vous montrera le numéro de série par rapport au nom de disque familier.

Ed Neville
la source
Ceci est une approche intelligente mais ne fonctionne pas sur ma boîte virtuelle. Il semble que le contenu du by-idrépertoire ne soit que des liens symboliques, ce qui ls -al /dev/disk/by-id/va vous montrer de toute façon ce dont vous avez besoin.
Wildcard
1
Cela a également fonctionné pour moi sur un système Debian Live Boot, alors que tous les autres outils ne sont pas disponibles à partir de zéro, sans avoir à configurer Internet et à les obtenir correctement.
Hoijui
3

Le moyen le plus simple que je connaisse (ne nécessite pas de racine):

inxi -Dplxx

Tous les disques, leurs publications en série et toutes les informations supplémentaires sont générés. -p ajoute des partitions. -l ajoute des étiquettes. -u ajoute UUID pour les partitions.

En plus, c'est beaucoup plus facile à retenir, hein.

Échantillon:

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

Notez que cela filtre les lecteurs optiques. Pour voir les données optiques:

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

Notez que sur mon système Debian, lsblk n’affiche rien pour les publications en série, que ce soit en tant que root ou utilisateur. C'est pourquoi inxi utilise une méthode beaucoup plus fiable pour obtenir ces données.

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

lsblk --version
lsblk from util-linux 2.25.2

Comme vous pouvez le constater, lsblk pense qu’un lecteur optique et un lecteur de disquette sont aussi des disques, ce qu’ils sont en réalité, mais pas vraiment, car ils ne deviennent pas des disques tant qu’un disque n’est pas inséré. Et cela ne montre rien pour les séries, mais cela ne montre rien non plus pour les autres valeurs, comme label. Certainement un bug puisque ces données sont disponibles pour le système, c’est là que Inxi les obtient, directement.

Lizardx
la source
2
La dernière partie de votre message est erronée, lsblkne pense pas que ce sont des disques, elle répertorie simplement tous les périphériques bloqués . Voir mon post mis à jour pour une clarification. Pour ce qui est de ne pas montrer d'informations - c'est parce que vous utilisez debian, ce qui est notorius pour leur lsblkcomportement. Cela fonctionne parfaitement sur archlinux, donc certainement pas un bug . En outre, inxiest juste un script bash qui utilise d'autres commandes pour obtenir cette information; il ne reçoit rien "directement".
don_crissti
Techniquement correct, mais dans le domaine de la parole normale, les disques sont un moyen décent de communiquer ce concept. Un comportement qui échoue est bien sûr un bogue, peu importe sa cause, votre commentaire selon lequel un buggy lsblk n’est pas un bogue n’a aucun sens. Que le bogue soit créé ou non par Debian ne change rien au fait qu'il s'agit d'un bogue. Directement signifie sans médiation, c'est-à-dire depuis le système de fichiers, où Inxi obtient les informations série. Une réponse doit refléter le paysage global gnu / linux, donc dire par exemple que lsblk fonctionne sauf dans debian / buntu n’a aucune valeur puisque la plupart des utilisateurs verront que cela ne fonctionne pas.
Lizardx
Cette partie de la réponse est incorrecte: lsblk, elle pense qu’un lecteur optique et un lecteur de disquette sont aussi des disques . En fait, lsblk répertorie les périphériques de bloc (qui comprennent les disques durs, les SSD, les lecteurs de disquettes, les lecteurs de disques optiques, les volumes logiques LVM, etc.), et lsblk ne fait pas de distinction entre les disques et les non-disques.
Pts
Pour info sur Debian Buster, lsblk --nodeps -o name,serialaffiche les numéros de série, je ne peux pas reproduire le bogue.
Pts
lsblk s'améliore, mais il y a encore quelques problèmes subtils, je ne vais toujours pas l'utiliser comme source de données primaire pour les outils que je crée, mais je l'utilise maintenant comme source secondaire, mais nous avons déjà rencontré des bogues inexplicables. l'utiliser, travailler sur un maintenant.
Lizardx
1

J'aime aussi utiliser ls -l /dev/disk/by-idparce que ça va montrer le WWN d'un disque, si disponible. Le WWN est généralement imprimé sur l’étiquette du disque, ce qui facilite son identification.

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
utilisateur208145
la source
1
ls -al /dev/disk/by-id/ | grep sdX | grep wwn | awk '{print $9'}

Cela montrera le wwn-idpour le disque. Le awkfiltre devra peut-être être ajusté en fonction de la distribution et de la version du système d'exploitation. J'ai eu besoin d'une solution scriptée pour lire le wwn-id, qui est nécessaire pour la séparation de disque Pacemaker. Si des partitions ( /dev/sdX1par exemple) ont déjà été créées, une autre grepest nécessaire pour filtrer la sortie:

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