Linuxマシンに接続されているすべてのストレージデバイスを見つける


32

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

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

より良い解決策はありますか、これに固執する必要がありますか?



2
おそらくあなたはudiskを使いたいですか?
デロバート

システム上にあるハードディスクを探しているだけではありません。すべてのストレージデバイスを探しています。
ウォーレン

ハードディスクなどを想定していたと思います。実際に何か意味がありますか?同様に、テープドライブ、プリンターなどを含める必要がありますか?
-derobert

2
@derobert-はい、したがって「すべてのストレージデバイス」のタイトル:)
ウォーレン

回答:


47

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

$ 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

他の多くの列を使用できるスクリプトに適しています。


13

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

例えば

lshw -class disk -class tape

この-shortオプションは、簡潔な要約を提供します。例:私の自宅のzfsonlinux server / workstation / experiment-box(残念ながらテープデバイスはありません):

#lshw -class tape -class disk -class storage -short
H / Wパスデバイスクラス説明
================================================== =======
/ 0/100/4/0ストレージJMB362 SATAコントローラー
/ 0/100/5/0 scsi10ストレージJMB362 SATAコントローラー
/0/100/5/0/0.0.0 / dev / sdc disk 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 disk 1TB WDC WD10EACS-00Z
/0/100/b/0/0.3.0 / dev / sdgディスク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ストレージSB7x0 / SB8x0 / SB9x0 SATAコントローラー[AHCIモード]
/ 0/100/11/0 / dev / sda disk 128GB Patriot Torqx 2
/ 0/100/11/1 / dev / sdb disk 1TB ST31000528AS
/ 0/1 scsi11ストレージ     
/0/1/0.0.0 / dev / sdk disk 1967MB SCSI Disk
/0/1/0.0.1 / dev / sdl disk SCSIディスク
/0/1/0.0.2 / dev / sdm disk SCSIディスク
/0/1/0.0.3 / dev / sdn disk SCSIディスク
/ 0/2 scsi66ストレージ     
/0/2/0.0.0 / dev / sdo disk SCSIディスク
/ 0/3 scsi67ストレージ     
/0/3/0.0.0 / dev / sdp disk 4057MB SCSI Disk

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

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

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


5

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

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

システム内のすべてのブロックデバイスがリストされます


5

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

その後、grepawkを使用して、読み取り専用ではないブロックデバイスの名前を印刷できます。

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

これは、以前に大きな展開で答え
ウォーレン

4

lsblk すべてのブロックストレージデバイスが一覧表示されます。

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

lshw -short システム上のすべてのハードウェア(おそらくファイアワイヤを除く)に関する情報を提供します。


3

derobertへのあなたの応答ごとに、あなたがリストのテープドライブと、その何かを探している、場合プリンタ、あなたがに興味がある可能性がありlsdevlsusbそしてlspci


もちろん、それはネットワーク接続ストレージを見つけるのに失敗します:
derobert

1
次に、fdisk -l
コロン

2

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

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

1
それは何をし、それはブロックとテープデバイスクラスをlshwでリストすることと比較してどうですか?
n611x007

2

hwinfoを使用して、すべてのディスクを一覧表示できます(ドキュメント)。

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がありません


0

私はそれを発見したfdisklsblkDebianインストーラ用の仮想端末では利用できません。この場合blkid、ブロックストレージデバイスのUUIDを取得するを使用します。


-1

RAIDデバイスを意味する場合、hdparm smartctlなどを使用して正しい結果を得ることができません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

ディスクのシリアル番号を取得するには

[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

上記の出力では、照会データにシリアル番号が含まれています


-1

以下に、ローカルストレージと共有ストレージを見つけるために使用したコマンドをいくつか示します。

ローカルストレージ用

lsblk | grep -v '^loop'

共有ストレージ用

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

OR

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

6年以上前にすでに提案されている(そして受け入れられている)同じツールを再提案するのはなぜですか?
ウォーレン

OSを変更しているので、今、あなたはたくさんの取得loopおよびtmpfsパーティションを。したがって、上記のようにgrepを使用して出力を消去する方が適切です。
ミアンアスバットアフマド

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.