Come faccio a sapere quali sono i dischi rigidi nel sistema?


223

Devo sapere quali dischi rigidi sono disponibili, compresi quelli che non sono montati e che probabilmente non sono formattati. Non riesco a trovarli in dmesgo /var/log/messages(troppo per scorrere). Spero che ci sia un modo per utilizzare /devo /procscoprire queste informazioni, ma non so come. Sto usando Linux.


La domanda originale non specificava alcuna particolare variante unix e la gestione dell'hardware è ovviamente altamente dipendente dalla variante.
Gilles,

@gilles sì, ero al lavoro quando l'ho scritto, quindi ho chiarito dopo essere tornato a casa e averci pensato.
xenoterracide,

1
A seconda di ciò che stai facendo, udisks .
derobert,

2
Ho trovato una pagina utile che descrive molti comandi hardware comuni con una ricerca su Google. Quelli del disco rigido includono lshw(Elenco hardware), hwinfo(Informazioni hardware), lsscsi(Elenco dispositivi scsi), lsusb(Elenco dispositivi / bus USB), lsblk(Elenco dispositivi blocco) fdisk -le mount. Maggiori informazioni su binarytides.com/linux-commands-hardware-info .
Edward,

Risposte:


182

Questo dipende fortemente dalla piattaforma. Inoltre, metodi diversi possono trattare i casi limite in modo diverso (dischi "falsi" di vario genere, volumi RAID, ...).

Nelle moderne installazioni udev, esistono collegamenti simbolici ai supporti di archiviazione nelle sottodirectory di /dev/disk, che consentono di cercare un disco o una partizione per numero seriale ( /dev/disk/by-id/), UUID ( /dev/disk/by-uuid), etichetta filesystem ( /dev/disk/by-label/) o connettività hardware ( /dev/disk/by-path/).

In Linux 2.6, ogni disco e dispositivo simile a un disco ha una voce in /sys/block. Sotto Linux dall'alba dei tempi, i dischi e le partizioni sono elencati in /proc/partitions. In alternativa, è possibile utilizzare lshw : lshw -class disk.

Linux fornisce anche l' lsblkutilità che mostra una bella vista ad albero dei volumi di archiviazione (da util-linux 2.19, non presente su dispositivi embedded con BusyBox).

Se hai un'utilità fdisko disklabel, potrebbe essere in grado di dirti su quali dispositivi è in grado di funzionare.

Troverai nomi di utilità per molte varianti unix su Rosetta Stone per Unix , in particolare le linee "elenco configurazione hardware" e "lettura etichetta disco".


11
ooo; che il sito di Rosetta Stone è eccellente
Michael Mrozek

146

lsblkelencherà tutti i dispositivi a blocchi. Si presta bene allo scripting:

$ 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 è presente nel pacchetto util-linux ed è quindi molto più universale delle alternative proposte.


10
Se avete solo bisogno i dischi fisici, uso lsblk -d, -dsignifica che nessun messaggio di dipendenza elencato.
coanor

2
Infatti =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL(parte del util-linuxquale fa parte di baseArch) fornisce istantaneamente le informazioni richieste e senza la necessità di essere root. Si noti che fornisce il modello del dispositivo , non la famiglia di modelli . smarctl -i /dev/<device>consigliato da Skippy, ad esempio: "Famiglia modello: Seagate Barracuda 7200.12" (mancante a lsblk -ido: "disco 465,8G ST3500418AS").
tuk0z,

68

Che ne dite di

lshw -class disk

3
non male ... lo ricontrollerò quando scendo, sono sicuro che funziona ... purtroppo non è ( lshw) installato sul server, e sospetto che la risposta sarà che non lo stiamo installando.
xenoterracide,

Per qualche motivo, lshw non elenca i dischi rigidi.
André van Schoubroeck,

2
Quando non viene eseguito come root, non elenca alcun disco, ma non fornisce alcun errore.
Volker Siegel,

1
bash: lshw: comando non trovato
Antoine

26

hwinfo aiuta:

> 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 afferma che questo dipende fortemente dalla piattaforma. Ecco un esempio.

Sto eseguendo un sistema CentOS 5.5. Questo sistema ha 4 dischi e un controller RAID 3ware.

Nel mio caso, lshw -class disk, cat /proc/scsi/scsie parted --listmostra il controller RAID (3ware 9650SE-4LP). Questo non mostra i dischi attuali:

mostra solo il controller RAID 3ware che fornisce il 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

Per vedere i dischi sottostanti, ho dovuto installare l'utility tw_cli da 3ware e chiedere al controller stesso.

# 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

Poiché sia ​​" Posso vedere quale HDD ho installato? " Sia " Come posso determinare la marca e il modello dei miei dispositivi di archiviazione? " Sono contrassegnati come duplicati di questa domanda, sono sorpreso che nessuno abbia menzionato hdparme smartctl. Dando un'occhiata ad alcune macchine, sembra che una di esse (quando non è entrambe) si trova spesso già installata in distribuzioni Linux standard (anche vecchie).

# 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

Come al solito, controlla la manpage per ulteriori opzioni.


Va notato che il smartctlmodo in cui funziona anche su Cygwin, +1! Basta passare in rassegna i possibili nomi dei dispositivi e vedere se smartctlrestituisce che l'unità supporta SMART.
Adrian Frühwirth,

12

Sono in esecuzione fedora 14 e lshwnon è disponibile qui (almeno non per impostazione predefinita). Tuttavia, nel mio caso, ho usato il fdisk -lcomando (come utente root) per ottenere il seguente output:

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

Utilizzare fdisk -l /dev/sd?o fdisk -l /dev/hd?per evitare di introdurre dispositivi DM.
laebshade,

6

Ho trovato in altre risposte SE , inxistrumento molto 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

Molti dei comandi elencati ti aiuteranno a cercare i dischi che sono già stati riconosciuti dal sistema all'avvio. Con le unità moderne, potresti ritrovarti a cercare qualcosa che hai inserito mentre la macchina era in funzione (l'ho fatto). Mi piace il consiglio di http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :

Prova questo per ripetere la scansione degli host SCSI (ogni porta SATA appare come un bus SCSI):

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

... Quindi puoi usare le tue utility Linux come fdisk per mostrarti informazioni sui dischi trovati.


3
sfdisk -l  

ti fornirà informazioni dettagliate sui dischi hardware / fisici anche se non sono montati.

il programma è preinstallato su tutte le varianti di Linux che ho usato, ma per usarlo devi essere root.


2

Questo ha funzionato per me:

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

1

sudo gparted mostrerà tutto questo in una GUI.

(Non hai specificato che devi farlo all'interno di un terminale, quindi mi chiedo perché questa soluzione mancasse.)


-1

Per restituire il numero di dispositivi a blocchi , senza strumenti elaborati né sintassi o parametri oscuri:

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

Nei miei casi di test locali, 47sulla mia più grande macchina da guerra e 1sul mio laptop.


2
Questo è spento del 500% su uno dei miei sistemi (Ubuntu 12.04) e del 200% su un altro sistema.
Anthon,

-1

IMHO, lsblk è il comando più ampiamente disponibile nel mondo Linux (funziona anche su porte come Raspbian). Non intendo offendere nessuno, ma ci sono alcuni comandi che richiedono che tu sappia esplicitamente il nome del dispositivo per cercarlo. Ad esempio, è necessario essere consapevoli dell'esistenza di sdc per eseguire smartctl. Detto questo, lsblk non è universale - sì su Solaris, ma non su hpux. Grazie.


2
Oltre a menzionare che lsblkè disponibile anche su Solaris, questo non aggiunge ulteriori informazioni rispetto alle due risposte più votate. Questo sarebbe meglio pubblicato come commento a unix.stackexchange.com/a/94211/22812
Anthony Geoghegan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.