USBポートからフラッシュドライブを安全に取り外してますか?

150707flash.png

面倒だからってそのまま引っこ抜いてませんか?

フラッシュドライブをパソコンから抜くとき、実際何が起こっているんでしょうか? どうして「安全に取り外す」の手順を踏まなければいけないんでしょう?

ずっと昔からOSは、突然状態が変化しない信頼できるオブジェクトとしてディスクを扱っています。ファイルの読み込み・書き込みをしているとき、OSはファイルはそこにずっとあり、いつでもアクセスできて、そして途中でいきなり消えたりしないって思ってるんです。

ファイルを開いているとき、ファイルを読み込んでいるプログラムは、またそこに戻って読み込みを続けられることを想定しています。同様に、書き込みコマンドはサブルーチンへ送られるので、メインプログラムに記憶されてなくてもいいようになっています。もしもサブルーチンが呼び出されてからデータがディスクに書き込みされるまでにドライブがなくなってしまった場合、そのデータは永久に失われてしまいます

かつては、物理的にストレージメディアを「マウント」「アンマウント」するというプロセスがありました。テープやディスクパックを実際にマウントすることで、メディアの有無を検出する機械式スイッチが切り替わるという仕組みで、機械側が動きだすと、ソフトウェアがメディアを使い始められるようになっていました(これはソフトマウントというやつ)。一部のメディアにはいまだに機械式のインターロックがあって、メディアを使用しているソフトウェア側がロックを外すまで、メディアが取り出されるのを防いでいます。

Macのフロッピーや光ディスクには、インターロックされたハードマウントとソフトマウントのもっと現代的な例を見ることができます。ソフトウェアのコマンドを使わないとメディアを取り出すことができませんが、もしそのファイルがどっかのプログラムで開いていた場合、取り出しのコマンドは使えませんよね。

そして、USB接続されたストレージの場合です。ハードマウントとソフトマウントを調整する機械式インターロックはUSBには存在しません。なので、ユーザーはいつでもディスクを取り出すことは可能なんですが、もちろんいきなりさっきまであったメディアがなくなるので、プログラムは「ちょっと、ちょっと! それまだ使ってたんですけどー?」っていう感じで焦りますよね。

この場合、起こりうることは、データの消滅、ファイルの損傷、プログラムのクラッシュやコンピュータの再起動が必要になる、といったことです。安全に取り外す、というのはプログラムがメディアへのアクセスを失ってしまう場合に起こる予期しない事態を防ぐために必要な「ソフトアンマウント」を行なうことなんですね。

「安全に取り外す」がしてくれること

● ディスクに動作中の書き込みを流し込んでくれます。

● 全部のプログラムに「ディスクがいなくなっちゃうよ」と知らせて、しかるべき処理をしてくれます。

● しかるべき処理がうまくいくいかなかった場合はユーザーにお知らせしてくれます。そしてファイルを開いたままにしておいてくれます。

実際のところディスクはいつでも取り出すことはできますが、急にディスクがなくなってしまったプログラムがいかに上手に処理してくれるかにかかっているというところですね。

現代のコンピュータでは、不注意なメディアの取り外しに備えるステップが取られています。例えば、Windowsでは「Optimize for Quick Removal」とよばれる、効率的に書き込みをするのではなく、とにかくデータのすばやく書き込みをするという機能が登場。私たちの習慣というのは簡単に変えられるものではないんですね。もしメディアで読み込みだけをしているのなら安全な取り出しは必要ないんですが、書き込み作業をしている場合は、直近の書き込みがないとき以外は安全な取り出しをするべきです。

まぁ「人生は短いので安全に取り出してる時間がもったいない!」なんて言う人もいるかもしれませんよね。でも安全な取り出しはたくさんの重要なことを処理してくれますし、たったひとつの確実な取り出し方法なんです。しなくても大丈夫なときがほとんどですが、データを失くしちゃうことほど悲しいことはないので、やっぱり習慣付けておいたほうが得策!

※ この記事はPhillip RemakerさんがQuora投稿した内容を米Gizmodoが許可を得て転載したものの翻訳です。

Phillip Remaker - Gizmodo US[原文

(リョウコ)