我有一块三星 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 个受影响的文件,其中没有一个是真正重要的。其中两个我有备份。文件可用后,我进行了比较,发现它们与备份相同。
最后状态:
# 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 Log 0x01 NVMe Log)中的Unrecovered Read Error有多严重?(我测试的相应文件似乎没问题。)
我的理解是,通过不断地读取磁盘,固件经过多次尝试,成功地将所有坏扇区映射到备用扇区,所以现在你没有坏扇区,并且所有数据都可读。
至于 96% 的可用备用扇区,需要做一点数学计算:如果日志中的 64 个错误条目代表已恢复的扇区,而这些扇区代表 4% 的备用容量,则这意味着您拥有全部 1600 个备用扇区。这意味着您仍有 1536 个可用备件。
我建议继续关注磁盘的SMART数据,但我认为你可以继续使用它。如果坏扇区的数量(无论是否恢复)持续增长,那么就该更换它了。同时,请确保您有良好的备份,以防万一。