
Ubuntu日本語フォーラム

ログインしていません。
Ubuntu 8.04LTSなのですが、
http://forums.ubuntulinux.jp/viewtopic.php?id=1016
事後に気がついているため実際に処理が発生するタイミングが不明なのですが、後述の環境で運用した場合に上の投稿とと同じ様な症状が発生しています。
該当文字を含むファイル、フォルダ名が000から連番で変更され、その該当ファイルを含むフォルダに不整合が発生し、Windowsからは該当ファイルへの削除を含むアクセスが不可能になりchkdskではエントリが不正である旨のエラーが検出されます。
リネームされる場所があまり普段使うときに目にしないところにあるため、実際の発生タイミングを特定できていませんが、結果として不定のタイミングで、ローカルHDD別パーティション内のFAT32パーティションに対し、fsckによると思われるディレクトリエントリの破損が発生しているという状況です。
実は二度、同様の症状に見舞われており、
初回については、
sda1 FAT32(Hidden) WindowsXP
sda2 FAT32(Hidden) WindowsXP
sda3 ext3 Ubuntu 8.04LTS
の環境にて発生し、MBRには、MBM、GRUBは、sda3にインストールされ、アクティブ、不可視フラグについては、MBMで起動時に設定されるようになっています。Windows起動時にはHiddenフラグはブートローダにより一時的に解除されます。
このときは、sda1、sda2両方ともリネームされてしまいました。
インストール時はsda1、sda2パーティションIDを1Cにしてインストールを行い、インストール時のパーティションについては手動で/に割り当てを行っています。
fstabには、該当パーティションに対する記述はありません。gnome-mountにより、FAT32パーティションはリムーバブル領域として認識し、マウントも出来てしまいます。
二度目については、
sda1 FAT32(Hidden) WindowsXP
sda2 NTFS(Hidden) WindowsXP
sda3 ext3 Ubuntu 8.04LTS
の構成になっています。
現状sda1はsda2からの該当ファイル上書きにより復旧していますが、今回は、sda1のみが犠牲となりました。
パーティションについてはすべて基本領域として確保しています。
どちらの環境でも、数回のOS切り替え、再起動を行った場合には異常はなく、インストール直後の初回起動時というタイミングではまだ無事だったことを確認しています。
が、運用するうち、突然エントリを破壊される羽目になっています。
fsckを明示的に行うことはしておらず、fstabにも記述はなく、自動的にマウントされることは無い「筈」と思っており、強いて言えば、Nautilusでリムーバブル領域として認識、表示されるため、誤操作によって開いたりマウントしたという可能性はあります。
また、MBMの起動時ホットキーにより、一時的にマスクが外れパーティションIDが0Cで起動した事があった可能性もあります。
ただ、気がついたときにUbuntu側で、sudo fdiskを行い表示したパーティションテーブルでは、Hiddenの設定になっています。
どちらも可能性のレベルの話で、自覚を持って作業をしたものではありませんが、fstabに記述がなくても、fat32パーティションを含むHDDでの運用中にディレクトリエントリが破損する事故が発生し得るということはいえるかと思います。
正直言って、外部にNASもありますので、HDD内のシステムでOS間のファイル共有は(今後何らかの復旧作業などに必要になることはあるかもしれませんが)行える必要はなく、余計なことさえしないでくれれば問題はないのですが、上記のようにパーティションIDとしては「Hidden」として通っているIDもマウントが可能になっていたり、見えても何もしなければ問題は無いにも関わらず、修復という名目の破壊を行ってくれるので少々困っています。
インストール時にも、17、1C、のパーティションIDの中身から設定情報を拾おうとしているので、事実上パーティションIDによる挙動の変化は期待できないのかもしれません。
個人的には、無意味にHiddenのフラグがあるわけではなく、明示的に変更されるパーティションIDを無視するというのは大きなお世話と同時に、行儀が良くないと思うのですが。
中身を見たい、参照させたいのなら、普通に設定されるIDを設定すればいいのですから、「そのIDに設定したユーザの意図を無視する」というのはいかがな物かとは思います。そりゃフラグですから、中身を覗けば整合性のある見慣れたファイルシステムがあるでしょうけども…見てくれとは頼んでないです。逆に作業としては、無視してねと明示しているのに等しいわけですが、何故こういう動作になっているのでしょうか?
fsckの件が無くてもこれについても首をかしげています。
運用による回避としては、NTFSにしてしまえばいいわけですが、使い方によっては致命的な問題になった可能性や、複数回にわたり発生しているため、潜在的に存在するありがたくない障害の可能性として報告させていただこうと思い書き込みました。
確実なトリガ、発生タイミングを明示できず申し訳ないのですが、ほかに何か必要な事があれば、提示できるかは不明ですが、可能な範囲で提示したいとは思っています。
とりあえず、fsckが確実にfat32へアクセスしなくなれば実害は防げるとは思うのですが…。
解決の必要な質問というよりは、今後出来れば修正していただきたい事項としての報告になりますが、内容の確認の程、よろしくお願いいたします。
最後の編集者: Crush (2009-02-12 01:39:58)
オフライン
https://bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/48806
というやつがあります。
オフライン
パーティション破壊ご愁傷様です・・・。
Crush による投稿:
とりあえず、fsckが確実にfat32へアクセスしなくなれば実害は防げるとは思うのですが…。
http://packages.ubuntu.com/search?lang=ja&suite=intrepid&arch=any&searchon=contents&keywords=fsck
としてみたところ、FAT32(VFAT)のfsckは
http://packages.ubuntu.com/ja/intrepid/i386/dosfstools/filelist
と他のfsckと独立しているようなので、この際 dosfstools パッケージを削除してしまったり
/sbin/dosfsck
/sbin/fsck.msdos
/sbin/fsck.vfat
を実行できないように(パーミッション剥奪、ダミーファイル置換等)してしまう、というのは当面の対処としていかがでしょうか。
オフライン
お二方返信ありがとう御座います。
とりあえず、dosfstoolsを削除しようかと思っています。
尚、リネームされたファイルがあるフォルダのエントリには不整合が発生するようで、ファイルを削除してもエントリには問題があるという旨がchkdskで検出されます。 エントリ自体の整合性は、chkdsk /fで修正され、リネームされたファイルもBMP一つだけですが、Ubuntu側からは参照できているので、名前の再変更で復旧は出来そうですが、元ファイル名が無くなることになるので数があると気分的にはやる気が失せますね。
該当ファイルへはWindows側からは、全くアクセスできなくなりますので、Windowsにも不慣れな人が運悪く引っかかってしまうとかなり慌てる様な気はします。
運悪く似たような状況に陥った人の参考にでもなればいいのですが。
gnome-mountは何でも認識しようとするようで、事後にFreeBSDを入れたのですが、スライスも(中身は読めませんが)リムーバブル領域として列挙されています。
また、マウント作業を行う場合無条件にrwでマウントしようとしているようです。
事故を防ぐためにデフォルトはroで認識するようには出来ないのでしょうか?
ntfsもrwでマウントされますが、パフォーマンスが要らないアーカイブなどは圧縮属性になっていたりするので、うっかり誤操作で触った場合には不安が残ります。
報告としての意味合いが強く、起こることが解っているのなら運用で気をつければ良いかとは思っているのですが、インストール直後のデフォルト設定は安全よりになっていた方が良いような気はするのですが、難しいのでしょうかね?
最後の編集者: Crush (2009-02-12 01:36:03)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-02-11 07:06:05)
オフライン
タイトルについては、Subjects cannot be longer than 70 characters. と表示され、更新できませんでした。
元の名前より短くしても駄目だったので諦めてしまいました。
インストール直後については、リブートしたXPは平気でしたので、恐らく先回りして、fstabに記述してしまうのも一つの解だと思うのですが、私の場合は、基本領域を各々独立させて使いたかったので、選択肢としてありませんでした。
お互いにお互いの状態を明示的に持たせた場合構成を変更したときに面倒くさいなぁという思いからの個人的な慣習ではありますが。
そういった理由で、MBRにはチェインローダ、GRUBはパーティションのブートブロックに書き込んでいます。
ですのでパーティションなどのマスクを行っていない場合の挙動はわからないのですが、ロジックではなく、実行した結果から言えば、マスクしたFAT32パーティションは、fstabには追記されず、デフォルトでは、gnome-mountによってリムーバブル領域として「認識」され、GUI等でクリックするなどして開いてしまえば「マウント」される。という所までは確認しています。
マウント処理がメニューとしても出るので、自動では「マウント」ではなく「マウント可能な場所として列挙されるだけ」の様には見えます。
fsckによるものかどうかは、現象としてそうなるという結果からの類推ですので、同じような事を別の物がしているのであれば、更に犯人が潜伏しているということにもなります。
とくにデフォルトから変更していないという以上の設定がどうなっているか、どのような設定が可能であるかは私には解りませんので、確実なfsckの回避方法があれば良いのですがと記述しました。
提示が必要であれば、Ubuntuパーティションは事故に気がついた後のままですので、設定やログは残っていれば出せますが、該当する場所を私は知らないです。
fsckの実行タイミングが全部解れば運用で引っかかる物は無いか思い出しては見ますが、fstabには、sda3と、光学ドライブしか列挙が無いため、マウント処理を行いそうな物というと、gnome-mountしか、現状思い当たらず、これと誤操作によるマウントは誤って運用上実行している可能性があるという状態です。
なにぶん、トリガやタイミングの確実な特定は出来ていないので、こういうインストールをして、運用していると現象が出るようですという話でしか今のところはなく、そのために一応必要そうなインストール時の状況を書いてあります。
本物のリムーバブルデバイスは取り外されてしまうことが多く、リネームされたと泣いている人の数と利用者を考えた場合、常時接続されていなければ問題は出ていないのではないかという気はします。
オフライン
私のubuntu8.04にも同様の症状が出て4つほどやられてしまいました
当方では当初XPとのデュアルブートにする予定だったのでFAT32でフォーマットでフォーマットしたHDDがたくさんありますorz
こういう系はよく分からないので状況からでしか話できませんが
今回やられたHDDは普段あんまりマウントしてないHDDでした(seagate製ST3320620AS)
なぜか常時マウントしているHitachi HDT721010SLA360は今のところ問題は発生しておりません
2つのHDDを比較してみると相違点は
問題の方は
・領域がFAT32のみ
・rootにたくさんのフォルダがある
・常時マウントしていない
・内蔵HDDである
今のところ問題の無いHDDは
・常時マウント
・FAT32+ext3の構成
・rootにたくさんのファイルを置いていない
です
今後問題の発生したhddを
・ext3の追加
・常時マウント
にして少し様子を見てみたいと思います
オフライン
こちらで変更されてしまったFAT32パーティションについては、
・/にあるエントリ数は28。
・ext3のパーティションを三つ目の基本領域に持っている。
・fstabに記述は無い。
という条件です。従って、ファイルの数、ext3パーティションの存在は回避にならないかと思います。
roでマウントするのであれば、書き込みは行わない筈ですので、必然的に改竄もない物と思います。
起動回数によってfsckが走るのはext2とかでしたっけ?
FAT32を走査し、fsckを実行する条件がどこかにあると思うのですが・・・。
どなたかご存じないでしょうか?
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-02-14 14:10:59)
オフライン
思いつきで発言することをお許し下さい.
結果についての責任は持てません.
ack による投稿:
/sbin/dosfsck
/sbin/fsck.msdos
/sbin/fsck.vfat
を実行できないように(パーミッション剥奪、ダミーファイル置換等)してしまう、というのは当面の対処としていかがでしょうか。
ログを残すシェルスクリプトと置換するのはどうでしょう.
何処から起動されたかを調べる材料が手に入るかもしれません.
8.04 ではfsck.msdos と fsck.vfat は dosfsck へのシンボリックリンクです.
8.10 でも同じであれば dosfsck のみを置換すれば済みます.
#! /bin/bash ### /root/dosfsck.log にログを残す logfile=/root/dosfsck.log ### 日付,起動スクリプト名とコマンド引数,親プロセスID date >> $logfile echo "$0 $*" >> $logfile echo $PPID >> $logfile ### pstree なら親プロセスが何か解る? pstree -Aap >> $logfile ### その他調査の手がかりとなる情報を記録 ### エラー出力に何か書き込む. ### rc スクリプトから起動された場合/var/log のどこかに跡を残せる可能性あり. echo "This is a dummy DOSFSCK" >&2 ### 失敗ステータスで終了する -- 危険?? ### これも/var/log のどこかに跡を残せるかも # exit 1 ### 成功ステータスで終了 exit 0
参考:/sbin/fsck.nfs が initscripts 所属のダミーのシェルスクリプトです.
スクリプト内のダブルクォーテーションを修正
最後の編集者: einundzwanzighundertsechs (2009-02-14 15:52:35)
オフライン
追記です。書き忘れてました。
・rootにあったフォルダを2つに減らしました
・書き換えられたフォルダ名の変更とディレクトリの変更(フォルダ作って放り込むとか)
確かにext3領域は関係なさそうですね
昔、FATの特性でrootに大量にフォルダ(ファイル)を置くとあまりよくないと聞いたことがあったのでもしかして
それが関係してるのかなあと思って減らしてみました。(てかこの話本当なのか?)
しかし、今一番確実な対処法は#3さんの方法ですね
オフライン
FATのディレクトリのうち、ルートはサイズが固定です。
8.3形式で512個のエントリしか無く、vfatでは更に登録できるファイルは減少します。
ですので、ルートにフォルダをおくべきではないという話になっていたのではないかと。
マウントの回数、経過時間当たりで何か起こしているのかもしれませんね。
ログを残すようにしてわざと怪しい作業してみるしか捕まえる方法は無いかもしれないです。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-02-15 00:33:14)
オフライン