Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!
-
最近の投稿
アーカイブ
カテゴリー
メタ情報
Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!
いつも突然HDDにアクセスできなくなってしまう・・・。
物理的に逝くことが多々(-人-)ナム
●経緯●
外付けHDを購入し450Gほど使用したら突如アクセスできなくなった。(このときのファイルシステムは分からん)
マイコンで名前は表示されるが、容量欄は真っ白。
ダブルクリックするとフォーマットするか聞いてくるし(ノ_・。)
「コンピュータの管理」ではファイルシステムは真っ白。状態は正常。空き容量は100%。
なもんで、HDを取り出し内臓HDとして使用。
フォーマットかけたらすんなりアクセスできるし(´へ`;)
で、しばらく使用して450Gほどしたら・・・・。なんでじゃ!ヽ( ̄皿 ̄)ノ
その問題児君は↓で~す。
問題児HD : hitachi 500G 7200rpm 3.5IDE
今回はどうやら論理的損傷なのではあるが、
果たしてデータは取り出せるのか!?
使用環境:WinXP SP2
●サルベージに挑む●
前回HDが逝ったときに、ソフトで何か出来んかと思いファイナルデータを購入。
んで今回の問題児HDをファイナルデータで検索かけたところ
まぁ~~~時間がかかるかかる(´へ`;)
他に何かあるかなぁと探したところ
Handy Recovery
R studio
を発見。
ちなみにファイナルデータは「何でこんなソフト使ってるか分からんわ」てな感じで酷評でした。
2つとも有償ですが体験版でも検索してくれます。
ファイナルデータより早いですし画像のプレビューを見る限りこちら達の方がよさそうです。
●パーティションでなんとかなるかな?●
サルベージの他に修復方法が無いか調べたら
ブートレコードで何とかなんじゃねってな方法を見つけたので試してみることに。
まぁ右も左も分からない状態で、「ブートレコードって何?」「基本領域?拡張領域?論理領域?」
新しい言葉がワンサカ出てくる。
言葉の勉強しつつアプリの使用方法も勉強しつつ。
使えそうなツールをいくつかダウンロード。
HDD Regenerator :不良セクタの修復
HD Tune :セクタ情報の検査、HDの温度モニタなど
photorec_win :CUIでのサルベージ
testdisk :ブートレコードの検索・上書きなど
DiskProbe :ローレベルディスクエディタ(Microsoft謹製のソフト)
●いざ実践!!●
HD Tuneで検索したらありましたよ。
一番初めに!!
このソフトをで見ると一番初めのマスが赤いだけで他はオールグリーン。
パーティションに問題でも起きたのかなと予想。
結果・・・原因が絞り込めたかな・・・
~~~~~~~~~~~~~~~~~~~~~~~~
つづいて
HDD Regeneratorで不良セクタがないか検索。
これまたあったよ。一番初めに!!
何を血迷ったか
よし!修復するぞ~と意気込みRepairを選択。
赤いBの文字がRに変わった。
ワクワク、ワクワク、再起動・・・・
何も変わってねぇじゃん _| ̄| ~● ゴロゴロ
ハンッ!所詮6割修復できるツールだもんね(`3´) 、 ぺっ
結果・・・期待を返せ!・・・
~~~~~~~~~~~~~~~~~~~~~~~~
つづいて
photorec_winを使用。
このツールはファイル救出。
検索する拡張子が選べるのでjpgとpngに絞る。
いざ検索!
(ノ゚ο゚)ノ オオオオォォォォォォ-
ザックザック出てくる出てくる。500ファイルごとにフォルダは自動生成される。
見れる・・・見れるよー(~^~) ジ~ン
ただし、救出されたファイル名はクラスタかセクタの番号になってしまう。
およそ6時間40分かかった。
結果・・・良くも悪くも・・・
~~~~~~~~~~~~~~~~~~~~~~~~
つづいて
testdiskを使用。と同時にDiskProbeも使用。
testdiskでセクタ情報を書き換えるので
DiskProbeでセクタ情報を保存。
FAT32はオリジナルとバックアップのブートセクタがある。
そこでtestdiskを使い
1、バックアップをオリジナルに上書き
2、オリジナルをバックアップに上書き(無駄でも一応確認)
3、残存するブートセクタを抽出し上書き
の3つを試した。
結果・・・変わらず・・・。ガッデム!!(▼へ▼メ)
~~~~~~~~~~~~~~~~~~~~~~~~
同じくDiskProbeを使用。
別のHDでブートセクタをコピーし上書き。
★回復したいパーティションと同じ位置、同じサイズ、同じフォーマットのパーティションを作成する★
*位置やサイズが多少違っても何とかなる場合がある。あくまで。
結果・・・だめポ_| ̄|○
~~~~~~~~~~~~~~~~~~~~~~~~
あ~
も~やだっ
今現在、testdiskで問題児HDからファイルのコピーのオプション機能を使い
データを救出中。
フォルダ構造もそのままでウレピーわーい\(^o^)/
しかし、日本語名は文字化けで全滅・・・・。
そしてふと思う。
WinXPでは32GB以上のHDは基本的にはNTFSでフォーマットされる。
なのにphotrec_winやtestdiskでは、検索されたパーティションがFAT32だし。
出荷時はFAT32でフォーマット済で、
1回使用してフォーマットかけたときはNTFSで(おそらく)
そのNTFSがないってことは壊れたってこと?
(´ヘ`;)ハァ 疲れた・・・。
2008年2月5日(火) ハレハレ
newを使わずにインスタンスを生成できたので、今度はMethodクラスを使ってメソッドを呼び出すことにチャレンジです。
========================================================
String className = "TestHashTable";
try{
Class nodeClass = Class.forName(className);
try{
Method nodeMethod = nodeClass.getMethod("methodA", new Class[]{});
System.out.println("method call invoke():" + nodeMethod.invoke(nodeClass.newInstance(), new Object[]{}));
Method nodeMethodB = nodeClass.getMethod("methodB", new Class[]{int.class});
System.out.println("method call invoke():" + nodeMethodB.invoke(nodeClass.newInstance(), new Object[]{new Integer(100)}));
Method nodeMethodC = nodeClass.getMethod("methodC", new Class[]{String.class, int.class});
System.out.println("method call invoke():" + nodeMethodC.invoke(nodeClass.newInstance(), new Object[]{"moji", 20}));
}catch(NoSuchMethodException e){
e.printStackTrace();
}catch(IllegalAccessException e){
e.printStackTrace();
}catch(InvocationTargetException e){
e.printStackTrace();
}catch(InstantiationException e){
e.printStackTrace();
}
}catch(ClassNotFoundException e){
System.out.println("vrml97 Loader: Initialization error: Can’t " + "find class for VRML node: " + className);
e.printStackTrace();
}
========================================================
メソッドの戻り値は元のメソッドの戻り値同じで
戻り値がprimitive型の場合はラッパークラスとして返り、
voidの場合は、nullが返る。
▲呼び出すメソッドに引数なし
nodeClass.getMethod("methodA")
nodeClass.getMethod("methodA", new Class[]{})
nodeClass.getMethod("methodA", new Class[0])
getMethodでクラスから取得する
第1引数:取得するメソッド名
第2引数:メソッド引数の型を指定する
nodeMethod.invoke(nodeClass.newInstance())
nodeMethod.invoke(nodeClass.newInstance(), new Object[]{})
nodeMethod.invoke(nodeClass.newInstance(), new Object[0])
invokeでメソッドを呼び出す
第1引数:メソッドが属するクラスのインスタンス
第2引数:呼び出すメソッドに渡す値
▲呼び出すメソッドに引数あり
nodeClass.getMethod("methodB", new Class[]{int.class})
nodeMethodB.invoke(nodeClass.newInstance(), new Object[]{1})
nodeClass.getMethod("methodC", new Class[]{String.class, int.class})
nodeMethodC.invoke(nodeClass.newInstance(), new Object[]{"moji", 1})