如何找出 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