我想在 SSD 上安装 Ubuntu(我知道我必须设置 TRIM、noatime 等。)但我想知道是否可以检查过去一天/一周/一个月写入了多少 GB。
因为我想测量如果文件夹 /var 和 /tmp 位于 SSD 上,每天在 SSD 上写入多少 GB。如果每天写入量少于 10GB,我认为这很酷,并且不会对 SSD 造成太大损坏。
不,我不想使用 ramdisk :)
答案1
就像经常发生的那样,我跳过重做smartmontools
包中已经存在的轮子。此包提供了大量用于硬盘和 SSD(或更专业的术语,SCSI 设备)的诊断工具。特别是,smartctl
命令是我们正在寻找的:
$ sudo smartctl -A /dev/sda
[sudo] password for xieerqi:
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-65-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 18
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Runtime_Bad_Block 0x0000 000 000 000 Old_age Offline - 0
9 Power_On_Hours 0x0000 100 100 000 Old_age Offline - 8080
12 Power_Cycle_Count 0x0000 100 100 000 Old_age Offline - 1419
171 Avail_OP_Block_Count 0x0000 100 100 000 Old_age Offline - 40907856
174 Pwr_Cycle_Ct_Unplanned 0x0000 100 100 000 Old_age Offline - 78
195 Total_Prog_Failures 0x0000 100 100 000 Old_age Offline - 0
196 Total_Erase_Failures 0x0000 100 100 000 Old_age Offline - 0
197 Total_Unc_Read_Failures 0x0000 100 100 000 Old_age Offline - 0
208 Average_Erase_Count 0x0000 100 100 000 Old_age Offline - 179
210 SATA_CRC_Error_Count 0x0000 100 100 000 Old_age Offline - 0
224 In_Warranty 0x0000 100 100 000 Old_age Offline - 1
233 Remaining_Lifetime_Perc 0x0000 095 095 000 Old_age Offline - 95
241 Host_Writes_GiB 0x0000 100 100 000 Old_age Offline - 3133
242 Host_Reads_GiB 0x0000 100 100 000 Old_age Offline - 2745
249 Total_NAND_Prog_Ct_GiB 0x0000 100 100 000 Old_age Offline - 301548705
上面显示的是我的 SSD 的属性列表。特别值得关注的是属性 241 (Host_Writes_GiB) 和 242 (Host_Reads_GiB)。这些值以 GiB 为单位(GiB 是计算机科学中的经典度量单位,以 1024 字节的幂为单位,在本例中为 1024^3,而不是 SI 单位的 10 的幂)。
据我所知,从底层来看,此实用程序会解析文件夹lifetime_write_kbytes
中的实际文件/sys/fs
。具体来说,在我的示例中:
$ cat /sys/fs/ext4/sda1/lifetime_write_kbytes
4793857835
当然,这是一个命令行实用程序。如果你没有安装它(通过检查apt-cache policy smartmontools
),那么通过安装它sudo apt-get install smartmontools
。Gnome 磁盘实用程序作为 GUI 替代品并且它与 Ubuntu 一起提供。
然而,有几点需要注意:
- SMART 信息必须由设备提供。如果设备比较便宜,并且没有此类信息,那么就需要重新设计轮子,就像我最初想通过监控
/proc/diskstats
文件做的那样。 - 特定属性必须由设备提供。例如,在smartmontools 网站不提供此类信息。
还有一个小问题:显示的结果信息是读取/写入的总历史记录。因此,您无法提取过去 x 天内的读取/写入。至少到目前为止,smartctl
我发现的所有工具都无法做到这一点。但是,您可以做的是安排一个每日cron
任务,该任务将读取/sys/fs/ext4/sda1/lifetime_write_kbytes
数据并将带有时间戳的数据附加到文件中。稍后,您可以减去差异以查看每天写入了多少。例如,此类命令的内容将是:
30 08 * * * bash -c '{ date; cat /sys/fs/ext4/sda1/lifetime_write_kbytes; echo ;} >> /home/user/my_disk_log.txt'