2012年7月22日日曜日

ディスクユーティリティでマウント解除できない

前のエントリーで、ディスクユーティリティのマウント解除と再マウントでread onlyのディスクを読み書きできるようにする方法を紹介しました。
これで、再起動しないでTime Machineがバックアップできるようになります。
でも、たまにマウント解除自体ができない場合があります。
例えばこんな感じです。

そこで、再起動しないでマウント解除する方法を模索しました。
ここからは、ターミナルでコマンド操作を行いますので、参考程度に見てください。間違っていても責任はとれませんし。
(1) まず、ディスクがread onlyでマウントされているかの確認ですが、moutコマンドで見ることができます。今回の例です。ちなみに、Mac OS X 10.6.8 (Snow Leopard)です。Developer Toolsもインストールしています。


$ mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
/dev/disk1s2 on /Volumes/Backup (hfs, local, nodev, nosuid, read-only)
/dev/disk2s2 on /Volumes/Disk1 (hfs, local, nodev, nosuid, journaled, noowners)

/dev/disk1s2 が、/Volumes/Backup としてread-onlyでマウントされています。


(2) 次に、lsofコマンドとgrepコマンドで、/Volumes/Backup を使っているプロセスを調べます。lsofとgrepは知っていることにします。

$ lsof | grep -F /Volumes/Backup

(3) 例えば、こんな行があったとします。
iTunes     3544  karuku   22r     DIR       14,8       952        2 /Volumes/Backup
この場合は、単純にiTunesを終了させます。

(4) 直接起動していないのに、なにか動いている場合もあります。
stunnel   12083  karuku  cwd      DIR       14,8    204340   203460 /Volumes/Backup/Mail/inbox
stunnel   12083  karuku  txt      REG       14,8    132832  7940984 /Volumes/Backup/opt/local/bin/stunnel

この場合、stunnelが他のアプリケーションから起動されていると知っていれば、その親のアプリケーションを終了させればいいです。

わからない場合は、あきらめてMacを再起動するほうがいいです。特に3つめが自分のログインIDでないものがある場合は、再起動ですね。


そして、(2)、(3), (4)を繰り返して、/Volumes/Backupを使っているプロセスがいなくなれば、ディスクユーティリティからマウント解除が使えると思います。
せっかくターミナルを使っているので、umount/mountコマンドを使ってもいいですけど。

0 件のコメント:

コメントを投稿