情報処理 | 2021年 8月14日(土)10時 6分 |
ちょっとした覚え書き。 写真関連の更新は、もうちょっとしたら再開します。
データを保管するハードディスクに異常が発生して、データが壊れてしまった時。 ディスクの物理的故障はどうしようもないが、どうやらそうではなく、何かの拍子にデータそのものの一部が壊れてしまった。と思われる状況においての対応。 chkdskコマンドを入れても「メモリ不足のため、自己復旧用のコマンドを送信できませんでした。」と表示される場合の対応メモ。
セキュリティ記述子とかがおかしいのかと思って、まずは/sdcleanup をつけてみる。 障害を起こしているドライブのドライブレターはOです。ファイルシステムはNTFS、ディスクタイプはSSDではなく普通のHDDです。
C:\WINDOWS\system32>chkdsk o: /sdcleanup ファイル システムの種類は NTFS です。 ボリューム ラベルは Data1 です。
ステージ 1: 基本のファイル システム構造を検査しています ... 36096 個のファイル レコードが処理されました。 ファイルの検査を完了しました。 フェーズの継続時間 (ファイル レコードの検査): 1.58 秒。 1190 個の大きなファイル レコードが処理されました。 フェーズの継続時間 (孤立ファイル レコードの回復): 0.00 ミリ秒。 0 個の問題のあるファイル レコードが処理されました。 フェーズの継続時間 (不良ファイル レコードの検査): 1.26 ミリ秒。
ステージ 2: ファイル名リンケージを検査しています ... 70845 個のインデックス エントリが処理されました。 インデックスの検査を完了しました。 フェーズの継続時間 (インデックスの検査): 2.91 秒。 0 個のインデックスなしファイルがスキャンされました。 フェーズの継続時間 (孤立した再接続): 2.35 ミリ秒。 0 個のインデックスのないファイルが lost and found に回復されました。 フェーズの継続時間 (孤立を lost and found に回復): 1.55 ミリ秒。 118 個の再解析レコードが処理されました。 フェーズの継続時間 (再解析ポイントとオブジェクト ID の検査): 3.75 ミリ秒。
ステージ 3: セキュリティ記述子を検査しています ... セキュリティ記述子の検査を完了しました。 フェーズの継続時間 (セキュリティ記述子の検査): 14.20 ミリ秒。 7374 個のデータ ファイルが処理されました。 フェーズの継続時間 (データ属性の検査): 1.24 ミリ秒。 CHKDSK は Usn ジャーナルを確認しています... 8821888 バイトの USN が処理されました。 Usn ジャーナルの確認を完了しました。 フェーズの継続時間 (USN ジャーナルの検査): 60.84 ミリ秒。
Windows でファイル システムのスキャンが終了しました。 問題は見つかりませんでした。 これ以上の操作は必要ありません。
1817197567 KB : 全ディスク領域 1532736756 KB : 27424 個のファイル 15884 KB : 7375 個のインデックス 0 KB : 不良セクター 166199 KB : システムで使用中 65536 KB : ログ ファイルが使用 284278728 KB : 使用可能領域
4096 バイト : アロケーション ユニット サイズ 454299391 個 : 全アロケーション ユニット 71069682 個 : 利用可能アロケーション ユニット 合計継続時間: 4.61 秒 (4612 ミリ秒)。
異常なしと判定される。sdcleanupスイッチでは暗黙的に/fスイッチが指定されるので、ファイルシステム構造とリンケージにも問題がない事がわかる。 この状況でもまだエラーが記録されるので、ファイルそのものがおかしいと判定。全ファイルデータとクラスターのチェックとリカバリーを行う/rスイッチを入れる。
C:\WINDOWS\system32>chkdsk o: /r /scan /perf ファイル システムの種類は NTFS です。 ボリューム ラベルは Data1 です。
ステージ 1: 基本のファイル システム構造を検査しています ... 36096 個のファイル レコードが処理されました。 ファイルの検査を完了しました。 フェーズの継続時間 (ファイル レコードの検査): 2.53 秒。 1190 個の大きなファイル レコードが処理されました。 フェーズの継続時間 (孤立ファイル レコードの回復): 0.00 ミリ秒。 0 個の問題のあるファイル レコードが処理されました。 フェーズの継続時間 (不良ファイル レコードの検査): 0.64 ミリ秒。
ステージ 2: ファイル名リンケージを検査しています ... 118 個の再解析レコードが処理されました。 50842 個のインデックス エントリが処理されました。 インデックスの検査を完了しました。 フェーズの継続時間 (インデックスの検査): 3.36 秒。 0 個のインデックスなしファイルがスキャンされました。 フェーズの継続時間 (孤立した再接続): 15.31 ミリ秒。 0 個のインデックスのないファイルが lost and found に回復されました。 フェーズの継続時間 (孤立を lost and found に回復): 10.67 ミリ秒。 118 個の再解析レコードが処理されました。 フェーズの継続時間 (再解析ポイントとオブジェクト ID の検査): 14.15 ミリ秒。
ステージ 3: セキュリティ記述子を検査しています ... セキュリティ記述子の検査を完了しました。 フェーズの継続時間 (セキュリティ記述子の検査): 27.76 ミリ秒。 7374 個のデータ ファイルが処理されました。 フェーズの継続時間 (データ属性の検査): 9.09 ミリ秒。 CHKDSK は Usn ジャーナルを確認しています... 8822496 バイトの USN が処理されました。 Usn ジャーナルの確認を完了しました。 フェーズの継続時間 (USN ジャーナルの検査): 98.88 ミリ秒。
ステージ 4: ユーザー ファイル データの不良クラスターを検査しています ... 不良クラスター 0x1 (ファイル "\(ファイル名) <0x1,0x8c90>" 内、ファイル オフセット 0x48cae から開始) が見つかりました メモリ不足のため、自己復旧用のコマンドを送信できませんでした。 36080 個のファイルが処理されました。 ファイル データの検査を完了しました。 フェーズの継続時間 (ユーザー ファイルの回復): 3.73 時間。
ステージ 5: 不良空きクラスターを探しています ... 67522467 個の空きクラスターが処理されました。 空き領域の検査が終了しました。 フェーズの継続時間 (空き領域の回復): 0.00 ミリ秒。
1817197567 KB : 全ディスク領域 1546925308 KB : 27427 個のファイル 15884 KB : 7375 個のインデックス 0 KB : 不良セクター 166507 KB : システムで使用中 65536 KB : ログ ファイルが使用 270089868 KB : 使用可能領域
4096 バイト : アロケーション ユニット サイズ 454299391 個 : 全アロケーション ユニット 67522467 個 : 利用可能アロケーション ユニット 合計継続時間: 3.73 時間 (13438790 ミリ秒)。
これで問題を特定。ファイルシステムではなくデータの損傷。(※たまたま壊れたセクタに書き込んでしまったのか、ノイズ等でデータが障害を起こしたのかは、chkdskからでは分かりにくい。今回の場合は不良セクターがゼロだが、問題のファイルが処理されていないので真意は不明。) さらに、「メモリ不足のため、自己復旧用のコマンドを送信できませんでした。」と表示されている。 通常、/rスイッチ(不良セクターを見つけて回復)が入っている場合は自動的に回復作業をしてくれるはずが、メモリ不足で回復できないと表示されている。/perfスイッチをつけていればメモリ使用量が増えてくれるかと思ったが、スキャンが早くなる以外に特にメリットはないようだ。
なお、対象のファイルは大きく、およそ3.2GBある。それも回復に失敗する原因かもしれない。 だいたいの人はこの状況でもう一度/rスイッチを入れるかもしれないが、その必要はない。(仮にもう一度同じことをやっても、同じようにメモリ不足だと言われて修復失敗となる可能性がある。もちろん修復される可能性もあるが)
では、どうするか。これでいい。
C:\WINDOWS\system32>chkdsk o: /spotfix ファイル システムの種類は NTFS です。 ボリューム ラベルは Data1 です。
1 個の破損レコードを検査しています...
レコード 1/1: 0x1 不良クラスター (ファイル "\(ファイル名) <0x1,0x8c90>" 内、ファイル オフセット 0x48cae000 から開始)... 破損が見つかり 、修復されました。
1 個の破損レコードが 21.7 秒で処理されました。
以前特定したこのドライブに関するすべての問題が Windows で修正されました。 これ以上の操作は必要ありません。
修復に失敗した場合、chkdsk(というより多分ファイルシステム)側で「障害マーク」しているので、/spotfixスイッチ(NTFS のみ: ボリュームに対してスポット修正を実行します。)を実行するだけで、スポット修復作業が行われます。 処理時間も30秒未満。 もしこれで心配なら、もう一度/rスイッチをつけてchkdskすれば安心。
尚、私はこの症状が出たためS.M.A.R.T.を監視し続けたところ、回復不可能セクタ数と代替処理保留中セクタ数が増えました。多分ディスク障害だった様子。まだ買って3年と経過していないディスクなのに……。 慌てて、NAS側にバックアップをとりました。物理損傷の場合、ここから被害が広がるかどうかが、この後を決める重要な局面なのよね……。 |