マウントされているかどうかにかかわらず、特定のマシンに接続されているすべての書き込み可能なストレージデバイスを見つける必要があります。
これを行う/dev
には、書き込み可能なデバイス(hd *およびsd *)に対応するすべてのエントリを試してみることです。
より良い解決策はありますか、これに固執する必要がありますか?
マウントされているかどうかにかかわらず、特定のマシンに接続されているすべての書き込み可能なストレージデバイスを見つける必要があります。
これを行う/dev
には、書き込み可能なデバイス(hd *およびsd *)に対応するすべてのエントリを試してみることです。
より良い解決策はありますか、これに固執する必要がありますか?
回答:
ブロックストレージデバイスのみに関心がある場合は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
他の多くの列を使用できるスクリプトに適しています。
またはクラスlshw
内のデバイスの出力をトロールし、詳細を抽出することができます(他のクラス- クラスはストレージコントローラー、scsi、sata、sasなどの詳細を提供します)。disk
tape
storage
例えば
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にあります
lsblk
すべてのブロックストレージデバイスが一覧表示されます。
fdisk -l
にリストされているすべてのデバイス上のすべてのパーティションをリストします /proc/partitions
lshw -short
システム上のすべてのハードウェア(おそらくファイアワイヤを除く)に関する情報を提供します。
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がありません。
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
上記の出力では、照会データにシリアル番号が含まれています
以下に、ローカルストレージと共有ストレージを見つけるために使用したコマンドをいくつか示します。
ローカルストレージ用
lsblk | grep -v '^loop'
共有ストレージ用
findmnt -D | grep -v '^tmpfs' | grep -v '^/'
OR
df -kh | grep -v '^tmpfs' | grep -v '^/'
loop
およびtmpfs
パーティションを。したがって、上記のようにgrepを使用して出力を消去する方が適切です。