web-dev-qa-db-ja.com

Linuxマシンに接続されているすべてのストレージデバイスの検索

マウントされているかどうかに関係なく、特定のマシンに接続されているすべての書き込み可能なストレージデバイスを見つける必要があります。

これを行う方法は、書き込み可能なデバイス(hd *およびsd *)に対応する/devのすべてのエントリを試すことです。

より良い解決策はありますか、それともこれに固執するべきですか?

34
warren

blockストレージデバイスのみに関心がある場合は、広く利用可能なutil-linuxパッケージのlsblkを使用できます。

$ 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

他の多くの列が利用可能なスクリプトを作成するのに適しています。

51
K3---rnc

lshwの出力をトロールし、diskまたはtapeクラスのデバイスに関する詳細を抽出することができます(他のクラス-storageクラスは、ストレージコントローラ、scsi、sata、sasなど)。

例えば.

lshw -class disk -class tape

-shortオプションは、ニースのコンパクトな要約を提供します。例えば私の家のzfsonlinux server/workstation/experiment-box(残念ながらテープデバイスはありません):

#lshw -class tape -class disk -class storage -short 
 H/W path Device Class Description 
 =============== ========================================== 
/0/100/4/0ストレージJMB362 SATAコントローラー
/0/100/5/0 scsi10ストレージJMB362 SATAコントローラー
/0/100/5/0/0.0.0/dev/sdcディスク120GB Patriot Wildfire 
/0/100/b/0 scsi1ストレージSAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] 
/0/100/b/0/0.0.0/dev/sddディスク1TB WDC WD10EARS-00Y 
/0/100/b/0/0.1.0/dev/sdeディスク1TB WDC WD10EACS-00Z 
/0/100/b/0/0.2。 0/dev/sdfディスク1TB WDC WD10EACS-00Z 
/0/100/b/0/0.3.0/dev/sdgディスク1TB ST31000528AS 
/0/100/b/0/0.4 .0/dev/sdhディスク1TB ST31000528AS 
/0/100/b/0/0.5.0/dev/sdiディスク1TB ST31000528AS 
/0/100/b/0/0.6.0/dev/sdjディスク1TB ST31000528AS 
/0/100/11 scsi2 storage SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] 
/0/100/11/0/dev/sda disk 128GB Patriot Torqx 2 
/0/100/11/1/dev/sdb disk 1TB ST31000528AS 
/0/1 scsi11 storage 
/0/1/0.0.0/dev/sdk disk 1967MB SCSI Disk 
/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 SCSI Disk 
/0/2 scsi66 storage 
/0/2/0.0.0/dev/sdo disk SCSI Disk 
/0/3 scsi67ストレージ
/0/3/0.0.0/dev/sdp disk 4057MB SCSI Disk 
 

/ 0/1デバイスは実際にはUSBカードリーダーであり(2GBのSDカードがスロットの1つに接続されています)、/ 0/2デバイスはmy Android接続された電話です) 0/3デバイスは4GB USBフラッシュドライブです。

lshwは、プレーンテキスト、html、xml、およびjson出力を生成できます。ハードウェアの詳細をsqliteデータベース形式にダンプすることもできます。

これは、debianおよびその他のほとんどのディストリビューション用にパッケージ化されています。ホームページとソースは http://ezix.org/project/wiki/HardwareLiSter にあります。

13
cas

lsblkを使用して、すべてのブロックデバイスと、各デバイスが読み取り専用かどうかを一覧表示できます。

次に、grepおよびawkを使用して、読み取り専用ではないブロックデバイスの名前を出力できます。

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

このコマンドを試してください

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

システム内のすべてのブロックデバイスが一覧表示されます

5
Serge

lsblkは、すべてのブロックストレージデバイスを一覧表示します。

fdisk -lは、/proc/partitionsにリストされているすべてのデバイスのすべてのパーティションをリストします

lshw -shortは、システム上のすべてのハードウェア(Firewireを除く)に関する情報を提供します。

4
Simon Woodside

Derobertへの応答に従って、テープドライブとprintersをリストするものを探している場合、lsdevlsusb、およびlspciに興味がある可能性があります。

3
colons

hwinfo を使用して、すべてのディスクをリストできます( documentation )。

hwinfo --block --shortは概要を示します。

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は、各ディスクの詳細を示します。

参考:Ubuntu 14.04以降などの一部のLinuxディストリビューションでは、 hwinfoは公式リポジトリに存在しません

2

次のコマンドを試すことができます:

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

fdiskおよびlsblkは、Debianインストーラーの仮想端末では使用できないことがわかりました。この場合、ブロックストレージデバイスのUUIDを取得するblkidを使用します。

0
ryanjdillon