我有一台运行 Linux(具体来说是 CentOS 6.3)的物理机,我想知道当前有多少个 SATA 端口未使用(即没有插入任何设备)。当然,我可以直接打开机器,但假设我没有物理访问权限。是否有命令可以用来显示哪些 SATA 端口未使用?
我已经知道该lshw
命令,但据我所知,它只列出已使用的 SATA 端口,而不是可用的端口。
答案1
是否有一个命令可以用来显示哪些 SATA 端口未使用?
不,但您可以反过来做。您可以列出正在使用的端口。然后(在手册中)查找主板上有多少个端口,减去已使用的端口数,然后得到剩余的端口数。
假设每个 SATA 连接器连接了一个 SATA 驱动器(例如没有端口倍增器)。
有多种方法可以实现此目的。
如果所有 SATA 控制器都已加载驱动程序(相当正常),那么我发现fdisk -l
列出所有磁盘是最简单的方法。
如果你不再使用 fdisk(它已被更现代的变体(如 gpart)取代),那么你可以阅读启动日志。谷歌搜索显示 CentOS 可以通过以下方式获得它消息,但您也可以直接读取日志文件。可能位于 /var/log/dmesg.log、/var/run/dmesg.boot 或 /var/log/boot 中。(对于不使用 CentOS 的人来说,这有点通用)。
然后是lspci
。这将列出所有 PCI 和 PCI-e 设备,包括 SATA 控制器。添加-v
以获得更易读的输出。
或者使用dmidecode
。这会向 BIOS 询问信息。如果此命令的输出看起来太多,请使用选项限制它-t NR
。
答案2
已经三年了,但如果有人通过谷歌来找我,那么请这样做:如果你启用了 EPEL,那么请安装安全接口,它主要提供有关连接设备的信息,但它的 -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
更新:忽略这一点,不安装任何东西:
dmesg | grep 'SATA link down'
将显示未使用的端口。