LinuxでHDDが壊れた時の見分け方
先日、外付ストレージとして使っていたハードディスクが壊れた。その際に行ったことをメモしておきたい。なお、このPCのOSにはLinux Mintを使用しており、Ubuntu系のLinuxであることから、それに基づいた記述をしている。
そもそもこの外付ストレージ、かなり荒技でmdadmを使ってのソフトウェアRAID構成をしていた。荒技というのはRAID5とRAID1を結合させて、あたかも一つのストレージに見せるという、ちょっと歪な構成になっていた。なぜこうなっていたというと、余っていたディスクを使ってストレージを作っていたからである。例を図で示すと以下のようになる。
容量の異なるディスクで構成されたディスクアレイだったので、RAID5とRAID1をLVMで束ねて作ってみたのだ。しかし、結果的にディスクが壊れた際の復旧が難しく、バックアップから戻す方法でデータは復活させた。よほどディスクアレイなどに精通している方以外は、この方法でのストレージ構成はお勧めしない。
ハードディスクが壊れる際は、異音がするなど、いろいろパターンがあるが今回はbad sectorが多発しての不具合だったようだ。まずSMARTの結果を見てみると以下のようになった。その前にsmartmontoolsをインストール。
sudo aptitude install smartmontools
そして以下を実行してみる。
sudo smartctl --all /dev/sdd
<一部省略>
=== START OF READ SMART DATA SECTION ===
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 - 76
3 Spin_Up_Time 0x0027 230 222 021 Pre-fail Always - 8466
4 Start_Stop_Count 0x0032 099 099 000 Old_age Always - 1006
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 098 098 000 Old_age Always - 1780
10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 997
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 180
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 1006
194 Temperature_Celsius 0x0022 114 098 000 Old_age Always - 36
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 192 192 000 Old_age Always - 1464
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 1
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 1
今回は、 「1 Raw_Read_Error_Rate」と「197 Current_Pending_Sector」の値に注目すべき点がある。Readエラーが頻発しているのと、代替処理保留中セクタ数が突出してカウントされている。代替保留されているセクタが多いということは、異常フラグすら立てられず、代替処理を行なっているということらしい。以下のサイトの説明が大変参考になった。
S.M.A.R.Tの見方とよくある誤解: アルファベット三文字の会 Ver.2
つまりこのディスクは既にほぼ死んでおり、交換時期が来たということだろう。事実、交換後に別のツールで不具合のあったディスクを調べてみた。
sudo badblocks -nvs /dev/sdd
<一部省略>
65459690done, 9:05:17 elapsed. (1526/0/0 errors)
65459691done, 9:05:31 elapsed. (1527/0/0 errors)
65459692done, 9:05:45 elapsed. (1528/0/0 errors)
6.70% done, 9:05:59 elapsed. (1529/0/0 errors)
すると、エラーが出るわ出るわ。途中でチェックを止めてしまったが、やはりもうこのハードディスクはご臨終だったようです。このツールも以下のサイトを参考にしながら使わせていただいた。
FaultyHardware - Community Help Wiki
How to Check your Hard Disk for Bad Blocks in Ubuntu | Tech Hacks
新しいディスクに交換した後のストレージ構成についてはまたの機会に紹介していきたい。