如何确定 Linux 下 SSD 的写入次数或预期寿命?

如何确定 Linux 下 SSD 的写入次数或预期寿命?

我们在 Linux(RHEL 5)服务器中运行 SSD(Intel X25-M)已有一段时间了,但从未努力弄清楚过去一年中它承受了多少写入负载。Linux 下是否有任何工具可以告诉我们随着时间的推移大约有多少写入磁盘,或者(甚至更好)它累积了多少磨损?只是想找个提示看看它是否快要报废了……

答案1

英特尔固态硬盘 (SSD) 确实会保存有关总写入次数和其可能使用寿命的统计数据。

以下来自英特尔 X25-M G2 160GB (SSDSA2M160G2GC)

# smartctl -data -A /dev/sda
smartctl 5.40 2010-10-16 r3189 [x86_64-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 5
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  3 Spin_Up_Time            0x0020   100   100   000    Old_age   Offline      -       0
  4 Start_Stop_Count        0x0030   100   100   000    Old_age   Offline      -       0
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       1
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       6855
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       68
192 Unsafe_Shutdown_Count   0x0032   100   100   000    Old_age   Always       -       30
225 Host_Writes_32MiB       0x0030   200   200   000    Old_age   Offline      -       148487
226 Workld_Media_Wear_Indic 0x0032   100   100   000    Old_age   Always       -       3168
227 Workld_Host_Reads_Perc  0x0032   100   100   000    Old_age   Always       -       1
228 Workload_Minutes        0x0032   100   100   000    Old_age   Always       -       1950295543
232 Available_Reservd_Space 0x0033   099   099   010    Pre-fail  Always       -       0
233 Media_Wearout_Indicator 0x0032   098   098   000    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   099    Pre-fail  Always       -       0

Host_Writes_32MIB 原始值显示已将多少个 32MiB 数据单元写入该驱动器。

Media_Wearout_Indicator 值显示驱动器的有效磨损寿命的标准化百分比。该值从 100(或 099,我忘了是哪个)开始,一直到 001,此时 Intel 认为驱动器已超过其有效寿命。Intel 也将 MWI 用作保修索赔的一部分 - 一旦 MWI 达到 001,保修即过期。

然而,MWI 达到 001 并不意味着驱动器会立即失效!英特尔将内置容差来处理闪存单元的差异。我见过驱动器的使用寿命远远超过这个点,而且我正在积极地对一些英特尔 320 系列 SSD 进行磨损测试,看看它们还能持续多久。

然而,由于当 MWI 达到 001 时保修就会到期,所以我会在那时更换所有驱动器。

答案2

Corsair 硬盘也输出类似的剩余寿命百分比指示器。在他们的例子中,它是属性 231:

231 SSD_Life_Left           0x0013   100   100   010    Pre-fail  Always       -       0

(请注意,如果 smartctl 将其显示为温度,则需要更新设备数据库。在我的 Debian 系统上,这意味着正在运行/usr/sbin/update-smart-drivedb

ACorsair 博客文章似乎表明该值从未低于 10%,因此我推测应该在 10% 时进行替换。

我还有一个带有相同 Sandforce 控制器的 OCZ 驱动器,它也导出相同的 SSD_Life_Left 值。

答案3

Media_Wearout_Indicator 就是您要找的东西。100 表示您的 SSD 使用寿命为 100%,数字越低表示剩余使用寿命越短。

# smartctl -a /dev/sda | grep Media_Wearout_Indicator

我的笔记本电脑的输出

233 Media_Wearout_Indicator 0×0032 100 100 000 Old_age Always – 0

如果你想查看驱动器的更多详细信息和完整属性,你可以运行

# smartctl -data -A /dev/sda

和输出

# smartctl -data -A /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-49-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0×0032 100 100 000 Old_age Always – 0
9 Power_On_Hours 0×0032 000 000 000 Old_age Always – 232959027031342
12 Power_Cycle_Count 0×0032 100 100 000 Old_age Always – 279
170 Unknown_Attribute 0×0033 100 100 010 Pre-fail Always – 0
171 Unknown_Attribute 0×0032 100 100 000 Old_age Always – 0
172 Unknown_Attribute 0×0032 100 100 000 Old_age Always – 0
174 Unknown_Attribute 0×0032 100 100 000 Old_age Always – 278
184 End-to-End_Error 0×0033 100 100 090 Pre-fail Always – 0
187 Reported_Uncorrect 0×0032 100 100 000 Old_age Always – 0
192 Power-Off_Retract_Count 0×0032 100 100 000 Old_age Always – 278
225 Load_Cycle_Count 0×0032 100 100 000 Old_age Always – 10752
226 Load-in_Time 0×0032 100 100 000 Old_age Always – 65535
227 Torq-amp_Count 0×0032 100 100 000 Old_age Always – 66
228 Power-off_Retract_Count 0×0032 100 100 000 Old_age Always – 65535
232 Available_Reservd_Space 0×0033 100 100 010 Pre-fail Always – 0
233 Media_Wearout_Indicator 0×0032 100 100 000 Old_age Always – 0
241 Total_LBAs_Written 0×0032 100 100 000 Old_age Always – 10752
242 Total_LBAs_Read 0×0032 100 100 000 Old_age Always – 21803
249 Unknown_Attribute 0×0013 100 100 000 Pre-fail Always – 357

http://namhuy.net/1024/how-to-check-ssd-life-left.html

答案4

似乎不能在英特尔固态硬盘 (Intel SSD) 上使用标准的“sudo smartctl -A /dev/sda”,至少不能在我的英特尔 545s 128GB SSD 上使用,因为要查看转换为 TBW 的正确信息,必须发出“sudo smartctl -q noserial -x /dev/sda”并找到显示“逻辑扇区写入”的部分,然后使用那里的长数字,只需使用以下公式即可转换为 TBW……长号* 512 / 1024^4 = TBW(或长号* 512 / 1024/1024/1024/1024 = TBW),这里的输出将为您提供 TBW。

记录显示... 似乎大多数不错的 SSD 的官方额定写入寿命至少为 75TBW,但在将数据写入 SSD 发生故障之前,其使用寿命很可能会远远超过这个数字。

因为一般来说......假设 SSD 仅因将数据写入驱动器而损坏,这通常是其磨损的原因,那么我在此处发布的内容就是一个很好的指导方针。

相关内容