通过SATA端口号识别硬盘

Dax*_*esh 18 hard-drive sata

如何找出硬盘连接到哪个主板的 SATA 端口号?

我们想建立一个基于SATA物理识别的硬盘拷贝软件。

Eld*_*eek 13

lsscsi --verbose 将提供与此类似的输出:

[0:0:0:0]    disk    ATA      TOSHIBA THNSNH12 HTRA  /dev/sda 
  dir: /sys/bus/scsi/devices/0:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0]
[1:0:0:0]    disk    ATA      WDC WD2003FZEX-0 01.0  /dev/sdb 
  dir: /sys/bus/scsi/devices/1:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0]
[2:0:0:0]    disk    ATA      WDC WD3001FAEX-0 01.0  /dev/sdc 
  dir: /sys/bus/scsi/devices/2:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0]
[3:0:0:0]    cd/dvd  Optiarc  DVD RW AD-7280S  1.01  /dev/sr0 
  dir: /sys/bus/scsi/devices/3:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0]
Run Code Online (Sandbox Code Playgroud)

它提供了ataN可以与系统日志中找到的信息相匹配的端口。如果您试图确定错误来自何处,则很有用。

编辑:如果which lsscsi没有提供输出,您需要安装它:

sudo apt-get install lsscsi
Run Code Online (Sandbox Code Playgroud)

进一步编辑:

这可能不言而喻,但当然您可以过滤输出grep以找到您感兴趣的内容,例如,如果您发现错误,例如ata4: status: { DRDY ERR }您可以简单地发出命令

lsscsi --verbose | grep -P1 -A1 ata4 这会产生这样的输出:

[3:0:0:0]    cd/dvd  Optiarc  DVD RW AD-7280S  1.01  /dev/sr0 
  dir: /sys/bus/scsi/devices/3:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0]
Run Code Online (Sandbox Code Playgroud)

这表明设备(ata4 上的 Optiarc DVD RW AD-7280S)在调用时未准备好。

这应该足以让您找到有问题的设备。


Cub*_*biq 10

sudo lshw -c storage -c disk为您提供有关硬盘驱动器的大量信息。例如:

 *-scsi:1
      physical id: 2
      logical name: scsi2
      capabilities: emulated
    *-disk
         description: ATA Disk
         product: ST31000524AS
         vendor: Seagate
         physical id: 0.0.0
         bus info: scsi@2:0.0.0
         logical name: /dev/sdb
         version: JC4B
         serial: 5VPDESM5
         size: 931GiB (1TB)
         capabilities: gpt-1.00 partitioned partitioned:gpt
         configuration: ansiversion=5 guid=d6e747d2-3e9c-47c2-865b-44f8d7cc5808 sectorsize=512
       *-volume
            description: EXT4 volume
            vendor: Linux
            physical id: 1
            bus info: scsi@2:0.0.0,1
            logical name: /dev/sdb1
            logical name: /mnt/hdd0
            version: 1.0
            serial: 2de34713-f0ee-4a12-9214-21a5431a7b7b
            size: 931GiB
            capabilities: journaled extended_attributes large_files huge_files dir_nlink recover extents ext4 ext2 initialized
            configuration: created=2013-07-20 14:14:09 filesystem=ext4 lastmountpoint=/mnt/hdd0 modified=2013-08-29 21:29:24 mount.fstype=ext4 mount.options=rw,relatime,errors=remount-ro,data=ordered mounted=2013-08-29 21:29:24 state=mounted
Run Code Online (Sandbox Code Playgroud)

我怀疑physical id为您提供了硬盘连接到的物理端口(在这种情况下为 2)。

  • 我的 SATA 端口编号为:0、1、2、3。lshw 报告物理 ID:5、6、7、8。这个答案似乎不正确。 (2认同)
  • @Preexo 试试 `lsscsi --verbose` (2认同)

小智 5

sudo apt-get install lsscsi

tech@tech:~$ lsscsi
[2:0:0:0]    disk    ATA      SAMSUNG HD040GJ/ ZG10  /dev/sda
[3:0:1:0]    disk    ATA      WDC WD3200AAJS-0 03.0  /dev/sdb
[4:0:0:0]    disk    Generic- Compact Flash    1.00  /dev/sdc
[4:0:0:1]    disk    Generic- SM/xD-Picture    1.00  /dev/sdd
[4:0:0:2]    disk    Generic- SD/MMC           1.00  /dev/sde
[4:0:0:3]    disk    Generic- MS/MS-Pro/HG     1.00  /dev/sdf
Run Code Online (Sandbox Code Playgroud)

此实用程序将为您提供 ATA 端口 0 到 3。

  • @Rahim 你的示例输出中 0-3 在哪里?我看到2,3,4 (2认同)