solaris系统有没有办法获取磁盘的每一条信息?

solaris系统有没有办法获取磁盘的每一条信息?

我目前正在进行的项目要求我获取系统中安装的所有信息,例如总容量、外形尺寸、SSD 或 HDD、转速、接口类型等。

我搜索了很多,我可以找到执行此操作的任何命令。作为比较,我发现在Windows中,有一些应用程序可以满足我的要求。他们是怎么做到的?

只是出于兴趣,Linux 中也有类似的东西吗?

这两个操作系统主要用于服务器,所以我认为硬件信息应该比电脑中的硬件信息发挥更重要的作用。

答案1

如果您使用的是 Solaris 11,您可能需要查看新diskinfo命令,看看它是否可以满足您的需求。

我知道在 Solaris 8 下,您可以查询内核来获取大部分信息。想想 sysinternals 书中甚至有 C 代码(?——从 10 多年前开始就失去了记忆)书来获取数据。

根据硬件的不同,您也许能够从 ILOM 或 XSCF 获取该数据。您还可以考虑使用 Ops Center。

答案2

问题是磁盘是否愿意共享此信息。如果你调查SCSI协议,它提供的信息不多。与此相关的是三个主要命令:

  • 读取能力可能是不言自明的——它提供了块的数量
  • 询问提供供应商名称、序列号等。
  • 日志感测可能是最有趣的——它提供了许多特定于磁盘的信息页面,例如当前温度、使用情况统计信息等。但是许多页面不受磁盘支持。

这三个命令可以使用较低层命令来发出sg3_utils相应地使用sg_readcapsg_inqsg_logs命令。该软件包由 Linux 提供并随 Solaris 11.2+ 一起提供

但是,如果您研究一下sg_logs可以为物理磁盘提供什么,就会发现并没有那么多:

root@calypso-sparc31:~# sg_logs -p 0x0 /dev/rdsk/c0t5000CCA01248AAE0d0s2
    HITACHI   H106060SDSUN600G  A2B0
Supported log pages:
    0x00        Supported log pages
    0x02        Error counters (write)
    0x03        Error counters (read)
    0x05        Error counters (verify)
    0x06        Non-medium errors
    0x0d        Temperature
    0x0e        Start-stop cycle counter
    0x0f        Application client
    0x10        Self-test results
    0x15        Background scan results (sbc-3)
    0x18        Protocol specific port
    0x1a        Power condition transition
    0x2f        Informational exceptions (SMART)
    0x30        Performance counters (Hitachi)
    0x37        Cache (Seagate), Miscellaneous (Hitachi)

另外,如果磁盘位于 RAID 控制器(如 LSI)或存储服务器后面,您将无法从中得到任何东西。

这仅适用于 SCSI。 ATA 系列协议是完全不同的野兽。

相关内容