我有一块三星 970 EVO SSD,在过去 4.5 年里,它一直在 24/7 地运行 openSUSE。这是我的第一块 SSD,我不确定我的 HDD 经验是否适用于 SSD。第一次出现错误时我会更换 HDD,但我想知道 SSD 是否也应该如此。
我的硬盘从来没有出过任何问题,我期望 SMART 能够告诉我硬盘是否即将出现故障。无论如何,我决定运行 smartctl 测试,令我惊讶的是,它发现了一个无法读取的地址:
smartctl -t long /dev/nvme0n1
smartctl -a /dev/nvme0n1
[...]
Num Test_Description Status Power_on_Hours Failing_LBA NSID Seg SCT Code
0 Extended Completed: failed segments 11636 742642300 1 7 - -
[...]
将 LBA 映射到相应文件后,尝试复制文件失败,正如预期的那样。
然后我读取了整个 SSD,以便更好地了解问题的严重程度,通过
dd bs=4k conv=noerror if=/dev/nvme0n1 of=/dev/null status=progress
这发现了自己的问题(3 或 4 个),其中不包括原始 LBA。所以我再次尝试复制第一个受影响的文件,现在成功了。然后我又运行了一次测试,再次读取 SSD,再运行一次测试。
现在一切似乎都很好,除了有一堆Unrecovered Read Error
s,我不确定是否应该对它们做些什么。
有 4 个文件受到影响,但都不是很重要。其中 2 个我有备份。文件可用后,我进行了比较,发现它们与备份完全相同。
最后状态:
# smartctl -a /dev/nvme0n1
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.6.6-1-default] (SUSE RPM)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Number: Samsung SSD 970 EVO 1TB
Serial Number: S467NX0KC42742T
Firmware Version: 2B2QEXE7
PCI Vendor/Subsystem ID: 0x144d
IEEE OUI Identifier: 0x002538
Total NVM Capacity: 1,000,204,886,016 [1.00 TB]
Unallocated NVM Capacity: 0
Controller ID: 4
NVMe Version: 1.3
Number of Namespaces: 1
Namespace 1 Size/Capacity: 1,000,204,886,016 [1.00 TB]
Namespace 1 Utilization: 718,928,310,272 [718 GB]
Namespace 1 Formatted LBA Size: 512
Namespace 1 IEEE EUI-64: 002538 5c81b21b20
Local Time is: Wed Dec 27 08:39:23 2023 EET
Firmware Updates (0x16): 3 Slots, no Reset required
Optional Admin Commands (0x0017): Security Format Frmw_DL Self_Test
Optional NVM Commands (0x005f): Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat Timestmp
Log Page Attributes (0x03): S/H_per_NS Cmd_Eff_Lg
Maximum Data Transfer Size: 512 Pages
Warning Comp. Temp. Threshold: 85 Celsius
Critical Comp. Temp. Threshold: 85 Celsius
Supported Power States
St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat
0 + 6.20W - - 0 0 0 0 0 0
1 + 4.30W - - 1 1 1 1 0 0
2 + 2.10W - - 2 2 2 2 0 0
3 - 0.0400W - - 3 3 3 3 210 1200
4 - 0.0050W - - 4 4 4 4 2000 8000
Supported LBA Sizes (NSID 0x1)
Id Fmt Data Metadt Rel_Perf
0 + 512 0 0
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 33 Celsius
Available Spare: 96%
Available Spare Threshold: 10%
Percentage Used: 1%
Data Units Read: 67,636,923 [34.6 TB]
Data Units Written: 112,642,849 [57.6 TB]
Host Read Commands: 987,052,850
Host Write Commands: 1,832,390,531
Controller Busy Time: 5,409
Power Cycles: 141
Power On Hours: 11,648
Unsafe Shutdowns: 90
Media and Data Integrity Errors: 53
Error Information Log Entries: 1,180
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Temperature Sensor 1: 33 Celsius
Temperature Sensor 2: 43 Celsius
Error Information (NVMe Log 0x01, 16 of 64 entries)
Num ErrCount SQId CmdId Status PELoc LBA NSID VS Message
0 1180 1 0x33e1 0x4502 0x000 826830178 1 - Unrecovered Read Error
1 1179 12 0x924d 0xc502 0x000 1536005282 1 - Unrecovered Read Error
2 1178 12 0x024c 0xc502 0x000 1536005282 1 - Unrecovered Read Error
3 1177 7 0x2187 0x4502 0x000 1536005282 1 - Unrecovered Read Error
4 1176 12 0x724b 0x4502 0x000 1417094690 1 - Unrecovered Read Error
5 1175 1 0x3167 0x4502 0x000 1099791128 1 - Unrecovered Read Error
6 1174 4 0xe343 0xc502 0x000 888097434 1 - Unrecovered Read Error
7 1173 4 0x3342 0xc502 0x000 888097436 1 - Unrecovered Read Error
8 1172 4 0x5341 0x4502 0x000 888097434 1 - Unrecovered Read Error
9 1171 12 0x91ca 0xc502 0x000 888097436 1 - Unrecovered Read Error
10 1170 12 0xb1c9 0xc502 0x000 888097436 1 - Unrecovered Read Error
11 1169 11 0x81a9 0x4502 0x000 888097436 1 - Unrecovered Read Error
12 1168 10 0x1251 0xc502 0x000 888091288 1 - Unrecovered Read Error
13 1167 10 0x924f 0xc502 0x000 888091290 1 - Unrecovered Read Error
14 1166 10 0xb24e 0x4502 0x000 888092344 1 - Unrecovered Read Error
15 1165 10 0x224d 0x4502 0x000 888091320 1 - Unrecovered Read Error
... (48 entries not read)
Self-test Log (NVMe Log 0x06)
Self-test status: No self-test in progress
Num Test_Description Status Power_on_Hours Failing_LBA NSID Seg SCT Code
0 Extended Completed without error 11644 - - - - -
1 Extended Completed without error 11640 - - - - -
2 Extended Completed: failed segments 11637 832111576 1 7 - -
3 Extended Completed: failed segments 11636 742642300 1 7 - -
4 Short Completed without error 11636 - - - - -
我找不到有关如何使用 SSD 的综合页面,特别是如何防止错误或处理错误,因此我的问题如下:
- 我应该立即更换我的 SSD 吗?
- 我得到可用备件96%?
- 既然测试错误现在已经消失,读取整个 SSD 是否重要?一般来说,偶尔读取整个 SSD 是否有用?
- 有多糟糕未恢复的读取错误在错误信息(NVMe 日志 0x01 NVMe 日志)?(我测试的相应文件看起来没问题。)
答案1
我的理解是,通过不断读取磁盘,固件经过多次尝试后成功将所有坏扇区映射到备用扇区,因此现在没有坏扇区并且所有数据均可读取。
至于 96% 的可用备用扇区,需要进行一些数学运算:如果日志中的 64 个错误条目代表恢复的扇区,这些扇区代表 4% 的备用容量,则意味着您总共拥有 1600 个备用扇区。这意味着您仍然有 1536 个备用扇区可用。
我建议继续关注磁盘的 SMART 数据,但我认为您可以继续使用它。如果坏扇区的数量(无论是否恢复)继续增加,那么是时候更换它了。与此同时,请确保您有良好的备份,以防万一。