sudo apt-get 安装 lsscsi

sudo apt-get 安装 lsscsi

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

我们希望构建一个基于SATA物理识别的硬盘复制软件。

答案1

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]

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

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

sudo apt-get install lsscsi

进一步编辑:

这可能不言而喻,但当然你可以过滤输出来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]

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

这些信息应该足以帮助您找到有问题的设备。

答案2

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

我怀疑physical id给你提供了 HDD 所连接的物理端口(在本例中是 2)。

答案3

sudo apt-get 安装 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

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

答案4

这个问题可能已经太晚了,但 10 年后我也有同样的需求:

我总是遇到一个问题,那就是如何快速找出桌面上的哪个磁盘对应哪个端口。因此,考虑到磁盘侧的电缆已贴上标签(从主板上很难找到),我编写了一个快速而粗糙的脚本,它使用以下/dev/disk/by-path信息:

#!/usr/bin/env bash
#
# output sata/disk relationship.

find /dev/disk/by-path/ -regex '^.*ata-[0-9]+$' -print |
    while read -r file; do
        sata=$(echo "$file" | sed -n 's|.*\(ata\)-\([0-9]*\).*|s\1\2|p')
        drive=$(readlink -f "$file")
        printf "%s %s \n" "$sata" "${drive##*/}"
    done | sort
exit 0

输出示例:

$ sata2disk.sh 
sata1 sda 
sata2 sdb 

相关内容