Trovare tutti i dispositivi di archiviazione collegati a una macchina Linux


32

Ho bisogno di trovare tutti i dispositivi di archiviazione scrivibili collegati a una determinata macchina, indipendentemente dal fatto che siano montati o meno.

Il modo dopey per farlo sarebbe quello di provare ogni voce /devche corrisponde a un dispositivo scrivibile (hd * e sd *).

C'è una soluzione migliore o dovrei attenermi a questa?


rispondere a una vecchia domanda SO
Warren,

2
Forse vuoi usare gli udisk?
derobert,

Non voglio semplicemente trovare quali dischi rigidi sono su un sistema - cerco tutti i dispositivi di archiviazione
warren,

Penso che tutti abbiamo assunto dischi rigidi e simili. Intendi davvero qualcos'altro? Ad esempio, dovrebbe includere unità a nastro, stampanti, ecc.?
derobert,

2
@derobert - sì, da qui il titolo di "tutti i dispositivi di archiviazione" :)
warren,

Risposte:


47

Se uno è interessato solo ai dispositivi di archiviazione a blocchi , è possibile utilizzare lsblkdal pacchetto util-linux ampiamente disponibile:

$ 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

Si presta bene allo scripting con molte altre colonne disponibili.


13

È possibile scorrere l'output di lshwed estrarre i dettagli sui dispositivi nella classe disko tape(e forse altri - la storageclasse fornisce dettagli su controller di archiviazione, scsi, sata, sas, ecc.).

per esempio

lshw -class disk -class tape

L' -shortopzione offre un bel riepilogo compatto. ad es. sul mio server / workstation / scatola di esperimenti zfsonlinux (purtroppo nessun dispositivo a nastro):

# lshw -class tape -class disk -class storage -short
Percorso H / W Descrizione classe dispositivo
================================================== =======
/ 0/100/4/0 archiviazione controller SATA JMB362
/ 0/100/5/0 controller scsi10 di archiviazione JMB362 SATA
/0/100/5/0/0.0.0 / dev / sdc disk 120GB Patriot Wildfire
/ 0/100 / b / 0 archiviazione scsi1 SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]
/0/100/b/0/0.0.0 / dev / sdd disk 1TB WDC WD10EARS-00Y
/0/100/b/0/0.1.0 / dev / sde disk 1TB WDC WD10EACS-00Z
/0/100/b/0/0.2.0 / dev / sdf disk 1TB WDC WD10EACS-00Z
/0/100/b/0/0.3.0 / dev / sdg disk 1TB ST31000528AS
/0/100/b/0/0.4.0 / dev / sdh disk 1TB ST31000528AS
/0/100/b/0/0.5.0 / dev / sdi disk 1TB ST31000528AS
/0/100/b/0/0.6.0 / dev / sdj disk 1TB ST31000528AS
/ 0/100/11 scsi2 storage SB7x0 / SB8x0 / SB9x0 Controller SATA [modalità AHCI]
/ 0/100/11/0 / dev / sda disk 128GB Patriot Torqx 2
/ 0/100/11/1 / dev / sdb disk 1TB ST31000528AS
/ 0/1 memoria scsi11     
/0/1/0.0.0 / dev / sdk disk Disco SCSI 1967 MB
/0/1/0.0.1 / dev / sdl disk SCSI Disk
/0/1/0.0.2 / dev / sdm disk SCSI Disk
/0/1/0.0.3 / dev / sdn disk Disco SCSI
/ 0/2 memoria scsi66     
/0/2/0.0.0 / dev / sdo disk Disco SCSI
/ 0/3 archiviazione scsi67     
/0/3/0.0.0 / dev / sdp disk Disco SCSI da 4057 MB

I dispositivi / 0/1 sono in realtà un lettore di schede USB (c'è una scheda SD da 2 GB collegata a uno degli slot) e il dispositivo / 0/2 è il mio telefono Android collegato solo per la ricarica. Il dispositivo 0/3 è un'unità flash USB da 4 GB.

lshwpuò produrre output in formato testo, html, xml e json. Può anche scaricare i dettagli hardware in un formato di database sqlite.

È confezionato per debian e la maggior parte delle altre distro. La home page e la fonte sono su http://ezix.org/project/wiki/HardwareLiSter


5

Per favore, prova questo comando

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

Ti elencherà tutti i dispositivi a blocchi nel tuo sistema


5

È possibile utilizzare lsblkper elencare tutti i dispositivi a blocchi, insieme a se ogni dispositivo è di sola lettura.

È quindi possibile utilizzare grepe awkstampare i nomi dei dispositivi a blocchi che non sono di sola lettura:

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

questa è una grande espansione della risposta
Warren,

4

lsblk elencherà tutti i dispositivi di archiviazione a blocchi.

fdisk -l elencherà tutte le partizioni su tutti i dispositivi elencati in /proc/partitions

lshw -short ti darà informazioni su tutto l'hardware (tranne forse firewire) sul sistema.


3

Se, secondo la tua risposta a derobert, stai cercando qualcosa che elenca le unità a nastro e le stampanti , potresti essere interessato a lsdev, lsusbe lspci.


Ovviamente, questo non
riuscirà

1
Quindifdisk -l
due punti

2

Puoi provare il seguente comando:

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

1
cosa fa e come si confronta con l'elenco delle classi di dispositivi a blocchi e nastri con lshw?
n611x007

2

È possibile utilizzare hwinfo per elencare tutti i dischi ( documentazione ).

hwinfo --block --short offre una panoramica:

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 fornisce maggiori dettagli per ciascun disco.

Cordiali saluti: su alcune distribuzioni Linux come Ubuntus 14.04 e successive, hwinfo non è presente nel repository ufficiale .


0

L'ho trovato fdiske lsblknon sono disponibili nel terminale virtuale per il programma di installazione Debian. In questo caso lo uso blkid, che ottiene l'UUID per i dispositivi di archiviazione a blocchi.


-1

Se intendi i dispositivi RAID, non saresti in grado di ottenere risultati corretti utilizzando hdparm smartctl ecc. Perché questo tipo di strumenti cerca / dev che è a livello di sistema operativo se vuoi sapere a livello di hardware, allora devi avere strumenti come megacli ero solito eseguire il debug con megacli

    [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

Per ottenere il numero seriale del disco

[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

Nell'output sopra i dati di richiesta contengono il numero di serie


-1

Ecco i due comandi che ho usato per trovare l'archiviazione locale e condivisa.

Per l'archiviazione locale

lsblk | grep -v '^loop'

Per l'archiviazione condivisa

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

OR

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

Perché ricollegare gli stessi strumenti già suggeriti (e accettati) 6+ anni fa?
Warren,

Perché il sistema operativo è cambiato e ora si ottiene molto loope tmpfspartizione. Quindi è meglio pulire l'output usando grep come sopra.
Mian Asbat Ahmad,

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.