2006/01/17(火) [n年前の日記]
#5 [pc][linux][windows] メインPCのダメHDDを新HDDにコピー
以下のページを参考にさせてもらいつつ。
_void GraphicWizardsLair( void ); // H原外付けHDDの復旧作業
_2002/11/07 自宅(1) 「復活の日: FreeBSD ディスククラッシュ事件総括」
_2004/01/22 三田(2) 「ディスクが BIOS から認識しなくても諦めるな!」
linux の場合、HDD は、
_Manpage of DD
if は、転送元。(Input)。
of は、転送先。(Output)
bs は、一度に読み書きするbyte数。
conv=sync,noerror は、下記の指定。
conv=sync,noerror をつけると、HDDの終わりをチェックしてくれなくなるので、count=〜 で作業回数を指定しておくのだとか。回数は、HDD の CHS(シリンダ/ヘッダ/セクタ) を掛算した値。その回数分コピーをすれば、HDDを丸々コピーしたことになるはず。
ちなみに、CHSを掛算した値に、bsで指定した 512 byte を掛けてやれば、HDDの容量になってくれる、ということらしい。
_void GraphicWizardsLair( void ); // H原外付けHDDの復旧作業
_2002/11/07 自宅(1) 「復活の日: FreeBSD ディスククラッシュ事件総括」
_2004/01/22 三田(2) 「ディスクが BIOS から認識しなくても諦めるな!」
- knoppix 3.7 を「knoppix noswap」で起動。
- root shell を開く。
- dmesg | grep hda で、HDD の CHS(シリンダ/ヘッダ/セクタ) をメモ。
- CHS を掛算しておく。
- hdparm で HDD の DMA を変更。入力側は DMA off。出力側は DMA on にした。どちらも off の場合より、半分の時間で済むらしい。
- dd if=/dev/hda of=/dev/hdb bs=512 count=CHSをかけ算した数値 conv=sync,noerror でコピー開始。
◎ 補足 : knoppix :
knoppix の起動時に noswap をつければ、HDDにswap、つまりは書き込みをしなくて済むらしい。復旧作業時などは noswap をつけて動かしたほうが安全なのだろう。たぶん。
root shell は、画面下部ツールバー(?)のペンギンアイコンを押せばメニューの中に見える。管理者権限で操作ができる。らしい。
root shell は、画面下部ツールバー(?)のペンギンアイコンを押せばメニューの中に見える。管理者権限で操作ができる。らしい。
◎ 補足 : dmesg :
dmesg | grep hdadmesg は、起動時のログを表示してくれるコマンド。…コマンドなのかツールなのかわからんけど。それを grep という「文字列を検索」するツールに丸々渡して、「hda」が含まれている行だけを表示する。
linux の場合、HDD は、
- hda
- hdb
- hdc
- hdd
◎ 補足 : CHSの掛算 :
今回は、CHS(シリンダ/ヘッダ/セクタ) = 9964/255/63 だったので、9964 x 255 x 63 = 160071660。
◎ 補足 : HDDのDMA :
hdparm というコマンドを使えば確認・変更できる。
壊れたHDDは、DMA on だと変なデータを返す可能性もあるとどこかで見かけたので、壊れたHDD側は DMA 無効にして作業してみたり。でも、利用時間が長いとどんどん壊れていく場面もありそうな。そういう場面では、DMA on にして、できるだけ短時間で吸い出したほうがいいのだろうか。いや、しかし、壊れたデータを吸い出しても無意味だしなぁ。
hdparm /dev/hdaHDDの設定状況が表示される。
hdparm -d0 /dev/hdaDMAを無効に。
hdparm -d1 /dev/hdaDMAを有効に。
壊れたHDDは、DMA on だと変なデータを返す可能性もあるとどこかで見かけたので、壊れたHDD側は DMA 無効にして作業してみたり。でも、利用時間が長いとどんどん壊れていく場面もありそうな。そういう場面では、DMA on にして、できるだけ短時間で吸い出したほうがいいのだろうか。いや、しかし、壊れたデータを吸い出しても無意味だしなぁ。
◎ 補足 : dd :
dd if=/dev/hda of=/dev/hdb bs=512 count=かけ算した数値 conv=sync,noerror
_Manpage of DD
dd はファイルを指定された入出力ブロックサイズで (デフォルトでは標準入力から標準出力へ) コピーする。
if は、転送元。(Input)。
of は、転送先。(Output)
bs は、一度に読み書きするbyte数。
conv=sync,noerror は、下記の指定。
- sync
- エラーが出たところを詰めないで、代りに 0 で埋める。
- noerror
- 読み込みエラーが出ても継続する。
conv=sync,noerror をつけると、HDDの終わりをチェックしてくれなくなるので、count=〜 で作業回数を指定しておくのだとか。回数は、HDD の CHS(シリンダ/ヘッダ/セクタ) を掛算した値。その回数分コピーをすれば、HDDを丸々コピーしたことになるはず。
ちなみに、CHSを掛算した値に、bsで指定した 512 byte を掛けてやれば、HDDの容量になってくれる、ということらしい。
[ ツッコむ ]
以上です。