今天备份一些文件时,我注意到 btrfs 抱怨我的 Crucial MX500 1TB SSD 上的某些块没有正确的校验和。我运行了一个btrfs scrub
报告:
● [email protected] - Btrfs scrub on /
Loaded: loaded (/usr/lib/systemd/system/[email protected]; static; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2019-12-06 17:22:25 CET; 3h 56min ago
TriggeredBy: ● [email protected]
Process: 4046 ExecStart=/usr/bin/btrfs scrub start -B / (code=exited, status=3)
Main PID: 4046 (code=exited, status=3)
dec 06 17:22:25 redacted btrfs[4046]: Status: finished
dec 06 17:22:25 redacted btrfs[4046]: Duration: 0:16:05
dec 06 17:22:25 redacted btrfs[4046]: Total to scrub: 308.05GiB
dec 06 17:22:25 redacted btrfs[4046]: Rate: 320.15MiB/s
dec 06 17:22:25 redacted btrfs[4046]: Error summary: csum=10
dec 06 17:22:25 redacted btrfs[4046]: Corrected: 0
dec 06 17:22:25 redacted btrfs[4046]: Uncorrectable: 10
dec 06 17:22:25 redacted btrfs[4046]: Unverified: 0
dec 06 17:22:25 redacted systemd[1]: [email protected]: Main process exited, code=exited, status=3/NOTIMPLEMENTED
dec 06 17:22:25 redacted systemd[1]: [email protected]: Failed with result 'exit-code'.
因此看起来只有 10 个块被损坏,这让我认为这实际上不是硬件错误,而只是一些错误。为了以防万一,我运行了几个 SMART 测试(两个short
和两个offline
)。之后,的输出smartctl
如下所示:
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-5.4.1-2-ck] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Crucial/Micron BX/MX1/2/3/500, M5/600, 1100 SSDs
Device Model: CT1000MX500SSD1
Serial Number: 1845E1D544F0
LU WWN Device Id: 5 00a075 1e1d544f0
Firmware Version: M3CR023
User Capacity: 1 000 204 886 016 bytes [1,00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-3 T13/2161-D revision 5
SATA Version is: SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Fri Dec 6 21:14:57 2019 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 0) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 30) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x0031) SCT Status supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 100 100 000 Pre-fail Always - 0
5 Reallocate_NAND_Blk_Cnt 0x0032 100 100 010 Old_age Always - 0
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 1266
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 1820
171 Program_Fail_Count 0x0032 100 100 000 Old_age Always - 0
172 Erase_Fail_Count 0x0032 100 100 000 Old_age Always - 0
173 Ave_Block-Erase_Count 0x0032 100 100 000 Old_age Always - 8
174 Unexpect_Power_Loss_Ct 0x0032 100 100 000 Old_age Always - 69
180 Unused_Reserve_NAND_Blk 0x0033 000 000 000 Pre-fail Always - 37
183 SATA_Interfac_Downshift 0x0032 100 100 000 Old_age Always - 0
184 Error_Correction_Count 0x0032 100 100 000 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
194 Temperature_Celsius 0x0022 057 045 000 Old_age Always - 43 (Min/Max 0/55)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 100 100 000 Old_age Always - 0
202 Percent_Lifetime_Remain 0x0030 100 100 001 Old_age Offline - 0
206 Write_Error_Rate 0x000e 100 100 000 Old_age Always - 0
210 Success_RAIN_Recov_Cnt 0x0032 100 100 000 Old_age Always - 0
246 Total_Host_Sector_Write 0x0032 100 100 000 Old_age Always - 5740642566
247 Host_Program_Page_Count 0x0032 100 100 000 Old_age Always - 93790426
248 FTL_Program_Page_Count 0x0032 100 100 000 Old_age Always - 97088644
SMART Error Log Version: 1
Warning: ATA error count 0 inconsistent with error log pointer 2
ATA Error Count: 0
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
Error -1 occurred at disk power-on lifetime: 0 hours (0 days + 0 hours)
When the command that caused the error occurred, the device was in an unknown state.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
00 ec 00 00 00 00 00
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
ec 00 00 00 00 00 00 00 00:00:00.000 IDENTIFY DEVICE
ec 00 00 00 00 00 00 00 00:00:00.000 IDENTIFY DEVICE
ec 00 00 00 00 00 00 00 00:00:00.000 IDENTIFY DEVICE
ec 00 00 00 00 00 00 00 00:00:00.000 IDENTIFY DEVICE
c8 00 00 00 00 00 00 00 00:00:00.000 READ DMA
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 1266 -
# 2 Short offline Completed without error 00% 1263 -
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
因此,驱动器通过了测试,报告了Raw_Read_Error_Rate
0 个 ATA 错误和零个 ATA 错误,但smartctl
仍然显示在 0 小时发生的神秘错误 -1。
我的驱动器是否真的要坏了?或者这只是一个故障?
答案1
您的 SMART 数据看起来状态良好,无需担心。为了放心,您可以fsck
在文件系统上运行,但磁盘没有问题。
有关错误消息,请参阅 Smartmontools 常见问题解答部分 “警告:ATA 错误计数 9 与错误日志指针 5 不一致”这个 smartctl 消息是什么意思?
ATA 错误日志存储在循环缓冲区中,ATA 规范对于条目的排序方式没有明确规定。此警告消息意味着磁盘固件没有严格遵守 ATA 规范中关于循环缓冲区中错误日志条目的排序。Smartmontools 将纠正此疏忽,因此用户可以安全地忽略此警告消息.(另一方面,固件工程师:请仔细阅读 ATA 规范,然后修复您的代码!)。
您可以运行更多的磁盘测试以确保无误,但我认为没有理由怀疑磁盘出现故障。