Localizando todos os dispositivos de armazenamento conectados a uma máquina Linux

27

Preciso encontrar todos os dispositivos de armazenamento graváveis anexados a uma determinada máquina, estejam eles montados ou não.

A maneira dopada de fazer isso seria tentar todas as entradas em /dev que correspondem a um dispositivo gravável (hd * e sd *).

Existe uma solução melhor ou devo ficar com esta?

    
por warren 03.10.2012 / 18:45

9 respostas

39

Se alguém estiver interessado apenas em dispositivos de armazenamento block , pode usar lsblk do pacote util-linux amplamente disponível:

$ 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

Ele se presta bem ao script com muitas outras colunas disponíveis.

    
por 09.10.2013 / 06:15
10

Você pode vasculhar a saída de lshw e extrair detalhes sobre dispositivos na classe disk ou tape (e talvez outros - storage da classe fornece detalhes sobre controladores de armazenamento, scsi, sata, sas, etc).

por exemplo,

lshw -class disk -class tape

A opção -short fornece um bom resumo compacto. por exemplo. na minha casa zfsonlinux servidor / workstation / experiment-box (sem dispositivos de fita, infelizmente):

# lshw -class tape -class disk -class storage -short
H/W path              Device      Class       Description
=========================================================
/0/100/4/0                        storage     JMB362 SATA Controller
/0/100/5/0            scsi10      storage     JMB362 SATA Controller
/0/100/5/0/0.0.0      /dev/sdc    disk        120GB Patriot Wildfire
/0/100/b/0            scsi1       storage     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    disk        1TB WDC WD10EACS-00Z
/0/100/b/0/0.2.0      /dev/sdf    disk        1TB WDC WD10EACS-00Z
/0/100/b/0/0.3.0      /dev/sdg    disk        1TB ST31000528AS
/0/100/b/0/0.4.0      /dev/sdh    disk        1TB ST31000528AS
/0/100/b/0/0.5.0      /dev/sdi    disk        1TB ST31000528AS
/0/100/b/0/0.6.0      /dev/sdj    disk        1TB ST31000528AS
/0/100/11             scsi2       storage     SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
/0/100/11/0           /dev/sda    disk        128GB Patriot Torqx 2
/0/100/11/1           /dev/sdb    disk        1TB ST31000528AS
/0/1                  scsi11      storage     
/0/1/0.0.0            /dev/sdk    disk        1967MB SCSI Disk
/0/1/0.0.1            /dev/sdl    disk        SCSI Disk
/0/1/0.0.2            /dev/sdm    disk        SCSI Disk
/0/1/0.0.3            /dev/sdn    disk        SCSI Disk
/0/2                  scsi66      storage     
/0/2/0.0.0            /dev/sdo    disk        SCSI Disk
/0/3                  scsi67      storage     
/0/3/0.0.0            /dev/sdp    disk        4057MB SCSI Disk

Os dispositivos / 0/1 são, na verdade, um leitor de cartão USB (há um cartão SD de 2GB conectado a um dos slots) e o dispositivo / 0/2 é o meu telefone Android conectado apenas para carregamento. O dispositivo 0/3 é uma unidade flash USB de 4 GB.

lshw pode produzir saída de texto simples, html, xml e json. Ele também pode despejar detalhes de hardware em um formato de banco de dados sqlite.

É empacotado para a Debian e a maioria das outras distribuições. A página inicial e a fonte estão no link

    
por 04.10.2012 / 01:10
4

Por favor, tente este comando

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

Ele listará todos os dispositivos de bloco no seu sistema

    
por 03.10.2012 / 18:48
3

Você pode usar lsblk para listar todos os dispositivos de bloco, e se cada dispositivo é ou não somente leitura.

Você pode usar grep e awk para imprimir os nomes dos dispositivos de bloco que não são somente de leitura:

lsblk -d -n -oNAME,RO | grep '0$' | awk {'print $1'}
    
por 19.09.2014 / 19:17
3

lsblk listará todos os dispositivos de armazenamento em bloco.

fdisk -l listará todas as partições em todos os dispositivos listados em /proc/partitions

lshw -short fornecerá informações sobre todo o hardware (exceto talvez firewire) no sistema.

    
por 16.06.2016 / 06:11
2

Se, de acordo com sua resposta à derobert, você estiver procurando algo que liste unidades de fita e impressoras , talvez você esteja interessado em lsdev , lsusb e lspci .

    
por 03.10.2012 / 22:33
1

Você pode tentar o seguinte comando:

file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "7/dev/"$NF}' | sort | uniq
    
por 03.10.2012 / 19:09
1

Você pode usar hwinfo para listar todos os discos ( documentation ).

hwinfo --block --short fornece uma visão geral:

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 fornece mais detalhes para cada disco.

FYI: em algumas distribuições Linux como o Ubuntus 14.04 e superior, o hwinfo não está presente no repositório oficial .

    
por 13.08.2016 / 19:15
-3

Isso listará todos os seus discos e unidades montadas:

$ df -h
    
por 04.10.2014 / 04:53

Tags