外付けドライブを取り出さずに取り外すと壊れるのか?

誰もが一度は取り出さずにUSBドライブを引き抜いたことがあるはずです。取り出しの手順を省いたとき、データとドライブに実際に何が起こるのかを解説します。

急いでいる。ドライブが取り出せない。それでもケーブルを引き抜いてしまう。誰もが一度はやったことがあります。

何も起こらなかったかもしれません。あの煩わしい「ディスクが正しく取り出されませんでした」という通知が出たけれど、その後は問題なさそうだったかもしれません。そうして、取り出すことが本当に必要なのか、それとも実際には関係のない用心深いだけの習慣なのか、疑問に思い始めるわけです。

それは関係あります。ただし、必ずしも予想どおりの形ではありません。

取り出しが実際に行っていること

macOSでドライブを取り出すとき、システムは順番に3つのことを行います。

まず、書き込みキャッシュをフラッシュします。macOSは、最近書き込まれたデータをドライブに確定する前にメモリ上に保持します。これによってパフォーマンスは向上しますが、「保存した」はずのデータがまだ実際にはディスク上にない、ということを意味します。取り出すことで、キャッシュされたすべてのデータが強制的に書き込まれます。

次に、すべてのファイルハンドルを閉じます。そのドライブ上でファイルを開いているすべてのプロセスに、それを解放するよう通知が行きます。これによりアプリケーションは作業を終えてファイルをきれいに閉じる機会を得られます。

3つ目に、ボリュームのマウントを解除します。ドライブがファイルシステムのツリーから取り除かれ、OSはその存在を認識しなくなります。このステップが終わって初めて、物理的に安全に取り外せるようになります。

取り出しを省いてただケーブルを引き抜くと、この3つのステップを同時にすべて飛ばすことになります。

本当のリスク:書き込みキャッシュ

危険が潜んでいるのは書き込みキャッシュです。macOSを含む最近のOSは、データを外付けドライブにすぐには書き込みません。パフォーマンス上の理由から、書き込みをまとめて定期的にフラッシュするのです。

ファイルをコピーして進捗バーが完了しても、データがドライブ上にあるとは限りません。実際の書き込みがまだキューに入っている間に、システムが自身のキャッシュからコピー完了と確認しているだけかもしれないのです。その瞬間に取り外すと、ドライブ上のファイルは不完全だったり、破損していたり、まったく存在しなかったりする可能性があります。

リスクのある時間の幅はさまざまです。小さなファイルのコピーの後なら1〜2秒かもしれません。大きな転送の後なら10秒以上になることもあります。キャッシュが完全にフラッシュされたタイミングを教えてくれる視覚的な目印はありません。

読み込みしかしないドライブはどうなのか?

ドライブを接続し、いくつかのファイルを開いただけで、一度も保存しなかったのであれば、取り外すリスクは大きく下がります。書き込みがなければフラッシュすべき書き込みキャッシュもなく、転送途中のファイルもありません。

しかし「一度も保存しなかった」を保証するのは、思っているより難しいものです。macOSは、Finderで閲覧したあらゆるフォルダに.DS_Storeファイルを書き込みます。Spotlightはインデックスのデータを書き込みます。一部のアプリケーションは、アクセスしたボリューム上に一時ファイルやロックファイルを作成します。

自分では明示的に何も保存していなくても、macOSはおそらく何かを書き込んでいるのです。

ファイルシステムの破損

個々のファイルの損失だけでなく、ファイルシステムが破損するというより大きなリスクもあります。

ファイルシステムは内部構造を維持しています。ディレクトリ、割り当てテーブル、ジャーナルのエントリなどです。これらの構造は、すべてのファイルがディスク上のどこにあり、領域がどう割り当てられているかを記述しています。ファイルを書き込むと、ファイルシステムはこれらの構造を更新します。更新の途中で取り外すと、構造が不整合な状態のまま残ることがあります。

HFS+はジャーナリングを使い、変更を行う前に予定している変更を記録します。切断によって処理が中断されても、ファイルシステムはジャーナルを再生して整合性の取れた状態に復旧できます。APFSはまったく異なるアプローチを取り、ジャーナリングの代わりにコピーオンライトを使います。新しいデータは常にまず空き領域に書き込まれ、書き込みが完了した後にだけポインタが更新されます。切断によって処理が中断されても、古いデータは元の場所にそのまま残っています。どちらのファイルシステムでも、書き込み中だったファイルは失われるかもしれませんが、ファイルシステム自体は無傷のままです。

exFATとFAT32にはジャーナルがありません。構造の更新中に切断されると、ファイルシステム全体が壊れた状態になりかねません。ファイルが消えたり、フォルダが読めなくなったり、ドライブがまったくマウントできなくなったりすることがあります。

ドライブがexFATでフォーマットされている場合(MacとWindowsで共有するドライブによくあります)、正しく取り出すことはなおさら重要です。

ドライブへの物理的な損傷

最近のドライブは、ハードウェアレベルで突然の切断にもそれなりにうまく対処します。SSDには可動部品がないため、ヘッドクラッシュのリスクはありません。ハードディスクは電源が失われると自動的に読み書きヘッドを退避させます。

より大きな物理的な懸念はコネクタです。USBケーブルを繰り返し引き抜くと、ドライブとMacの両方でポートを消耗させてしまいます。USB-Cコネクタは古いUSB-Aより丈夫ですが、摩耗と無縁ではありません。

不正な切断を繰り返すと、SSDのファームウェアにも影響することがあります。ドライブのコントローラは、正常でないシャットダウンのたびに復旧処理を行わなければならず、それが書き込みサイクルと複雑さを増やします。

積み重なっていく影響

一度の予期しない切断が壊滅的な損傷を引き起こす可能性は低いです。最近のファイルシステムのジャーナリングがそれに対処しますし、ドライブもそれに耐えられるように作られています。

問題は、それが習慣になったときです。取り出しを省くたびに、書き込みキャッシュが空かどうか、ファイルシステムが更新中だったかどうか、再接続したときにすべてが整合しているかどうかに、賭けをしているのです。

何十回、何百回もの不正な切断を重ねるうちに、何かがうまくいかなくなる確率は上がっていきます。小さな不整合が積み重なります。ファイルにはわずかな破損が生まれ、数週間後に開こうとするまで表面化しないこともあります。

とにかくドライブを取り出そう

安全な道は明らかです。常に取り出すことです。しかし、人が取り出しを省く理由は怠慢ではありません。macOSでは取り出しがあまりにも頻繁に失敗するからです。取り出そうとすると、ディスクが「使用中」だと言われ、その理由もどうすればいいかも分かりません。

Ejectaは、そもそも人が取り出しを省く理由を取り除きます。ドライブが取り出せないとき、どのプロセスがブロックしているかを正確に教え、そのプロセスをワンクリックで終了させてくれます。調べ物のプロジェクトになる代わりに、数秒で片付きます。

ドライブを正しく取り出すことは、まれだけれど痛みを伴うデータ損失を防いでくれる、ちょっとした習慣のひとつです。正しいことを簡単にできるようにすれば、毎回それを実行できるようになります。

毎回ターミナルを使いたくないなら、Ejectaがどのプロセスがドライブをブロックしているかを正確に表示します。しかもメニューバーから、ワンクリックでそのプロセスを終了できます。

今すぐ購入 — $9.99