目次
FreeNAS でCurrently unreadable (pending) sectorsが発生、その対処方法は
昨日FreeNASを導入していたファイルサーバーがスタックしてしまい、電源を強制断したところWEB管理画面にCRITICALエラー発生のアラートが表示されました。
導入から5年、ついに来てしまったかと思いながら確認したところ、どうもエラーが発生したような形跡がないんです。
Currently unreadable (pending) sectorsの発見から対処までの流れをまとめてみます。
zpool statusの確認
[root@kaga] ~# zpool status
pool: freenas-boot
state: ONLINE
scan: scrub repaired 0 in 0h1m with 0 errors on Wed Apr 26 03:46:15 2017
config:
NAME STATE READ WRITE CKSUM
freenas-boot ONLINE 0 0 0
gptid/145b3613-a3e8-11e4-8597-001517cff324 ONLINE 0 0 0
errors: No known data errors
pool: tank
state: ONLINE
scan: scrub repaired 0 in 4h39m with 0 errors on Sun Feb 19 04:39:18 2017
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
gptid/1bcf0dfa-3c6a-11e3-a467-38eaa7a92833 ONLINE 0 0 0
gptid/1ca4547c-3c6a-11e3-a467-38eaa7a92833 ONLINE 0 0 0
gptid/1da21f6c-3c6a-11e3-a467-38eaa7a92833 ONLINE 0 0 0
gptid/1e8c3084-3c6a-11e3-a467-38eaa7a92833 ONLINE 0 0 0
errors: No known data errors
今回発生したCRITICALエラーには、「Device: /dev/ada1, 1 Currently unreadable (pending) sectors」とあったので、/dev/sda1でエラーが起きていると判断して、zpool statusを叩いてみたのですが、結果はエラー無し。
smartctl -a /dev/ada1
CRITICALエラー発生しているのに何で・・・?と思いながら/dev/sda1のオフラインテストを行った後、SMART値を確認してみました。
オフラインテスト実施(2TBのHDDで7時間ほどかかりました)
smartctl -t long /dev/ada1
SMART値の確認
[root@kaga] ~# smartctl -a /dev/ada1
smartctl 6.5 2016-05-07 r4318 [FreeBSD 10.3-STABLE amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar Green (AF)
Device Model: WDC WD20EARS-00MVWB0
Serial Number: WD-WCAZA6097262
LU WWN Device Id: 5 0014ee 25b069974
Firmware Version: 51.0AB51
User Capacity: 2,000,398,934,016 bytes [2.00 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS (minor revision not indicated)
SATA Version is: SATA 2.6, 3.0 Gb/s
Local Time is: Wed Apr 26 11:50:06 2017 JST
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: ( 121) The previous self-test completed having
the read element of the test failed.
Total time to complete Offline
data collection: (36780) 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: ( 355) minutes.
Conveyance self-test routine
recommended polling time: ( 5) minutes.
SCT capabilities: (0x3035) 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 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 253 165 021 Pre-fail Always - 950
4 Start_Stop_Count 0x0032 098 098 000 Old_age Always - 2398
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 033 033 000 Old_age Always - 49443
10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 85
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 49
193 Load_Cycle_Count 0x0032 001 001 000 Old_age Always - 1648955
194 Temperature_Celsius 0x0022 116 084 000 Old_age Always - 34
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 1
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
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: read failure 90% 49429 19506320
# 2 Extended offline Interrupted (host reset) 60% 34995 -
# 3 Extended offline Completed without error 00% 34992 -
# 4 Extended offline Completed without error 00% 34986 -
# 5 Extended offline Completed without error 00% 34979 -
# 6 Extended offline Completed without error 00% 34972 -
# 7 Extended offline Completed without error 00% 34965 -
# 8 Extended offline Completed without error 00% 34958 -
# 9 Extended offline Completed without error 00% 34951 -
#10 Extended offline Completed without error 00% 34944 -
#11 Extended offline Completed without error 00% 34937 -
#12 Extended offline Completed without error 00% 34930 -
#13 Extended offline Completed without error 00% 34923 -
#14 Extended offline Completed without error 00% 34916 -
#15 Extended offline Completed without error 00% 34909 -
#16 Extended offline Completed without error 00% 34902 -
#17 Extended offline Completed without error 00% 34895 -
#18 Extended offline Completed without error 00% 34888 -
#19 Extended offline Completed without error 00% 34881 -
#20 Extended offline Completed without error 00% 34874 -
#21 Extended offline Completed without error 00% 34867 -
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.
結果を確認してみると、確かにCurrent_Pending_Sectorが1つあるようですね。
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 1
Current Pending Sectorは不安定な状態にはなっているけど、読み込める可能性もあるのでremapせずにひとまず放置しているセクターになります。
直ちに影響が出るものでもありませんが、こちらが解決されない限りずっとアラートが出続けるので、サクッと対処します。
上記のSMART値の結果の内、
Sector Size: 512 bytes logical/physical
と
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed: read failure 90% 49429 19506320
を確認します。 セクターサイズが512バイトであり、Current Pending Sectorが19506320セクターであることが分かります。
ここのセクターに対して書き込みを行います。
[root@kaga] ~# sysctl kern.geom.debugflags=16 kern.geom.debugflags: 0 -> 16 [root@kaga] ~# dd if=/dev/ada1 of=/dev/ada1 bs=512 count=1 iseek=19506320 oseek=19506320 conv=noerror,sync dd: /dev/ada1: Input/output error 0+0 records in 0+0 records out 0 bytes transferred in 13.892026 secs (0 bytes/sec) dd: /dev/ada1: Input/output error 1+0 records in 1+0 records out 512 bytes transferred in 13.981968 secs (37 bytes/sec)
この状態で再度、SMART値を確認します。
[root@kaga] ~# smartctl -a /dev/ada1
smartctl 6.5 2016-05-07 r4318 [FreeBSD 10.3-STABLE amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar Green (AF)
Device Model: WDC WD20EARS-00MVWB0
Serial Number: WD-WCAZA6097262
LU WWN Device Id: 5 0014ee 25b069974
Firmware Version: 51.0AB51
User Capacity: 2,000,398,934,016 bytes [2.00 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS (minor revision not indicated)
SATA Version is: SATA 2.6, 3.0 Gb/s
Local Time is: Wed Apr 26 12:00:53 2017 JST
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: ( 121) The previous self-test completed having
the read element of the test failed.
Total time to complete Offline
data collection: (36780) 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: ( 355) minutes.
Conveyance self-test routine
recommended polling time: ( 5) minutes.
SCT capabilities: (0x3035) 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 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 253 165 021 Pre-fail Always - 950
4 Start_Stop_Count 0x0032 098 098 000 Old_age Always - 2398
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 033 033 000 Old_age Always - 49443
10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 85
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 49
193 Load_Cycle_Count 0x0032 001 001 000 Old_age Always - 1648958
194 Temperature_Celsius 0x0022 116 084 000 Old_age Always - 34
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
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: read failure 90% 49429 19506320
# 2 Extended offline Interrupted (host reset) 60% 34995 -
# 3 Extended offline Completed without error 00% 34992 -
# 4 Extended offline Completed without error 00% 34986 -
# 5 Extended offline Completed without error 00% 34979 -
# 6 Extended offline Completed without error 00% 34972 -
# 7 Extended offline Completed without error 00% 34965 -
# 8 Extended offline Completed without error 00% 34958 -
# 9 Extended offline Completed without error 00% 34951 -
#10 Extended offline Completed without error 00% 34944 -
#11 Extended offline Completed without error 00% 34937 -
#12 Extended offline Completed without error 00% 34930 -
#13 Extended offline Completed without error 00% 34923 -
#14 Extended offline Completed without error 00% 34916 -
#15 Extended offline Completed without error 00% 34909 -
#16 Extended offline Completed without error 00% 34902 -
#17 Extended offline Completed without error 00% 34895 -
#18 Extended offline Completed without error 00% 34888 -
#19 Extended offline Completed without error 00% 34881 -
#20 Extended offline Completed without error 00% 34874 -
#21 Extended offline Completed without error 00% 34867 -
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.
Current_Pending_Sectorの値が1から0になっていることが確認できます。
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
なお、末尾にRead failureのログが表示されていますが、前回実施したテストの結果ですので、上記のCurrent_Pending_Sectorの値が1になっていれば問題ありません。
まとめ
CRITICALエラーのアラートを見てかなり焦りましたが、そこまで深刻な物ではなく安心しました。
SMARTの値をCUIで確認するなんて初めての経験でしたので、ちょうど良い障害対応でした。
