I recently fixed the local email on my Linux desktop. One of the side effects of never, ever reinstalling Debian is that things sometimes go wonky in the day-to-day upgrades and I never notice it. I last reinstalled Debian when I upgraded to a 64bit system in 2007. I’ve been running sid ever since then, which means that things break sometimes. When I decided to upgrade my hardware last week, I checked on my backups and noticed that the backup cron job hadn’t run since August. It probably took me awhile to notice because it also stopped sending me e-mail when things break.
So I fixed the e-mail. Which meant that today, it emailed me to tell me that one of my hard drives has noticed that it’s got 532 bad sectors. That’s unfortunate, but hard drives break. All the time. This particular drive is only a couple years old, so that’s sad. I started looking into the SMART data for all my hard drives, and noticed something that’s well, truly outstanding on an entirely different drive:
=== START OF INFORMATION SECTION === Model Family: Western Digital Raptor Device Model: WDC WD360GD-00FLA2 Serial Number: WD-WMAKH1125117 Firmware Version: 31.08F31 User Capacity: 37,019,566,080 bytes [37.0 GB] Sector Size: 512 bytes logical/physical Device is: In smartctl database 7.3/5319 ATA Version is: ATA/ATAPI-6 (minor revision not indicated) Local Time is: Mon Nov 28 22:15:43 2022 MST 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: ( 957) 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. No General Purpose Logging support. Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 21) minutes. Conveyance self-test routine recommended polling time: ( 5) minutes. SCT capabilities: (0x001f) SCT Status supported. SCT Error Recovery Control supported. SCT Feature Control 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 0x000b 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0007 120 119 021 Pre-fail Always - 2541 4 Start_Stop_Count 0x0032 099 099 040 Old_age Always - 1433 5 Reallocated_Sector_Ct 0x0033 196 196 140 Pre-fail Always - 55 7 Seek_Error_Rate 0x000b 200 200 051 Pre-fail Always - 0 9 Power_On_Hours 0x0032 001 001 000 Old_age Always - 134911 10 Spin_Retry_Count 0x0013 100 100 051 Pre-fail Always - 0 11 Calibration_Retry_Count 0x0013 100 100 051 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 1349 194 Temperature_Celsius 0x0022 118 100 000 Old_age Always - 29 196 Reallocated_Event_Count 0x0032 189 189 000 Old_age Always - 11 197 Current_Pending_Sector 0x0012 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0012 200 200 000 Old_age Always - 0 199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 141 200 Multi_Zone_Error_Rate 0x0009 200 179 051 Pre-fail Offline - 0 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 1 No self-tests have been logged. [To run self-tests, use: smartctl -t] 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.
The most outstanding line there is the power-on time of 134911 hours, or 15 years. This is a WD Raptor, a 10,000RPM monster that I purchased in 2005 for $104.50. For some number of years, it housed my root partition. I’m sure it was retired from primary duty whenever I acquired my first SSD, but it’s sat in my case chugging along. I’ve kept it there because I’m weird and lazy, even though 36GB is now hilariously small in hard drive terms. It now contains a bare-bones rescue Debian system that I boot into every time my primary drive dies, or when I wish to upgrade the primary drive. Normal people would probably use a USB stick for that sort of thing, but they’re obnoxiously slow and easily misplaced. I just spent a lot of time last weekend booted off that drive, migrating the root partition from a 1TB PCIe 3.0 to a PCIe 4.0 drive.
And it works just fine. Sure, in the last 5 years it’s had to relocate 55 bad sectors, but that was probably ages ago. It has no currently pending or uncorrectable sectors. When I bought it, everyone figured that a 10,000rpm drive was a disaster waiting to happen. It’s turned out to be remarkably reliable.
This drive is a relic. It wasn’t even native-SATA. It’s a PATA drive with a SATA bridge. It’s doesn’t even have NCQ.
Meanwhile, I’m waiting hours to write zeros to the newish “bad” drive to see if it relocates all its bad sectors and pretends to be healthy again.