2006年06月18日 20:46

外付けHDDのマウントポイントが消去されない

特定の外付けHDDに関するトラブル。


システム上、外付けHDDはフォルダのようにアクセス可能です。例えば、「HDD160GB」という名前を付けたHDDがあるとします。OSXの場合このHDDがマウントされると「Volumes」というシステムが管理するフォルダ上に「HDD160GB」という名前で登録されます。

ユーザーがこのHDDのデータを読み出そうとすると、「/Volumes/HDD160GB」というフォルダのような方法でこのHDDの中に対してアクセス可能です。マルチユーザーOSですので、アクセス権が正当であることが条件になります。場合によってはアクセス権がおかしな設定になる場合があり、修正が必要な場合が出てきます。修正方法はシステムHDDでなければ、ユーティリティフォルダにあるディスクユーティリティを使うのが簡単です。システムHDDの場合は、システムDVDから起動の上同ユーティリティで修正可能です。

さて、それでは該当HDDがアンマウントされる場合はどうなるでしょう。本来であれば「Volumes」に作られたHDD160GBのマウントポイント(用語の使い方が正しいかどうか自信がありません)はシステムが消去するはずです。ところがどうも會澤のシステムに消去されないマウントポイントが存在してしまうようになってしまいました。

消去されないとどうなるか、システムは「Volumes/HDD160GB」というのはすでに使用されているから同じ名前では登録できない。「Volumes/HDD160GB 1」で登録しましょう。という具合に名前の後ろに数字を添えた状態でマウントポイントを作成します。わかりにくいのはFinderなどで表示される名前はマウントポイントの名前とは異なり「HDD160GB」のままです。例えばターミナルから常にアクセスする人ならおかしいのがわかると思います。しかしFinderから見ると同じなのです。ただ、FInderからも「Volumes/HDD160GB」と「Volumes/HDD160GB 1」は見えてくる場合があります。ファイルの保存などを行おうとしたときに出てくるダイヤログではこの二つ場合によっては見えてしまいます。しかし、「HDD160GB」が二つ見えるのではなく、システムが以前保存したポイントとして憶えていてダイヤログでデフォルトとして表示するのが「Volumes/HDD160GB」の方で、実際マウントポイントとして使用しているのが「Volumes/HDD160GB 1」の方であるなどという場合が発生します。事実會澤の環境で発生しています。


これはシステムが再起動したりすると「1」が「2」「3」と増えていくのですよ。気がついたら「8」までいってました。それまで気がつかなかったんです。実はこのHDDは、動画をストックするためのものです。動画をライブラリ化するのに使っているソフトが使うtemporaryフォルダがどうも消去されずに残ってしまうようです。不可視のフォルダなので気がつくのが遅れたのですが、マウントされずに残ってしまった残骸には必ずこのtemporaryフォルダが存在するんです。どういう処理になっているのかわからないのですが、現象からいってこの不可視のtemporaryフォルダがあるために消去できずにおかしなことになってしまうようです。


対策としては気がついたらフォルダを削除してやるということがあります。ただ、このHDDは基本的に本体の起動と同時にマウントしてもらいたいので、起動時にマウントポイントを検索して余計なのが残っていたら削除するという方法はとりにくいですね。むしろ、HDDがアンマウントされたときに検索する方法が望ましいと思います。

...イヤ、ソフトが何とかしてくれるのを待つっていう消極的な方法もあるなぁ。メールは作者に送ってありますが、作者の環境ではどうも再現しないようなのです。数ヶ月慣れない英語で十数通のメールをやり取りしています。作者の側でも現実に會澤の環境下で前述した現象が起きているのは確認してもらいました。しかし作者側で再現しないので対応しようがないとのこと。ごもっともです。

さて、HDDがアンマウントされたタイミングっていつでしょう?それをとらえるイベントって発生するでしょうか?シャットダウンする途中にそのプロセスは発生すると思いますが、そこにユーザーのアクションが入り込む余地ってあるんでしょうか?悩ましいです。


実害があるようなないような...気がついてしまうと気になります。なんかヒントがあったら教えてください。

このエントリに頂いたコメント。この表示は随時更新されます。

by OKAMURA(2006-06-18T14:16:41-05:00)

Mac OS X の場合はよくわかりませんが Linux だとハードディスクのアンマウントはほとんど終了プロセスが終わりにさしかかってからです。Mac OS X も恐らくそうでしょう。


ということはユーザプロセスはおろか管理用のデーモンも終わっているはずなので通常手段では終了時に処理を入れることはできません。


終了のためのシェルスクリプトがどこかにあるのでそれを探し出し、アンマウントするコマンド(umount)を実行しているところの直後に書き加えることになります。


でも Mac OS X の場合、それがシェルスクリプトかどうかもよく知りません。

by 會澤(2006-06-18T21:46:11-05:00)

でしょうねぇ。少なくとも私は見つけられませんでした。

ソフトの使用をやめるか、他の方法を見つけるかでしょうね。

コメントを書き込むためには、下の「Comments」リンクをご利用下さい。
このエントリに頂いたコメント。この表示は随時更新されます。

by OKAMURA(2006-06-18T14:16:41-05:00)

Mac OS X の場合はよくわかりませんが Linux だとハードディスクのアンマウントはほとんど終了プロセスが終わりにさしかかってからです。Mac OS X も恐らくそうでしょう。


ということはユーザプロセスはおろか管理用のデーモンも終わっているはずなので通常手段では終了時に処理を入れることはできません。


終了のためのシェルスクリプトがどこかにあるのでそれを探し出し、アンマウントするコマンド(umount)を実行しているところの直後に書き加えることになります。


でも Mac OS X の場合、それがシェルスクリプトかどうかもよく知りません。

by 會澤(2006-06-18T21:46:11-05:00)

でしょうねぇ。少なくとも私は見つけられませんでした。

ソフトの使用をやめるか、他の方法を見つけるかでしょうね。

コメントを書き込むためには、下の「Comments」リンクをご利用下さい。

Posted by kaizawa | TrackBacks