ラベル Disk Utility の投稿を表示しています。 すべての投稿を表示
ラベル Disk Utility の投稿を表示しています。 すべての投稿を表示

2013年6月17日月曜日

MacBook Airのフタを閉じたら外付けディスクを自動アンマウント

MacBook Airを取り外して会議に出かけるときや自宅に持って帰る時、ディスプレイのフタを開けたら下の図のようなウォーニングが出ていることがあります。
理由は、MacBook Airのディスプレイを閉じて、その後USBケーブルを抜くのですが、外付けディスクをFinder上で取り出すという操作をしていないためです。
ファイルやディスクが壊れる原因にもなるのですが、急いでいると忘れてしまいます。

持ち運びする時は大概の場合、ディスプレイを閉じるのでスリープ状態になります。ということは、以前Synergyを使う際にインストールしたSleepWatcherが使えそうです。
スリープに入る際に外付けディスクをアンマウントすれば良さそうです。USBを再接続した時は、以前から自動でマウントされていますので、そのままで良さそうです。

現在のMacBook Airの設定では、~/.sleepというshスクリプトファイルにコマンドを書けば良いようにしています。
まず、ディスクがどのような名前でマウントされているか確認します。

$ 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)
map -fstab on /Network/Servers (autofs, automounted, nobrowse)
/dev/disk1s3 on /Volumes/ExFAT (exfat, local, nodev, nosuid, noowners)
/dev/disk1s2 on /Volumes/Backup (hfs, local, nodev, nosuid, journaled)

1本のディスク(/dev/disk1)をパーティション分けして使っていたので、disuutilのunmountDiskコマンドを使うことにします。umountのmanを見ると、diskutilを使えて書いてありました。

~/.sleepに、以下のコマンドを追加して試したところ、うまくいきました。


/usr/sbin/diskutil unmountDisk /dev/disk1 2>&1 | logger


最後のloggerは、システムログにメッセージを出すためです。

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コマンドを使ってもいいですけど。

Time Machineがバックアップを失敗していました

Macを起動した時、外付けハードディスクがread-onlyでマウントされて、書き込みできなかったためのようです。何故でしょうね。
原因がわかればいいんですが、今のところ不明です。

read-onlyになった時は、以前はMacを再起動していたのですが、他の起動済みアプリを終了したり再起動にちょっと時間がかかるのが問題でした。
でも、ディスクユーティリティでそのディスクだけマウントし直せばいいことに気付きました。
ディスクユーティリティを起動して、Time Machine用のディスクを選択します。

そして、マウント解除アイコンを押して

もう一度、マウントアイコンでマウントします。

その後、メニューバーから今すぐバックアップを作成を選んで、バックアップを取ります。

終わり。
でもでも、たまにディスクユティリティでマウント解除できないことがあります。
長くなったので、別エントリにしますね。