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


32

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

A maneira mais obscura de fazer isso seria tentar todas as entradas /devcorrespondentes a dispositivos graváveis ​​(hd * e sd *).

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


reasking uma velha questão SO
Warren

2
Talvez você queira usar udiscos?
Derobert

Eu não apenas quer encontrar o que os discos rígidos estão em um sistema - Estou à procura de todos os dispositivos de armazenamento
Warren

Acho que todos assumimos discos rígidos e similares. Você realmente quer dizer outra coisa? Como, deve incluir unidades de fita, impressoras, etc.?
Derobert

2
@derobert - sim, daí o título de "todos os dispositivos de armazenamento" :)
Warren

Respostas:


47

Se alguém estiver interessado apenas em dispositivos de armazenamento em bloco , poderá usar o lsblkpacote 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.


13

Você pode vasculhar a saída lshwe extrair detalhes sobre dispositivos da classe diskou tape(e talvez outros - a storageclasse fornece detalhes sobre controladores de armazenamento, scsi, sata, sas, sas, etc.).

por exemplo

lshw -class disk -class tape

A -shortopção fornece um resumo compacto e agradável. por exemplo, no meu servidor / estação de trabalho / experiment-box zfsonlinux doméstico (infelizmente, nenhum dispositivo de fita):

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

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

lshwpode produzir texto sem formatação, html, xml e json. Ele também pode despejar detalhes de hardware em um formato de banco de dados sqlite.

É empacotado para o debian e a maioria das outras distribuições. A página inicial e a fonte estão em http://ezix.org/project/wiki/HardwareLiSter


5

Por favor, tente este comando

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

Ele listará todos os dispositivos de bloqueio em seu sistema


5

Você pode usar lsblkpara listar todos os dispositivos de bloco, além de saber se cada dispositivo é ou não somente leitura.

Você pode usar grepe awkimprimir os nomes dos dispositivos de bloco que não são somente leitura:

lsblk -d -n -oNAME,RO | grep '0$' | awk {'print $1'}

esta é uma grande expansão na anterior resposta
Warren

4

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 o firewire) no sistema.


3

Se, como por sua resposta a derobert, você está procurando por algo que listas de unidades de fita e impressoras , você pode estar interessado em lsdev, lsusbe lspci.


Obviamente, isso não conseguirá encontrar o armazenamento conectado à rede :-(
derobert 4/12/12

1
Entãofdisk -l
dois pontos

2

Você pode tentar o seguinte comando:

file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "\047/dev/"$NF}' | sort | uniq

1
o que faz e como isso se compara à listagem de classes de dispositivos de bloco e fita com o lshw?
N611x007

2

Você pode usar o hwinfo para listar todos os discos ( documentação ).

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 .


0

Eu descobri isso fdiske lsblknão estou disponível no terminal virtual para o instalador da Debian. Nesse caso, eu uso blkid, que obtém o UUID para dispositivos de armazenamento em bloco.


-1

Se você deseja dispositivos RAID, não seria capaz de obter resultados corretos usando hdparm smartctl, etc. eu costumava depurar com 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 obter o número de série do 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

Na saída acima, os Dados da consulta contêm o número de série


-1

Aqui estão alguns comandos que eu usei para encontrar armazenamento local e compartilhado.

Para armazenamento local

lsblk | grep -v '^loop'

Para armazenamento compartilhado

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

OR

df -kh | grep -v '^tmpfs' | grep -v '^/'

Por que sugerir novamente as mesmas ferramentas já sugeridas (e aceitas) há mais de 6 anos?
warren

Porque o sistema operacional mudou e agora você recebe muito loope tmpfsparticiona. Portanto, é melhor limpar a saída usando grep como acima.
Mian Asbat Ahmad 13/11

-3

Isso listará todos os seus discos e unidades montadas:

$ df -h

5
Na verdade, isso lista os sistemas de arquivos ...
HalosGhost
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.