たかつです。 鏡さん: > 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日(月) 今日のマーフィーの法則 [ナガスの両替の公理] 海外旅行に行くと、外国通貨に交換した翌日に、その外国通貨の価値が下がる。