Wie finde ich heraus, welche Festplatten sich im System befinden?


223

Ich muss wissen, welche Festplatten verfügbar sind, auch solche, die nicht gemountet und möglicherweise nicht formatiert sind. Ich kann sie in dmesgoder nicht finden /var/log/messages(zu viel zum Scrollen). Ich hoffe, dass es eine Möglichkeit gibt , diese Informationen zu verwenden /devoder /procherauszufinden, aber ich weiß nicht wie. Ich benutze Linux.


In der ursprünglichen Frage wurde keine bestimmte Unix-Variante angegeben, und das Hardware-Management ist offensichtlich stark variantenabhängig.
Gilles

@gilles yeah Ich war auf der Arbeit, als ich es schrieb, also habe ich geklärt, nachdem ich nach Hause gekommen bin und darüber nachgedacht habe.
Xenoterracid

1
Je nachdem, was du tust, udisks .
Derobert

2
Ich habe eine nützliche Seite gefunden, die viele gängige Hardwarebefehle bei einer Suche in Google beschreibt. Zu den Laufwerken gehören lshw(Hardware auflisten ), hwinfo(Hardwareinformationen), lsscsi(SCSI-Geräte auflisten), lsusb(USB-Busse / -Geräte auflisten ), (Blockgeräte auflisten lsblk) fdisk -lund mount. Weitere Informationen unter binarytides.com/linux-commands-hardware-info .
Edward

Antworten:


182

Dies ist stark plattformabhängig. Auch unterschiedliche Methoden können Edge-Cases unterschiedlich behandeln („gefälschte“ Festplatten verschiedener Art, RAID-Volumes usw.).

In modernen udev-Installationen gibt es symbolische Links zu Speichermedien in Unterverzeichnissen von /dev/disk, mit denen Sie eine Festplatte oder Partition nach Seriennummer ( /dev/disk/by-id/), UUID ( /dev/disk/by-uuid), Dateisystembezeichnung ( /dev/disk/by-label/) oder Hardware-Konnektivität ( /dev/disk/by-path/) suchen können .

Unter Linux 2.6 hat jede Festplatte und jedes festplattenähnliche Gerät einen Eintrag in /sys/block. Unter Linux werden seit jeher Festplatten und Partitionen in aufgelistet /proc/partitions. Alternativ können Sie auch lshw : verwenden lshw -class disk.

Linux bietet auch das lsblkHilfsprogramm, das eine schöne Baumansicht der Speichervolumes anzeigt (seit util-linux 2.19, nicht vorhanden auf eingebetteten Geräten mit BusyBox).

Wenn Sie ein fdiskoder disklabelDienstprogramm haben, kann es Ihnen möglicherweise mitteilen, auf welchen Geräten es arbeiten kann.

Auf dem Rosetta Stone for Unix finden Sie Dienstprogrammnamen für viele Unix-Varianten , insbesondere die Zeilen „Hardwarekonfiguration auflisten“ und „Datenträgerbezeichnung lesen“.


11
Ooo; Diese Rosetta Stone-Site ist ausgezeichnet
Michael Mrozek

146

lsblklistet alle blockierten Geräte auf. Es eignet sich gut für die Skripterstellung:

$ 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 ist im util-linux-Paket enthalten und daher viel universeller als die vorgeschlagenen Alternativen.


9
Wenn Sie nur die physischen Datenträger benötigen lsblk -d, -dbedeutet use , dass keine Abhängigkeitsmeldung aufgeführt ist.
Coanor

2
Tatsächlich gibt =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL(von util-linuxdem ein Teil Teil von baseon Arch ist) sofort die angeforderten Informationen aus, ohne dass root sein muss. Beachten Sie, dass es das Gerätemodell und nicht die Modellfamilie enthält . smarctl -i /dev/<device>empfohlen von Skippy hat es getan, zB: "Modellfamilie: Seagate Barracuda 7200.12" (fehlt in lsblk -ido: "disk 465,8G ST3500418AS").
Tuk0z

68

Wie wäre es mit

lshw -class disk

3
nicht schlecht ... Ich werde es überprüfen, wenn ich aussteige, ich bin sicher, dass es funktioniert ... leider ist es ( lshw) nicht auf dem Server installiert, und ich vermute, die Antwort wird sein, dass wir es nicht installieren.
Xenoterracide

Aus irgendeinem Grund listet lshw keine Festplatten auf.
André van Schoubroeck

2
Wenn es nicht als root ausgeführt wird, werden keine Festplatten aufgelistet, es wird jedoch auch kein Fehler ausgegeben.
Volker Siegel

1
Bash: lshw: Befehl nicht gefunden
Antoine

26

hwinfo hilft:

> 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

Laut @Giles ist dies in hohem Maße plattformabhängig. Hier ist ein solches Beispiel.

Ich verwende ein CentOS 5.5-System. Dieses System verfügt über 4 Festplatten und einen 3ware RAID-Controller.

In meinem Fall lshw -class disk, cat /proc/scsi/scsiund parted --listzeigt die RAID - Controller (3ware 9650SE-4LP). Dies zeigt nicht die tatsächlichen Festplatten:

Zeigt nur den 3ware RAID-Controller an, der das / dev / sda-Volume bereitstellt:

# 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

Um die darunter liegenden Festplatten zu sehen, musste ich das Dienstprogramm tw_cli von 3ware installieren und den Controller selbst fragen.

# 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

Da beide „ Kann ich sehen , was HDD ich installiert habe? “ Und „ Wie kann das Fabrikat und Modell meiner Speichergeräte ich feststellen? “ Werden als Duplikate dieser Frage markiert, ich bin überrascht , niemand erwähnt hdparmund smartctl. Ein Blick auf ein paar Maschinen scheint, dass eine von ihnen (wenn es nicht beide sind) oft bereits in Standard-Linux-Distributionen (auch alten) installiert ist.

# 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

Wie üblich finden Sie auf der Manpage weitere Optionen.


Es sollte beachtet werden, dass die smartctlArt und Weise auch auf Cygwin funktioniert, +1! Durchlaufen Sie einfach mögliche Gerätenamen und prüfen Sie, ob smartctldas Laufwerk SMART unterstützt.
Adrian Frühwirth

12

Ich verwende Fedora 14 und bin lshwhier nicht verfügbar (zumindest nicht standardmäßig). In meinem Fall habe ich jedoch den fdisk -lBefehl (als Root-Benutzer) verwendet, um die folgende Ausgabe zu erhalten:

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

Verwenden Sie fdisk -l /dev/sd?oder fdisk -l /dev/hd?, um dm-Geräte nicht einzubringen.
Laebshade

5

Ich fand in anderem SE Antwort , inxiWerkzeug als sehr praktisch:

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

Viele der aufgelisteten Befehle helfen Ihnen bei der Suche nach Datenträgern, die vom System beim Booten bereits erkannt wurden. Bei modernen Laufwerken suchen Sie möglicherweise nach etwas, das Sie bei laufender Maschine eingefügt haben (ich habe es getan). Ich mag den Rat von http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :

Versuchen Sie Folgendes, um die SCSI-Hosts erneut zu scannen (jeder SATA-Port wird als SCSI-Bus angezeigt):

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

... Dann können Sie Ihre Linux-Dienstprogramme wie fdisk verwenden, um Informationen zu den gefundenen Festplatten anzuzeigen.


3
sfdisk -l  

Hier erhalten Sie detaillierte Informationen zu Hardware / physischen Festplatten, auch wenn diese nicht gemountet sind.

Das Programm ist auf allen Linux-Varianten, die ich verwendet habe, vorinstalliert, aber Sie müssen root sein, um es zu verwenden.


2

Das hat bei mir funktioniert:

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

1

sudo gparted wird dies alles in einer GUI anzeigen.

(Sie haben nicht angegeben, dass Sie dies in einem Terminal tun müssen. Ich frage mich, warum diese Lösung fehlte.)


-1

So geben Sie die Anzahl der Blockgeräte ohne ausgefallene Tools oder undeutliche Syntax oder Parameter zurück:

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

In meinen lokalen Testfällen, 47auf meiner größten Kriegsmaschine und 1auf meinem Laptop.


2
Dies ist um 500% auf einem meiner Systeme (Ubuntu 12.04) und um 200% auf einem anderen System.
Anthon

-1

IMHO, lsblk ist der Befehl, der in der Linux-Welt am weitesten verbreitet ist (funktioniert sogar auf Ports wie Raspbian). Ich möchte niemanden beleidigen, aber es gibt einige Befehle, bei denen Sie den Gerätenamen explizit kennen müssen, um ihn nachzuschlagen. Zum Beispiel sollten Sie sich der Existenz von sdc bewusst sein, um smartctl auszuführen. Das heißt, lsblk ist nicht universell - ja, unter Solaris, aber nicht unter HPUX. Vielen Dank.


2
Abgesehen von der Erwähnung, dass dies lsblkauch unter Solaris verfügbar ist, werden hierdurch nicht mehr Informationen hinzugefügt als die beiden Antworten, die am häufigsten gewählt wurden. Dies sollte besser als Kommentar zu unix.stackexchange.com/a/94211/22812
Anthony Geoghegan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.