GNU/Linux: ハードディスクマッピングを検出する方法は?

GNU/Linux: ハードディスクマッピングを検出する方法は?

2台のハードドライブがあるとしましょう。

  • 内部(GNU / Linux(Debian)起動);

  • 外部(USB)。

fdisk -l/dev/sdaどちらも検出しますが、どちらが何であるかはわかりません/dev/sdblsusbは外部USBデバイスが接続されていることを示しますが、または/dev/sdaにマッピングされているかどうかはわかりません/dev/sdb

システムからこの情報を取得するにはどうすればよいですか?

答え1

ls -l /sys/class/block/sd?

これらのsd?エントリは、ディスクがコンピュータに接続される方法を示すシンボリックリンクです。/usb内部にはUSBディスクがあります。

udevadm info -a -n sda

カーネルが直接取得できるすべての識別情報を表示しますsda。たとえば、IntelコントローラのSATAディスクの場合から、SUBSYSTEMS=="scsi"USBディスクの場合から直接接続する方法について詳しく学びます。SUBSYSTEMS=="pci", DRIVERS=="ahci"SUBSYSTEMS=="scsi"SUBSYSTEMS=="usb", DRIVERS=="usb-storage"

ls -l /dev/disk/by-*

では、/dev/disk/by-*ハードウェア接続(by-path)、グローバルに一意の識別子(by-uuid)、手動で選択したラベル(by-label)、または製造元ID()に基づいてby-idディスクを見つけることができます。

答え2

私のDebianコンピュータ(現在Lubuntu)では、私はよく使用します。testdisk -l (読む:「小さいL減算」)この目的のために。すべてのディストリビューションtestdiskにプレインストールされているわけではありませんが、よく知られているリカバリツールです。ほとんどのディストリビューションにはこのツールが必要です。

私がしばらく前に学んだもう一つの素晴らしいツールは次のとおりですlsblk

$ lsblk -d -io KNAME,TYPE,SIZE,MODEL

またはHDDのみを表示したい場合:

$ lsblk -d -io KNAME,TYPE,SIZE,MODEL | grep 'sd\w'

grep(\ wは必須ではありませんが、デフォルト設定でエイリアスされたディストリビューションの醜い「半色」出力を防ぎますgrep --color=auto。)

また、この小さな目的のために合理化することを決定した(実際には非常に複雑な)スクリプトを使用することもできます。

https://serverfault.com/questions/64219/how-to-know-which-block-device-maps-to-which-physical-drive/548795#548795

答え3

最善の答えはわかりませんが、以下はいくつかのアイデアです。

/sys/class/block/sdX/device/modelデバイスが報告したメーカー/モデル情報を確認できます。たとえば、

cat /sys/class/block/sda/device/model 
SAMSUNG HD161GJ

これだけで、どのデバイスが外部デバイスであり、どのデバイスが内部デバイスであるかを識別するのに十分です。dmesgUSBデバイスの場合は、以下を含む出力を見ることができます。

[ 2073.412999] scsi12 : usb-storage 2-1.8:1.0

これは、SCSIバス12​​をUSBストレージバスとして識別する。その後、バス12でSCSIデバイスを見つけることができる。

# dmesg | grep scsi12
[ 2074.488651] sd 12:0:0:0: Attached scsi generic sg6 type 0
[ 2076.592154] sd 12:0:0:0: [sdf] 30481152 512-byte logical blocks: (15.6 GB/14.5 GiB)
[ 2076.592639] sd 12:0:0:0: [sdf] Write Protect is off
[ 2076.592645] sd 12:0:0:0: [sdf] Mode Sense: 23 00 00 00
[ 2076.593142] sd 12:0:0:0: [sdf] No Caching mode page present
[ 2076.593147] sd 12:0:0:0: [sdf] Assuming drive cache: write through
[ 2076.596270] sd 12:0:0:0: [sdf] No Caching mode page present
[ 2076.596276] sd 12:0:0:0: [sdf] Assuming drive cache: write through
[ 2076.619078] sd 12:0:0:0: [sdf] No Caching mode page present
[ 2076.619084] sd 12:0:0:0: [sdf] Assuming drive cache: write through
[ 2076.619088] sd 12:0:0:0: [sdf] Attached SCSI removable disk

答え4

私はGilesの答えが最高だと思いますが、完全性のためにこの答えを追加しています。

hdparm -i /dev/sda

これにより、コントローラドライバがドライブから取得した基本情報(モデルとシリアル番号を含む)がいくつか表示されます。/devデバイスへの読み取りアクセス権(グループ権限など)がある場合、このコマンドにはルートは必要ありません。

hdparm -I /dev/sda

これにより、ドライブに関する多くの高度な情報(モデル番号、シリアル番号、可能なすべての情報)が表示されます。このコマンドにはroot権限が必要です。

関連情報