(57)【要約】【課題】データ・ストレージ・デバイスのデータ記録を最適化するための装置および方法を提供する。【解決手段】装置は、記録メディアと、記録ヘッドを記録メディアに隣接して位置決めするためのアームと、オブジェクトを受信し、オブジェクトの情報に基づいて、記録ヘッドが書き込むべき記録メディア上のブロックを選択するためのコントローラとを含む。更に本発明は、データ・ストレージ・デバイスにデータを書き込む方法を提供する。本方法は、オブジェクトに関するアクセス・コマンドを受信する工程と、オブジェクトの情報に基づいて記録ヘッドが書き込むべき記録メディア上のブロックを選択する工程と、オブジェクトからのデータを選ばれたブロックに書き込む工程とを含む。【選択図】図３
2006351175.tif 000002
【特許請求の範囲】
【請求項１】
記録メディアと、
記録ヘッドを記録メディアに隣接して位置決めするためのアームと、
オブジェクトを受信し、オブジェクトの情報に基づいて、記録ヘッドが書き込むべき記録メディア上のブロックを選択するためのコントローラと、
を含む装置。
【請求項２】
請求項１記載の装置であって、前記コントローラは、
オブジェクト・ベースのファイル・マネージャと、
物理的レイアウト・マネージャと、
を含んでいる前記装置。
【請求項３】
請求項２記載の装置であって、オブジェクト・ベースのファイル・マネージャおよび物理的レイアウト・マネージャがファームウエアとして実現される前記装置。
【請求項４】
請求項２記載の装置であって、オブジェクト・ベースのファイル・マネージャがオブジェクトに関する候補の先頭ブロックを指定する前記装置。
【請求項５】
請求項１記載のデータ・ストレージ・デバイスであって、メディアが回転可能なデータ記録ディスクを含んでおり、ブロックがデータ記録ディスクの表面に定義されたトラック上に配置されている前記データ・ストレージ・デバイス。
【請求項６】
請求項１記載のデータ・ストレージ・デバイスであって、オブジェクトが一連の逐次的データ・ブロックを含んでいる前記データ・ストレージ・デバイス。
【請求項７】
請求項１記載のデータ・ストレージ・デバイスであって、オブジェクトがユーザ・データおよびメタデータを含んでいる前記データ・ストレージ・デバイス。
【請求項８】
請求項１記載のデータ・ストレージ・デバイスであって、コントローラは、オブジェクト生成および追加書込み操作の間にオブジェクト・フラグメントの位置を選択し、記録メディアの物理的レイアウト特性を利用してフラグメント間のシーク時間を最小化する前記データ・ストレージ・デバイス。
【請求項９】
請求項１記載のデータ・ストレージ・デバイスであって、コントローラは、前のフラグメントの最後のブロックと次のフラグメントの最初のブロックとの間の合計位相差を用いて、オブジェクト・フラグメントの位置を選択する前記データ・ストレージ・デバイス。
【請求項１０】
データ・ストレージ・デバイスにデータを書き込む方法であって、
オブジェクトに対するアクセス・コマンドを受信する工程と、
オブジェクトの情報に基づいて記録ヘッドが書き込むべき記録メディア上のブロックを選択する工程と、
オブジェクトから選ばれたブロックにデータを書き込む工程と、
を含む方法。
【請求項１１】
請求項１０記載の方法であって、ブロックを選択する前記工程は、オブジェクトに関する候補となる先頭ブロック位置と前記候補となるブロック位置に続く複数のブロックとを指定する工程を含んでいる前記方法。
【請求項１２】
請求項１１記載の方法であって、候補となるブロック位置に続くブロックの数がオブジェクトが実際に必要とするブロック数よりも多い前記方法。
【請求項１３】
請求項１０記載の方法であって、データ・オブジェクトが一連の逐次的データ・ブロックを含んでいる前記方法。
【請求項１４】
請求項１０記載の方法であって、オブジェクトがユーザ・データとメタデータとを含んでいる前記方法。
【請求項１５】
請求項１０記載の方法であって、ブロックを選択する前記工程は、記録メディアの物理的レイアウト特性を利用して、フラグメント間のシーク時間を最小化するために、オブジェクトの生成および追加書込み操作の間にオブジェクト・フラグメントの位置を選択する工程を含んでいる前記方法。
【請求項１６】
請求項１５記載の方法であって、物理的レイアウト特性は、
ブロック・コマンド・オーバーヘッド、位相差、再割当てされたセクタ、スリップされたセクタ、トラック交差、ゾーン交差、トラック当たりのブロック数およびトラック歪みのうちの１又は複数の項目を含んでいる前記方法。
【請求項１７】
請求項１５記載の方法であって、オブジェクト・フラグメントの位置は、前のフラグメントの最後のブロックと次のフラグメントの先頭ブロックとの間の合計位相差を用いて選択される前記方法。
【請求項１８】
請求項１０記載の方法であって、１つのオブジェクトが複数のブロック要求を発生する前記方法。
【請求項１９】
請求項１０記載の方法であって、更に、
トラック当たりの物理ブロック数が互いに異なり、転送されるビットの周波数が異なる物理的記録ゾーンの集合を維持する工程、
を含む前記方法。
【請求項２０】
請求項１０記載の方法であって、更に、
オブジェクトに関する要求を決定論的に予めソートする工程、
を含む前記方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ・ストレージ・システム分野に関するものであって、更に詳細には、データ・ストレージ・デバイスのデータ記録を最適化するための装置および方法に関する。
【背景技術】
【０００２】
ブロック・データ・ストレージ・デバイスは、ホスト・デバイスから個別にアドレス指定されるブロックの形でデジタル・データの記録および／又は取り出しを行う。例示的なブロック・データ・ストレージ・デバイスには、ハードディスク・ドライブ、光ディスク・レコーダおよびプレーヤおよび磁気的デジタル・テープ・レコーダおよびプレーヤが含まれる。
【０００３】
そのようなデバイスは、典型的には、バッファ（第１の記録場所）、通信チャネルおよび記録メディア（第２の記録場所）を有するハードウエア／ファームウエア・ベースのインタフェース回路を含む。第２の記録場所のユーザ・メモリ・スペースは、アドレス指定可能な複数のブロックに分割され、それらには、ホスト・レベルのアドレス（しばしば論理ブロック・アドレス又はＬＢＡと呼ばれる）が割当てられる。各ＬＢＡは、望みのＬＢＡにアクセスするようにデータ変換ヘッドを記録メディアの適切な部分に揃えるためのサーボ制御回路が使用される対応する物理ブロック・アドレス（ＰＢＡ）を有するのが普通である。
【０００４】
メディアにデータを書き込むために、ホスト・デバイスは、ストレージ・デバイスが記録すべきユーザ・データのほかに、ユーザ・データを記録すべきＬＢＡのリストを含む書込みコマンドを発行する。ストレージ・デバイスは、ユーザ・データを第１の記録場所に一時的に記録し、データ変換ヘッドをメディア上の正しい位置へ移動させるようにスケジュールし、更に、通信チャネルの書込みチャネル部分を使用して、選ばれたＬＢＡにデータを書き込むためにデータの適正な符号化および調整を供給する。
【０００５】
後にストレージ・デバイスからデータを読み出すときは、ホスト・デバイスは、取り出すべきデータが含まれるＬＢＡを指定する読出しコマンドを発行する。ストレージ・デバイスは、データ変換ヘッドをメディア上の正しい位置に移動させるようにスケジュールし、更に、通信チャネルの読出しチャネル部分を使用して、読み戻したデータを復号化し、それらを第１の記録場所（バッファ）に置いた後、ホスト・デバイスに転送して戻す。
【０００６】
実際には、ファイルが生成され、拡大され、消去されるに伴って、利用可能なディスク・メディアが細分化（フラグメント化）される。ほとんどあらゆるコンピュータのディスク指向型ファイル・システムは、ファイル・データのフラグメンテーションの問題に悩まされている。ファイル・システムは、フラグメントをディスク上で互いに論理的に接近するように保持することによって、関連付けられるフラグメント間のシーク時間を最小化しようと努める。ファイル・システムは、その背景にある物理的ディスク構成およびアーキテクチャを正しく理解できないため、互いに接近したアドレスを有する論理ブロックは、メディア上で物理的にも接近していると仮定して設計される。
【０００７】
メディアからファイル・フラグメントを読み出すたびに、ホスト上およびディスク・ドライブ内の両方で別々のメディア・アクセス・コマンドが必要となる。内部ディスク・ドライブのコマンド処理のためのオーバー・ヘッド値は、ファイル・システムにとって未知であるため、システムは、無意識にファイル・フラグメントのブロックをメディア上で選択し、そのため、最良の動作性能どころか、最悪の動作性能をもたらすことになりかねない。このことは、ディスク上でほぼ逐次的になっていても、各フラグメントがコマンド処理時間のせいでアクセスを妨害し、ヘッドが要求のあったブロックを寸前で取り逃してしまい、ディスクがもう一回転するのを待って再度挑戦しなければならないなど、読出し／書込み動作のたびに余分なディスク回転を招く場合に発生する。
【０００８】
オブジェクト・ベースのストレージ・デバイス（ＯＳＤ）技術は、ディスク・ドライブ・レベルで開発途上にある。ホストによるＯＳＤアクセスは、標準的なブロック指向のプロトコルと厳密には、異なる。データは、オブジェクトとしてアドレス指定され、ＯＳＤディスク・ドライブにおけるアドレッシング可能な最小単位は、バイトである。更に、ファイル・システムの大部分は、ディスク・ドライブの内部で抽象化される。データの物理的位置や構成は、ホストから見えず、ディスク・ドライブ・ユニットによって管理される。
【０００９】
オブジェクト・ベースの記録は、スモール・コンピュータ・システム・インタフェース（ＳＣＳＩ）のコマンド・セットの拡張である。オブジェクト・ベースのストレージ・コマンド・セットは、特定の機能および知能をホストから個別ストレージ・デバイスにシフトあるいは、委譲する。このことは、ファイルおよびメタデータを一緒に１つの密接なオブジェクトとして管理および記録し、その関係をオブジェクト・ベースのストレージ・デバイス（例えば、コントローラ、ディスク・アレイ、あるいは、個別ディスク・ドライブ）レベルにまで保持することによって行われる。
【００１０】
上位レベルのインフラストラクチャ機能が最下位レベルのデバイスに委譲されることで、トラヒックが減少し、ソフトウエアだけでは、提供できない新しい機能が可能となる。このことは、拡張性および動作性能、動的再構成、ホスト相互運用性、生来的安全性および拡張された信頼性を強化する。
【００１１】
オブジェクト・ベースのストレージ・デバイスは、ネットワークに接続されたストレージ・デバイスでもよく、それは、要求のスケジューリングおよびデータのレイアウトなどのデータ記録の詳細を処理するために、逐次的に番号を振られた固定サイズのブロックではなく可変長で任意に命名されたデータ・オブジェクトのインタフェースを提供する。メタデータは、１又は複数の特殊用途のメタデータ・サーバが別々に管理する。データおよびメタデータの記録および管理を分離することによって、大規模な分散型のストレージ・システムへの非常に高いアクセス帯域幅が得られる。
【００１２】
ＯＳＤアーキテクチャは、記録をブロックでもファイルでもなく、オブジェクトとして扱う。ファイルとオブジェクトの主要な違いは、オブジェクトは、オブジェクト・データと一次メタデータとの結合を維持することである。一次メタデータは、アクセス時間、パーミッション、論理的オブジェクト・サイズ等を含む。例えば、オブジェクトは、単一のデータベース・レコード、又はテーブル、又はデータベース自身の全体でもよい。オブジェクトは、ファイルを含むことができるがファイルの一部だけでもよい。ストレージ・デバイスは、この内容を知っており、ブロック割当てのような下位レベルの詳細なデバイス管理を処理することができる。
【００１３】
典型的なディスク・ドライブ・インタフェース・プロトコル（例えば、ＳＣＳＩ、ＦＣ、ＡＴＡ等）は、論理ブロック単位でディスク・データにアクセスする。このとき、ファイル・システム全体の構成は、ホスト内部で抽象化される。ディスク・ドライブのアドレッシング最小単位は、ブロックである。対照的に、ＯＳＤディスク・ドライブでのアドレッシング最小単位は、バイトである。更に、ファイル・システムの大部分は、ディスク・ドライブ内部で抽象化される。データは、オブジェクトとしてアドレッシングされる。データの物理的位置や構成は、ホストから見えず、ディスク・ドライブ・ユニットで管理される。
【００１４】
オブジェクト指向型ファイル・システムの特徴を活かしてファイル・アクセス時のシーク・オーバーヘッドを最小化することが望ましい。
【発明の開示】
【００１５】
本発明は、記録メディア、記録ヘッドを記録メディアに隣接して位置決めするためのアームおよびオブジェクトを受信しオブジェクトの情報に基づいて記録ヘッドが書き込むべき記録メディア上のブロックを選択するコントローラを含む装置を提供する。
【００１６】
別の態様では、本発明は、データをデータ・ストレージ・デバイスに書き込む方法を提供する。本方法は、オブジェクトのアクセス・コマンドを受信する工程、オブジェクトの情報に基づいて記録ヘッドが書き込むべき記録メディア上のブロックを選択する工程および選ばれたブロックにオブジェクトからデータを書き込む工程を含む。
【実施例】
【００１７】
図面を参照すると、図１は、本発明に従って構築できるディスク・ドライブ１０の機械的部分の模式的図である。ディスク・ドライブは、ディスク・ドライブの各部品を収容するような寸法および構成を有する容器１２（上側部分を取り外してあるため、この図では、下側部分が見えている）を含む。ディスク・ドライブは、容器内部で少なくとも１つのデータ記録メディア１６（ここでは、磁気ディスク）を回転させるためのスピンドル・モータ１４を含む。少なくとも１つのアーム１８が容器１２に内蔵されていて、各アーム１８は、記録および／又は読出し用ヘッド又はスライダ２２を備えた第１の端部２０と、ベアリング２６によってピボット回転するようにシャフトに搭載された第２の端部２４とを有する。アクチュエータ・モータ２８は、ボイス・コイル・モータでよいがアームの第２の端部２４に位置しており、ヘッド２２をディスク１６の所望のセクタ上に位置決めするようにアームをピボット回転させる。データは、記録メディアの複数の同心円トラック２７に記録される。ディスク・ドライブのコマンドおよび制御用電子回路は、容器内部に設置されたプリント回路基板（ＰＣＢ）に搭載される。
【００１８】
ディスク・ドライブ制御回路３２を含むオブジェクト・ベースのストレージ・システム３０の機能的ブロック図が図２に与えられている。ホスト・コンピュータ３４がディスク・ドライブ制御プロセッサ３６を最上位レベルで制御し、後者が次にダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）３８および不揮発性フラッシュ・メモリ４０に記録されたプログラムおよび情報に従ってディスク・ドライブ３０の動作を制御する。
【００１９】
ディスク・ドライブが記録すべきデータは、ホスト・コンピュータ３４からインタフェース回路４２に転送される。インタフェース回路４２は、データを一時的に保存するデータ・バッファと、データ転送動作中に読出し／書込みチャネル４４およびプリアンプ／ドライバ回路４６の動作を指示するためのシーケンサとを含む。スピンドル・モータ５２によってディスク５０の回転を制御するためにスピンドル回路４８が設けられる。
【００２０】
サーボ回路５４が設けられており、ヘッド５６、プリアンプ／ドライバ４６、サーボ回路５４およびアクチュエータ・アームの位置を制御するコイル５８によって構成されるサーボ・ループの一部として１又は複数のディスク５０に相対的な１又は複数の記録ヘッド５６の位置を制御するようになっている。サーボ回路５４は、２つの重要なサーボ動作、すなわち、シークおよびトラック・フォローイングを実行するようにプログラムされたデジタル信号プロセッサ（ＤＳＰ）を含む。
【００２１】
図３は、本発明に従うＯＳＤディスク・ドライブ６２を含むオブジェクト・ベースのストレージ・システム６０のブロック図である。複数のアプリケーション６６を走らせるホスト・コンピュータ６４は、システム・コール・インタフェース６８およびファイル・システム・ユーザ・コンポネント７０を含む。ホストは、オブジェクト・インタフェース７２を介してＯＳＤディスク・ドライブ６２に情報を送信する。ディスク・ドライブは、ファイル・システム・コンポネント７４、ブロック入出力マネージャ７６および１又は複数の記録メディア７８を含む。
【００２２】
本発明は、フラグメント化したＯＳＤファイル・システムに対処して、フラグメント化が重大な性能劣化を引き起こさないことを保証する。本方法は、ファイルのフラグメントを最適に構成することにより、またほぼ連続した読出しおよび書込みアクセスのコマンド・オーバーヘッドを無くすことによってファイル・アクセス時のシーク・オーバーヘッドを最小化する。
【００２３】
本発明は、オブジェクト生成および追加書込み動作の間に、オブジェクト・フラグメントの位置を選択して、ディスクの物理的レイアウトの要因を明らかにすることによってフラグメント間のシーク時間を最小化する。選択操作で考慮する記録メディアの因子又は特性には、前のフラグメントの最後のブロックと次のフラグメントの先頭のブロックとの間の合計位相差が含まれる。位相差は、次のコマンド選択ソートの間に計算される値である。待ち行列に含まれる各コマンドは、先頭位相と末尾位相とを含む。先頭位相は、現在のコマンドに関して転送すべき最後のブロックのディスク上での位置である。読出しコマンドに関しては、これは、読出しルック・アヘッド・データを含む。末尾位相は、候補の次のコマンドの最初のブロックである。先頭位相から末尾位相までの時間差が位相差である。コマンド・ソート操作の目的は、最小の位相差を有する次のコマンドを見つけて、コマンドからコマンドへの迅速な実行を実現することである。位相差を計算するときに考慮すべき要素は、２つある。回転待ち時間とシーク時間である。回転待ち時間は、目標ブロックがヘッド下を回転するのに要する時間である。シーク待ち時間は、アクチュエータが正しい次のトラックに移動するのに要する時間である。
【００２４】
図４は、ＯＳＤとインタフェース・ファームウエア層との通信のブロック図である。ＯＳＤ層は、ドライブに対するブロック要求を行うために、ファームウエア・アプリケーション・プログラム・インタフェース（ＡＰＩ）８０を使用する。メタデータおよびユーザ・データ・オブジェクトに関するフリー・ブロックのリスト８４が用意される。ＯＳＤファイル・システム８４は、ＷＲＩＴＥ、ＷＲＩＴＥ  ＡＰＰＥＮＤ、又はＣＲＥＡＴＥコマンドを満たすために新しいユーザ・データ・ブロックが必要となったときに、ＯＳＤ層に対して候補となる先頭ブロック位置を提供する。物理的ディスク・レイアウト・マネージャ８６は、コマンドを受信して、トラック・フォーマット、ゾーン、欠陥およびトラック位置８８を制御する。
【００２５】
図５は、ドライブ・ファームウエアのより詳細なブロック図である。ＯＳＤファームウエア層９０は、コマンド解析９２、能力チェックおよびパーミッション／セキュリティ９４、メタデータ・フェッチ９６、スペース管理（ＯＳＤファイル・システム）９８、コマンド実行１００およびエラー管理１０２のためのファームウエアを含む。アプリケーション・インタフェース１０４は、接続されたブロック転送１０６、ディスクのみ転送１０８、ホストのみ操作１１０およびキャッシュおよび形状要求１１２を実施するためのファームウエアを含む。標準ファームウエア１１４は、トラック・フォーマット、ゾーン、欠陥および現在のトラック位置１１６を決定し、この情報を物理的ディスク・レイアウト・マネージャ１１８に与える。
【００２６】
ＯＳＤ層は、ＯＳＤコマンドを解析および実行するファームウエアを含む。実行される各ＯＳＤコマンドは、典型的には、複数の工程に分割される。すなわち、構文解析、メタデータ・フェッチ、オブジェクト・データ位置計算、標準ファームウエア・ブロック・コマンド構築およびＯＳＤ  ＡＰＩを介してなされる転送要求に分割される。ＡＰＩは、４つの一般的な関数、すなわち、接続された転送、ディスクのみ転送、ホストのみ転送およびキャッシュおよび形状要求を実現するように構築される。接続された転送は、ディスクとの間で、あるいは、ホスト・インタフェースとの間でデータを転送するために用いられる。ディスクのみ転送は、ホスト・インタフェースとの間の転送を含まないディスク読出しおよび書込みを表す。ホストのみ転送は、ホスト・インタフェースとの間でデータ転送するために用いられる。キャッシュおよび形状要求（ｇｅｏｍｅｔｒｙ  ｒｅｑｕｅｓｔ）は、進行中のＯＳＤコマンドのためのバッファ・メモリを確保し、与えられたゾーンでのトラック当たりのセクタ数など記録の物理的形状に関する特別なサービスを要求するために使用される。形状要求は、この説明で述べた操作を実施するために使用される。
【００２７】
図４および５に示した関数は、ディスク・ドライブ・コントローラ中にファームウエアとして実現することができる。典型的には、１つのＯＳＤコマンドが複数のブロック・コマンド要求を発生し、それらが定常的なブロック要求の流れとしてディスク・ドライブ・ソート・アルゴリズムに与えられる。これは、一般的なファイル・システム演算の実行時に普通に行われることである。例えば、標準的な工業用ファイル・システムで、ファイル読出し要求は、ファイル・パスの名前の付いた構文解析、ファイル・データの物理的場所を決めるためのファイルに関連するメタデータのフェッチ、ファイル・データのフェッチおよび最後にメタデータの日付、発行情報等の更新を含む。ＯＳＤファイル・システム・アーキテクチャも同様である。違いは、ファイル・システムがブロック・ストレージ・デバイスによって管理されることであり、従って、ファイル・システムの下位レベルでの操作は、クライアントのコンピュータ・システムから見えない。
【００２８】
ここで説明するように、オブジェクトは、ユーザ・データ、システム属性およびユーザ定義による属性の独立したユニークな集合体であり、一意的なラベルで識別され、そのデータは、バイト単位（グラニュラリティ）で任意にアクセスすることができる。それは、ファイルと類似しているが、オブジェクトは、ファイルと違って属性をファイル・データに結合させる。各オブジェクトは、メタデータとユーザ・データとを含む。ＯＳＤ層は、メディア８２上のファイル・システム・メタデータとユーザ・データとのレイアウトを決定する。メタデータ・ブロックは、ユーザ・データ・ブロックの身元（アイデンティティ）、属性および場所を記録するために使用され、ユーザ・オブジェクトをユーザ・データ・フラグメントに関連付ける。
【００２９】
ここで使用されるフラグメントとは、同じファイルやオブジェクトの一部である他のユーザ・データに連続する形で記録されていないユーザ・データの一部である。もし一連のファイル・データが記録空間に散乱すれば、ファイルは、フラグメント化する。フラグメント化したファイルは、フラグメント化していないファイルと比較した場合、一般に読出し／書込み動作で劣る。フラグメントの位置を選択するために、ＯＳＤコマンドをサポートするファームウエア層が既存のインタフェース・ファームウエア・モジュールの上に追加される。
【００３０】
ＯＳＤ層は、ＯＳＤコマンド要求を満たすメディア・ブロックの選択を担当する。しかし、ＯＳＤ層は、前のフラグメントの最終ブロックの位置が与えられたとき、どのブロックがシーク時間を最小化するか正確には知らない。このことが図６に示されている。図６は、１から１３まで番号を振ったオブジェクト・フラグメントを含む簡略化されたディスク・メディア・ウエッジ・レイアウト１２０の模式図である。このメディアは、矢印１２２で示した方向に回転する。各ブロックは、順に番号を振ってあり、ブロックは、順番にアクセスされる。点線は、ＯＳＤシステムによって以前に確保されたオブジェクト・フラグメントを表す。以前に確保されたブロックは、この、あるいは、別のオブジェクトが使用しているデータ・ブロックである。これらのブロックは、前に割当てられたものであり、フリーではないので、新しいデータ範囲に割当てることはできない。確保されたブロックは、０、１および２である。
【００３１】
新しい書込みコマンドに対して別のウエッジが必要であるが、真に連続した次の最良のブロックが別のオブジェクト用として確保されているため利用できないと仮定する。図７は、２つのオブジェクト・フラグメントが確保されているディスク・ブロック・レイアウト１２４の模式図である。ディスクは、矢印１２６で示された方向に回転する。図７の例で、第２のオブジェクトがブロック３および４を確保している。問題のオブジェクトは、それ自身のためにデータ・ブロックの割当てを現在要求しているオブジェクトである。問題のオブジェクトが付加的なブロックを必要とし、次に続くブロックが利用できないため、次の最良の利用可能なブロックをこのオブジェクトのために確保する必要がある。
【００３２】
一般に、実際の物理的レイアウトが明確に知られていないため、ブロック５が最も近接しているように見える。しかし実際には、ブロック５まで回転するよりもトラックを切り替えるほうが速くできるため、ブロック１０がブロック５よりもブロック２の末尾に近い。ブロック９は、コマンド・セットアップ・オーバーヘッドがディスク・ハードウエアを時間内にセットアップするのに時間を取りすぎるため近いとは、言いがたい。
【００３３】
従来の装置では、ファイル・システムは、物理的レイアウトを知らないため実際に最良の候補を確信をもって決定することができない。本発明は、一連の逐次的ブロックを入力として与えられた場合に、最良のシーク時間を決定するために典型的な位相差計算を逆に実行するように物理的レイアウト・マネージャに要求することによってこの問題を解決する。
【００３４】
ディスク・ドライブは、物理的記録ゾーンの集合を把握しており、それらは、１つのトラック中の物理ブロック数が互いに異なっており、転送されるビットの周波数が異なっている。目標のゾーンは、未割当てのブロックに対して現在の要求に合致する十分なブロックが存在するとＯＳＤが決定したゾーンである。ＯＳＤ層は、目標ゾーン中の平均ブロック数に要求の中で必要とされるブロック数を加えた値に基づいて一連のブロック候補を提供する。本質的に、物理的レイアウト・マネージャには、戦闘のシーク・ブロック位置、先頭の候補となるブロック位置および候補となるブロックに続く考慮すべきブロック数が与えられる。ＯＳＤファイル・システムは、すべてのブロックの記録を保持し、それには、物理的位置と、それがオブジェクトに割当てられているかどうかが含まれる。与えられるブロック数は、ＯＳＤ要求によって必要とされる実際のブロック数よりも少なくとも１トラックだけ多い。
【００３５】
ＯＳＤ層は、メディア・フォーマットの物理的特性に関与しない。ブロックがフォーマットの間に再割当てされたかスリップされたかを知らない。更に、トラック末端へのブロックの向きやブロックのアドレスの別のブロックとの位相差関係も分からない。そのため、ＯＳＤは、メディア・フォーマットのこれらの物理的特性を知っているファームウエアに対して一連のブロック候補を提供する。この情報を得ることによって、メディアを知っているファームウエアは、どこであっても最適な先頭ブロックを見出すことができる。これは、１つのトラック全体のどこであっても、そこから先頭ブロックを選ぶのに十分なブロックが与えられるためである。ファームウエアは、先頭位相の知識に基づいて最良の末尾位相を計算するように、回転待ち時間およびシーク待ち時間の両方を最適化することができる。物理的レイアウト・マネージャは、先頭シーク・ブロックから最も近いブロックを検索し、それをＯＳＤ層に戻す。この情報から、ＯＳＤ層は、最良の候補となる先頭ブロックを提供され、それによってフラグメントを確保できる。他方、必要とされるブロック数のみがメディアを知っているファームウエアに対して提供された場合、解は、制約される。それは、メディアを知っているファームウエアもどのブロックが使用中でどのブロックがフリーであるかまでは、知らないためである。更に、もしＯＳＤがそれ自身で先頭ブロックを選択しても、選ばれたブロックが最適な動作性能を示すかどうかは、見当が付かない。
【００３６】
図８は、ほぼ連続的なオブジェクト・フラグメントを備えるＯＳＤディスク・レイアウト１２８の模式図である。ディスクは、矢印１３０で示された方向に回転する。図８は、既存のオブジェクトが論理的オブジェクトの末端にブロックを追加する必要がある場合を示している。この場合、割当てを必要とするオブジェクトは、既にブロック０−２を所有している。理想的には、ブロック３−４が０−２に連続しているのでこれらを割当てるべきであろう。しかし、別のオブジェクトが既にブロック３−４を要求している。アルゴリズムは、最良の候補としてブロック１０−１１を戻す。それは、それらが初期のオブジェクト・フラグメントの末尾の位相ブロック２の最後との間で最小の位相差を有するためである。ブロック９は、選ばれない。これは、ブロック転送をセットアップするコマンド・オーバーヘッドが大きすぎて、ディスクの追加的回転を引き起こすことなしにこのブロックにアクセスできないためである。
【００３７】
位相計算は、次のようにしてシーク時間（Ｓｅｅｋ  Ｔｉｍｅ）を決める。シーク時間（ＭＩＮＩＭＵＭ）＝現在の位置＋リストのなかの最良候補の先頭ブロック。ここで、リストは、多数のブロックを含んでおり、その中から１つを選択できるようになっている。
【００３８】
これは、本質的に既存のシステムによって次の最良のコマンドを決定する方法であり、その他は、同じである。ＯＳＤシステムは、コマンドに対してこれらの計算を使用せず、１つのコマンドに関する一連の候補ブロックに対して使用する。従って、このオブジェクトから今後要求があった場合、ほぼ連続したアクセスに予め決定論的にソートされていることが保証される。この方法は、逐次的アクセスの静的ソートを実現する。フラグメント化されたオブジェクトの割当てが逐次的な形で最適化されてしまえば、コマンド・ソート・ファームウエアは、要求を動的にソートする必要がなくなる。もしこれによって性能上の特長が得られるのであれば、コマンドは、本質的に先に実行された静的ソートによって予めソートされていることになる。
【００３９】
ＯＳＤ装置に特化した本方法は、それが決定論的である点で以前の方法と異なる。以前の方法は、ストレージ・デバイス・ホストに依存して好適な順序でコマンドを送信し、すべての要求が互いに関連してメリットを得ることを保証する。これは、理論上のことであって、同じ装置に複数のホストがアクセスする場合や、ホストのファイル・システムが実行中の複数の関連しないアプリケーションを実行している場合には、疑わしい。
【００４０】
ここにＯＳＤの決定方法が登場する。それは、これがホストによって要求されるか書き込まれた複数のデータ・ブロックが互いに関連しているかどうかを確信して知ることができ、従って、書込みおよび読出しの動作性能を決定論的に最大化できる方法によってディスク上でデータ・ブロックを割当てられる唯一の方法である。
【００４１】
ＯＳＤ方法は、最終的にシーク時間に影響するすべての因子を計算し、最小のシーク時間をもたらす最良のトラック／セクタを選び、それらのセクタにデータを書き込む。そのような因子には、ブロック・コマンド・オーバーヘッド、前のフラグメントから連続する最後のブロックからの位相差の最小化、再割当てされたセクタ、スリップされたセクタ、トラック交差、ゾーン交差、１つのトラック当たりのブロック数およびトラック歪みが含まれる。ＯＳＤ方法は、書込み割当てのためにブロックを選択する前に以前に書き込まれたオブジェクトのフラグメントの末尾がどこに位置するかを知っているため割当てに関して有利である。この情報は、非ＯＳＤのインタフェースには、存在しない。
【００４２】
ＯＳＤ方法は、任意のブロック長での書込み操作をサポートする。ＯＳＤ方式では、書込み要求が関連性を有するかどうかを同じオブジェクトの一部となることで知ることができるため、最適化が決定論的となる。ＯＳＤ方式は、どのブロックが関連しており、どういう順序でブロックを読み出せば逐次的アクセスを実現するかを知っている。
【００４３】
ＯＳＤ方式は、ブロック・ビット・マップによって記述されるように、次の利用可能なブロックが最も近いブロックであると仮定しない割当て方法を利用する。更に、それは、汎用的な命名規則を採用し、それは、何台のホストがアクセスをしようとしているかに関わらず完全に一義的である。
【００４４】
本発明は、いくつかの実施の形態に関して説明してきたが、当業者には、明らかなように、以下の特許請求の範囲に提示された本発明の範囲から外れることなく、提示された実施例に対して各種の変更をなし得る。
【図面の簡単な説明】
【００４５】
【図１】本発明に従って構築できるディスク・ドライブの機械的部分の模式的図。
【図２】本発明に従って構築できるディスク・ドライブを含むシステムのブロック図。
【図３】オブジェクト・ベースのストレージ・システムのブロック図。
【図４】ディスク・ドライブ・コントローラのファームウエアの一部分のブロック図。
【図５】ディスク・ドライブ・コントローラのファームウエアの一部分のブロック図。
【図６】ディスク記録メディアの模式図。
【図７】ディスク記録メディアの模式図。
【図８】ディスク記録メディアの模式図。
【符号の説明】
【００４６】
１０  ディスク・ドライブ
１２  容器
１４  スピンドル・モータ
１６  記録メディア
１８  アーム
２０  第１の端部
２２  ヘッド
２４  第２の端部
２６  ベアリング
２７  トラック
２８  ボイス・コイル・モータ
３０  オブジェクト・ベースのストレージ・システム
３２  ディスク・ドライブ制御回路
３４  ホスト・コンピュータ
３６  ディスク・ドライブ制御プロセッサ
３８  ＤＲＡＭ
４０  不揮発性フラッシュ・メモリ
４２  インタフェース回路
４４  Ｒ／Ｗチャネル
４６  プリアンプ／ドライバ回路
４８  スピンドル回路
５０  ディスク
５２  スピンドル・モータ
５４  サーボ回路
５６  記録ヘッド
５８  コイル
６０  オブジェクト・ベースのストレージ・システム
６２  ＯＳＤディスク・ドライブ
６４  ホスト・コンピュータ
６６  アプリケーション
６８  システム・コール・インタフェース
７０  ファイル・システム・ユーザ・コンポネント
７２  オブジェクト・インタフェース
７４  ファイル・システム・ストレージ・コンポネント
７６  ブロックＩ／Ｏマネージャ
７８  記録メディア
８０  ファームウエア・アプリケーション・プログラム・インタフェース（ＡＰＩ）
８２  フリー・ブロックのリスト
８４  ＯＳＤファイル・システム  
８６  物理的ディスク・レイアウト・マネージャ
８８  トラック・フォーマット、ゾーン、欠陥、現在のトラック位置
９０  ＯＳＤファームウエア層
９２  ＯＳＤコマンド構文解析
９４  能力チェック（パーミッション／セキュリティ）
９６  ＯＳＤメタデータ・フェッチ
９８  ＯＳＤスペース管理（ＯＳＤファイル・システム）
１００  ＯＳＤコマンド実行
１０２  ＯＳＤエラー管理
１０４  アプリケーション・インタフェース
１０６  接続されたブロック転送
１０８  ディスクのみ転送（メタデータ操作）
１１０  ホストのみ操作（ステータス、属性）
１１２  キャッシュ要求および形状要求
１１４  標準ファームウエア
１１６  トラック・フォーマット、ゾーン、欠陥、現在のトラック位置
１１８  物理的ディスク・レイアウト・マネージャ
１２０  簡略化ディスク・メディア・ウエッジ・レイアウト
１２２  矢印
１２４  ディスク・ブロック・レイアウト
１２６  矢印
１２８  ＯＳＤディスク・レイアウト
１３０  矢印
【図１】
2006351175.tif 000003
【図２】
2006351175.tif 000004
【図３】
2006351175.tif 000005
【図４】
2006351175.tif 000006
【図５】
2006351175.tif 000007
【図６】
2006351175.tif 000008
【図７】
2006351175.tif 000009
【図８】
2006351175.tif 000010
【外国語明細書】
2006351175000001.pdf