使用 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 属性来计算写入的字节数,那么您就没有该数据。