我有一个应用程序需要从硬盘读取信息,比如串行模型等。
当然,驱动器是 SAS、SATA 还是 FC 驱动器很重要。
有没有一种可靠的方法可以识别连接的驱动器使用的协议(protocol)?通过操作系统命令或检查一些日志或查询设备?
我不想使用 sysfs 结构。我想知道操作系统如何知道它是 ATA、SCSI 还是任何类型的磁盘。
最佳答案
正如您在对 user3588161 的回答
的评论中提到的,您将 SATA 和 SAS 磁盘连接到同一个 SAS Controller ,所以我建议使用 smartctl
命令!
smartctl 命令在 Linux 和类 Unix 操作系统下充当 SMART 磁盘的控制和监视实用程序。键入以下命令以获取有关/dev/sda(SATA 磁盘)的信息:
# smartctl -d ata -a -i /dev/sda
对于 SAS 磁盘,使用以下语法之一:
# smartctl -d scsi --all /dev/sgX
# smartctl -d scsi --all /dev/sg1
# smartctl -d scsi --all /dev/sg1 -H
我想所有的信息都以某种方式与这个位置相关:-
/sys/class/scsi_device/?:?:?:?/device/model
我建议您也尝试这样做以检查它呈现的输出。
cat /sys/class/scsi_device/0\:0\:0\:0/device/{model,vendor}
(零旁边的反斜杠用于转义特殊字符 :
。)
此外,我建议您访问这两个链接,以获取更多信息或详细信息,例如示例输出等:-
关于c - 如何识别硬盘使用的协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25185410/