たかつです。
鏡さん:
> badsect コマンドで該当セクターをファイル化した後、fsck を実行すれば
> 特定可能です。おおざっぱな手順は
> http://evariste.jp/kagami/diary/0000/200407.html#20040718-1
なるほど。そのものずばりのコマンドですね。
・badsect で、指定したセクタ番号を使用するファイルを無理矢理作る
・fsck は、異なるファイルが同じセクタを使用していることを検出する
という流れで、バッドセクタだけを含むファイルの作成もできるし、エラー
セクタを含むファイルがどれなのかわかると。
問題は、シングルユーザで立ち上げ直さないといけないことでしょうか。単に
「エラーの発生するファイルがどれなのか知りたい」だけの場合は、ちょっと
手間がかかりすぎます。
今は問題の環境が手元に無く、シングルユーザモードに落とすことが出来ない
ので、あとで試してみたいと思います。
仲村さん:
> 以前、[FreeBSD-users-jp 84800]で、鈴木さんが
> 「『tar cf /dev/null ディレクトリ』で、読めないファイル名が表示されます」
> って事を言われてました。
以前にも同じ質問をされた方がいたのですね。ここの過去記事を検索はしたの
ですが見落としてました。
「tar を使えばわかる」というのは目から鱗です。ていうか、「ファイルを全部
読めばわかる」という所までは考えたのですが、
% find ほげほげ -type f -print0 | xargs -0 -I % dd if=% of=/dev/null bs=1024k
といった回りくどい方法しか思いつきませんでした。しかも、この方法だと
通常のコマンド実行結果も標準エラー出力に出るので、どこで問題が出てるのか
すごく分かりにくいんですよね…
で、ちょっと試してみたのですが、
% tar cf /dev/null ほげほげ
もしくは
% tar cf - ほげほげ > /dev/null
とやっても、一瞬でコマンドが終了します。エラーの出るファイルを指定したのですが
何も報告されません。
% tar cf - ほげほげ | tar tvf -
% tar cf - ほげほげ | cat > /dev/null
ならいけました。出力が /dev/null だと、何か特別なことをやってるのでしょうか?
とりあえずこれでパーティション全体をスキャンさせてみたいと思います。
えぐち@エスアンドイーさん:
> ストレートな答えではありませんが、とりあえず
> ports/sysutils/ufs_copy
> を使ってダンプしておいてはどうでしょうか?
これは、dd と同じように file system まるごとのイメージを出力するけど
ufs として未使用な部分は飛ばした sparse なファイルにしてくれるんですね。
ちょっと今回の目的とは違いますが、これはこれで面白そうです。問題は、今の
環境では、disk image を丸ごと書き込むだけの空いたディスクが無いってこと
ですね。普段のバックアップはネットワーク越しに rsync してるだけなので…
> それから、これ以上書き込みをしないようにするのは言うまでもありません。
それが正論なのは確かですが、「書き込みをしない」=「システムを停止させる」
なので、それはやってません。システムは稼働させっぱなしです。ここ数日の
様子を見たかぎりでは、エラーが増える様子は無いので、とりあえず問題の
セクタだけ使わないようにしておけば、お茶を濁せるかと思ってます。
で、そんなことを書いているうちに、 tar の結果が出ました。
tar: /usr/local/squid/cache/05/42: Cannot stat: Input/output error
squid のキャッシュディレクトリです。まあ、重要じゃない所だったので一安心。
PROJECT TEAM DoGA 高津正道 [EMAIL PROTECTED]
[EMAIL PROTECTED]
PROJECT TEAM DoGAのホームページ → http://doga.jp/
6月5日(月) 今日のマーフィーの法則 [ナガスの両替の公理]
海外旅行に行くと、外国通貨に交換した翌日に、その外国通貨の価値が下がる。