diskutil でアンマウントできないボリュームを取り出す

Macでディスク(ボリューム)をマウント解除しようとしてもできないことがあって、「強制的に」を指定してもまだ駄目で、そんなときにどうするのか対処方法を探したら見つかったのでメモ。

アンマウントできないディスクをアンマウント

ディスク(ボリューム)をマウント解除しようとイジェクトボタン押したりゴミ箱にドラッグしたりしますが、たまにエラーで取り出せません。FirstAid を掛けたいときも、アンマウントできずにエラーになることがあります。

マウント解除のエラーダイアログに「強制的に」の選択肢が出てくることがあって、強制すると概ね取り出すことが出来ます。が、それでもまだできないことがあります。

そんなときはターミナルで手順を追うと上手くいきます。手順は次の通り。

  1. マウントしているボリュームをリストする
  2. 目的ボリュームのディスク番号みたいなものを見つける
  3. アンマウントを試みる
  4. なぜアンマウント出来ないか、その理由のプロセスIDを見つける
  5. プロセスIDを Kill する
  6. 改めてアンマウントする

流れは以上です。大抵の場合、マウント解除できないのは何かプロセスがそのディスクを使用しているからです。Finder が使用していますなどと指摘されることが多いですね。ならばそのFinderか何か知らんがそのプロセスを終了させてやればアンマウントできるわけです。

指定するのはパスではなく固有の番号やIDだったりしますから、その固有の番号やIDを知るために一手間必要となります。

1. ボリュームをリストする

コマンド diskutil を使ってリストします。ターミナルに次を入力してリターン。

diskutil list

すると、つらつら〜とディスクとボリュームがリストされます。

/dev/disk0 (internal):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme 251.0 GB disk0
1: EFI EFI 314.6 MB disk0s1
2: Apple_APFS Container disk2 250.7 GB disk0s2

/dev/disk1 (external):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme 2.0 TB disk1
1: EFI EFI 209.7 MB disk1s1
2: Apple_APFS Container disk7 2.0 TB disk1s2

/dev/disk2 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +250.7 GB disk2
Physical Store disk0s2
1: APFS Volume Mojave_minimum 233.5 GB disk2s1
2: APFS Volume Preboot 46.0 MB disk2s2
3: APFS Volume Recovery 510.6 MB disk2s3
4: APFS Volume VM 2.1 GB disk2s4

/dev/disk3 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *17.6 TB disk3
1: EFI 209.7 MB disk3s1
2: Apple_HFS Drobo S 17.6 TB disk3s2

/dev/disk4 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *6.0 TB disk4
1: EFI EFI 209.7 MB disk4s1
2: Apple_HFS Drobo5D 6.0 TB disk4s2

/dev/disk5 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *3.0 TB disk5
1: EFI EFI 209.7 MB disk5s1
2: Apple_HFS Sierra 899.3 GB disk5s2
3: Apple_Boot Recovery HD 650.0 MB disk5s3
4: Apple_HFS Mavericks 399.4 GB disk5s4 ⬅️
5: Apple_Boot Recovery HD 650.0 MB disk5s5
6: Apple_HFS El Capitan 330.3 GB disk5s6
7: Apple_Boot Recovery HD 650.0 MB disk5s7
8: Apple_APFS Container disk9 1.4 TB disk5s8
9: Apple_Boot Boot OS X 134.2 MB disk5s9

...

この暗号リストは、ハードウェアがリストされ、その中にボリュームがリストされています。青文字がディスク番号、黒太字の数字がボリューム番号です。緑の文字が固有の番号というかIDですね。黄色背景はこの後の例として用います。

2. ディスク番号のようなものを見つける

ターミナルのコマンドでボリュームを指定するときにはボリューム名ではなくIDを指定します。行の最後に書かれていますね。ディスク番号 + s + ボリューム番号 の形となっているようです。

例えば黄色背景で示した Mavericks というボリュームのIDは disk5s4 です。

3. アンマウントを試みる

ターミナルにコマンド diskutil unmount と目的のボリュームIDを入力してリターンします。

diskutil unmount disk5s4

リターンしてもエラーでアンマウントできませんが、その理由が返ってきます。

4. なぜアンマウント出来ないか、その理由のプロセスIDを見つける

例えば次のようなエラーが返ってくるかもしれません。

Error ejecting volume: Volume failed to eject dissented by PID 3008

“ボリューム取りだしエラー: PID 3008 により失敗しました” みたいなエラーです。3008 というプロセスが使用しているので取り出しに失敗したと知らせてくれています。この PID 3008 を終了させれば良いとわかります。

5. プロセスIDを Kill する

取り出しを邪魔立てしているプロセス 3008 を終了させます。sudo も付けておきますね。

sudo kill 3008

終了できました。

6. 改めてアンマウントする

邪魔立てしているプロセスをすべてkillしたら、再度アンマウントを試みましょう。

diskutil unmount disk5s4

今度はマウント解除できました。

 

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。