在 Linux 下测量“写入的总字节数”

bad*_*ews 41 linux ssd io measurement

我们对探索在服务器环境中使用 SSD 驱动器的可能性非常感兴趣。但是,我们需要确定的一件事是预期驱动器寿命。根据这篇文章,制造商以“写入的总字节数”(TBW)来报告驱动器的耐用性。例如,从那篇文章中可以看出,Crucial C400 SSD 的额定容量为 72TB TBW。Linux 生态系统下是否存在任何脚本/工具来帮助我们衡量 TBW?(然后对使用 SSD 驱动器的可行性做出更明智的决定)

sci*_*rus 34

另一种可能性是查看/proc/diskstats。它在重新启动后不是持久的,但它具有每个块设备的数据。您可能最感兴趣的是字段 10,其中包含写入的扇区总数。在具有扇区大小为 512 字节的 scsi 磁盘的系统上,您可以运行

awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats

查看每个设备写入了多少兆字节。输出看起来像

sda 728.759
sda1 79.0908
sda2 649.668

  • 扇区大小可以通过运行命令#cat /sys/block/sda/queue/hw_sector_size 找到 (4认同)

小智 26

我在我的笔记本上遇到了同样的问题,但是当我几乎每天都重新启动它时,接受的答案没有帮助。我有一个三星 mSATA SSD,它恰好具有 SMART 属性 #241 Total_LBA_Written。根据官方文档

要计算总大小(以字节为单位),请将此属性的原始值乘以 512B。

所以下面的命令给了我写在我的 SSD 磁盘 (sdb) 上的总 TB

sudo smartctl -A /dev/sdb | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" } '
Run Code Online (Sandbox Code Playgroud)

由于它也适用于我的 HDD,我认为它应该适用于几乎所有现代硬盘。

  • 不,这仅存在于某些型号的 SSD 驱动器上。它不是通用的。 (3认同)
  • 我想指出,你的方程实际上产生了一个数字,它会更准确:`sudo smartctl -A /dev/sda1 | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" }'`. (3认同)

sci*_*rus 22

您可以通过查看 /sys/fs/ext4/$DEVICE/lifetime_write_kbytes 来查看已写入 ext4 文件系统的数据量。

  • @symcbean - 对于当今的闪存设备,这在很大程度上不是问题。它们都在其板载控制器中内置了磨损均衡例程。 (2认同)
  • @symcbean - 有两种闪存设备。内存技术设备(或 MTD)提供了与闪存的直接接口。这些通常出现在嵌入式设备中,并且是 JFFS2 等文件系统的设计用途。另一种闪存设备将闪存隐藏在稍后闪存转换 (FTL) 后面,使其看起来像常规块设备。这就是 SSD、U 盘和存储卡等消费技术的实现方式。像 JFFS2 这样的文件系统不适合这些;相反,您必须使用像 ext4 这样专为块设备设计的文件系统。 (2认同)