Encontrar todos los dispositivos de almacenamiento conectados a una máquina Linux

32

Tengo la necesidad de encontrar todos los dispositivos de almacenamiento grabables conectados a una máquina determinada, estén o no montados.

La forma tonta de hacer esto sería probar cada entrada /devque corresponda a un dispositivo grabable (hd * y sd *).

¿Existe una solución mejor o debería seguir con esta?

madriguera
fuente
volver a formular una vieja pregunta de SO
warren
2
¿Quizás quieres usar udiscos?
derobert
No solo quiero encontrar qué discos duros hay en un sistema: estoy buscando todos los dispositivos de almacenamiento
Warren
Creo que todos asumimos discos duros y similares. ¿De verdad quieres decir algo más? ¿Debería incluir unidades de cinta, impresoras, etc.?
derobert
2
@derobert - sí, de ahí el título de "todos los dispositivos de almacenamiento" :)
warren

Respuestas:

47

Si solo le interesan los dispositivos de almacenamiento en bloque , puede usar el lsblkpaquete util-linux ampliamente disponible:

$ lsblk -o 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

Se presta bien a las secuencias de comandos con muchas otras columnas disponibles.

K3 --- rnc
fuente
13

Puede rastrear la salida lshwy extraer detalles sobre los dispositivos en la clase disko tape(y tal vez en otros; la storageclase le brinda detalles sobre controladores de almacenamiento, scsi, sata, sas, etc.).

p.ej

lshw -class disk -class tape

La -shortopción da un buen resumen compacto. Por ejemplo, en mi servidor zfsonlinux / estación de trabajo / caja de experimento (desafortunadamente no hay dispositivos de cinta):

# lshw -class tape -class disk -class storage -short
Ruta H / W Clase de dispositivo Descripción
================================================== =======
/ 0/100/4/0 almacenamiento Controlador SATA JMB362
/ 0/100/5/0 scsi10 almacenamiento JMB362 Controlador SATA
/0/100/5/0/0.0.0 / dev / sdc disco 120GB Patriot Wildfire
/ 0/100 / b / 0 scsi1 almacenamiento SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]
/0/100/b/0/0.0.0 / dev / sdd disk 1TB WDC WD10EARS-00Y
/0/100/b/0/0.1.0 / dev / sde disco 1TB WDC WD10EACS-00Z
/0/100/b/0/0.2.0 / dev / sdf disco 1TB WDC WD10EACS-00Z
/0/100/b/0/0.3.0 / dev / sdg disco 1TB ST31000528AS
/0/100/b/0/0.4.0 / dev / sdh disco 1TB ST31000528AS
/0/100/b/0/0.5.0 / dev / sdi disk 1TB ST31000528AS
/0/100/b/0/0.6.0 / dev / sdj disco 1TB ST31000528AS
/ 0/100/11 almacenamiento scsi2 SB7x0 / SB8x0 / SB9x0 Controlador SATA [modo AHCI]
/ 0/100/11/0 / dev / sda disco 128GB Patriot Torqx 2
/ 0/100/11/1 / dev / sdb disco 1TB ST31000528AS
/ 0/1 almacenamiento scsi11     
/0/1/0.0.0 / dev / sdk disk 1967MB Disco SCSI
/0/1/0.0.1 / dev / sdl disk SCSI Disk
/0/1/0.0.2 / dev / sdm disk Disco SCSI
/0/1/0.0.3 / dev / sdn disk Disco SCSI
/ 0/2 almacenamiento scsi66     
/0/2/0.0.0 / dev / sdo disk Disco SCSI
/ 0/3 almacenamiento scsi67     
/0/3/0.0.0 / dev / sdp disk 4057MB Disco SCSI

Los dispositivos / 0/1 son en realidad un lector de tarjetas USB (hay una tarjeta SD de 2GB conectada a una de las ranuras), y el dispositivo / 0/2 es mi teléfono Android conectado para cargar solo. El dispositivo 0/3 es una unidad flash USB de 4GB.

lshwpuede producir texto sin formato, html, xml y salida json. También puede volcar detalles de hardware en un formato de base de datos sqlite.

Está empaquetado para Debian y la mayoría de las otras distribuciones. La página de inicio y la fuente están en http://ezix.org/project/wiki/HardwareLiSter

cas
fuente
5

Por favor, prueba este comando

ls -l /dev /dev/mapper |grep '^b'

Enumerará todos los dispositivos de bloque en su sistema.

Sarga
fuente
5

Puede usar lsblkpara enumerar todos los dispositivos de bloque, junto con si cada dispositivo es de solo lectura o no.

Luego puede usar grepe awkimprimir los nombres de los dispositivos de bloque que no son de solo lectura:

lsblk -d -n -oNAME,RO | grep '0$' | awk {'print $1'}
Jason Hobbs
fuente
Esta es una gran expansión de la respuesta
Warren
4

lsblk enumerará todos los dispositivos de almacenamiento en bloque.

fdisk -l enumerará todas las particiones en todos los dispositivos que se enumeran en /proc/partitions

lshw -short le dará información sobre todo el hardware (excepto quizás FireWire) en el sistema.

Simon Woodside
fuente
3

Si, según su respuesta a Derobert, que está buscando algo que las listas de las unidades de cinta y las impresoras , puede estar interesado en lsdev, lsusby lspci.

dos puntos
fuente
Por supuesto, eso no podrá encontrar almacenamiento conectado a la red :-(
derobert
1
Entoncesfdisk -l
dos puntos
2

Puedes probar el siguiente comando:

file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "\047/dev/"$NF}' | sort | uniq
Gilles Quenot
fuente
1
¿Qué hace y cómo se compara con la inclusión de clases de dispositivos de bloque y cinta con lshw?
n611x007
2

Puede usar hwinfo para enumerar todos los discos ( documentación ).

hwinfo --block --short da una visión general:

disk:
  /dev/sdb             WDC WD3200AAKS-7
  /dev/sda             SAMSUNG HD103UJ
partition:
  /dev/sdb1            Partition
  /dev/sdb2            Partition
  /dev/sda1            Partition
cdrom:
  /dev/sr1             TSSTcorp DVD+-RW TS-H653B
  /dev/sr0             HL-DT-ST DVD-ROM GDRH20N

hwinfo --disk da más detalles para cada disco.

FYI: en algunas distribuciones de Linux como Ubuntus 14.04 y superior, hwinfo no está presente en el repositorio oficial .

Franck Dernoncourt
fuente
0

He encontrado eso fdisky lsblkno estoy disponible en la terminal virtual para el instalador de Debian. En este caso uso blkid, que obtiene el UUID para dispositivos de almacenamiento en bloque.

ryanjdillon
fuente
-1

Si se refiere a dispositivos RAID, entonces no podría obtener el resultado correcto usando hdparm smartctl, etc. porque este tipo de herramientas busca / dev, que es el nivel del sistema operativo si desea saber sobre el nivel de hardware, entonces necesita tener una herramienta como megacli Solía ​​depurar con megacli

    [root@ns3539186 ~]# /opt/megaraid/megacli -LDPDInfo -aAll |grep "Virtual Disks\|RAID Level\|State"
Number of Virtual Disks: 2
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
State               : Optimal
Foreign State: None
Media Type: Solid State Device
Foreign State: None
Media Type: Solid State Device
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
State               : Optimal
Foreign State: None
Foreign State: None

Para obtener el número de serie del disco

[root@ns3539186 ~]# /opt/megaraid/megacli -PDList -aAll | egrep 'Slot\ Number|Device\ Id|Inquiry\ Data|Raw|Firmware\ state' | sed 's/Slot/\nSlot/g' |grep "Da                    ta\|Slot\|Raw"
Slot Number: 0
Raw Size: 447.130 GB [0x37e436b0 Sectors]
Inquiry Data: PHYS733402Z0480BGN  INTEL SSDSC2KB480G7                     SCV10100
Slot Number: 1
Raw Size: 447.130 GB [0x37e436b0 Sectors]
Inquiry Data: PHYS733402YV480BGN  INTEL SSDSC2KB480G7                     SCV10100
Slot Number: 2
Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Inquiry Data: K3GJTYMB            HGST HUS726040ALA610                    A5GNT920
Slot Number: 3
Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Inquiry Data: K3GHW57B            HGST HUS726040ALA610                    A5GNT920

En la salida anterior, los datos de consulta contienen el número de serie

Mansur Ali
fuente
-1

Aquí están los dos comandos que usé para encontrar almacenamiento local y compartido.

Para el almacenamiento local

lsblk | grep -v '^loop'

Para almacenamiento compartido

findmnt -D | grep -v '^tmpfs' | grep -v '^/'

OR

df -kh | grep -v '^tmpfs' | grep -v '^/'
Mian Asbat Ahmad
fuente
¿Por qué volver a utilizar las mismas herramientas ya sugeridas (y aceptadas) hace más de 6 años?
Warren
Debido a que el sistema operativo ha cambiado y ahora se obtiene una gran cantidad de loopy tmpfspartición. Por lo tanto, es mejor limpiar la salida con grep como se indicó anteriormente.
Mian Asbat Ahmad
-3

Esto enumerará todos sus discos y unidades montadas:

$ df -h
Haider Abbas
fuente
55
En realidad, eso enumera los sistemas de archivos ...
HalosGhost