While backing up some files today, I noticed that btrfs complained that some blocks on my Crucial MX500 1TB SSD didn’t have the correct checksum. I ran a btrfs scrub
which reported this:
● btrfs-scrub@-.service - Btrfs scrub on /
Loaded: loaded (/usr/lib/systemd/system/btrfs-scrub@.service; static; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2019-12-06 17:22:25 CET; 3h 56min ago
TriggeredBy: ● btrfs-scrub@-.timer
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]: btrfs-scrub@-.service: Main process exited, code=exited, status=3/NOTIMPLEMENTED
dec 06 17:22:25 redacted systemd[1]: btrfs-scrub@-.service: Failed with result 'exit-code'.
So it looks like only 10 blocks were corrupted, which made me think that it wasn’t actually a hardware error but just some bug. Just in case I ran a couple of SMART tests (two short
and two offline
). After that, the output of smartctl
looked like this:
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.
So the drive passed the tests, reports a Raw_Read_Error_Rate
of 0 and zero ATA errors, but smartctl
still displays a mysterious error -1 that happened at 0 hours.
Is my drive actually about to die or is it just a glitch?