Como descubro o que são os discos rígidos no sistema?


223

Preciso saber quais discos rígidos estão disponíveis, incluindo aqueles que não estão montados e possivelmente não estão formatados. Não consigo encontrá-los dmesgou /var/log/messages(muito para percorrer). Espero que exista uma maneira de usar /devou /procdescobrir essas informações, mas não sei como. Eu estou usando Linux.


A pergunta original não especificou nenhuma variante unix específica, e o gerenciamento de hardware é obviamente altamente dependente da variante.
Gilles

@gilles sim, eu estava no trabalho quando escrevi, então eu esclareço quando cheguei em casa e pensei sobre isso.
Xenoterracide

1
Dependendo do que você está fazendo, udiscos .
Derobert

2
Encontrei uma página útil que descreve muitos comandos comuns de hardware com uma pesquisa no Google. As unidades de disco incluem lshw(Listar Hardware), hwinfo(Informações sobre Hardware), lsscsi(Listar dispositivos SCSI), lsusb(Listar barramentos / dispositivos USB), lsblk(Listar dispositivos de bloco) fdisk -le mount. Mais informações em binarytides.com/linux-commands-hardware-info .
Edward

Respostas:


182

Isso depende muito da plataforma. Métodos diferentes também podem tratar casos de borda de maneira diferente (discos "falsos" de vários tipos, volumes RAID, ...).

Nas instalações modernas do udev, existem links simbólicos para a mídia de armazenamento nos subdiretórios de /dev/disk, que permitem procurar um disco ou uma partição pelo número de série ( /dev/disk/by-id/), UUID ( /dev/disk/by-uuid), etiqueta do sistema de arquivos ( /dev/disk/by-label/) ou conectividade de hardware ( /dev/disk/by-path/).

No Linux 2.6, cada disco e dispositivo semelhante a disco tem uma entrada /sys/block. No Linux desde o início dos tempos, discos e partições estão listados em /proc/partitions. Alternativamente, você pode usar lshw : lshw -class disk.

O Linux também fornece o lsblkutilitário que exibe uma bela exibição em árvore dos volumes de armazenamento (desde o util-linux 2.19, não presente em dispositivos incorporados com o BusyBox).

Se você tiver um utilitário fdiskou disklabel, ele poderá informar em quais dispositivos ele pode trabalhar.

Você encontrará nomes de utilitários para muitas variantes do unix no Rosetta Stone para Unix , em particular as linhas "listar configuração de hardware" e "ler uma etiqueta de disco".


11
Ooo; esse site da Rosetta Stone é excelente
Michael Mrozek

146

lsblklistará todos os dispositivos de bloco. Ele se presta bem ao script:

$ 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 no pacote util-linux e é, portanto, muito mais universal do que as alternativas propostas.


10
Se você precisar apenas de discos físicos, use lsblk -d, -dsignifica que nenhuma mensagem de dependência está listada.
coanor

2
De fato =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL(parte da util-linuxqual faz parte do baseArch) fornece instantaneamente as informações solicitadas e sem a necessidade de ser root. Observe que ele fornece o modelo do dispositivo , não a família do modelo . smarctl -i /dev/<device>recomendado por Skippy, por exemplo: "Família de modelos: Seagate Barracuda 7200.12" (ausente de lsblk -ido: "disco 465,8G ST3500418AS").
Tuk0z 03/09/2015

68

E se

lshw -class disk

3
nada mal ... vou checá-lo quando sair, tenho certeza de que funciona ... infelizmente não ( lshw) está instalado no servidor e suspeito que a resposta será que não o estamos instalando.
Xenoterracide

Por alguma razão, o lshw não lista discos rígidos.
André van Schoubroeck

2
Quando não é executado como root, ele não lista discos, mas também não gera erros.
Volker Siegel

1
bash: lshw: comando não encontrado
Antoine

26

hwinfo ajuda:

> 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

19

@Giles diz que isso é altamente dependente da plataforma. Aqui está um exemplo.

Estou executando um sistema CentOS 5.5. Este sistema possui 4 discos e um controlador RAID 3ware.

No meu caso, lshw -class disk, cat /proc/scsi/scsie parted --listmostra o controlador RAID (3ware 9650SE-4LP). Isso não mostra os discos reais:

mostra apenas o controlador RAID 3ware que fornece o 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

Para ver os discos abaixo, eu tive que instalar o utilitário tw_cli do 3ware e perguntar ao próprio 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 

13

Como ambos " Posso ver qual HDD eu instalei? " E " Como determino a marca e o modelo dos meus dispositivos de armazenamento? " Estão marcados como duplicados desta pergunta, fico surpreso que ninguém tenha mencionado hdparme smartctl. Observando algumas máquinas, parece que uma delas (quando não são as duas) já é encontrada já instalada em distribuições padrão (até antigas) do Linux.

# 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 sempre, verifique a página de manual para mais opções.


Note-se que a smartctlmaneira como funciona no Cygwin, +1! Basta fazer um loop sobre os possíveis nomes de dispositivos e verificar se smartctla unidade suporta SMART.
Adrian Frühwirth 12/09

12

Estou executando o fedora 14 e lshwnão está disponível aqui (pelo menos não por padrão). No entanto, no meu caso, usei o fdisk -lcomando (como usuário root) para obter a seguinte saída:

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

Use fdisk -l /dev/sd?ou fdisk -l /dev/hd?para evitar a entrada de dispositivos dm.
Laebshade

6

I encontrado em outra resposta SE , inxiferramenta como muito 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

3

Muitos dos comandos listados o ajudarão a procurar discos que já foram reconhecidos pelo sistema na inicialização. Com unidades modernas, você pode encontrar algo que inseriu enquanto a máquina estava em funcionamento (eu fiz). Eu gosto do conselho de http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :

Tente isto para verificar novamente os hosts SCSI (cada porta SATA aparece como um barramento SCSI):

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

... Em seguida, você pode usar seus utilitários Linux como o fdisk para mostrar informações sobre os discos encontrados.


3
sfdisk -l  

fornecerá informações detalhadas sobre discos físicos / de hardware, mesmo que não estejam montados.

o programa está pré-instalado em todas as variantes do Linux que eu usei, mas você precisa ser root para usá-lo.


2

Isso funcionou para mim:

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

1

sudo gparted mostrará tudo isso em uma GUI.

(Você não especificou que precisa fazê-lo em um terminal, por isso, pergunto-me por que essa solução estava faltando.)


-1

Para retornar o número de dispositivos de bloco , sem ferramentas sofisticadas nem sintaxe ou parâmetros obscuros:

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

Nos meus casos de teste locais, 47na minha maior máquina de guerra e 1no meu laptop.


2
Isso é desativado em 500% em um dos meus sistemas (Ubuntu 12.04) e em 200% em outro sistema.
Anthon

-1

IMHO, lsblk é o comando mais amplamente disponível no mundo Linux (funciona mesmo em portas como Raspbian). Não pretendo ofender ninguém, mas existem alguns comandos que precisam que você saiba explicitamente o nome do dispositivo para procurá-lo. Por exemplo, você deve estar ciente da existência do sdc para executar o smartctl. Dito isto, o lsblk não é universal - sim no Solaris, mas não no hpux. Obrigado.


2
Além de mencionar que lsblktambém está disponível no Solaris, isso não adiciona mais informações do que as duas respostas mais votadas. Isso seria melhor postado como um comentário para unix.stackexchange.com/a/94211/22812
Anthony Geoghegan
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.