シーケンシャルって何のこと?

HDDで「シーケンシャルアクセスが速い」とか「ランダムアクセスが遅い」とかいうようですが,どういう意味ですか? シークタイムと関係がありますか?


まず言葉の意味から先に説明してしまいましょう。
 100KBのファイルがあるとします。このファイルを先頭の1バイトめから順に,ダラダラと100KBめまで読み出すことを,シーケンシャルアクセスといいます。
 一方,そのファイルの1バイト目を読んだ後,70KBめを読み出して,次に58KBめを読み出す……という具合に,任意の位置のデータを読み出す方法をランダムアクセスといいます。
 シーケンシャルアクセスとランダムアクセスは必要に応じて,OSやソフトウェアが使い分けます。ランダムアクセスが速いほどOSの挙動がやや機敏になるなど,どちらが速ければ何が有利ということもいえなくはないですが,双方が速いのが,最も望ましいといえるでしょう。
 さて,シーケンシャルアクセスとランダムアクセス,そしてシークタイムの関係ですが,これも一概にはいえない部分があります。
 シークタイムというのは,平たくいえばディスクヘッドが動く速度を表しています。シークタイムが小さなドライブはヘッドの動きが速く,逆は遅いということです。
 一般論として通常,ファイルは連続したクラスタ(ディスクの論理的な記憶単位)に記録されていると考えられます。ファイルを先頭から順番に読み込むシーケンシャルアクセスでは,ヘッドがほとんど動かずに済みますから,シークタイムの影響は大きくないといえます。
 一方,ランダムアクセスの場合,ファイルのあちこちにアクセスするために,ヘッドが頻繁に動く可能性があります。したがって,シークタイムが短いほど高速という結果が出やすいのです。
 とはいえ,現実はそう単純ではありません。まず,対象となるファイルサイズの問題があります。データが1個のシリンダ(ヘッドが動かずにアクセスできるデータトラック)に収まっている場合,ランダムでもシーケンシャルでも,ヘッドが動かずにアクセスできます。したがって,1個のシリンダに収まる程度のファイルに対するアクセスは,ディスクの回転数が大きいほど高速になります。回転数が大きいほどヘッドとの相対速度が大きく,高速にデータを読み出せますし,ディスク上のデータがヘッドの位置にくるまでの時間が短いからです。
 また,シーケンシャルアクセスにも現実にはシークタイムが影響を与えます。というのは,WindowsのFATファイルシステムの場合,データが必ずしも連続したクラスタに並んでいるとは限らないためです。ファイルの分断(フラグメンテーション)が進んだFATドライブの場合,1個のファイルがバラバラの位置に記録されてしまいますから,シーケンシャルアクセスのときにもヘッドが動きます。
 ですから,FATドライブの場合,デフラグツールでファイルの分断を修正しておくことが,ディスクアクセスを速くするうえで重要なのです。
(米田 聡)