Answers:
另一种可能性是查看/ proc / diskstats。它在重新启动后不是持久的,但是它具有每个块设备的数据。您可能最感兴趣的是字段10,其中包含写入的扇区总数。在具有扇区大小为512字节的scsi磁盘的系统上,可以运行
awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats
查看每个设备写入了多少兆字节。输出看起来像
sda 728.759
sda1 79.0908
sda2 649.668
hw_sector_size
不同(至少从2.4系列开始)。block/cfq-iosched.c
特别参见cfqg_stats_update_dispatch()
。
我当时在笔记本电脑上也遇到了同样的问题,但是由于我每天都要重新启动它,因此被接受的答案没有帮助。我有一个三星mSATA SSD,它碰巧具有SMART属性#241 Total_LBAs_Written。根据官方文件,
要计算总大小(以字节为单位),请将此属性的原始值乘以512B。
所以下面的命令给了我写入我的SSD磁盘(sdb)的总TB
sudo smartctl -A /dev/sdb | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" } '
因为它也可以在我的HDD上工作,所以我认为它几乎可以在每个现代硬盘上工作。
sudo smartctl -A /dev/sda1 | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" }'
。
Host_Writes_32MiB
。还有249属性NAND_Writes_1GiB
。因此请注意,每个SSD似乎都不同(例如,我的mSATA Intel SSD没有这些属性)
Total_LBAs_Written
以GB为单位指定!毫无道理的低4714
智能正在显示。但是在Windows的Intel SSD工具箱中查看时,显示的单位是GB。
通过查看/ sys / fs / ext4 / $ DEVICE / lifetime_write_kbytes,可以查看已将多少数据写入ext4文件系统。
对于在Ubuntu Server 14.04下的KINGSTON SEDC400S37480G,我使用以下脚本监视TBW。我每天从cron运行一次。脚本输出到日志文件。
您需要计算才能使其正常工作。使用以下方法安装calc:
apt-get install apcalc
脚本内容:
echo "*** $(date -R) ***" >> /scripts/tbw/log.txt
tbw=$(cat /sys/fs/ext4/sda1/lifetime_write_kbytes)
TB=1000000000
echo TB written to sda1: >> /scripts/tbw/log.txt | calc $tbw / $TB >> /scripts/tbw/log.txt
将输出:
*** Thu, 20 Jul 2017 03:02:51 +0300 ***
TB written to sda1:
3.062138442