下級てき住みやかに

【HDD故障】ファイルシステムは直ぐに壊れるから、USBハードディスクは正しく抜こうねって話。

USBのHDDが故障したから見てほしいって、近所の人から緊急SOSの連絡が入ったよ。知らない間にね、パソコン無料出張屋になってる。プログラマであってパソコン業者じゃないのに。

かわりにね、何をくれると思う?「The 米、おこめだよ....。」いやぁ田舎だね〜。

f:id:igadget:20170501154506j:plain

Sponsored Links
 

 

HDDの使い方をおさらいしよう

HDDは基本的に、キャラクタデバイスブロックデバイスという使い道があります。

ふーんでもいいから前置きだけ言っておきますね。

前者は、RAWデバイスともいいます。0と1の生データのみ取り扱い、データベースなどでよく使われています。カメラ好きな人はRAWとか詳しいですよね。

Sponsored Links
 

後者は、みんな大好きファイルシステム。いぇい。

HDD上にファイルシステムを作成して使用します。

一般的に使うため、家電屋で購入した時点で作成されています。(NTFSやFAT)そのため、購入者は意識しません。でも、これ、めっちゃ重要だよ!!後で説明するね。

Windows でいえば、エクスプローラーからファイルを作成したり削除したりしている領域。これがファイルシステムね。ねっ!

もちろん、OSもファイルシステム上にインストールされるよ。

HDDは、レガシー技術であるため、ノウハウもありますし、比較的壊れないようには出来ています。絶対論ではないですが、僕が近所中を見てきた限りでは、フォーマット形式が異なる、ドライバがない、パーテションがない、落下させてクラッシュした。

なんかそんな感じで、HDD自体に問題があったというのは非常に少ないです。 

ファイルシステムをちょっとお勉強しよう

f:id:igadget:20170501165349j:plain

ファイルシステムって凄くたくさんの種類があります。

Windows 主体で説明するとね。基本は、NTFSとFAT形式(exFAT メディア用)に分かれます。

NTFSはマイクロソフトに特化しているから、Linux系、例えば、PS4などで見ようとしても互換性がないから見れません。

Windows でも PS4 でも見えるようにする場合は、事前に exFAT(メディア用) でフォーマットしておく必要がありますよ。

f:id:igadget:20170501171817j:plain

ファイルシステムには、管理領域というものがありレコード管理されています。メタ領域とも呼ばれます。この管理領域は、一般的にHDD全体容量の1割が使われます。

誰に取られるのか!

ケンタッキーのカーネルサンダース

もとい、カーネルっていうOSの管理。あまり意識しなくてもいいです。

例として、1テラバイトのHDDを買ってきた場合、PCで見ても、900ギガバイト程しか使えないようになってます。管理領域とはそういうもの。詐欺ではないです。くれてやるぐらいに思ってね。

 

でっ、大事なのはここから。

ファイルシステムって直ぐ壊れるから

みんなが、HDD 壊れたっていうところに直結している。

ファイルシステムは、使い方を誤ると直ぐに壊れます。非常にもろいです。

また、USB HDD のアクセス中にバタンと倒す人もいましたが、ファイルシステム破損以前にHDD自体が壊れます。

ヘッドと円盤が触った時点(クラッシュ)でアウトです。ハード破損した場合に備え、代替えセクタという領域が準備されてますが、ゴミぐらいの容量しかないため取り扱いには注意しましょう。

白が磁気ヘッドで赤の鏡っぽいのが円盤。

接触はしていません。浮いています。アクセスがないときは、アームは円盤から外れたとこにいます。

f:id:igadget:20170502121751j:plain

 

ファイルシステムに話を戻しますね。

Windows PCを終了するときは、左下の電源からシャットダウンしますよね。PS4でゲームしている最中にコンセントは抜かないですよね。

これ、ファイルシステムを守るためなんです。ファイルシステムって終了するときに、アンマウントって処理を内部で行っています。アクセスを一旦できなくするためにね。逆は、マウントっていう処理を内部で行っています。まぁ、そんな感じ

要するにね、OSからHDDのアクセス中に見えなくなるような事態が発生すると、レコード側で不整合が発生し、ファイルシステム破損というエラーフラグが立ちます。

そもそも、書き込み中に、USB抜くとね、ハード故障なのか人為的に抜かれたのかコンピュータって判断出来ないわけ。書き込み中に、I/Oエラー(error 5)が復帰して中途半端に終わったよ〜になる。これね不整合になるわけ。コンピュータって凄いと言ってもファジーな判定は無理。0か1の最終判定しか出来ない代物だからね。

これが、HDD壊れた~。金返せ~。お前のHDDぼろいぞ~。というユーザの誤認クレームに直結していきます。

Sponsored Links
 

エラーがあるとWindowsでは、ckdiskを実行したりしますが、一般的には知らないですよね。意識はしていないと思います。基本的には、ckdisk の復旧方法は至って単純です。破損したファイルを削除。OSとしてないものとして取り扱う。 

でね、どうしていくかというと、USBのハードディスクを抜くときは、以下の手順をやっておこうねって話になる。

USB HDD の抜くときの手順

HDD一杯刺さってるけど、例としてHD-LCU3(H)を抜く手順で説明していきますね。これ、バッファローのUSB HDD で安いやつ。Windows 10 で説明すると、矢印の流れね。

f:id:igadget:20170501174216j:plain

 

安全に取り外すことができます。

OSの許しをもらおう。この時点で、取り外したHDDにはアクセスできないから抜いても問題はないんだよ。 

f:id:igadget:20170501174335j:plain

 

 

普通に作業をしていて、コピー終わったよ~ファイルセーブ完了した~っていっても、メモリ上の処理が完了しただけ。ユーザが実行した操作もアプリケーションも、プログラム処理内の関数が成功したから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でミラー組んでるからファイルも安全と豪語している人がいるけど、ファイルシステムとは全く関係がないから。別だから。

ファイルシステムの復旧はバックアップしかありません。重要なデータはこまめに退避しておきましょう。ファイルシステムの完全復旧は事前にコピーしたデータのみです。

 

そういうことで、しめ。