私は次のデバイスを持っています:
モデルファミリ:Western Digital Caviar Green(AF) デバイスモデル:WDC WD15EARS-00MVWB0 シリアル番号:WD-WCAZA3607921 LU WWNデバイスID:5 0014ee 2b01eac3e ファームウェアバージョン:51.0AB51 ユーザー容量:1,500,301,910,016バイト[1.50 TB] セクターサイズ:512バイト論理/物理 デバイス:smartctlデータベース[詳細な使用:- P show] ATAバージョン:ATA8-ACS(マイナーリビジョンは示されていません) SATAバージョン:SATA 2.6、3.0 Gb/s 現地時間:Thu Nov 21 00 :08:20 2013 CET SMARTサポート:利用可能-デバイスにはSMART機能。 SMARTサポート:有効
そして最近、このディスクの表面を読んでいるときにエラーが発生しました。これはエラーです:
完全なエラーログ: SMARTエラーログバージョン:1 ATAエラーカウント:25(デバイスログには最新の5つのエラーのみが含まれます) CR =コマンドレジスタ[HEX] FR =機能レジスタ[HEX] SC=セクターカウントレジスタ[HEX] SN =セクター番号レジスタ[HEX] CL =シリンダー低レジスター[HEX] CH =シリンダー高レジスター[HEX] DH =デバイス/ヘッドレジスター[HEX] DC =デバイスコマンドレジスタ[HEX] ER =エラーレジスタ[HEX] ST =ステータスレジスタ[HEX] Powered_Up_Timeは電源投入から測定され、[.____として出力されます。 ] DDd + hh:mm:SS.sssここで、DD =日、hh =時間、mm =分、 SS =秒、sss =millisec。49。710日後に「ラップ」します。 ディスクの電源投入時の有効期間でエラー25が発生しました:18798時間(783日+ 6時間) エラーの原因となったコマンドが発生したとき、デバイスはアクティブまたはアイドル状態でした。 コマンドの完了が発生した後、ギスターは次のとおりです。 ER ST SC SN CL CH DH ------ --- ------ 40 51 08 00 40 37 e6エラー:LBA = 0x06374000のUNC8セクター= 104284160 エラーの原因となったコマンドにつながるコマンドは次のとおりです。 CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name ------ ------ --- --- ------- --------- -------------------- c8 00 08 00 40 37 e6 08 08:54:35.771 READ DMA ec 00 00 00 00 00 a0 08 08:54:35.763デバイスの識別 ef 03 46 00 00 00 a0 08 08:54:35.763機能の設定[転送モードの設定]
これは25番目のエラーですが、以前のエラーはまったく同じです。
スマートレポートは次のとおりです。
SMART属性データ構造リビジョン番号:16 ベンダー固有SMARTしきい値のある属性: ID#ATTRIBUTE_NAMEフラグ値最悪のスレッシュタイプが更新されたときにRAW_VALUE 1 Raw_Read_Error_Rate 0x002f 200 200005事前失敗常に-1 3 Spin_Up_Time 0x0027 253 189021事前失敗常に-2066 4 Start_Stop_Count 0x0032 099 099 000Old_age常に-1118 5 Reallocated_Sector_Ct 0x0033 200200140 Pre-fail Always-0 7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always-0 9 Power_On_Hours 0x0032 075 075 000 Old_age Always --18833 10 Spin_Retry_Count 0x 100 000Old_age常に-0 11キャリブレーション_Retry_Count0x0032100 100 000Old_age常に-0 12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always --1101 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always --277 193 Load_Cycle_Count 0x0032 085 085 000 Old_age Always --346753 [.___ ] 194 Temperature_Celsius 0x0022 122 109 000 Old_age Always-28 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オフライン_修正不可0x0030200 200 000Old_ageオフライン-2 199 UDMA_CRC_Error_Count 0x0032 200 196 000Old_age常に-11 200 Multi_Zone_Error_Rate 0x0008 200 200 000Old_ageオフライン-1
ですから、まだ不良セクタではありませんが、そうなると思います。
そのドライブに7つのパーティションがありますが、問題は、ディスクの先頭から、セクターがどこにあるか、どのパーティションまたは/およびどのMiB、KiBなどかがわからないことです。それを理解する方法はありますか?
私はそれを行う方法を見つけました。スマートレポートの次の行は、LBAを決定します。
40 51 08 00 40 37 e6エラー:LBAでのUNC8セクター= 0x06374000 = 104284160
つまり、104284160です。それがわかっている場合は、どのパーティションが関係しているかもわかります。
root:〜#fdisk -lu /dev/sda Device Boot Start End Blocks Id System ... /dev/sda3 99610624 1466798079 683593728 83 Linux
3番目のパーティションの正確な場所を特定するには:
104284160-99610624 = 4673536
ブロックサイズも知っておく必要があります。
#tune2fs -l/dev/mapper/crypt_data | grepブロック ブロック数:170897920 ブロックサイズ:4096 グループあたりのブロック数:32768
これで、次の式を使用して、このLBAが含まれているファイルシステムブロックを特定できます。
b =(int)((LS)* 512/B) ここで: b =ファイルシステムのブロック番号 B =ファイルシステムのブロックサイズ(バイト単位) L =不良セクタのLBA S = fdisk -lu で示されるパーティションの開始セクタ。(int)は整数部分を示します。
私の場合、それは次のようになります。
b =(int)((104284160-99610624)* 512/4096 b = 584192
次に、そこにファイルがあるかどうかを確認する必要があります。
#debugfs debugfs 1.42.8(20-Jun-2013) debugfs:open /dev/mapper/crypt_data debugfs:testb 584192 ブロック584192でマークuse debugfs:icheck 584192 Block Inode number 584192 37486656 debugfs:ncheck 37486656 Inode Pathname 37486656/some /ファイル
そしてそれは基本的にそれです。次に、セクターを手動で再割り当てする必要があります。それを行う方法の詳細については、 ここで見つける 。