補助記憶装置とは?-ハードディスク
こんにちは!!
前回までにハードウェアのうちCPU、そして主記憶装置を紹介してきました。そして今回は、補助記憶装置の話をします。補助記憶装置は主記憶装置と違い、電源が切れてもデータは消えません!!
その補助記憶装置の中でも主たる道具、ハードディスク(以下HDD)を中心に学んでいきましょう。
・ハードディスク(HDD)とは?
HDDとは内部で高速回転するプラッタというディスクを、下部のアーム先端に付けられた磁気ヘッドを使って読み書きして使う記憶装置です。大容量・安価・高速とユーザが涙して喜ぶ要素満載ですが、実はちょっとの振動や衝撃でもすぐ壊れちゃいます。くれぐれも取り扱いは慎重に...。
このプラッタの表面は扇状に形成されたセクタという記憶領域で構成され、そこに磁気ヘッドでデータを書き込みます。そして一周分のセクタ領域をトラックと呼びます。プラッタが複数ある場合そのトラックをまとめたものをシリンダといいます。
セクタ・トラック・シリンダの関係性がわかるとHDDの記憶容量を計算で求められるようになります。例えば以下の問題があったとします。
この場合以下のように計算します。
ただ、セクタはとても小さく、ファイルクラスの大きなものはとても収まりません。そこで、OSという優秀なプログラムがファイルを保存させる場合、セクタを複数集めて構成したクラスタという単位で管理します。それにより、データをより大きな単位で読み書きを行います。
しかし、クラスタを作り続けると当然余るセクタもでてきます。それらは中途半端な容量しかないので新たなクラスタ領域として利用しづらいのです。すると、プラッタの空き領域がどんどん分散化し、最終的にデータも分散させないと保存しきれなくなってしまいます。これをフラグメンテーションと呼びます。こうなると読み書きの際に磁気ヘッドをあちこちに動かさなければならず、非常に時間がかかってしまいます。
そこで行うのが、デフラグ。プラッタ内の断片化したデータを一度全部取出し、連続的な領域を確保して並べなおします。
すると、データの連続性が確保されて、読み書きもスムーズに行えるのです!
・データアクセス時間
ここではHDDのデータの読み書きの仕方を紹介します。
まずHDDがデータを読み書きすることを「データへアクセスする」といいます。
次にアクセス方法ですが、まずアクセスアームを動かして磁気ヘッドを目的のデータのあるトラック位置まで運びます。これをシーク(位置決め)といいます。
次にディスクを回転させ、目的のデータが磁気ヘッドの下までまわってくるのを待ちます。これをサーチ(回転待ち)といいます。
また、これらの工程にかかる時間を合わせて「待ち時間」と呼びます。
次に目的のデータの位置に磁気ヘッドが合わさったら、データを読み込んだり、新たにデータを書き加えたりします。これをデータ転送と呼びます。
では本題のアクセス時間ですが、これは上記3ステップそれぞれにかかる時間の合計で求められます!
シーク時間+サーチ時間+データ転送時間 = データアクセス時間
一見簡単そうに見えるんですが、残念ながらそうは問屋が卸さないのです。
次のような問題があるとしましょう。
まずシーク時間とサーチ時間それぞれの平均を求めます。しかし、平均シーク時間はここにあるので、平均サーチ時間だけを求めます。求め方は以下の通りです。
次はデータ転送にかかる時間を求めます。求め方は以下の通りです。
そして最後にアクセス時間を求めます!求め方は平均シーク+平均サーチ+平均データ処理の合計ですから・・・
となります。
ちょっと引っ掛けのような怪しいところもありますが、これがデータアクセス時間の求め方になります!
・RAID
計算問題はここまでにして、ここからはRAID(レイド)について話していきます。RAIDというのは複数のHDDを1台の仮想的なHDDと見立てて使用することです。ちょっとわかりにくいかもしれませんが、要はデータを保存させるとき一つのまとまりに属するHDDたちに分散して記憶させることです。このRAIDにはバージョンが7つくらいあり、その中でも主流のRAIDを紹介します。
RAID0
一つのデータを2台以上のHDDに分散させて書き込みます。ストライピングともよばれ、高速処理ができる一方で何れかのHDDが壊れると保存したデータが復元できなくなります。
RAID1
2台以上のHDDに同一のデータを書き込みます。ミラーリングとも呼びます。バックアップみたいな考え方ですね。一つのHDDが壊れても別HDDのデータをそのまま使えますが、本来一つのデータにつき必要最低限な容量の倍を使用するので、使用可能領域は少なくなりがちです。
RAID5
3台以上のHDDを用いて、データを分散的に保存させつつパリティと呼ばれる符号を付加します。パリティもまたバックアップのようなもので、別HDDクに保存されたデータの整合性を保持する符号が入ってます。もしいずれかのディスクが故障しても他ディスクにあるパリティを使ってデータを復元することができます。
このように複数のHDDを一つのチームとして一つの大きなデータの処理を分散させて行っているのです。
おまけ その他の補助記憶装置
補助記憶装置といいつつハードディスクばかりやってきたので、CDとかUSBとかを想像してた人は?と思ったかもしれません。それらももちろん補助記憶装置なのです。ということで、ここではその他の補助記憶装置を2枚の画像にまとめましたので、紹介します。
まとめ
・ハードディスクはプラッタというディスク上にあるセクタという記憶領域にデータを書き込んでいる
・OSは複数のセクタをひとまとめにしたクラスタという単位でデータを扱っている
・データを細切れにして分散して保存させてしまうことをフラグメンテーションといい、その対処方法をデフラグという
・データアクセス時間の求め方はシーク時間+サーチ時間+データ転送時間
・RAIDは複数のHDDを一つのHDDと見立てて使用する技術のことである
今回は以上です。
それではまた!!