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 em dmesg
ou /var/log/messages
(muito para rolar). Espero que haja uma maneira de usar /dev
ou /proc
para descobrir essas informações, mas não sei como. Eu estou usando Linux.
Isso depende muito da plataforma. Métodos diferentes também podem tratar os casos do Edge de maneira diferente (discos "falsos" de vários tipos, volumes RAID, ...).
Nas instalações modernas do udev, há links simbólicos para a mídia de armazenamento em subdiretórios de /dev/disk
, que permitem procurar um disco ou uma partição pelo número de série (/dev/disk/by-id/
), por UUID (/dev/disk/by-uuid
), por etiqueta do sistema de arquivos (/dev/disk/by-label/
) ou por conectividade de hardware (/dev/disk/by-path/
).
No Linux 2.6, cada disco e dispositivo semelhante a disco tem uma entrada em /sys/block
. No Linux desde o início dos tempos, discos e partições estão listados em /proc/partitions
. Como alternativa, você pode usar lshw : lshw -class disk
.
O Linux também fornece o utilitário lsblk
, 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 fdisk
ou disklabel
, poderá informar em quais dispositivos ele pode trabalhar.
Você encontrará nomes de utilitários para muitas variantes do unix nas linhas Rosetta Stone para Unix , em particular as linhas "listar configuração de hardware" e "ler uma etiqueta de disco".
lsblk
listará 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.
E se
lshw -class disk
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
@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/scsi
e parted --list
mostra 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: [email protected]: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
Como " 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 , Estou surpreso que ninguém tenha mencionado hdparm
e smartctl
. Observando algumas máquinas, parece que qualquer 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.
Estou executando o Fedora 14 e lshw
não está disponível aqui (pelo menos não por padrão). No entanto, no meu caso, eu usei fdisk -l
(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
I encontrado em outra resposta SE , inxi
ferramenta 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
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.
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.
Isso funcionou para mim:
fdisk -l 2>/dev/null | grep "Disk \/" | grep -v "\/dev\/md" | awk '{print $2}' | sed -e 's/://g'
Sudo gparted
mostrará tudo isso em uma GUI.
(Você não especificou que precisa fazê-lo dentro de um terminal, então, pergunto-me por que essa solução estava faltando.)