ちょっと不安になってきました。
以前とても古いノートPCのHDDの換装をおこなう際、ddコマンドの挙動に悩まされました。
ddコマンドに
conv=noerror,sync
と指定しておけば、badセクターがあっても、とりあえずディスクのクローンは成功するものと思っていました。
# badセクタはnullデータに化け手も仕方がないものとして。
例えば、以下のようなハウツーでも「noerror,sync」がデフォルト指定になっています。
Learn The DD Command Revised
http://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/
ですが、クローンにかかる時間を節約しようと、bs=512ではなくて、bs=1mとかbs=100mとかすると、古いノートPCでは途中から、セクタがずれる現象に見舞われました。レコード指定と組み合わせて、リードエラー発生前後でずれることはなんとなく分かったのですが。
どうしようもないので、ddによるクローンはあきらめて、リカバリディスクによるリカバリとデータのコピーでごまかしました。
時間ができたら調べようと思って、今日ググったら同じ事を言っている人が見つかりました。
(FreeBSD) ddコマンドでパーティションまるごと高速コピー・・・しようとして、ちょっとハマった
http://nhh.mo-blog.jp/ttt/2007/09/freebsd_dd_f935.html
今回、これが、なぜか、うまくいきませんでした。どういうわけか、途中から、セクタがずれていってしまうのです。
私はKNOPPIXで作業したのでFreeBSDではないのですが。
さらに探すと、FreeBSD上について妙なことをいっている人を見つけました。
/bin/dd fails with big disks containing bad sectors
http://unix.derkeiler.com/Mailing-Lists/FreeBSD/hackers/2007-01/msg00063.html
If you have a defective disk larger than 2 gb with many bad sectors and attempt to use
dd under FreeBSD to duplicate the disk, the operation will fail with sectors being out of alignment.
2GB以上でbadセクターが多数ある壊れたディスクを持っていて、FreeBSD上でddを遣ってディスクを複製しようとすると、セクタの配置がおかしくなって失敗する。
dd bs=512 if=src of=dst conv=noerror,sync
Under Linux, this operation performs as expected.
Linux上では、期待したとおりに機能する
この人はFreeBSDのカーネルを疑っているようでしたが、↓↓↓こちらでも放置されているようなので、どうにも。
kern/107443: dd(1) fails to copy from disk to disk when bad sectors are involved
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/107443
ddrescueとかreceverdiskなどのツール名が出てくるので、badセクタがあるディスクをddコマンドで複製するのは避けるのが不文律になっている雰囲気すら漂ってきます。
ちなみにddの実装は今はcoreutilsに入っているようです。ソースを見てみようという猛者は以下からどうぞ。OS/カーネル/ドライバの問題の場合はddの実装は無実なわけですが。
Coreutils - GNU core utilities
http://www.gnu.org/software/coreutils/
src/dd.cがそれのようです。
リンク
http://d.hatena.ne.jp/syasuda/20090208/1234076670
http://d.hatena.ne.jp/syasuda/20090201/1233487586

PowerQuest DriveCopy 3.0 日本語版 ノートPC用バリューパック
- 出版社/メーカー: ネットジャパン
- メディア: CD-ROM
- クリック: 1回
- この商品を含むブログ (1件) を見る
コメント