USBのHDDが故障したから見てほしいって、近所の人から緊急SOSの連絡が入ったよ。知らない間にね、パソコン無料出張屋になってる。プログラマであってパソコン業者じゃないのに。
かわりにね、何をくれると思う?「The 米、おこめだよ....。」いやぁ田舎だね〜。
Sponsored Links
HDDの使い方をおさらいしよう
HDDは基本的に、キャラクタデバイスとブロックデバイスという使い道があります。
ふーんでもいいから前置きだけ言っておきますね。
前者は、RAWデバイスともいいます。0と1の生データのみ取り扱い、データベースなどでよく使われています。カメラ好きな人はRAWとか詳しいですよね。
Sponsored Links
後者は、みんな大好きファイルシステム。いぇい。
HDD上にファイルシステムを作成して使用します。
一般的に使うため、家電屋で購入した時点で作成されています。(NTFSやFAT)そのため、購入者は意識しません。でも、これ、めっちゃ重要だよ!!後で説明するね。
Windows でいえば、エクスプローラーからファイルを作成したり削除したりしている領域。これがファイルシステムね。ねっ!
もちろん、OSもファイルシステム上にインストールされるよ。
HDDは、レガシー技術であるため、ノウハウもありますし、比較的壊れないようには出来ています。絶対論ではないですが、僕が近所中を見てきた限りでは、フォーマット形式が異なる、ドライバがない、パーテションがない、落下させてクラッシュした。
なんかそんな感じで、HDD自体に問題があったというのは非常に少ないです。
ファイルシステムをちょっとお勉強しよう
ファイルシステムって凄くたくさんの種類があります。
Windows 主体で説明するとね。基本は、NTFSとFAT形式(exFAT メディア用)に分かれます。
NTFSはマイクロソフトに特化しているから、Linux系、例えば、PS4などで見ようとしても互換性がないから見れません。
Windows でも PS4 でも見えるようにする場合は、事前に exFAT(メディア用) でフォーマットしておく必要がありますよ。
ファイルシステムには、管理領域というものがありレコード管理されています。メタ領域とも呼ばれます。この管理領域は、一般的にHDD全体容量の1割が使われます。
誰に取られるのか!
ケンタッキーのカーネルサンダース
もとい、カーネルっていうOSの管理。あまり意識しなくてもいいです。
例として、1テラバイトのHDDを買ってきた場合、PCで見ても、900ギガバイト程しか使えないようになってます。管理領域とはそういうもの。詐欺ではないです。くれてやるぐらいに思ってね。
でっ、大事なのはここから。
ファイルシステムって直ぐ壊れるから
みんなが、HDD 壊れたっていうところに直結している。
ファイルシステムは、使い方を誤ると直ぐに壊れます。非常にもろいです。
また、USB HDD のアクセス中にバタンと倒す人もいましたが、ファイルシステム破損以前にHDD自体が壊れます。
ヘッドと円盤が触った時点(クラッシュ)でアウトです。ハード破損した場合に備え、代替えセクタという領域が準備されてますが、ゴミぐらいの容量しかないため取り扱いには注意しましょう。
白が磁気ヘッドで赤の鏡っぽいのが円盤。
接触はしていません。浮いています。アクセスがないときは、アームは円盤から外れたとこにいます。
ファイルシステムに話を戻しますね。
Windows PCを終了するときは、左下の電源からシャットダウンしますよね。PS4でゲームしている最中にコンセントは抜かないですよね。
これ、ファイルシステムを守るためなんです。ファイルシステムって終了するときに、アンマウントって処理を内部で行っています。アクセスを一旦できなくするためにね。逆は、マウントっていう処理を内部で行っています。まぁ、そんな感じ
要するにね、OSからHDDのアクセス中に見えなくなるような事態が発生すると、レコード側で不整合が発生し、ファイルシステム破損というエラーフラグが立ちます。
これが、HDD壊れた~。金返せ~。お前のHDDぼろいぞ~。というユーザの誤認クレームに直結していきます。
Sponsored Links
エラーがあるとWindowsでは、ckdiskを実行したりしますが、一般的には知らないですよね。意識はしていないと思います。基本的には、ckdisk の復旧方法は至って単純です。破損したファイルを削除。OSとしてないものとして取り扱う。
でね、どうしていくかというと、USBのハードディスクを抜くときは、以下の手順をやっておこうねって話になる。
USB HDD の抜くときの手順
HDD一杯刺さってるけど、例としてHD-LCU3(H)を抜く手順で説明していきますね。これ、バッファローのUSB HDD で安いやつ。Windows 10 で説明すると、矢印の流れね。
安全に取り外すことができます。
OSの許しをもらおう。この時点で、取り外したHDDにはアクセスできないから抜いても問題はないんだよ。
普通に作業をしていて、コピー終わったよ~ファイルセーブ完了した~っていっても、メモリ上の処理が完了しただけ。ユーザが実行した操作もアプリケーションも、プログラム処理内の関数が成功したからOKとまずは判定しただけ。
メモリ上のデータをシンクする作業はOSがこっそりバックグラウンドで実行している。実際に物理的なHDDにデータを書き込む処理になります。
ユーザが作業完了した気になっていても、まだ、HDDへの書き込みが終わっていないということはあります。処理が速すぎて、多分気にしていないのだと思うけどね。
Sponsored Links
プログラムにはね、システムコールっていうものがある。open ・read・write・close ...。など基本的なものが古くからある。メソポタミア文明とかそういう古さじゃないけどね。コンピュータのはじまりはじまりぐらいから。
でね、プログラム言語ってめちゃくちゃありんすなわけ。
C言語だったり、Javaだったり、Rubyだったり、みんなコピペ大好き、html や CSS であったりね。まぁ最後は、どんな言語であっても先に説明したシステムコールのオンパレードになります。
アプリケーションのプログラムの書き込み要求は、メモリ上に書き込めた時点でOKとプログラムの関数は判定する。
何故なのか?
HDDの応答を待っていたらアプリケーションが遅くなりすぎて動かないから。だから、メモリ内での write 要求が成功した時点でOKとしている。
その後に、OSがドライバを介してHDDに書き込みする。カリコリ、カリコリとね!!もし、本当にハードに書き込めない場合は、ドライバがエラーを返すから、OSは判定できるんだよ。
まとめ
USBのHDDをWindows から抜くときは、ハードウェアの取り外し作業を行うか、OSシャットダウン後に行う。これを面倒だけど徹底しようね。
ノートPCはバッテリ積んでいるから、コンセントが抜けてもいいけど、Windows 起動中にバッテリー抜かないですよね。デスクトップもWindows 起動中にコンセント抜かないですよね。USB HDD を正しく抜くというのも同じ考えですよと伝えたい。
あと、おまけ。ハードディスクに冗長性をもたせるために、RAIDって機能もあるのですが、これ、HDDを冗長させるもの(物理的にハードが損傷した場合の保険)
近所の人で、RAIDでミラー組んでるからファイルも安全と豪語している人がいるけど、ファイルシステムとは全く関係がないから。別だから。
ファイルシステムの復旧はバックアップしかありません。重要なデータはこまめに退避しておきましょう。ファイルシステムの完全復旧は事前にコピーしたデータのみです。
そういうことで、しめ。