ハードディスクはコンピュータシステムにおいて代表的な補助記憶装置です。大容量であり、ランダムアクセスにも対応しており比較的高速です。しかし、構造上脆く、ちょっとした衝撃でデータが消えてしまうことも多いようです。寿命も非常に短く、3ヶ月〜1年ほどで消耗してしまいます。初期不良も多く、準消耗品として考えたほうが良いでしょう。
また、低価格化も目覚しく、安価で取り回しのしやすい大容量の記憶装置として広く普及しています。その利用範囲はコンピュータ端末のみにとどまらず、ビデオレコーダーやオーディオ機器にまで搭載される場合がでてきました。
ハードディスクは磁性体を付着させた金属ディスク数枚を重ねた補助記憶装置です。ディスクがアルミ製で硬質なことからこの名前がつきました。なお、ディスクの表面は鏡のような反射面になっています。
データの記憶、消去はディスクを回転させ、磁気ヘッドを近づけて磁化の状態を変化させて行います。また、データ読み込みも磁気ヘッドを近づけて磁化の状態を読み取ることで行えます。
ディスクの裏表両面にデータが記憶でき、複数ディスクがあることにともなって磁気ヘッドも複数配置(同じ大きさ・形)されています。しかし、磁気ヘッドは固定されているため個別に動くことができず、動くときは全て一斉に同じ位置に動きます。ハードディスクはデータ記憶領域として同円周上にトラックを配置します。トラックに磁気ヘッドのひとつを持って来ると、磁気ヘッドは固定されて連動するため、ほかのヘッドも同円周に移動します。この複数のディスクの同円周上のことをシリンダといいます。
ハードディスクの容量から、必要なデータを格納するのに必要なシリンダの本数を計算するには、次の方法を使います。 ハードディスクへの書き込み形式にはIBG方式とセクタ方式があり、それぞれ計算方法が異なります。この計算は情報処理試験での出題範囲となります。
バリアブル方式は、ブロック(※)とブロックの間にある一定間隔の領域であるIBG(Inter Block Gap)を挟みながらつめてデータを格納していく方式です。ブロックは分割できないため、複数トラックにまたがって一つのブロックは存在できません。トラック残り容量が一ブロック容量分以下であれば新しいトラックに書き込みます。
+=======+---+=======+---+=======+---+=======+ | block |IBG| block |IBG| block |IBG| block | +=======+---+=======+---+=======+---+=======+ ←=========================================→ Track
ブロック化係数2なので1ブロックは500バイト * 2レコード = 1000バイト
これをIBGを挟みながら配置します。
1ブロック目:1000バイト 残り4000バイト
IBG :200バイト 残り3800バイト
2ブロック目:1000バイト 残り2800バイト
IBG :200バイト 残り2600バイト
3ブロック目:1000バイト 残り1600バイト
IBG :200バイト 残り1400バイト
4ブロック目:1000バイト 残り400バイト
IBG :200バイト 残り200バイト
200バイトあまりましたが、1ブロックに満たない容量のため、このまま違うトラックに書き込まれることになります。
セクタとは、トラックを円周上に分割した領域です。セクタ方式ではまず、1ブロック収納するのに何セクタ必要かを計算します。IBGを持たず、セクタごとに収納していきます。
はじめに1ブロックを格納するのに必要なセクタ数を算出します。
1ブロック長 = 200バイト * 6 = 1200バイト
1ブロック格納に必要なセクタ数 = 1200バイト / 256(バイト/セクタ) = 4.6875 →5セクタ
1トラックに格納可能ブロック数 = 50セクタ / 5(セクタ/ブロック) = 10ブロック
1トラックに格納可能レコード数 = 10ブロック * 6 = 60レコード
1シリンダに格納可能レコード数 = 60(レコード/トラック) * 20(トラック/シリンダ) = 1200レコード
以上の計算式より、全レコードの格納に必要なシリンダー数がわかります。
全レコード格納に必要シリンダ数 = 5000レコード / 1200(レコード/シリンダ) = 4.166 →5シリンダ
(※)データはブロック形式で格納されており、ブロックとはレコード(データの最小単位)が複数集まったもので、ブロック化係数の係数個のレコードをまとめて1ブロックとします。例えばブロック化係数5ならば、5レコードをまとめて1ブロックとすることになります。
+------+------+------+------+------+ |record|record|record|record|record| +------+------+------+------+------+ ←================================→ Block (coefficient 5)
1ブロックのアクセス時間を求める問題は情報技術者試験での頻出問題です。次の式で求めることができます。
1ブロックのアクセス時間 = 平均シーク時間 + 平均サーチ時間 + データ転送時間
例)1ブロックのアクセス時間を求めよ
平均シーク、平均サーチ、データ転送時間を個別に求め、最後に足し合わせることによって算出します。また、平均シーク時間は仕様として問題文に書かれているので、そのまま利用します。
回転速度を利用して、次のように算出します。
3000回転 / 分 = 3000回転 / 60000ミリ秒 = 1回転 / 20ミリ秒
1回転20ミリ秒なので平均時間は半分の10ミリ秒になります。
ブロック長 / データ転送時間で求めることができます。
データ転送速度は「バイト/ミリ秒」で表し、1回転時間とトラックの容量から求めます。
15000バイト(トラック容量)転送するのに20ミリ秒かかるので、次の式のようになります。
転送速度 = 15000バイト / 20ミリ秒 = 750(バイト/ミリ秒)
従って、データ転送時間は次のようになります。
データ転送時間 = ブロック長 / 転送速度 = 3000バイト / 750(バイト/ミリ秒) = 4ミリ秒
また、次のように1回転の時間と1トラックの長さ、1ブロックの長さを使って求める方法もあります。
ディスクが1回転するとき、1トラック分のデータを転送できます。
つまり、15000バイト転送するのに20ミリ秒かかることになります。
1ブロックは3000バイトなので1トラックの1/5にあたります。
従って次の式のように求めることもできます。
20ミリ秒 / 5 = 4ミリ秒
以上の3つの計算結果を足し合わせて求めることができます。
1ブロックのアクセス時間 = 平均シーク時間 + 平均サーチ時間 + データ転送時間
1ブロックのアクセス時間 = 20ミリ秒 + 10ミリ秒 + 4ミリ秒 = 34ミリ秒
RAID (Redundant Arrays of Independent Disks)とは、補助記憶装置の信頼性や速度を向上させるため、複数の装置を集めてひとつの装置のように扱う仕組みのことです。ディスクアレイと呼ばれる技術のうちのひとつという位置づけになっています。ちなみに、発音は「レイド」です。
RAID0〜RAID5までありますが、代表的なのはRAID0、RAID1、RAID3、RAID5の四つだけです。
DAIDはHDDに限らず、補助記憶装置を複数集めてひとつの装置のように扱う仕組みのことですが、代表的なのはHDDです。
FDやフラッシュメモリでRAIDを構築した人もいるようです。
高速化のために、二台以上の記憶装置を並列にデータの読み書きを行います。データはストライプサイズと呼ばれるブロック単位で分割されます。
また、ディスクの容量を増やすのにも重宝されていました。これは、昔は補助記憶装置の容量自体が現在とは比べ物にならないほどに小さく、ひとつのファイルがハードディスクに収まりきらないことも珍しくありませんでした。この場合、ファイルを分割して複数のハードディスクに格納することになりますが、ストライピングは複数のハードディスクをひとつのハードディスクとして認識させることができるため、ファイルを分割する必要無く格納できます。
しかし、ストライピングは複数台のハードディスクにファイルを分割して格納するため、そのうちの一台でも故障してしまうとファイルが読み出せなくなってしまいます。つまり、信頼性自体は低下してしまいます。
+----------+ | file X | +----------+ ↓ flagmentation .-----. .-----. .-----. |f_X 1| |f_X 2| |f_X 3| `-----` `-----` `-----` .____________|____________. | | | +---------+ +---------+ +---------+ | [HDD 1] | | [HDD 2] | | [HDD 3] | | | | | | | | .-----. | | .-----. | | .-----. | | |f_X 1| | | |f_X 2| | | |f_X 3| | | `-----` | | `-----` | | `-----` | +---------+ +---------+ +---------+
信頼性向上のために、複数の記憶装置に同じデータ内容を書き込こみます。もしも、ひとつの記憶装置に障害がおきても他の記憶装置に記憶されたデータを使って処理を続行することができます。厳密に考えると、このミラーリング以外は信頼性向上には役に立ちません。
記憶装置の容量の飛躍的な向上のために記憶容量を気にすることなくファイルを格納することができるようになったために、高速化や大容量化よりも信頼性を高めたいという欲求が増えてきました。そういった信頼性への欲求の解決策としてミラーリングができました。ミラーリングは非常に高い信頼性を確保できますが、単純に考えて同じ内容のファイルをコピーして複数台の記憶装置に格納するため、1バイトあたりの単価が高くなってしまいます。
+----------+ | file X | +----------+ ._____________|_____________. | | | +----------+ +----------+ +----------+ | [HDD 1] | | [HDD 2] | | [HDD 3] | | | | | | | | +------+ | | +------+ | | +------+ | | |file X| | | |file X| | | |file X| | | +------+ | | +------+ | | +------+ | +----------+ +----------+ +----------+
RAID2は、ストライピングを使いながら、ECC(Error Correcting Code)という簡単な誤り訂正機能を持たせた技術です。
RAID2ではECCデータは別の記憶装置にまとめて格納されます。
信頼性はミラーリングに劣りますが、ストライピング用記憶装置+ひとつのECC用記憶装置で構築できるため、コストを抑えることができます。しかしながら、信頼性も中途半端なため、あまり使われていません。
RAID2の弱点として、誤り訂正用のデータ(ECC)を格納した記憶装置が壊れると、データを修復することができなくなるという点が挙げられます。そのうえ、データ読み出し・書き込みの際には、ECC用記憶装置に必ず一回アクセスすることになり、ECC用記憶装置に負担が集中してしまいます。その結果ECC用記憶装置が壊れやすくなってしまいます。
+----------+ | file X | +----------+ ↓ flagmentation + ECC .-----. .-----. .-----. .-----. |f_X 1| |f_X 2| |f_X 3| | ECC | `-----` `-----` `-----` `-----` .____________|____________._ _ _ _ _ _ _. | | | | +---------+ +---------+ +---------+ +---------+ | [HDD 1] | | [HDD 2] | | [HDD 3] | | [HDD 4] | | | | | | | | | | .-----. | | .-----. | | .-----. | | .-----. | | |f_X 1| | | |f_X 2| | | |f_X 3| | | | ECC | | | `-----` | | `-----` | | `-----` | | `-----` | +---------+ +---------+ +---------+ +---------+
また、ECC用記憶装置は多くの台数が必要となります。次の表のように増加していきます。
+------+-------+-------+-------+-------+-------+--------+--------+--------+ |Data | 1disk | 2disk | 3disk | 4disk | 5disk | 6disk | 7disk | 8disk | +------+-------+-------+-------+-------+-------+--------+--------+--------+ |ECC | 2disk | 3disk | 3disk | 3disk | 4disk | 4disk | 4disk | 4disk | +------+-------+-------+-------+-------+-------+--------+--------+--------+ |Total | 3disk | 5disk | 6disk | 7disk | 9disk | 10disk | 11disk | 12disk | +------+-------+-------+-------+-------+-------+--------+--------+--------+
RAID3は、データ格納の際にパリティと呼ばれる誤り検出符号を生成し、データ用記憶装置とは別の記憶装置に格納します。 ECCとの違いは、ECCは簡単な誤りを訂正することができますが、パリティは誤りを検出するだけで訂正はできません。しかし、ECCよりも少ない容量で誤り検出できるため、RAID2よりも使われることが多いです。
RAID4は、ストライピングの単位をセクタなどのより小さな単位に分け、パリティを使う方法です。 読み出しはストライピング効果で高速ですが、書き込みはパリティドライブにアクセスが集中するためあまり速くありません。 この技術もパリティドライブに負担が集中するため、あまり使われてはいません。
分散データガーディングとも呼ばれる、RAID4を改良したもので、最も考え抜かれた方法です。データをブロック単位に分割してパリティかECCを生成します。 パリティ・ECCもそれぞれの記憶装置に分散して記憶しますが、分割されたデータのパリティ・ECCと元の分割されたデータとを異なる記憶装置に格納するようにします。 RAID4では、パリティ・ECC用記憶装置は固定されていましたが、この方法はパリティ・ECC用記憶装置に負担が集中してしまいます。そこで、RAID5ではパリティ・ECC用記憶装置をブロックごとにシフトさせることによりパリティ・ECC用記憶装置への負担の集中を防いでいます。
+----------+----------+----------+ | file X | file Y | file Z | +----------+----------+----------+ ↓ flagmentation + ECC or Parity (EP) .-----. .-----. .-----. |f_X 1| |f_X 2| |EP X | `-----` `-----` `-----` .-----. .-----. .-----. |f_Y 1| |f_Y 2| |EP Y | `-----` `-----` `-----` .-----. .-----. .-----. |f_Z 1| |f_Z 2| |EP Z | `-----` `-----` `-----` .____________|____________. | | | +---------+ +---------+ +---------+ | [HDD 1] | | [HDD 2] | | [HDD 3] | | | | | | | | .-----. | | .-----. | | .-----. | | |f_X 1| | | |f_X 2| | | |EP X | | | `-----` | | `-----` | | `-----` | | .-----. | | .-----. | | .-----. | | |f_Y 1| | | |EP Y | | | |f_Y 2| | | `-----` | | `-----` | | `-----` | | .-----. | | .-----. | | .-----. | | |EP Z | | | |f_Z 1| | | |f_Z 2| | | `-----` | | `-----` | | `-----` | +---------+ +---------+ +---------+
(※)raid:(on)襲撃・空襲(する)、(into)侵入する、(従業員の)引抜き、(警官が)手入れ(する)、【商品】米国製の殺虫剤、【商業】売りくずし
補足の英単語と技術自体との関係はありません(^^;)。 英単語を覚えるときに「コンピュータで出てきたな」と思い出せるように紹介しました。