¿Cómo averiguo qué discos duros hay en el sistema?

223

Necesito saber qué discos duros están disponibles, incluidos los que no están montados y posiblemente no están formateados. No puedo encontrarlos en dmesgo /var/log/messages(demasiado para desplazarse). Espero que haya una manera de usar /devo /procencontrar esta información, pero no sé cómo. Estoy usando Linux

xenoterracida
fuente
La pregunta original no especificaba ninguna variante de Unix en particular, y la administración de hardware obviamente depende mucho de las variantes.
Gilles
@gilles sí, estaba en el trabajo cuando lo escribí, así que aclaré después de llegar a casa y lo pensé.
xenoterracide
1
Dependiendo de lo que estés haciendo, udisks .
derobert
2
Encontré una página útil que describe muchos comandos de hardware comunes con una búsqueda en Google. Las unidades de disco incluyen lshw(Listar hardware), hwinfo(Información de hardware), lsscsi(Listar dispositivos scsi), lsusb(Listar buses / dispositivos usb), lsblk(Listar dispositivos de bloque) fdisk -ly mount. Más información en binarytides.com/linux-commands-hardware-info .
Edward

Respuestas:

182

Esto depende mucho de la plataforma. También los diferentes métodos pueden tratar los casos extremos de manera diferente (discos "falsos" de varios tipos, volúmenes RAID, ...).

En las instalaciones modernas de udev, hay enlaces simbólicos a medios de almacenamiento en subdirectorios de /dev/disk, que le permiten buscar un disco o una partición por número de serie ( /dev/disk/by-id/), por UUID ( /dev/disk/by-uuid), por etiqueta del sistema de archivos ( /dev/disk/by-label/) o por conectividad de hardware ( /dev/disk/by-path/).

Bajo Linux 2.6, cada disco y dispositivo similar a un disco tiene una entrada /sys/block. Bajo Linux desde los albores del tiempo, los discos y particiones se enumeran en /proc/partitions. Como alternativa, puede utilizar lshw : lshw -class disk.

Linux también proporciona la lsblkutilidad que muestra una buena vista de árbol de los volúmenes de almacenamiento (desde util-linux 2.19, no presente en dispositivos integrados con BusyBox).

Si tiene una fdisko una disklabelutilidad, podría decirle en qué dispositivos puede trabajar.

Encontrará nombres de utilidades para muchas variantes de Unix en Rosetta Stone para Unix , en particular las líneas "lista de configuración de hardware" y "leer una etiqueta de disco".

Gilles
fuente
11
Ooo que el sitio de Rosetta Stone es excelente
Michael Mrozek
146

lsblkenumerará todos los dispositivos de bloque. Se presta bien a las secuencias de comandos:

$ 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á presente en el paquete util-linux y, por lo tanto, es mucho más universal que las alternativas propuestas.

K3 --- rnc
fuente
10
Si solo necesita los discos físicos, use lsblk -d, -dsignifica que no aparece ningún mensaje de dependencia.
coanor 01 de
2
Indeed =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL(parte del util-linuxcual es parte de baseArch) proporciona instantáneamente la información solicitada y sin la necesidad de ser root. Tenga en cuenta que proporciona el modelo de dispositivo , no la familia de modelos . smarctl -i /dev/<device>aconsejado por Skippy, por ejemplo: "Familia modelo: Seagate Barracuda 7200.12" (falta en lsblk -ido: "disco 465,8G ST3500418AS").
tuk0z
68

Qué tal si

lshw -class disk
nc3b
fuente
3
no está mal ... Lo comprobaré cuando salga, estoy seguro de que funciona ... desafortunadamente ( lshw) no está instalado en el servidor, y sospecho que la respuesta será que no lo estamos instalando.
xenoterracide
Por alguna razón, lshw no enumera los discos duros.
André van Schoubroeck
2
Cuando no se ejecuta como root, no enumera ningún disco, pero tampoco da error.
Volker Siegel
1
bash: lshw: comando no encontrado
Antoine
26

hwinfo ayuda:

> 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
fuente
19

@Giles dice que esto depende mucho de la plataforma. Aquí hay uno de esos ejemplos.

Estoy ejecutando un sistema CentOS 5.5. Este sistema tiene 4 discos y un controlador RAID 3ware.

En mi caso, lshw -class disk, cat /proc/scsi/scsiy parted --listmuestra el controlador RAID (3ware 9650SE-4LP). Esto no muestra los discos reales:

solo muestra el controlador RAID 3ware que proporciona el volumen / 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

Para ver los discos que se encuentran debajo, tuve que instalar la utilidad tw_cli desde 3ware y preguntarle al controlador.

# 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
fuente
13

Dado que tanto " ¿Puedo ver lo duro que he instalado? " Y " ¿Cómo puedo determinar la marca y modelo de mis dispositivos de almacenamiento? " Están marcados como duplicados de esta pregunta, me sorprende que nadie mencionado hdparmy smartctl. Al echar un vistazo a algunas máquinas, parece que cualquiera de ellas (cuando no son ambas) a menudo se encuentra instalada en distribuciones de Linux estándar (incluso antiguas).

# 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

Como de costumbre, consulte la página de manual para más opciones.

Skippy le Grand Gourou
fuente
Cabe señalar que la smartctlforma incluso funciona en Cygwin, ¡+1! Simplemente recorra los posibles nombres de dispositivos y vea si smartctlla unidad es compatible con SMART.
Adrian Frühwirth
12

Estoy ejecutando fedora 14 y lshwno está disponible aquí (al menos no de forma predeterminada). Sin embargo, en mi caso, utilicé el fdisk -lcomando (como usuario root) para obtener el siguiente resultado:

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
fuente
Use fdisk -l /dev/sd?o fdisk -l /dev/hd?para evitar traer dispositivos dm.
laebshade
6

Me encontré en otra respuesta SE , inxicomo herramienta muy conveniente:

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
fuente
3

Muchos de los comandos enumerados lo ayudarán a buscar discos que el sistema ya haya reconocido en el arranque. Con las unidades modernas, puede encontrarse buscando algo que insertó mientras la máquina estaba en funcionamiento (lo hice). Me gusta el consejo de http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :

Pruebe esto para volver a escanear los hosts SCSI (cada puerto SATA aparece como un bus SCSI):

echo "0 0 0"> / sys / class / scsi_host / host / scan

... Entonces puede usar sus utilidades de Linux como fdisk para mostrarle información sobre los discos que se encontraron.

Mike Schwager
fuente
3
sfdisk -l  

le dará información detallada sobre hardware / discos físicos, incluso si no están montados.

el programa está preinstalado en todas las variantes de Linux que he usado, pero debes ser root para usarlo.

codelinger
fuente
2

Esto funcionó para mí:

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

sudo gparted mostrará todo esto en una GUI.

(No especificó que necesita hacerlo dentro de una terminal, así que me pregunto por qué falta esta solución).

Ondra Žižka
fuente
-1

Para devolver el número de dispositivos de bloque , sin herramientas sofisticadas ni sintaxis o parámetros oscuros:

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

En mis casos de prueba locales, 47en mi máquina de guerra más grande y 1en mi computadora portátil.

max
fuente
2
Esto está desactivado en un 500% en uno de mis sistemas (Ubuntu 12.04) y en un 200% en otro sistema.
Anthon
-1

En mi humilde opinión, lsblk es el comando que está más ampliamente disponible en el mundo Linux (funciona incluso en puertos como Raspbian). No quiero ofender a nadie, pero hay algunos comandos que necesitan que sepas explícitamente el nombre del dispositivo para buscarlo. Por ejemplo, debe tener en cuenta la existencia de sdc para ejecutar smartctl. Dicho esto, lsblk no es universal, sí en Solaris, pero no en hpux. Gracias.

Saltando conejito
fuente
2
Además de mencionar que lsblktambién está disponible en Solaris, esto no agrega más información que las dos respuestas mejor votadas. Esto sería mejor publicado como un comentario a unix.stackexchange.com/a/94211/22812
Anthony Geoghegan