Comment savoir quels disques durs se trouvent dans le système?

223

J'ai besoin de savoir quels disques durs sont disponibles, y compris ceux qui ne sont pas montés et qui ne sont peut-être pas formatés. Je ne peux pas les trouver dans dmesgou /var/log/messages(trop de choses à faire défiler). J'espère qu'il y a un moyen d'utiliser /devou /procde trouver cette information, mais je ne sais pas comment. J'utilise Linux.

xénoterracide
la source
La question initiale ne spécifiait aucune variante Unix particulière, et la gestion du matériel dépend évidemment beaucoup des variantes.
Gilles
@gilles ouais j'étais au travail quand je l'ai écrit, alors j'ai clarifié mon point de vue après mon retour à la maison.
xenoterracide
1
Selon ce que vous faites, udisks .
derobert
2
J'ai trouvé une page utile décrivant de nombreuses commandes matérielles courantes avec une recherche sur Google. Les unités de disque incluent lshw(Liste du matériel), hwinfo(Informations sur le matériel), lsscsi(Liste des périphériques scsi), lsusb(Liste des bus / périphériques USB), lsblk(Liste des périphériques en mode bloc) fdisk -let mount. Plus d'informations sur binarytides.com/linux-commands-hardware-info .
Edward

Réponses:

182

Ceci dépend fortement de la plate-forme. De plus, différentes méthodes peuvent traiter différemment les cas extrêmes («faux» disques de divers types, volumes RAID,…).

Sur les installations udev modernes, il existe des liens symboliques vers les supports de stockage dans les sous-répertoires de /dev/disk, qui vous permettent de rechercher un disque ou une partition par numéro de série ( /dev/disk/by-id/), par UUID ( /dev/disk/by-uuid), par étiquette de système de fichiers ( /dev/disk/by-label/) ou par connectivité matérielle ( /dev/disk/by-path/).

Sous Linux 2.6, chaque disque et périphérique semblable à un disque a une entrée dans /sys/block. Sous Linux depuis la nuit des temps, les disques et les partitions sont répertoriés dans /proc/partitions. Vous pouvez également utiliser lshw : lshw -class disk.

Linux fournit également l’ lsblkutilitaire qui affiche une belle vue en arborescence des volumes de stockage (depuis util-linux 2.19, non présent sur les périphériques intégrés avec BusyBox).

Si vous avez un utilitaire fdiskou un disklabelutilitaire, il pourra peut-être vous indiquer les périphériques sur lesquels il est capable de travailler.

Vous trouverez des noms d’utilitaires pour de nombreuses variantes d’Unix sur Rosetta Stone pour Unix , notamment les lignes «list hardware configuration» et «read a label de disque».

Gilles
la source
11
Ooo; le site de Rosetta Stone est excellent
Michael Mrozek
146

lsblklistera tous les périphériques en mode bloc. Il se prête bien au scripting:

$ lsblk -io KNAME,TYPE,SIZE,MODEL
KNAME TYPE   SIZE MODEL
sda   disk 149.1G TOSHIBA MK1637GS
sda1  part  23.3G 
sda2  part    28G 
sda3  part  93.6G 
sda4  part   4.3G 
sr0   rom   1024M CD/DVDW TS-L632M

lsblk est présent dans le paquet util-linux et est donc beaucoup plus universel que les alternatives proposées.

K3 --- rnc
la source
10
Si vous avez seulement besoin des disques physiques, l' utilisation lsblk -d, -dsignifie qu'aucun message de dépendance énumérés.
coanor
2
En effet =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL( util-linuxdont une partie fait partie d’ baseArch) donne instantanément les informations demandées, sans avoir besoin d’être root. Notez qu'il fournit le modèle de périphérique , pas la famille de modèles . smarctl -i /dev/<device>conseillé par Skippy l'a fait, par exemple: "Famille modèle: Seagate Barracuda 7200.12" (manquant dans lsblk -ido: "disque 465,8G ST3500418AS").
tuk0z
68

Que diriez-vous

lshw -class disk
nc3b
la source
3
pas mal ... Je vais vérifier quand je sors, je suis sûr que ça marche ... malheureusement, il n'est lshwpas installé sur le serveur, et je suppose que la réponse sera que nous ne l'installons pas.
xenoterracide
Pour une raison quelconque, lshw ne répertorie pas les disques durs.
André van Schoubroeck
2
Lorsqu'il n'est pas exécuté en tant que root, il ne répertorie aucun disque, mais ne génère également aucune erreur.
Volker Siegel
1
bash: lshw: commande non trouvée
Antoine
26

hwinfo aide:

> hwinfo --disk
21: IDE 00.0: 10600 Disk                                        
[Created at block.245]
Unique ID: 3OOL.8MZXfAWnuH8
Parent ID: w7Y8.1T_0outZkp6
SysFS ID: /class/block/sda
SysFS BusID: 0:0:0:0
SysFS Device Link: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0
Hardware Class: disk
Model: "Hitachi HTS54322"
Vendor: "Hitachi"
Device: "HTS54322"
Revision: "ESBO"
Driver: "ahci", "sd"
Driver Modules: "ahci"
Device File: /dev/sda
Device Files: /dev/sda, /dev/disk/by-id/ata-Hitachi_HTS543225A7A384_E2021342GEPG4J, /dev/disk/by-id/scsi-SATA_Hitachi_HTS5432_E2021342GEPG4J, /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0, /dev/disk/by-id/wwn-0x5000cca614c6395e
Device Number: block 8:0-8:15
BIOS id: 0x80
Geometry (BIOS EDD): CHS 484521/16/63
Size (BIOS EDD): 488397168 sectors
Geometry (BIOS Legacy): CHS 1023/255/63
Drive status: no medium
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #17 (SATA controller)
> hwinfo --block --short
disk:                                                           
  /dev/sda             Hitachi HTS54322
partition:
  /dev/sda1            Partition
  /dev/sda2            Partition
  /dev/sda3            Partition
  /dev/sda4            Partition
  /dev/sda5            Partition
Martin Schröder
la source
19

@Giles dit que cela dépend fortement de la plate-forme. Voici un exemple.

J'utilise un système CentOS 5.5. Ce système dispose de 4 disques et d’un contrôleur RAID 3ware.

Dans mon cas, lshw -class disk, cat /proc/scsi/scsiet parted --listmontre le contrôleur RAID (3ware 9650SE-4LP). Cela ne montre pas les disques réels:

affiche uniquement le contrôleur RAID 3ware qui fournit le volume / dev / sda:

# lshw -class disk
  *-disk                  
       description: SCSI Disk
       product: 9650SE-4LP DISK
       vendor: AMCC
       physical id: 0.0.0
       bus info: scsi@0:0.0.0
       logical name: /dev/sda

# cat /proc/scsi/scsi 
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: AMCC     Model: 9650SE-4LP DISK  Rev: 4.06
  Type:   Direct-Access                    ANSI SCSI revision: 05

# parted --list

Model: AMCC 9650SE-4LP DISK (scsi)
Disk /dev/sda: 2000GB

Afin de voir les disques qui se trouvent en dessous, j'ai dû installer l'utilitaire tw_cli de 3ware et demander au contrôleur lui-même.

# tw_cli info c0
...

VPort Status         Unit Size      Type  Phy Encl-Slot    Model
------------------------------------------------------------------------------
p0    OK             u0   931.51 GB SATA  0   -            WDC WD1002FBYS-02A6 
p1    OK             u0   931.51 GB SATA  1   -            WDC WD1002FBYS-02A6 
Stefan Lasiewski
la source
13

Comme " Puis-je voir quel disque dur j'ai installé? " Et " Comment déterminer la marque et le modèle de mes périphériques de stockage? " Sont marqués comme des doublons de cette question, je suis surpris que personne ne l'ait mentionné hdparmet smartctl. En regardant quelques machines, il semble que l’une ou l’autre d’entre elles (quand ce n’est pas les deux) se trouve déjà installée dans des distributions Linux standards (même anciennes).

# smartctl -i /dev/sda
smartctl 6.1 2013-03-16 r3800 [i686-linux-3.9.9-301.fc19.i686.PAE] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Toshiba 2.5" HDD MK..56GSY
Device Model:     TOSHIBA MK1656GSY
Serial Number:    60PKT43CT
LU WWN Device Id: 5 000039 2919874b6
Firmware Version: LH013D
User Capacity:    160 041 885 696 bytes [160 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Mon Jul 22 11:13:37 2013 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

# hdparm -i /dev/sda

/dev/sda:

 Model=TOSHIBA MK1656GSY, FwRev=LH013D, SerialNo=60PKT43CT
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=312581808
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  sdma0 sdma1 sdma2 mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-3,4,5,6,7

 * signifies the current active mode

Comme d’habitude, consultez la page de manuel pour plus d’options.

Skippy le Grand Gourou
la source
Il est à noter que la smartctlméthode fonctionne même sur Cygwin, +1! Faites simplement une boucle sur les noms de périphériques possibles et voyez si smartctlle lecteur prend en charge SMART.
Adrian Frühwirth
12

J'exécute Fedora 14 et lshwn'est pas disponible ici (du moins pas par défaut). Cependant, dans mon cas, j'ai utilisé la fdisk -lcommande (en tant qu'utilisateur root) pour obtenir le résultat suivant:

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006a697

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    16777215     7875584   8e  Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/dm-0: 6509 MB, 6509559808 bytes
255 heads, 63 sectors/track, 791 cylinders, total 12713984 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/dm-0 doesn't contain a valid partition table

Disk /dev/dm-1: 1543 MB, 1543503872 bytes
255 heads, 63 sectors/track, 187 cylinders, total 3014656 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/dm-1 doesn't contain a valid partition table
Eugene S
la source
Utilisez fdisk -l /dev/sd?ou fdisk -l /dev/hd?pour éviter de faire entrer des appareils dm
laebshade
6

J'ai trouvé dans une autre réponse SE , un inxioutil aussi très pratique:

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
Grzegorz Wierzowiecki
la source
3

La plupart des commandes répertoriées vous aideront à rechercher des disques déjà reconnus par le système au démarrage. Avec les disques modernes, vous pouvez vous retrouver à chercher quelque chose que vous avez inséré alors que la machine était en marche (ce que je fis). J'aime les conseils de http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :

Essayez ceci pour réanalyser les hôtes SCSI (chaque port SATA apparaît en tant que bus SCSI):

echo "0 0 0"> / sys / class / hôte_scsi / hôte / scan

... Ensuite, vous pouvez utiliser vos utilitaires Linux tels que fdisk pour vous montrer des informations sur les disques trouvés.

Mike Schwager
la source
3
sfdisk -l  

vous donnera des informations détaillées sur les disques matériels / physiques même s'ils ne sont pas montés.

le programme est pré-installé sur toutes les variantes de Linux que j'ai utilisées, mais vous devez être root pour l'utiliser.

codeur
la source
2

Cela a fonctionné pour moi:

fdisk -l 2>/dev/null | grep "Disk \/" | grep -v "\/dev\/md" | awk '{print $2}' | sed -e 's/://g'
Aldo Vargas
la source
1

sudo gparted montrera tout cela dans une interface graphique.

(Vous n'avez pas précisé que vous deviez le faire dans un terminal, je me demande donc pourquoi cette solution faisait défaut.)

Ondra Žižka
la source
-1

Pour renvoyer le nombre de périphériques en mode bloc , sans outils sophistiqués ni syntaxe ou paramètres obscurs:

 ls /sys/block/* | grep block | grep sd | wc -l

Dans mes cas de test locaux, 47sur ma plus grande machine de guerre et 1sur mon ordinateur portable.

max
la source
2
Ceci est réduit de 500% sur l'un de mes systèmes (Ubuntu 12.04) et de 200% sur un autre système.
Anthon
-1

IMHO, lsblk est la commande la plus largement disponible dans le monde Linux (fonctionne même sur des ports comme Raspbian). Je ne veux offenser personne, mais certaines commandes nécessitent que vous connaissiez explicitement le nom du périphérique pour pouvoir le rechercher. Par exemple, vous devez connaître l'existence de sdc pour exécuter smartctl. Cela dit, lsblk n’est pas universel - oui sous Solaris, mais pas hpux. Merci.

Hopping Bunny
la source
2
En plus de mentionner que lsblkcette solution est également disponible sur Solaris, cela n’ajoute pas plus d’informations que les deux réponses les plus votées. Ce serait mieux posté comme un commentaire à unix.stackexchange.com/a/94211/22812
Anthony Geoghegan