如何从 SMART 的 host_write_commands 中获取写入的字节?

如何从 SMART 的 host_write_commands 中获取写入的字节?

使用 smartctl 7.0 或 nvme 1.7,我从 SMART 日志中获取以下数据

data_units_written                  : 350,371,149
host_write_commands                 : 2,974,115,785

通过smartctl,第一行也显示[179 TB],即350,371,149 x 512 = 179,369,326,592。这是Nand Bytes Written

写入放大是 Nand 写入的字节数/Host 写入的字节数,但我不知道如何Host Bytes Written得出host_write_commands

如果我将 2,974,115,785 ( host_write_commands) x 32 相乘(我从这里),我得到 95,163,501,216,即 WAF 为 1.88 (179,369,326,592 / 95,163,501,216)。这是一个合理的 WAF 值。

但我不知道是否host_write_commands应该乘以 32 来获得主机写入的字节数。根据host_write_commands解释方式,我可以得到 8.48 的 WAF(如果我只除以智能日志中的值)或 60.31(甚至不记得我是如何得到这个的),前者非常高,后者荒谬。

如果我得到写入的字节数/proc/diskstats,我有 30,725,755,952,这使我的 WAF 为 5.83(高,179,369,326,592 / 30,725,755,952)。但 /proc/diskstats 在重新启动后不会保留,因此在这种情况下无法应用。

如何从中获取主机写入请求的字节数host_write_commands?英特尔的支持对我来说当然毫无用处。

答案1

您需要的是实际写入的字节数。host_write_commands不会表示该值,因为它是命令数,而不是字节数,并且每个命令的字节数是可变的。如果您的驱动器没有另一个 SMART 属性来计算写入的字节数,那么您就没有该数据。

相关内容