如何检查 SSD 的健康状况?

kei*_*iki 118 ssd disk-check hardware-test

我们都知道 SSD 的预定寿命是有限的。所以我的问题是我如何检查(Ubuntu)Linux 我的 SSD 的当前健康状态是什么?也许估计需要多长时间?

图形工具是首选,但命令行工具也可以。

我正在使用 Xubuntu 12.04 LTS

小智 65

检查 SSD 的健康状况

对于基于 Ubuntu、Mint 或 Debian 的发行版

# apt-get install smartmontools
Run Code Online (Sandbox Code Playgroud)

Media_Wearout_Indicator 正是您要寻找的。100 意味着你的 ssd 有 100% 的寿命,较低的数字意味着剩余的寿命更少。

# smartctl -a /dev/sda | grep Media_Wearout_Indicator
Run Code Online (Sandbox Code Playgroud)

显示您的 sdd 信息

# smartctl -a /dev/sda
Run Code Online (Sandbox Code Playgroud)

您可以在Nam Huy Linux 博客上阅读完整的文章- 如何检查 Linux 上剩余的 SSD 寿命

  • 该属性没有出现在我的 SSD 中。也许我应该看看 Wear_Leveling_Count 吗?如: sudo smartctl -a /dev/sda | grep Wear_Leveling_Count 编辑:通过以下回复确认:http://askubuntu.com/a/381779/221115 (8认同)
  • 那么,如果我的值为 199 - 199,是否可信? (2认同)
  • @Rodrigo `smartctl` 是 CLI,适用于非 Gnome 环境 (2认同)

Joã*_*dré 50

安装Gnome Disk Utility并检查SMART Data and Tests以获取磨损均衡计数或类似内容。该数字越高(百分比,从 1 到 100),您的 SSD 就越“用完”,这意味着您更有可能遇到问题。但如果您有最近的 SSD,则无需担心。

通过安装

 sudo apt-get install gnome-disk-utility
Run Code Online (Sandbox Code Playgroud)

通过

菜单->设置->磁盘实用程序

或通过命令行

sudo gnome-disks
Run Code Online (Sandbox Code Playgroud)

  • 作为给读者的笔记;palimpset 重命名为 gnome-disks(如 http://askubuntu.com/a/623306/4580 所述)。 (11认同)
  • 尽管安装了 gnome-disk-utility,但 Ubuntu 14.04 无法识别 palimpsest。我也没有在设置中看到磁盘实用程序(齿轮图标)。`palimpsest` 是一个糟糕的名字,这个名字会随着用户语言的不同而变化吗(例如英语和其他的东西)。 (8认同)
  • 你把这个倒过来了。磨损数从 100 开始并随着使用而减少,因此数字越大,使用的更少的是 SSD,请参见此处:https://superuser.com/questions/1037644/samsung-ssd-wear-leveling-count-meaning (3认同)
  • 是的,我不确定名称,因为他们在 12.10 中更改了名称 (2认同)
  • 为什么说“如果你有最近的SSD,你就不用担心”? (2认同)

小智 47

如果您没有英特尔品牌的 SSD:请阅读此内容。

小心 !!——我被“smartmontools”误导了。我有一个三星SSD,smartmonitor/'smartctl' 工具愉快地误报了'233'(十六进制'E9')属性是'Media_Wearout_Indicator';事实上——不,对于三星(和其他制造商)来说,情况完全不同。我发现的这个和其他论坛帖子、堆栈交换问题/答案和高级用户博客似乎是“专注于英特尔”,只有模糊的暗示“它可能会有所不同”。(相对于任何建议,您需要注意 smartmontools 对属性的错误和错误标记)。

当我准备将我的 SSD 复制到我购买的新硬盘时(因为 smartmontools 告诉我的),我启动到 Windows(我有一个双启动系统),从 Windows-only 中了解一些关于 SSD 的信息三星工具“Samsung_Magician_v43.exe”不得不告诉我有关我的驱动器的信息——它的信息令人震惊。

经过数小时的挖掘 - 我终于能够运行仅限 Windows 的工具:hddgaurdian,然后还有CrystalDiskInfo:惊喜!两个工具都独立告诉我我的三星 SSD 是“很好”(硬盘监护人说“5 星”和水晶磁盘“98% 正常”)。相比之下,smartctl 工具使用“十进制- 233 / '十六进制-E9”明确标记属性为“媒体磨损指标”——并告诉我它的值为“1”或 1%——一个指标(风险)等待失败。为了尽可能确定,我挖了又挖,终于至少从三星官方找到了一些东西:三星白皮书 07:与您的 SSD 通信 [archive.org]

该文件确实暗示三星不会以相同的方式使用属性“十六进制 E9”/“十进制”“233”。(三星:我很失望,请修复您的官方软件工具,或者至少明确说明您没有提供磨损指示信息!)

此外 - 如果您既没有英特尔固态硬盘也没有三星固态硬盘 - 请注意,此信息似乎因制造商而异。(例如,请参阅https://code.google.com/p/hddguardian/wiki/about_reliability上的属性标签图表,了解我发现的可变性程度的唯一有用指示。)

万能的:如果您没有英特尔固态硬盘——请不要 被 smartmonitor 提供的虚假属性名称标签所误导。也许将来会有所改进,但是默认为 Ubuntu 12.04 LTS(2014 年 4 月)安装的版本完全失败。而不是告诉你它“不知道”——smartctl 只是错误地标记了属性。我没有找到另一种使“正确”信息透明或清晰的 Linux 工具。

  • 现在可以在 http://www.samsung.com/global/business/semiconductor/minisite/SSD/M2M/download/07_Communicating_With_Your_SSD.pdf 上找到 PDF (3认同)
  • 包含指向三星 SMART 属性文档的链接的道具。我不知道你提到的那些其他应用程序是什么或者它们有多大用处,但我强烈建议你只关注属性 #5“重新分配的扇区数”,因为这将是一个很好的指标,表明你的 SSD 有多接近失败,因为一旦它用完备用扇区,它必须用来替换坏的扇区,那么您的 SSD 将接近 EOL (2认同)

Mik*_*ike 14

适用于基于 Debian 的计算机上的金士顿硬盘

类似于这个答案执行

# apt-get install smartmontools
Run Code Online (Sandbox Code Playgroud)

但是,当我执行命令以显示驱动器信息时,看起来 SMART 已禁用:

# smartctl -a /dev/sda 
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-45-generic] (local build)
[ ... ]
SMART support is: Available - device has SMART capability.
SMART support is: Disabled
Run Code Online (Sandbox Code Playgroud)

您需要通过以 root 身份执行以下命令来启用它:

# smartctl -s on -a /dev/sda
Run Code Online (Sandbox Code Playgroud)

然后你可以通过做一个简短的测试(我花了大约 1 分钟)来执行自测:

# smartctl -t short -a /dev/sda
Run Code Online (Sandbox Code Playgroud)

或更彻底的测试(我花了大约 1.5 小时):

# smartctl -t long -a /dev/sda
Run Code Online (Sandbox Code Playgroud)

请注意,在大多数情况下,您不需要卸载驱动器来执行这些测试。如果这样做,请参阅man smartctl

现在,当您执行时,smartctl -a /dev/sda您应该会看到自我评估测试结果。这可能是您真正需要关注的全部内容:

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Run Code Online (Sandbox Code Playgroud)

如果你喜欢细节,你还会看到这样的表格:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x0032   095   095   050    Old_age   Always       -       0/178007034
  5 Retired_Block_Count     0x0033   100   100   003    Pre-fail  Always       -       0
  9 Power_On_Hours_and_Msec 0x0032   092   092   000    Old_age   Always       -       7626h+46m+45.580s
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       8
171 Program_Fail_Count      0x000a   100   100   000    Old_age   Always       -       0
172 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
174 Unexpect_Power_Loss_Ct  0x0030   000   000   000    Old_age   Offline      -       4
177 Wear_Range_Delta        0x0000   000   000   000    Old_age   Offline      -       1
181 Program_Fail_Count      0x000a   100   100   000    Old_age   Always       -       0
182 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
187 Reported_Uncorrect      0x0012   100   100   000    Old_age   Always       -       0
189 Airflow_Temperature_Cel 0x0000   030   035   000    Old_age   Offline      -       30 (Min/Max 24/35)
194 Temperature_Celsius     0x0022   030   035   000    Old_age   Always       -       30 (Min/Max 24/35)
195 ECC_Uncorr_Error_Count  0x001c   120   120   000    Old_age   Offline      -       0/178007034
196 Reallocated_Event_Count 0x0033   100   100   003    Pre-fail  Always       -       0
201 Unc_Soft_Read_Err_Rate  0x001c   120   120   000    Old_age   Offline      -       0/178007034
204 Soft_ECC_Correct_Rate   0x001c   120   120   000    Old_age   Offline      -       0/178007034
230 Life_Curve_Status       0x0013   100   100   000    Pre-fail  Always       -       100
231 SSD_Life_Left           0x0013   100   100   010    Pre-fail  Always       -       0
233 SandForce_Internal      0x0032   000   000   000    Old_age   Always       -       3498
234 SandForce_Internal      0x0032   000   000   000    Old_age   Always       -       2885
241 Lifetime_Writes_GiB     0x0032   000   000   000    Old_age   Always       -       2885
242 Lifetime_Reads_GiB      0x0032   000   000   000    Old_age   Always       -       868
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找所有这些值的含义,请参阅金士顿文档

  • 并非所有金士顿 SSD 都支持它们。有些不支持的(例如我的 [UV400](https://media.kingston.com/support/downloads/UV400-SM​​ART-attribute.pdf))似乎在它们不支持的字段中显示随机数。 (2认同)

Nat*_*dge 13

对于(至少某些)NVMe 驱动器,您可以执行以下操作

smartctl -a /dev/nvme0
Run Code Online (Sandbox Code Playgroud)

然后,您可以查找如下一行:

Percentage Used:                    5%
Run Code Online (Sandbox Code Playgroud)

这里的数字越小越好,100%意味着驱动器已经“磨损”了。制造商文档表明,如果您在此之后继续使用驱动器,则有可能获得高于 100% 的数字(来自 Seagate 的示例,请参见第 12 页)。

请注意,如果您使用命名空间或分区设备,例如/dev/nvme0n1/dev/nvme0n1p1,它将不起作用,您将收到类似 的消息Read NVMe SMART/Health Information failed: NVMe Status 0x4002


小智 6

Wear_Leveling_Count 是要跟踪的正确属性。但是,与其他属性一样,100 是最佳值,0 是最差值。将其视为“剩余寿命的百分比”。

  • 它可能因制造商而异,但**这很可能是非常错误的。**在 [此页面](https://code.google.com/p/hddguardian/wiki/Micron_SMART_attributes) 上解释微米(又名。关键,如“关键 m4”等)代码,这是 *“所有好块的平均擦除计数。”* 这是一个会随着使用而增加的数字。如果您阅读有关 [wear leveling](http://en.wikipedia.org/wiki/Wear_leveling) 的一些文章,您会意识到它至少应该在驱动器报废之前达到数万(即,您可能不会活着看到它这样死去)。 (5认同)
  • 我的说1461。 (2认同)

Eld*_*eek 5

检查 SSD 健康状况的最佳方法是遵循制造商的建议。由于这些内容因制造商而异,并且可能会随着时间的推移而发生变化,因此如果您有疑问,最好咨询您的驱动器制造商。根据大多数制造商提供的 MTBF 评级(JEDEC JESD218A 标准定义了该方法),SSD 应能毫无问题地持续超过 100 万小时。

我有几个涉及多个制造商的产品。我可以保证不同制造商的 SMART 属性有所不同。为了进行比较,这里提供了来自OCZ的示例和来自 Corsair F40 设备的智能数据,并讨论了该数据的不可靠程度。

虽然智能数据当然有价值,但由于所有设备最终都会发生故障,因此重要的是定期备份数据。这让您高枕无忧,在您等待(可能需要几年)SSD 发生故障时,您的数据是安全的。随着成本下降和容量增加,您更有可能因空间限制而不是故障而更换 SSD。(根据我的经验,可能性是 10 倍)。我只是定期备份而不用担心。

资料来源:

经验,http://www.hardcoreware.net/mtbf-ssd-what-does-it-mean-for-you/