Ermitteln aller an einen Linux-Computer angeschlossenen Speichergeräte


32

Ich muss alle beschreibbaren Speichergeräte finden, die an einen bestimmten Computer angeschlossen sind, unabhängig davon, ob sie aktiviert sind oder nicht.

Die blöde Möglichkeit, dies zu tun, besteht darin, jeden Eintrag zu versuchen /dev, der einem beschreibbaren Gerät entspricht (hd * und sd *).

Gibt es eine bessere Lösung oder soll ich mich an diese halten?


eine alte SO-Frage
warren

2
Vielleicht möchten Sie udisks verwenden?
Derobert

Ich möchte nicht nur herausfinden, welche Festplatten sich in einem System befinden - ich suche nach allen Speichergeräten
warren

Ich denke, wir haben alle von Festplatten und ähnlichem ausgegangen. Meinen Sie eigentlich etwas anderes? Wie sollte es Bandlaufwerke, Drucker usw. einschließen?
Derobert

2
@derobert - ja, daher der Titel "alle Speichergeräte" :)
warren

Antworten:


47

Wenn man sich nur für Blockspeichergeräte interessiert , kann man lsblkaus einem weit verbreiteten Util-Linux-Paket Folgendes verwenden:

$ 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

Es eignet sich gut für die Skripterstellung mit vielen anderen verfügbaren Spalten.


13

Sie können die Ausgabe von lshwGeräten in der diskoder tape-Klasse storagedurchsuchen und Details zu diesen extrahieren (und möglicherweise auch andere - Klasse enthält Details zu Speichercontrollern, SCSI, SATA, SAS usw.).

z.B

lshw -class disk -class tape

Die -shortOption gibt eine schöne kompakte Zusammenfassung. zb auf meinem zfsonlinux server / workstation / experiment-box zuhause (leider keine bandgeräte):

# lshw -class tape -class disk -class storage -short
H / W-Pfad Geräteklassenbeschreibung
================================================ =======
/ 0/100/4/0-Speicher JMB362 SATA-Controller
/ 0/100/5/0 scsi10-Speicher JMB362 SATA-Controller
/0/100/5/0/0.0.0 / dev / sdc festplatte 120 GB Patriot Wildfire
/ 0/100 / b / 0 scsi1-Speicher SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]
/0/100/b/0/0.0.0 / dev / sdd Festplatte 1 TB WDC WD10EARS-00Y
/0/100/b/0/0.1.0 / dev / sde Festplatte 1 TB WDC WD10EACS-00Z
/0/100/b/0/0.2.0 / dev / sdf disk 1 TB WDC WD10EACS-00Z
/0/100/b/0/0.3.0 / dev / sdg disk 1 TB ST31000528AS
/0/100/b/0/0.4.0 / dev / sdh disk 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 disk 1 TB ST31000528AS
/ 0/100/11 scsi2-Speicher SB7x0 / SB8x0 / SB9x0 SATA-Controller [AHCI-Modus]
/ 0/100/11/0 / dev / sda festplatte 128 GB Patriot Torqx 2
/ 0/100/11/1 / dev / sdb disk 1 TB ST31000528AS
/ 0/1 scsi11 Speicher     
/0/1/0.0.0 / dev / sdk Festplatte 1967 MB SCSI-Festplatte
/0/1/0.0.1 / dev / sdl disk SCSI-Festplatte
/0/1/0.0.2 / dev / sdm disk SCSI-Festplatte
/0/1/0.0.3 / dev / sdn disk SCSI-Festplatte
/ 0/2 scsi66-Speicher     
/0/2/0.0.0 / dev / sdo disk SCSI-Festplatte
/ 0/3 scsi67 Speicher     
/0/3/0.0.0 / dev / sdp Festplatte 4057 MB SCSI-Festplatte

Die / 0/1-Geräte sind eigentlich ein USB-Kartenleser (in einen der Steckplätze ist eine 2 GB SD-Karte eingesteckt), und das / 0/2-Gerät ist mein Android-Handy, das nur zum Laden eingesteckt ist. Das 0/3 Gerät ist ein 4GB USB Stick.

lshwKann Klartext-, HTML-, XML- und JSON-Ausgaben erzeugen. Es kann auch Hardwaredetails in ein SQLite-Datenbankformat ausgeben.

Es ist für Debian und die meisten anderen Distributionen gepackt. Die Homepage und Quelle finden Sie unter http://ezix.org/project/wiki/HardwareLiSter


5

Bitte versuchen Sie diesen Befehl

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

Es listet alle Blockgeräte in Ihrem System auf


5

Mit können Sie lsblkalle blockierten Geräte auflisten und angeben, ob jedes Gerät schreibgeschützt ist oder nicht.

Sie können dann grepund verwenden awk, um die Namen von Blockgeräten auszudrucken, die nicht schreibgeschützt sind:

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

Dies ist eine großartige Erweiterung der vorherigen Antwort
warren

4

lsblk listet alle Blockspeichergeräte auf.

fdisk -l listet alle Partitionen auf allen Geräten auf, die in aufgelistet sind /proc/partitions

lshw -short Hier erhalten Sie Informationen zur gesamten Hardware (außer möglicherweise Firewire) des Systems.


3

Wenn, wie pro Ihre Antwort auf Derobert, bist du der Suche nach etwas , dass die Listen Bandlaufwerke und Drucker , die für Sie interessant sein lsdev, lsusbund lspci.


Natürlich findet das keinen an das Netzwerk angeschlossenen Speicher :-(
derobert 04.10.12

1
Dannfdisk -l
Doppelpunkte

2

Sie können den folgenden Befehl versuchen:

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

1
Was macht es und wie ist das im Vergleich zur Auflistung von Block- und Bandgeräteklassen mit lshw?
n611x007

2

Sie können hwinfo verwenden, um alle Datenträger aufzulisten ( Dokumentation ).

hwinfo --block --short gibt einen Überblick:

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 gibt mehr Details für jede Platte an.

Zu Ihrer Information: Auf einigen Linux-Distributionen wie Ubuntus 14.04 und höher ist hwinfo nicht im offiziellen Repository vorhanden .


0

Ich habe das gefunden fdiskund bin lsblkim virtuellen Terminal für den Debian-Installer nicht verfügbar. In diesem Fall verwende ich blkid, was die UUID für Blockspeichergeräte bekommt.


-1

Wenn Sie RAID-Geräte verwenden, können Sie mit hdparm smartctl usw. keine korrekten Ergebnisse erzielen, da diese Tools nach / dev suchen, das Betriebssystem ist, wenn Sie auf Hardware-Ebene wissen möchten, dann benötigen Sie Tools wie megacli Früher habe ich mit Megacli debuggt

    [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

Um die Seriennummer der Festplatte zu erhalten

[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

In der obigen Ausgabe enthalten die Anfragedaten die Seriennummer


-1

Hier sind einige Befehle, mit denen ich nach lokalem und gemeinsam genutztem Speicher gesucht habe.

Zur lokalen Aufbewahrung

lsblk | grep -v '^loop'

Für gemeinsam genutzten Speicher

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

OR

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

Warum sollten Sie dieselben Tools erneut vorschlagen, die bereits vor mehr als 6 Jahren vorgeschlagen (und akzeptiert) wurden?
Warren

Weil sich das Betriebssystem geändert hat und Sie jetzt eine Menge loopund tmpfsPartition bekommen. Daher ist es besser, die Ausgabe mit grep wie oben zu bereinigen.
Mian Asbat Ahmad

-3

Dies listet alle Ihre Festplatten und gemounteten Laufwerke auf:

$ df -h

5
Tatsächlich listet das Dateisysteme auf…
HalosGhost
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.