列出 Linux 上未使用的 SATA 端口

col*_*dot 21 linux sata

我有一台运行 Linux(特别是 CentOS 6.3)的物理机,我想知道有多少 SATA 端口当前未使用(即没有插入任何内容)。当然,我可以直接打开机器,但假设我没有物理访问权限。有没有我可以用来显示哪些 SATA 端口未使用的命令?

我已经知道这个lshw命令,但据我所知,它只列出了使用过的 SATA 端口,而不是免费的。

kri*_*igl 29

已经三年了,但如果有人通过谷歌来,这里是:如果你启用了 EPEL,然后安装lsscsi,它主要提供有关连接设备的信息,但它的 -H 参数是你需要的:

--hosts|-H 列出 scsi 主机而不是 scsi 设备

与其他输出模式相比,您有不同之处:

root@server1:~# lsscsi -H
[0]    ata_piix  
[1]    ata_piix  
[2]    ata_piix  
[3]    ata_piix  
[4]    usb-storage
root@server1:~# lsscsi -g
[0:0:0:0]    disk    ATA      WDC WD2004FBYZ-0 RR03  /dev/sda   /dev/sg0
[0:0:1:0]    disk    ATA      WDC WD2004FBYZ-0 RR04  /dev/sdb   /dev/sg1
[1:0:0:0]    disk    ATA      WDC WD2004FBYZ-0 RR03  /dev/sdc   /dev/sg2
[4:0:0:0]    disk    Seagate  Backup+  Desk    0342  /dev/sdd   /dev/sg3
Run Code Online (Sandbox Code Playgroud)

更新:忽略这一点,不安装任何东西:

dmesg | grep 'SATA link down'
Run Code Online (Sandbox Code Playgroud)

将显示未使用的端口。

  • 此外,如果您想列出 UP 和 DOWN SATA 链接,请使用:`dmesg | grep 'SATA link'` - 或者如果你想计算端口数:`dmesg | grep 'SATA 链接' | 厕所-l` (2认同)

Hen*_*nes 7

有没有我可以用来显示哪些 SATA 端口未使用的命令?

不,但你可以反过来做。您可以列出正在使用的端口。然后查找(在手册中)主板上有多少个端口,减去已经在使用的端口数并获得剩余端口数。

这假设每个 SATA 连接器都连接了一个 SATA 驱动器(例如,没有端口倍增器)。


有几种方法可以做到这一点。

如果所有 SATA 控制器都加载了驱动程序(相当正常),那么我发现fdisk -l列出所有磁盘是最简单的方法。

如果您不再拥有 fdisk(它正在被我更现代的变体替代,例如 gpart),那么您可以阅读引导日志。一些谷歌搜索显示 CentOS 可以通过dmesg获得此功能,但您也可以直接读取日志文件。可能在 /var/log/dmesg.log、/var/run/dmesg.boot 或 /var/log/boot 中。(对于不使用 CentOS 的人来说,这有点通用)。

然后是lspci。这列出了所有 PCI 和 PCI-e 设备,包括 SATA 控制器。添加-v以获得更易于阅读的输出。

或使用dmidecode. 这会向 BIOS 询问信息。如果此命令的输出似乎过多,请使用-t NR选项对其进行限制。