Trouver tous les périphériques de stockage connectés à une machine Linux


32

J'ai besoin de trouver tous les périphériques de stockage inscriptibles attachés à une machine donnée, qu'ils soient montés ou non.

La meilleure façon de procéder consiste à essayer chaque entrée /devcorrespondant à un périphérique inscriptible (hd * et sd *).

Existe-t-il une meilleure solution ou devrais-je m'en tenir à celle-ci?


relancer une vieille question SO
Warren

2
Peut-être que vous voulez utiliser des udisks?
derobert

Je ne veux pas simplement savoir quels disques durs se trouvent sur un système - je recherche tous les périphériques de stockage
warren

Je pense que nous avons tous supposé des disques durs et similaires. Voulez-vous réellement dire autre chose? Par exemple, devrait-il inclure les lecteurs de bande, les imprimantes, etc.?
derobert

2
@derobert - oui, d'où le titre de "tous les périphériques de stockage" :)
Warren

Réponses:


47

Si l'on s'intéresse uniquement aux périphériques de stockage en mode bloc , on peut utiliser le lsblkpaquet util-linux largement disponible:

$ 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

Il se prête bien aux scripts avec de nombreuses autres colonnes disponibles.


13

Vous pouvez parcourir la sortie de lshwet extraire des détails sur les périphériques de la classe diskor tape(et peut-être d'autres - la storageclasse vous donne des détails sur les contrôleurs de stockage, scsi, sata, sas, etc.).

par exemple

lshw -class disk -class tape

L' -shortoption donne un bon résumé compact. par exemple sur mon serveur / poste de travail / poste de test zfsonlinux (pas de lecteur de bande malheureusement):

# lshw -class tape -class disk -class storage -short
Chemin d'accès H / W Description de la classe de périphérique
=============================================== =======
/ 0/100/4/0 contrôleur JMB362 SATA de stockage
/ 0/100/5/0 Contrôleur SATA JMB362 de stockage scsi10
/0/100/5/0/0.0.0 / dev / sdc disque 120GB Patriot Wildfire
/ 0/100 / b / 0 stockage scsi1 SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]
/0/100/b/0/0.0.0 / dev / sdd disque 1 To WDC WD10EARS-00Y
/0/100/b/0/0.1.0 / dev / sde disque 1 To WDC WD10EACS-00Z
/0/100/b/0/0.2.0 / dev / sdf disque 1 To WDC WD10EACS-00Z
/0/100/b/0/0.3.0 / dev / sdg disque 1 To ST31000528AS
/0/100/b/0/0.4.0 / dev / sdh disque 1 To ST31000528AS
/0/100/b/0/0.5.0 / dev / sdi disque 1 To ST31000528AS
/0/100/b/0/0.6.0 / dev / sdj disque 1 To ST31000528AS
/ 0/100/11 Contrôleur SATA SB7x0 / SB8x0 / SB9x0 de stockage scsi2 [mode AHCI]
/ 0/100/11/0 / dev / sda disque 128Go Patriot Torqx 2
/ 0/100/11/1 / dev / sdb disque 1 To ST31000528AS
/ 0/1 stockage scsi11     
/0/1/0.0.0 / dev / sdk disk Disque SCSI de 1967 Mo
/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 Disque SCSI
/ 0/2 scsi66 stockage     
/0/2/0.0.0 / dev / sdo disk Disque SCSI
/ 0/3 scsi67 stockage     
/0/3/0.0.0 / dev / sdp disk 4057MB SCSI Disk

Les périphériques / 0/1 sont en fait un lecteur de carte USB (une carte SD de 2 Go est connectée à l'un des logements) et le périphérique / 0/2 est mon téléphone Android branché pour le chargement uniquement. Le périphérique 0/3 est un lecteur flash USB de 4 Go.

lshwpeut produire du texte brut, HTML, XML et json. Il peut également vider les détails du matériel dans un format de base de données sqlite.

Il est emballé pour debian et la plupart des autres distributions. La page d'accueil et la source se trouvent à l' adresse http://ezix.org/project/wiki/HardwareLiSter.


5

S'il vous plaît, essayez cette commande

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

Il vous listera tous les dispositifs de blocage de votre système


5

Vous pouvez utiliser lsblkpour répertorier tous les périphériques en mode bloc, en indiquant si chaque périphérique est en lecture seule ou non.

Vous pouvez ensuite utiliser grepet awkimprimer les noms des périphériques en mode bloc qui ne sont pas en lecture seule:

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

c'est une grande expansion par rapport à la réponse
Warren

4

lsblk listera tous les périphériques de stockage en bloc.

fdisk -l listera toutes les partitions de tous les périphériques listés dans /proc/partitions

lshw -short vous donnera des informations sur tout le matériel (sauf peut-être Firewire) sur le système.


3

Si, conformément à votre réponse à derobert, vous recherchez quelque chose qui répertorie les lecteurs de bande et les imprimantes , vous pouvez être intéressé par lsdev, lsusbet lspci.


Bien sûr, cela ne
réussira

1
Puisfdisk -l
colons

2

Vous pouvez essayer la commande suivante:

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

1
que fait-il et comment cela se compare-t-il à la liste de classes de blocs et d'unités de bande avec lshw?
n611x007

2

Vous pouvez utiliser hwinfo pour lister tous les disques ( documentation ).

hwinfo --block --short donne un aperçu:

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 donne plus de détails pour chaque disque.

Pour votre information: sur certaines distributions Linux telles que Ubuntus 14.04 et supérieure, hwinfo n’est pas présent dans le référentiel officiel .


0

J'ai trouvé cela fdisket je ne suis lsblkpas disponible dans le terminal virtuel pour l'installateur Debian. Dans ce cas, je l'utilise blkid, qui obtient l'UUID pour les périphériques de stockage en mode bloc.


-1

Si vous voulez parler de périphériques RAID, vous ne pourrez pas obtenir un résultat correct à l'aide de hdparm smartctl, etc. je déboguais avec 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

Pour obtenir le numéro de série du disque

[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

Dans la sortie ci-dessus, les données d'interrogation contiennent le numéro de série


-1

Voici le couple de commandes que j'ai utilisé pour trouver un stockage local et partagé.

Pour le stockage local

lsblk | grep -v '^loop'

Pour le stockage partagé

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

OR

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

Pourquoi republier les mêmes outils déjà suggérés (et acceptés) il y a plus de 6 ans?
Warren

Parce que le système d' exploitation a changé et maintenant vous obtenez beaucoup de loopet tmpfspartition. Il est donc préférable de nettoyer la sortie en utilisant grep comme ci-dessus.
Mian Asbat Ahmad

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.