我的同事之前已经准备好了 smartctl 查询。
smartctl -d ata -a {disk_name} | awk '/Reallocated_Sector_Ct/{print $10}'
我尝试使用查询,但它什么都没打印。smartctl -d ata -a {disk_name}
查询输出没有Reallocated_Sector_Ct
字段。如何知道这个字段不存在,因为磁盘不应该有这个字段,或者我进行了错误的查询?
答案1
如何知道这个字段是否不存在,因为磁盘不应该有这个字段或者我进行了错误的查询?
如果不知道要监视哪种“磁盘”,就很难知道您是否进行了错误的查询。
有几种常见的情况:
磁盘不支持聪明的完全没有。
在这种情况下,我希望这smartctl
会给你一个适当的警告和/或错误消息。
“磁盘”不支持 SMART 的几个常见原因:您的主机是一台虚拟机,“磁盘”是虚拟机管理程序提供的虚拟磁盘,虚拟驱动程序无法模拟(无关紧要)聪明的数据
该磁盘不是真实磁盘,而是由(适当的硬件) RAID 控制器管理的逻辑驱动器(这需要使用特定于供应商的方法来监控组成虚拟驱动器的底层真实磁盘的运行状况)
磁盘确实支持聪明的:
但
Reallocated_Sector_Ct
磁盘固件根本就不提供。
例如NVME 驱动器具有特定的 SMART 属性用于追踪闲置产能,它与 Reallocated_Sector_Ct 相同但也不同smartctl
没有正确检测设备类型,您需要给它一个提示,以使用带有-d TYPE, --device=TYPE
标志的正确“驱动程序”。
或许还有其他。
根据您使用的评论smartctl -d cciss,0 /dev/sda
:
cciss,N - [FreeBSD and Linux only] the device consists of one or more
SCSI/SAS or SATA disks connected to a cciss RAID controller.
The non-negative integer N (in the range from 0 to 15
inclusive) denotes which disk on the controller is monitored.
To look at disks behind HP Smart Array controllers, use syntax such as:
smartctl -a -d cciss,0 /dev/cciss/c0d0 (cciss driver under Linux)
This will give the smart information about the first physical
disk drive (0) connect to the controller at /dev/cciss/c0d0 .
(Disk drive numbering is 0 based)
smartctl -a -d cciss,1 /dev/sg2 (hpsa or hpahcisr drivers under Linux)
This will give the SMART information about the second physical
disk drive (1) connected to the controller at /dev/sg0
如果这不起作用,那我就认为您可能混淆了两件事:您正在处理的/dev/sda
可能是逻辑驱动器,而不是连接到 HP Smart Array 控制器的特定磁盘。 寻址特定驱动器的正确语法取决于您的系统正在使用的驱动程序:cciss
或者hpsa
答案2
我收到的正确查询是
smartctl -a /dev/sda -d cciss,0
仍在尝试了解它是如何工作的,但它确实有效。
所以最终版本将是
smartctl -a /dev/sda -d cciss,0 | awk '/Reallocated_Sector_Ct/{print $10}'