macOS 26へアップグレードしてから、VeraCryptと外付けドライブの組み合わせで深刻な問題が発生するようになった。
私の環境は以下のとおり。
- MacBook Air M4
- macOS 26.5.2
- VeraCrypt 1.26.29 FUSE-T版
- FUSE-T 1.2.7
- USB接続の外付けSSD
発生する症状
VeraCryptで暗号化ドライブをマウントして使用した後、VeraCryptの画面からアンマウントする。
Finder上からボリュームは消え、VeraCrypt上でもアンマウント済みと表示される。しかし、外付けSSDそのものをmacOSから取り外そうとすると失敗する。
Volume failed to eject
調べたところ、VeraCryptのアンマウント後も、以下のプロセスが残り続けていた。
VeraCrypt --core-service
go-nfsv4 --backend smb /private/tmp/.veracrypt_aux_mnt1
さらにlsofで確認すると、これらのプロセスが外付けSSDのrawデバイスを開いたままにしていた。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
go-nfsv4- 36403 root 4u CHR 1,20 0t65536 709 /dev/rdisk4
VeraCrypt 36404 root 4u CHR 1,20 0t65536 709 /dev/rdisk4
つまり、VeraCrypt上ではアンマウントが完了したように見えても、バックグラウンドのVeraCryptとFUSE-Tプロセスが物理ドライブを保持し続けている。
そのままスリープするとカーネルパニックする
この状態のままMacを長時間スリープさせたところ、復帰後に次のカーネルパニックが発生した。
busy timeout[1], (60s): 'IOMediaBSDClient' @IOService.cpp:5986
macOSがスリープ復帰時にUSBストレージの状態を切り替えようとしたものの、VeraCrypt関連プロセスがデバイスを保持していたため、IOMediaBSDClientの処理が60秒間完了せず、watchdogによってカーネルパニックが発生した可能性が高い。
VeraCrypt関連プロセスをすべて終了させると、lsofからrawデバイスの表示が消え、その直後に外付けSSDを正常に取り外せた。
Disk disk4 ejected
そのため、少なくとも私の環境では、アンマウント後に残留するVeraCryptおよびFUSE-Tプロセスが、ドライブを取り外せない直接的な原因になっている。
GitHubでも同様の問題が報告されている
2026年8月5日現在、VeraCryptのGitHubには同様の問題がIssue #1845 として報告されている。
このIssueでも、アンマウント後にVeraCrypt --core-serviceとgo-nfsv4が残り続けること、SIGTERMでは終了しないこと、スリープ時にIOMediaBSDClientのbusy timeoutによるカーネルパニックが発生することが報告されている。
Issue #1845は現在もOpenで、現時点ではメンテナーからの返信やコメントは付いていない。
現在行っている回避策
根本的な修正が行われるまでは、VeraCryptを使用した後にそのまま長時間スリープしない方がよい。
現在は、次のいずれかで対応している。
- VeraCrypt使用後にMacをシャットダウンまたは再起動する
- 残留したVeraCryptとFUSE-Tプロセスを終了させ、外付けドライブを正常にejectしてからスリープする
1. VeraCryptボリュームをすべてアンマウントする
まず、VeraCrypt上ですべてのボリュームをアンマウントする。
書き込み中のデータをできる限りストレージへ反映するため、念のためsyncも実行する。
sync
2. VeraCryptを終了する
osascript -e 'tell application "VeraCrypt" to quit' 2>/dev/null
sleep 5
3. 残留プロセスを確認する
ps -axo pid,ppid,user,state,etime,command |
grep -Ei '[V]eraCrypt|[g]o-nfsv4'
プロセスが何も表示されなければ、そのまま外付けドライブをejectする。
残っている場合は、ほかのVeraCryptボリュームがマウントされていないことを確認してから、次のコマンドで終了させる。
sudo pkill -KILL -f \
'/Applications/VeraCrypt.app/Contents/MacOS/VeraCrypt'
sudo pkill -KILL -f \
'go-nfsv4.*\.veracrypt_aux_mnt'
sleep 3
SIGTERMも試したが、私の環境では残留プロセスが終了しなかったため、最終的にSIGKILLを使用している。
4. 外付けドライブの識別子を確認する
diskutil list external physical
例えば対象ドライブがdisk4の場合、rawデバイスを保持しているプロセスがないことを確認する。
sudo lsof -nP /dev/disk4 /dev/rdisk4
何も表示されなければ、ドライブをejectする。
diskutil eject disk4
次のように表示されれば、正常に取り外されている。
Disk disk4 ejected
この状態になってからUSBケーブルを抜くか、Macをスリープさせる。
注意点
disk4という番号は固定ではない。接続状況や再起動によってdisk5やdisk6などに変わるため、毎回diskutil list external physicalで確認する必要がある。
また、上記のpkillはVeraCryptのプロセスをまとめて強制終了する。ほかのVeraCryptボリュームがマウントされている状態で実行すると、データ破損につながる可能性がある。
必ず次の条件を満たしてから実行する。
- VeraCrypt上ですべてのボリュームをアンマウント済み
- ファイルのコピーや書き込みが完了している
- VeraCryptボリュームを使用しているアプリケーションを終了済み
syncを実行済み
プロセスが終了しない、rawデバイスの保持が消えない、またはdiskutil ejectが失敗する場合は、そのままスリープやUSBケーブルの抜去を行わず、Macをシャットダウンした方が安全である。
まとめ
macOS 26、VeraCrypt 1.26.29 FUSE-T版、FUSE-T 1.2.7の組み合わせでは、VeraCryptボリュームをアンマウントした後も、VeraCrypt --core-serviceとgo-nfsv4が残留する場合がある。
残留プロセスは物理ドライブのrawデバイスを保持し続けるため、外付けドライブをejectできなくなる。
さらに、この状態で長時間スリープすると、復帰後にIOMediaBSDClientの60秒タイムアウトによるカーネルパニックが発生する可能性がある。
修正されるまでは、VeraCrypt使用後に次のいずれかを実施する必要がありそうだ。
- Macをシャットダウンまたは再起動する
- 残留プロセスを強制終了し、rawデバイスが解放されたことを確認してから外付けドライブをejectする
少なくとも、VeraCrypt上でアンマウント済みと表示されたことだけを確認して、そのまま長時間スリープする運用は避けた方がよい。