GNU/Linux:如何检测硬盘映射?

GNU/Linux:如何检测硬盘映射?

假设您有两个硬盘:

  • 一个内部的(启动 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) 或制造商标识 ( 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

这本身可能足以识别哪一个是您的外部设备,哪一个是您的内部设备。您可以查看 的输出dmesg,对于 USB 设备,该输出将包括如下内容:

[ 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

我认为吉尔斯的答案是最好的,但我添加这个答案只是为了完整性。

hdparm -i /dev/sda

这将向您显示控制器驱动程序从驱动器获取的一些基本信息(包括型号和序列号)。如果您具有/dev设备的读取访问权限(例如通过组权限),则此命令不需要 root 。

hdparm -I /dev/sda

这将向您显示有关驱动器的大量高级信息(型号、序列号以及所有可能的信息)。此命令需要 root 权限。

相关内容