Hard-Disk
如何確定包含 BTRFS 文件系統的儲存設備何時發生故障
我注意到包含部分 BTRFS 文件系統的 HDD 設備分區上有一些損壞錯誤:
matt@ryzen3950 ~> btrfs device stats /dev/dm-2 [/dev/mapper/cryptsda1].write_io_errs 0 [/dev/mapper/cryptsda1].read_io_errs 0 [/dev/mapper/cryptsda1].flush_io_errs 0 [/dev/mapper/cryptsda1].corruption_errs 12 [/dev/mapper/cryptsda1].generation_errs 0
此外,使用 btrfs-scrub 無法修復錯誤。這是否一定意味著硬碟驅動器出現故障?我應該更換這個硬碟並丟棄它嗎?或者,是否有可能是其他問題造成了損壞並且硬碟驅動器正常?如何確定硬碟驅動器是否確實健康?
編輯
受 rickhg12hs 下面評論的啟發,我安裝了smartmontools並使用
smartctl
. 我檢查了設備sudo smartctl -a -d sat /dev/sda
(
/dev/sda
用您的設備替換)其中,除其他外,報告了
SMART overall-health self-assessment test result: PASSED
然後我用
sudo smartctl -t long /dev/sda
後來用上面的第一個命令檢查了結果:
$ sudo smartctl -a -d sat /dev/sda [sudo] password for matt: smartctl 7.1 2020-06-01 r5062 [x86_64-linux-5.9.6] (local build) Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Model Family: Seagate BarraCuda 3.5 Device Model: ST2000DM008-2FR102 Serial Number: ZFL0JANK LU WWN Device Id: 5 000c50 0b61e994b Firmware Version: 0001 User Capacity: 2,000,398,934,016 bytes [2.00 TB] Sector Sizes: 512 bytes logical, 4096 bytes physical Rotation Rate: 7200 rpm Form Factor: 3.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.1, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Mon Jun 28 07:11:26 2021 PDT 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: (0x00) Offline data collection activity was never started. Auto Offline Data Collection: Disabled. 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: (0x73) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. No 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: ( 1) minutes. Extended self-test routine recommended polling time: ( 201) minutes. Conveyance self-test routine recommended polling time: ( 2) minutes. SCT capabilities: (0x30a5) SCT Status supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 10 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 080 046 006 Pre-fail Always - 194321836 3 Spin_Up_Time 0x0003 099 098 000 Pre-fail Always - 0 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 37 5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 1664 7 Seek_Error_Rate 0x000f 083 060 045 Pre-fail Always - 190898752 9 Power_On_Hours 0x0032 086 086 000 Old_age Always - 12558 (250 148 0) 10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 37 183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0 184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0 188 Command_Timeout 0x0032 100 099 000 Old_age Always - 1 1 1 189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0022 063 058 040 Old_age Always - 37 (Min/Max 31/42) 191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0 192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 492 193 Load_Cycle_Count 0x0032 094 094 000 Old_age Always - 13428 194 Temperature_Celsius 0x0022 037 042 000 Old_age Always - 37 (0 21 0 0 0) 195 Hardware_ECC_Recovered 0x001a 083 064 000 Old_age Always - 194321836 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 12100h+54m+59.286s 241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 29153824028 242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 49954137838 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed without error 00% 12548 - 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.
因此,據我所知,該設備功能齊全。我不知道是什麼導致了 btrfs 損壞錯誤(這也是我沒有發布此編輯作為答案的原因)。
您的原始讀取錯誤率和查找錯誤率都非常高,這兩者在過去都更糟。這表明驅動器無法讀取碟片上的位模式。雖然由於內置糾錯功能,驅動器大部分時間仍然可以應付(請參閱硬體 ECC 恢復值),但它並不完全健康。
儘管標準化的重新分配扇區數為 100,但原始值不為零,這意味著過去可能有幾個扇區被重新分配(原始值未標準化,因此很難說具體的內容)。這可以解釋你的損壞錯誤,而 BTRFS 甚至可能沒有找到所有這些 - 預計你的一些文件有讀取錯誤。
所以驅動器仍然可用,但已經出現磨損跡象;預計它會在未來的某個時候失敗(通常這種情況發生得非常突然)。不要把有價值的數據放在上面,一定要做好備份。可以將其用作系統驅動器,您可以通過重新安裝作業系統來恢復。