(57)【要約】【課題】同一ディスク装置内にトラック幅の異なるトラック群が記憶媒体に離散的に存在していて、セクタの物理ブロックアドレスの大小関係が論理ブロックアドレスの大小関係でも成り立つアドレス体系のディスク装置で、データの書き込みを正常に行えるようにする。【解決手段】ディスク装置内部でそれぞれのトラック幅に応じたトラック群を別々に管理し、物理ブロックアドレス空間上で離散的に存在するそれぞれのトラック群を論理ブロックアドレス空間上では連続的に配置する。トラック幅の異なるShingled Tracks (ST)とTiled Tracks (TT)という二つのトラック群がある場合には、ステップ１１１０ではアクセス対象のセクタがST領域とTT領域のどちらであるかに応じて、それぞれステップ１１１１からステップ１１１６もしくはステップ１１１７からステップ１１１８を実行し、論理ブロックアドレスから物理ブロックアドレスに変換する。【選択図】図１１
2007184021.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体と、上位装置との間でコマンドやデータの送受信を行い前記記憶媒体に対して書き込みまたは読み出し制御を行う制御部とを備えるディスク装置において、
前記記憶媒体上に第一のトラック幅を持つ第一のトラック群と第二のトラック幅を持つ第二のトラック群とが存在し、
前記制御部が、
前記第一のトラック群に対して論理ブロックアドレスを割り当てる第一のアドレス割り当てステップ、
前記第二のトラック群に対して論理ブロックアドレスを割り当てる第二のアドレス割り当てステップ、
を実行することを特徴とするアドレス割り当て方法。
【請求項２】
請求項１に記載のアドレス割り当て方法において、
前記第一のアドレス割り当てステップにおいて前記第一のトラック群に対して連続した論理ブロックアドレスを割り当て、
前記第二のアドレス割り当てステップにおいて前記第二のトラック群に対して連続した論理ブロックアドレスを割り当てること、
を特徴とするアドレス割り当て方法。
【請求項３】
請求項２に記載のアドレス割り当て方法において、前記第一のトラック群の連続した論理ブロックアドレスが第一の論理ブロックアドレスから始まり、前記第二のトラック群の連続した論理ブロックアドレスが第二の論理ブロックアドレスから始まることを特徴とするアドレス割り当て方法。
【請求項４】
請求項３に記載のアドレス割り当て方法において、前記制御部が、
前記第一の論理ブロックアドレスを設定するステップ、
前記第二の論理ブロックアドレスを設定するステップ、
を実行することを特徴とするアドレス割り当て方法。
【請求項５】
請求項１に記載のアドレス割り当て方法において、
前記第一のアドレス割り当てステップにおいて前記第一のトラック群に対して第一の論理ドライブの論理ブロックアドレスを割り当て、
前記第二のアドレス割り当てステップにおいて前記第二のトラック群に対して第二の論理ドライブの論理ブロックアドレスを割り当てること、
を特徴とするアドレス割り当て方法。
【請求項６】
請求項５に記載のアドレス割り当て方法において、
前記ディスク装置の中で前記第一の論理ドライブとして使用する論理ドライブを設定するステップ、
前記ディスク装置の中で前記第二の論理ドライブとして使用する論理ドライブを設定するステップ、
を実行すること特徴とするアドレスの割り当て方法。
【請求項７】
記憶媒体と、
前記記憶媒体上の第一のトラック幅を持つ第一のトラック群と、
前記記憶媒体上の第二のトラック幅を持つ第二のトラック群と、
前記第一のトラック群に対して論理ブロックアドレスを割り当てる第一のアドレス割り当て手段と、
前記第二のトラック群に対して論理ブロックアドレスを割り当てる第二のアドレス割り当て手段と、
を備えることを特徴とするディスク装置。
【請求項８】
請求項７に記載のディスク装置において、前記第一のアドレス割り当て手段が前記第一のトラック群に対して連続した論理ブロックアドレスを割り当て、前記第二のアドレス割り当て手段が前記第二のトラック群に対して連続した論理ブロックアドレスを割り当てることを特徴とするディスク装置。
【請求項９】
請求項８に記載のディスク装置において、前記第一のトラック群の連続した論理ブロックアドレスが第一の論理ブロックアドレスから始まり、前記第二のトラック群の連続した論理ブロックアドレスが第二の論理ブロックアドレスから始まることを特徴とするディスク装置。
【請求項１０】
請求項７に記載のディスク装置において、前記第一のアドレス割り当て手段において前記第一のトラック群に対して第一の論理ドライブの論理ブロックアドレスを割り当て、前記第二のアドレス割り当て手段において前記第二のトラック群に対して第二の論理ドライブの論理ブロックアドレスを割り当てることを特徴とするディスク装置。
【請求項１１】
第一のトラック幅を持つ第一のトラック群と第二のトラック幅を持つ第二のトラック群とを有する記憶媒体と、前記第一のトラック群に対して論理ブロックアドレスを割り当てる第一のアドレス割り当て手段と、前記第二のトラック群に対して論理ブロックアドレスを割り当てる第二のアドレス割り当て手段とを備えるディスク装置におけるデータ書き込み方法であって、
特定のプレフィックスもしくはサフィックスの付いたファイル名のファイルを作成する際に、前記ファイルのコンテンツ部分を保存する領域を前記第一のトラック群もしくは前記第二のトラック群のどちらか一方のみから確保することを特徴とするデータ書き込み方法。
【請求項１２】
請求項１１に記載のデータ書き込み方法において、
前記特定のプレフィックスもしくはサフィックスを取り除いたファイル名を持つファイルエントリを作成し、
前記特定のプレフィックスもしくはサフィックスを取り除いたファイル名へのアクセス要求を前記特定のプレフィックスもしくはサフィックスの付いたファイル名への要求として処理すること、
を特徴とするデータ書き込み方法。
【請求項１３】
請求項１１に記載のデータ書き込み方法において、前記プレフィックスもしくはサフィックスの付いたファイル名のファイルの管理情報であるメタ情報を保存する領域が、前記コンテンツ部分を保存する領域と同一の前記第一のトラック群もしくは前記第二のトラック群であることを特徴とするデータ書き込み方法。
【請求項１４】
請求項１１に記載のデータ書き込み方法において、前記特定のプレフィックスもしくはサフィックスを設定することを特徴とするデータ書き込み方法。
【請求項１５】
請求項７に記載のディスク装置において、
前記記憶媒体に記録するオブジェクトをオブジェクト識別子により識別する手段と、
第一の特定パターンのオブジェクト識別子を持つオブジェクトを前記第一のトラック群に記録し、第二の特のパターンのオブジェクト識別子を持つオブジェクトを前記第二のトラック群に記録することを特徴とするディスク装置。
【請求項１６】
請求項１５に記載のディスク装置において、オブジェクト識別子の特定ビットの値により、前記第一の特定パターンのオブジェクト識別子か前記第二の特定パターンのオブジェクト識別子かを判定する手段を有することを特徴とするディスク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスク装置の論理ブロックアドレスの割り当て方法ならびにデータ書き込み方法に関し、特に複数のトラック幅が存在する場合における論理ブロックアドレスの割り当て方法およびディスク装置ならびにデータ書き込み方法に関する。
【背景技術】
【０００２】
ディスク装置の記録密度向上の方法の一つとして、トラック幅とトラック密度の短縮がある。これらを達成するための一つの手段に、ディスク装置の書き込みヘッドと読み出しヘッドの微細化がある。ヘッドの微細化により、トラックをより細い幅で書き込み可能になり、トラック幅の短縮によりトラック密度が向上する。書き込みヘッドと読み出しヘッドはアームに固定され、アームはボイスコイルモータにより駆動される。ボイスコイルモータによりアームを動かす構造上、アームの移動には誤差が伴うため、トラックの書き込み時に書き込み対象トラックの両側のトラックに書き込みヘッドがはみ出してデータを破壊する可能性がある。このようなデータ破壊を防止するため、トラック同士の間隔をトラック幅よりも大きくして書き込みマージンを確保している。書き込みマージンは各トラックの両側に一割程度確保してあり、トラック密度の向上を阻害している。ディスク装置ではランダムにセクタに書き込むため各トラックの両側に書き込みマージンが必要になるが、シーケンシャルに書き込むようにすると、書き込みマージンの一方を削除可能になるためその分だけトラック密度を向上可能になる。つまり同一の書き込みヘッド、読み出しヘッド、記憶媒体を使っていても、一割程度ディスク装置の容量向上が可能になる。
【０００３】
ディスク装置の通常の書き込み方法ではトラック同士の間隔を書き込みヘッドの幅よりも狭くできないため、書き込みヘッド幅により最短のトラック間隔が決まる。このため、書き込みマージンの削除以上にディスク装置の容量向上を達成するには、トラック幅を書き込みヘッド幅よりも縮小する方法が必要になる。このような方法として米国特許第6,185,063号明細書やWO99/45534では、隣接するトラック同士を部分的に重ね書きすることにより、書き込みヘッド幅よりもトラック幅を短縮することを可能にしている。
【０００４】
さらに米国特許第6,185,063号明細書ではトラックの部分的な重ね書きの方法として、 write seldom format と paired format の二種類の方法を提案している。Write seldom format では複数のトラックを相互に部分的に重ね書きすることで、任意のトラックを任意の順番で上書き不可能にする代わりにトラック幅の短縮率が向上するのに対し、paired format では隣り合う二つのトラック同士を部分的に重ね書きすることで、任意のトラックを任意の順番で上書き可能にする代わりにトラック幅の短縮率が低下する。
【０００５】
通常のディスク装置は論理ブロックアドレス(Logical Block Address, LBA)に代表されるリニアなアドレス空間のみ認識し、ファイルやディレクトリなどのデータの論理構造を認識しない。このため上位装置のオペレーティングシステム(Operating System, OS)内のファイルシステムが、ディスク装置内のデータの論理構造とデータの配置を管理する。これに対してT10/1355-D Information technology - SCSI Object-Based Device Commands (OSD)に記載のOSDをサポートしたディスク装置では、ファイルシステムの機能の一部をディスク装置側にオフロードすることで、ディスク装置がデータ構造を理解できるようになる。つまり、OSDではディスクに書き込まれるデータ(オブジェクト)は、LBAではなくオブジェクトIDによって識別される。
【特許文献１】WO99/45534
【特許文献２】米国特許第6,185,063号明細書
【非特許文献１】T10/1355-D Information technology - SCSI Object-Based Device Commands(OSD), http://www.t10.org/ftp/t10/drafts/osd/osd-r10.pdf
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし米国特許第6,185,063号明細書のように任意に上書きできるトラックと任意に上書きできないトラックとが混在するディスク装置では、どのトラックが任意に上書き可能かそうでないかを上位装置が知らなければ正常にデータを書き込めないという問題がある。米国特許第6,185,063号明細書ではトラックの構成情報を上位装置に通知する手段を開示しておらず、また記憶媒体のどの部分に対してpaired formatやwrite seldom formatでトラックを構成するかについても開示していない。
【０００７】
任意に上書き可能なトラックと任意に上書き不可能なトラックを記憶媒体上に作る場合には、それぞれのトラックが記憶媒体上の連続領域に配置されるとは限らない。例えば、任意に上書き可能なトラック群と任意に上書き不可能なトラック群とをもつディスク装置に対してファイルシステム経由でデータの読み込みや書き込みを行う場合には、任意に上書き可能な領域にファイルの管理情報であるメタ情報を記録し、任意に上書き不可能な領域にファイルのコンテンツ部分を格納する。この時、メタ情報を記録した任意に上書きした領域が一箇所に集中していると、ファイルの作成や更新に伴うメタ情報の更新のためにヘッドが長距離を移動せねばならず、ファイルシステムの性能が劣化する問題がある。このためファイルシステムの性能を向上するためには、任意に上書き可能なトラックを記憶媒体上に分散して配置するのが望ましい。
【０００８】
OSDをサポートしていないディスク装置の記憶媒体に上位装置がアクセスする場合には、論理ブロックアドレス(Logical Block Address, LBA)というアドレス体系によってアクセスする。ディスク装置では、上位装置が指定したLBAをディスク装置内部のアドレス体系である物理ブロックアドレス(Physical Block Address, PBA)に変換して記憶媒体へのアクセスを実行する。記憶媒体には製造不良などによりアクセスできないセクタである欠陥セクタが存在する。PBAは記憶媒体の任意の領域を指定するアドレス体系なので、欠陥セクタにもPBAが割り当てられている。欠陥セクタにはデータを書き込めず上位装置からアクセス可能にする意味がないため、欠陥セクタを飛ばしてLBAを割り当てるスキップ処理によりディスク装置はPBAに対してLBAを割り当てる。欠陥セクタはPrimary defect LIST (PLIST)で管理される。LBAからPBAに変換する際にスリップ処理によりLBAを割り当てられなかったセクタの数、すなわちオフセットを計算するのにPLISTは使われる。スキップ処理は欠陥セクタのPBAにLBAを割り当てない処理なので、PBA1にLBA1が、PBA2にLBA2が割り当てられている場合に、LBA1 < LBA2 であれば PBA1 < PBA2 となる。任意に上書き可能なトラックと任意に上書き不可能なトラックが存在するディスク装置でも従来のスキップ処理によるLBAの割り当てを行うと、LBAとPBAとの間に同様の関係が存在する。
【０００９】
つまり、ファイルシステムの性能を向上するため任意に上書き可能なトラックを記憶媒体上で分散して配置すると、任意に上書き可能なトラック群のそれぞれの開始LBAと終了LBAおよび任意に上書き不可能なトラック群のそれぞれの開始LBAと終了LBAを上位装置が管理しなければならない。このようなディスク装置は管理すべき情報が多大なために非常に使い勝手が悪いという問題がある。
【００１０】
ファイルシステムに記録するファイルには、音楽や動画のように内容をほとんど更新しないファイルもあれば、設定ファイルやデータベースのように内容を頻繁に更新するファイルもある。ファイル管理情報であるメタ情報は、ファイルにアクセスするごとに最終アクセス時刻を更新する。任意に上書き可能なトラックと任意に上書き不可能なトラックがあるディスク装置に対してファイルシステム経由でアクセスするには、内容をほとんど更新しないファイルのコンテンツ部分を任意に上書き不可能な領域に配置し、内容を頻繁に更新するファイルのコンテンツ部分とメタ情報を任意に上書き可能な領域に配置すべきである。メタ情報を記憶媒体のどこに配置するかはファイルシステムの設計に依存するため、メタ情報を特定のLBA、つまり任意に上書き可能なトラックに配置するのは可能である。ファイルシステムはディスク装置のLBAを意識せずにデータを読み書きするためのシステムであり、ファイルのコンテンツ部分を特定のLBAに配置する機能を持たない。このため内容をほとんど変更しないファイルのコンテンツ部分を任意に上書き不可能なトラックに配置し、内容を頻繁に更新するファイルのコンテンツ部分を任意に上書き可能なトラックに配置するような、ファイルの更新頻度に応じたLBAの割り当てをできない問題がある。
【００１１】
本発明の第一の目的は、任意に上書き可能なトラックと任意に上書き不可能なトラックとに対してそれぞれ異なるLBAを割り当てる方法ならびに同方法を適用可能なディスク装置を提供することである。
【００１２】
本発明の第二の目的は、ファイルの更新頻度に応じて任意に上書き可能なトラックと任意に上書き不可能な領域のどちらかを選択して書き込めるデータ書き込み方法を提供することである。
【課題を解決するための手段】
【００１３】
前記目的を達成するため、本発明によるアドレス割り当て方法は、記憶媒体と、上位装置との間でコマンドやデータの送受信を行い記憶媒体に対して書き込みまたは読み出し制御を行う制御部とを備えるディスク装置において、記憶媒体上に第一のトラック幅を持つ第一のトラック群と第二のトラック幅を持つ第二のトラック群とが存在し、制御部が、第一のトラック群に対して論理ブロックアドレスを割り当てる第一のアドレス割り当てステップ、第二のトラック群に対して論理ブロックアドレスを割り当てる第二のアドレス割り当てステップを実行する。
【００１４】
このとき、トラック群ごとに連続LBAを割り当てる。トラック群ごとに固定開始LBAから連続LBAを割り当てるようにしてもよいし、トラック群ごとに異なるドライブに割り当てるようにしてもよい。
【００１５】
本発明によるディスク装置は、記憶媒体と、記憶媒体上の第一のトラック幅を持つ第一のトラック群と、記憶媒体上の第二のトラック幅を持つ第二のトラック群と、第一のトラック群に対して論理ブロックアドレスを割り当てる第一のアドレス割り当て手段と、第二のトラック群に対して論理ブロックアドレスを割り当てる第二のアドレス割り当て手段と  を備える。第一のアドレス割り当て手段は第一のトラック群に対して連続した論理ブロックアドレスを割り当て、第二のアドレス割り当て手段は第二のトラック群に対して連続した論理ブロックアドレスを割り当てる。
【００１６】
また、特定のプレフィックスもしくはサフィックスの付いたファイル名のファイルを作成する際に、ファイルのコンテンツ部分を保存する領域を第一のトラック群もしくは第二のトラック群のどちらか一方のみから確保する。
【００１７】
また、特定のプレフィックスもしくはサフィックスを取り除いたファイル名を持つファイルエントリを作成し、特定のプレフィックスもしくはサフィックスを取り除いたファイル名へのアクセス要求を特定のプレフィックスもしくはサフィックスの付いたファイル名への要求として処理する。
【００１８】
プレフィックスもしくはサフィックスの付いたファイル名のファイルの管理情報であるメタ情報を保存する領域が、コンテンツ部分を保存する領域と同一の前記第一のトラック群もしくは前記第二のトラック群である。
【００１９】
また、本発明のディスク装置は、記憶媒体に記録するオブジェクトをオブジェクト識別子により識別する手段と、第一の特定パターンのオブジェクト識別子を持つオブジェクトを第一のトラック群に記録し、第二の特のパターンのオブジェクト識別子を持つオブジェクトを第二のトラック群に記録する。前記第一の特定パターンのオブジェクト識別子か前記第二の特定パターンのオブジェクト識別子かは、オブジェクト識別子の特定ビットの値により判定するように構成することができる。
【発明の効果】
【００２０】
本発明によると、上位装置が管理すべきディスク装置のトラック幅の異なるトラック群に関する情報を最小にできる。またディスク容量のみが異なる同一製品系列のディスク装置において、管理すべきトラック幅の異なるトラック群に関する情報を削減できる。また特定のファイルのコンテンツ部分を特定のトラック幅を持つトラック群に配置できる。またディスク装置の記憶媒体の使用状況に応じてトラック幅の異なるトラック群のトラック数の比率を切り替えることで、ディスク装置の記憶容量を動的に拡張できる。
【発明を実施するための最良の形態】
【００２１】
発明の実施例について図面を参照して説明する。なお、同一の参照番号は同一の構成要素を示す。隣接トラックを部分的に重ね書きしたトラックをShingled Tracks (ST)、重ね書きしないトラックをTiled Tracks (TT)と記述する。
【実施例１】
【００２２】
本実施例では、PBA空間で離散的に存在するTT領域とST領域とをLBA空間でそれぞれ連続アドレスに割り当てる所に特徴がある。
【００２３】
図１は、隣接トラックを部分的に重ね書きする場合のトラック配置の概念図である。トラック１０１から１０５では書き込みヘッド１２１で書き込んだトラックを部分的に重ね書きし、書き込みヘッド１２１よりも幅の狭い読み出しヘッド１２２で読み出すことで、書き込みヘッド１２１の幅よりもトラック幅１１１を狭くしている。図１ではトラック１０３の書き込み後にトラック１０４を書き込んでいる。トラック１０４の書き込みによりトラック１０５が消去される。このため隣接トラックを部分的に重ね書きする場合には、あるトラックに書き込みを開始するとある一定範囲のトラックを全て更新する必要がある。このようなトラック群をバンドと呼ぶ。
【００２４】
図２は、複数の連続するトラックからなるバンド構造の概念図である。図２において、２０１はバンド、２０２は二つのバンド間でデータ破壊を防止するためのバンドギャップ、である。図２のようにバンドの末尾のトラックのみ幅広にして、バンドギャップ２０２の領域を作ることで隣のバンドのデータ破壊を防止する。
【００２５】
図７は、ディスク装置のブロック図である。フラッシュロム７０１にはディスク装置の起動に必要なプログラムが格納される。主記憶７０２は、メモリコントローラおよびマイクロプロセッサ７０４の制御用プログラムと制御に必要な各種データの格納に使用する。キャッシュメモリ７０３は、ディスクインタフェース７０６経由で上位装置のディスクコントローラとの間で送受信するデータのキャッシュに使用する。上位装置との通信に用いる通信プロトコルは、ハードディスクコントローラおよびSCSIプロトコルコントローラ７０５のSCSIプロトコルコントローラ部分で処理される。SCSIプロトコルコントローラに送られたコマンドは、メモリコントローラおよびマイクロプロセッサ７０４のマイクロプロセッサ部分により書き込みヘッドおよび読み出しヘッドの駆動命令に変換されて、ハードディスクコントローラおよびSCSIプロトコルコントローラ７０５のハードディスクコントローラ部分に送られる。ハードディスクコントローラは、受信した命令を元にサーボコントローラ７０７とリードライトチャネル７０８とを制御し、記憶媒体へのデータの書き込みまたは読み出しを実行する。アクチュエータアーム７１３の先端に取り付けたヘッド７１１を記憶媒体７１２の読み出し対象のセクタの位置に移動するように、サーボコントローラ７０７がボイスコイルモータ７１４を制御する。ヘッド７１１が読み出し対象のセクタに移動した後で、リードライトチャネル７０８がヘッド７１１に対してデータの送受信を実行する。この時、書き込みであればキャッシュメモリ７０３に保存されたデータを記憶媒体に書き込み、読み出しであれば記憶媒体に保存されたデータをキャッシュメモリ７０３に書き込む。
【００２６】
ディスク装置の電源が投入されると、メモリコントローラおよびマイクロプロセッサ７０４がフラッシュロム７０１から起動用のプログラムを読み出し、メモリコントローラ部分が主記憶７０２、キャッシュメモリ７０３を初期化し、ハードディスクコントローラおよびSCSIプロトコルコントローラ７０５経由でサーボコントローラ７０７とリードライトチャネル７０８を制御して、残りの制御プログラムと制御に必要な各種データをディスク装置の記憶媒体から読み出す。読み出した制御プログラムと各種データ７２１を主記憶７０２上に格納する。これらの制御プログラム７２２にはアドレス変換プログラムなどがある。アドレス変換プログラムには、第１のトラック幅用のアドレス変換プログラムと第２のトラック幅用のアドレス変換プログラムとがあり、それらは後述する図４，５，６のような種々の態様に対して適用可能である。データ構造７２１については、図８、図９、図１０で、制御プログラム７２２の一つについては、図１１で説明する。
【００２７】
図３は、ディスク装置の記憶媒体上の物理ブロックアドレス(Physical Block Address, PBA)空間におけるShingled Tracks (ST)とTiled Tracks (TT)の配置を示す模式図である。TT領域３０１は隣接トラック同士を部分的に重ね書きしないトラック書き込み方式であり、ST領域３０２は図１に示す隣接トラックを部分的に重ね書きしたトラックである。図３(A)をディスク装置の基本構成とすると、図３(B)はランダムに更新できるセクタを増やすために図３(A)に対してTT領域３０１を増やした構成、図３(C)は図３(A)に対してディスク装置の容量を増やした構成、になっている。
【００２８】
TT領域３０１とST領域３０２とを記憶媒体上でそれぞれ連続的に配置するよりも、図３に示すようにそれぞれ離散的に配置した方がファイルシステムのメタ情報へのアクセス速度や記憶媒体の利用効が率向上する。PBAは記憶媒体上の位置と一対一に対応する座標系なので、記憶媒体上で離散的に配置されたTT領域とST領域はPBAでも同様に離散的に配置される。
【００２９】
従来の技術では、記憶媒体上のセクタへのLBAの割り当ては以下のように行う。つまり、PBAの先頭アドレスのセクタから順番にLBAを割り当てる。この時、正常に読み書きできないセクタである欠陥セクタには、LBAの割り当てを行わず、その欠陥セクタに割り当て予定であったLBAを欠陥セクタの後方の正常なセクタに割り当てるスキップ処理を行う。このような従来の技術によるLBAの割り当て方法では、PBAアドレス空間上で離散的に存在するTT領域とST領域はLBA空間上でも離散的に存在する。ディスク装置に接続した上位装置はLBAを指定してディスク装置の記憶媒体上のセクタにアクセスするため、LBA上で離散的に存在するTT領域とST領域に対して書き込みを行うには、上位装置はTT領域３０１とST領域３０２の全ての領域について開始LBAを終了LBAを管理しなければならない。このようなディスク装置は上位装置から非常に使い勝手が悪いという問題がある。
【００３０】
そこで本発明によるアドレス割り当て方法およびディスク装置の第一の実施例では、図４もしくは図５のようにTT領域３０１とST領域３０２に連続したLBAを割り当てる。図４および図５は、論理ブロックアドレス(Logical Block Address, LBA)空間におけるSTとTTの配置を示す模式図である。図４および図５の(A)、(B)、(C)、はそれぞれ図３の(A)、(B)、(C)のディスク装置に対応する。
【００３１】
図４の構成では、複数のTT領域３０１をLBA空間の先頭から連続的にLBAを割り当て、複数のST領域３０２をLBA空間のTT領域３０１の最終アドレスの次のLBAから連続的にLBAを割り当てる。図４の構成により、TT領域３０１の総セクタ数もしくはTT領域３０１の開始LBAと終了LBA、およびST領域の総セクタ数もしくはST領域３０２の開始LBAを終了LBAのみを管理するだけで、上位装置は本発明によるディスク装置に対して書き込みを実行できる。図５の構成では図４の構成に対して、TT領域３０１の開始LBA５０１とST領域３０２の開始LBA５０２とがディスク装置の容量に関わらず同一である所に特徴がある。この構成により、上位装置のファイルシステムの実装が容易になるという利点がある。
【００３２】
また別のLBAの割り当て方法として図６の構成がある。図６は、LBA空間におけるSTとTTの配置を示す模式図であり、６１０は論理ユニット番号(Logical Unit Number, LUN)０番(LUN0)の論理ドライブ、６２０は LUN１番(LUN1)の論理ドライブ、である。
【００３３】
図６の構成は、TT領域とST領域を異なる論理ドライブに割り当てる所に特徴がある。つまり、TT領域３０１をLUN0６１０に割り当て、ST領域３０２をLUN1６２０に割り当てる。この構成により、図５の構成と同様に上位装置のファイルシステムの実装が容易になるという利点がある。図６ではSCSI HDDを想定して論理ドライブをLUNで識別しているが、ATA HDDでは論理ドライブをmaster/slaveで識別する。また別の実装としてはTT領域３０１とST領域３０２とを、ディスク装置のそれぞれ異なるパーティションに割り当てても良い。以下では図４および図５の構成に基づいて説明する。
【００３４】
本発明によるアドレス割り当て方法およびディスク装置の第一の実施例で用いるデータ構造７２１を図８、図９、図１０により説明する。
【００３５】
図８はゾーン定義表である。ゾーンとは、ディスク装置の記憶媒体の一トラック内のセクタ数が等しい領域である。図８のゾーン定義表では、各ゾーンを一つのエントリとして登録する。各エントリは、ゾーン番号８０１、ゾーンの開始PBA８０２、ゾーンの終了PBA８０３、ゾーンのトラック内セクタ数８０４、からなる。
【００３６】
図９はTT領域定義表である。TT領域定義表では、各エントリに一つのTT群を定義する。各エントリは、TT領域の所属するゾーン番号８０１、TT領域の開始PBA９０１、TT領域の終了PBA９０２、TT領域の開始LBA９０３、TT領域の終了LBA９０４、からなる。各TT領域について開始PBA/LBAと終了PBA/LBAを管理することにより、図３のようにPBA空間で離散的に存在するTT領域３０１を図４もしくは図５のようにLBA空間で連続的にアドレスを割り当てられる。
【００３７】
図１０はゾーン内のバンド数表である。ゾーン内のバンド数表では、図２で説明したバンドが各ゾーンに何個存在するかを定義する。各エントリは、ゾーン番号８０１、バンド数１００１、ゾーンの先頭からの累積バンド数１００２、からなる。
【００３８】
ディスク装置の主記憶７０２の各種データ７２１には、図８から図１０のデータ構造の他に、TT領域全体の開始LBAと終了LBAであるTT_FROM_LBAとTT_TO_LBA、ST領域の開始LBAと終了LBAであるST_FROM_LBAとST_TO_LBA、バンドを構成するセクタ数であるSECTOR_PER_BAND、などがある。
【００３９】
上位装置のデータ管理を容易にするには全てのバンドが同一容量であるのが望ましい。複数のSTからなるバンド構造の特性上、バンドを構成するトラック数を変えるだけでは異なるゾーンに存在するバンドの容量を等しくできるとは限らない。そこで本実施例ではバンドの容量をSECTOR_PER_BANDで決定し、バンドに存在するSECTOR_PER_BAND数より多いセクタを未使用にする。
【００４０】
本発明によるアドレス割り当て方法およびディスク装置の第一の実施例で用いる制御プログラム７２２の一つを図１１により説明する。図１１はLBAからPBAへのアドレス変換プログラムのフロー図であり、上位装置が指定したLBAをディスク装置の記憶媒体上のアドレスであるPBAに変換するために使用する。
【００４１】
処理を開始するステップ１１１０では、上位装置の指定したアドレスがSTとTTのどちらのアドレスであるかを、TT_FROM_LBA, TT_TO_LBA, ST_FROM_LBA,ST_TO_LBAの四つの変数を参照して判定する。判定の結果、指定したLBAがSTのLBAであればステップ１１１１に進み、TTのLBAであればステップ１１１７に進む。
【００４２】
ステップ１１１１では、以下のようにアクセス対象のLBAの所属するバンド番号を算出する。STはST_FROM_LBA以降の連続アドレスに存在し、各バンドに含まれるセクタ数はSECTOR_PER_BANDなので、LBAをアクセス対象のLBAの値とすると、以下の数式によりバンド番号、すなわちBAND_ID、が求められる。ここでfloorは小数点を最も近い整数に切り下げる演算である。
BAND_ID = floor((LBA - ST_FROM_LBA) / SECTOR_PER_BAND)
【００４３】
ステップ１１１１の終了後、ステップ１１１２に進む。ステップ１１１２では、ゾーン内バンド数表を参照し、BAND_IDを持つバンドの所属するゾーンを検索する。図１０のバンド数表はバンドの累積数１００２を保持しているため、ステップ１１１１で算出したバンド番号とバンドの累積数１００２との比較により、バンドの所属するゾーン番号、すなわちZONE_ID、が得られる。ステップ１１１２の終了後、ステップ１１１３に進む。
【００４４】
ステップ１１１３では、ゾーン定義表を参照し、ZONE_IDのゾーンの開始PBA８０２、終了PBA８０３、トラック内セクタ数８０４を読み出す。ステップ１１１３の終了後、ステップ１１１４に進み、BAND_IDとゾーン内バンド数表のバンドの累積数１００２とから、アクセス対象のバンドがゾーンの先頭からのオフセット、すなわちBAND_OFFSETを算出する。ステップ１１１４の終了後、ステップ１１１５に進む。
【００４５】
ステップ１１１５では、BAND_OFFSET、SECTOR_PER_BAND、ステップ１１１３で読み出したトラック内セクタ数、すなわちTRACK_PER_SECTOR、からBAND_IDのバンドの開始PBA、すなわちBAND_FROM_PBAを以下の数式により算出する。ここでceilは小数点を最も近い整数に切り上げる演算である。
BAND_FROM_PBA = ceil(SECTOR_PER_BAND / TRACK_PER_SECTOR)* BAND_OFFSET
【００４６】
ステップ１１１５の終了後、ステップ１１１６に進む。ステップ１１１６では、BAND_IDのバンド内でのセクタのオフセット、すなわちSECTOR_OFFSETを以下のように計算する。
SECTOR_OFFSET = LBA - ST_FROM_LBA - SECTOR_PER_BAND * BAND_ID
【００４７】
さらにBAND_FROM_PBAとSECTOR_OFFSETと、PLISTから求めた欠陥セクタによるオフセット、すなわちBAD_SECTOR_OFFSETとから、アクセス対象のセクタのPBAを以下のように計算する。
PBA = BAND_FROM_PBA + SECTOR_OFFSET + BAD_SECTOR_OFFSET
【００４８】
ステップ１１１６の終了後、アドレス変換処理が終了する。
ステップ１１１７では、TT領域定義表を参照し、LBAとTT領域の開始LBA９０３と終了LBA９０４とからアクセスLBAの所属するTT領域を特定し、そのTT領域の開始PBA９０１と終了PBA９０２とを読み出す。ステップ１１１７の終了後、ステップ１１１８に進む。ステップ１１１８では、アクセス対象のTT領域の開始LBA９０３であるFROM_LBA、開始PBA９０１であるFROM_PBA、PLISTから求めた欠陥セクタによるオフセットであるBAD_SECTOR_OFFSETから、アクセス対象のPBAを以下のように算出する。
PBA = LBA - FROM_LBA + FROM_PBA + BAD_SECTOR_OFFSET
【００４９】
ステップ１１１８の終了後、アドレス変換処理が終了する。
本実施例では図４もしくは図５の構成のようにTT領域とST領域とが一つのLBA空間に割り当てられた場合について説明したが、図６のようにTT領域とST領域とが異なる論理ドライブに割り当てられた場合にも容易に拡張可能である。その場合には、TT領域とST領域をどの論理ユニットに割り当てたかを管理する変数を追加すれば良い。また本実施例ではディスク装置内にTT領域とST領域というトラック幅の異なる二つのトラック群がある場合について説明しているが、本発明はトラック群が二つの場合にのみ限定される訳ではなく、任意の個数のトラック群が存在しているディスク装置の場合にも容易に拡張可能である。
【００５０】
TT領域とST領域の開始アドレスが決まっている場合には、最初にディスク装置の全領域をTT領域としておき、ディスク装置の空き容量に応じてTT領域をST領域に変換することでディスク装置の空き容量を増加できる。例えば以下のような手順により、TT領域からST領域へと変換できる。(1)TT領域の未使用トラック群をST領域に変換し、(2)使用中のTTに記録されたデータをSTにコピー、(3)STからTTへのコピーの確認後にTTの状態を使用中から未使用に変更、(1)に戻る。
本実施例によるディスク装置へのデータ書き込み方法については、実施例２にて説明する。
【実施例２】
【００５１】
本実施例では、ファイル名に特定のPREFIXの付いたファイルのコンテンツ部分を保存するセクタをTT領域から確保する所に特徴がある。
【００５２】
図１４によりシステム階層を説明する。図１４はハードウェア、オペレーティングシステム(Operating System, OS)、アプリケーションからなるシステムの階層を示す。ユーザが各種プログラムを実行できるユーザ空間はアプリケーション層１４０１である。OSの動作するカーネル空間は、１４０２から１４０９までとなる。１４０２はカーネルへのシステムコール層、１４０３はアクティブファイルエントリ層、１４０４はVNODE層、１４０５はローカルネーム層、１４０６はファイルシステム層、１４０７はバッファキャッシュ層、１４０８はブロックデバイス層、１４０９はデバイスドライバ層、である。ディスク装置などのハードウェアはハードウェア層１４１０となる。
【００５３】
複数のファイルシステムや複数のハードウェアを効率良く取り扱うため、OSではソフトウェアやハードウェアを抽象化して上位層からソフトウェアやハードウェアの違いを意識せずに下位層にアクセス可能にしている。例えばVNODE層１４０４はファイルシステム層１４０６を抽象化し、ブロックデバイスドライバ層１４０８はデバイスドライバ層１４０９を抽象化する。抽象化によりシステム全体でリソースの共有が可能になり、メモリなどの資源を有効利用できる。ローカルネーム層１４０５やバッファキャッシュ層１４０７などが共有リソースの例である。
【００５４】
OSではこのような抽象化層や共有リソースにより、複数のファイルシステムやハードウェアを効率良く使用できるが、このようなOSの構成ではTT領域とST領域とが混在した実施例１のディスク装置をサポートするのが非常に困難である。実施例１のディスク装置を使用するユーザは、音楽や動画などほとんど更新しないファイルをST領域に配置し、データベースなど頻繁に更新するファイルをTT領域に配置したくとも、VNODE層１４０４などの抽象化層による下位層の抽象化のために、アプリケーション層のプロセスが下位層の特性に合わせてアクセスできないという問題がある。
【００５５】
仮にアプリケーション層のプロセスが下位層の特性に合わせてアクセス可能にするインタフェースをOSに追加する場合には、仮想化層や共有リソースへの変更が必須であり、その変更はシステム全体に多大な影響を及ぼす。さらにインタフェースを変更すると過去のシステムとの互換性も失う。このため、インタフェースを変更して実施例１のディスク装置をサポートするのは非常にリスクが高く、この様な変更をOSベンダに求めるのは非現実的である。
【００５６】
本実施例では、既存のインタフェースのみを用いてユーザプログラムがTT領域を指定してファイルの作成と書き込みを可能にするファイルシステムについて説明する。上位層や下位層とのインタフェースは従来と互換なので、ファイルシステムの部分のみを差し替えれば、従来のOSでも実施例１のディスク装置を使用可能になる。TT領域にファイルを作る場合には、ファイル名の先頭に“.updatable_”というPREFIXを付加したファイル名でファイルを作成する。この時、ファイルシステム上には一つのファイルの実体に対してPREFIX付きとPREFIXなしの両方のファイル名のファイルエントリが作られ、以後はどちらのファイル名でもTT領域上に作られたファイルの実体にアクセス可能になる所に本実施例の特徴がある。
【００５７】
図１２は、本発明によるデータ書き込み方法の第二の実施例による、ファイル作成方法を説明するフロー図である。図１２によりファイルの作成方法について説明する。処理を開始するとステップ１２０１に進む。ステップ１２０１では、ユーザの指定したファイル名によりファイルの管理情報であるメタ情報の新規エントリを作成する。ステップ１２０１の終了後、ステップ１２１０に進む。ステップ１２１０ではユーザの指定したファイル名に“.updatable_”というPREFIXが付いているかを判定する。PREFIX付きの場合にはステップ１２１１に進み、PREFIXなしの場合にはステップ１２２０に進む。
【００５８】
ステップ１２２０ではユーザの指定したファイル名にPREFIXを付けたファイル名が既に存在するかを確認する。存在する場合にはステップ１２１３に進み、存在しない場合には処理を終了する。
【００５９】
ステップ１２１１では、ファイルへの書き込みの際にTT領域にあるセクタを使うようにステップ１２０１で作成したメタ情報のエントリにTT領域使用フラグを設定する。ステップ１２１１の終了後、ステップ１２１２に進む。ステップ１２１２では、PRFEFIXを取り除いたファイル名のメタ情報を作成する。ステップ１２１２の終了後、ステップ１２１３に進む。ステップ１２１３では、PREFIX付きのファイル名からPREFIXなしのファイル名へのリンクを１２０１で作成したメタ情報のエントリに設定する。ステップ１２１２とステップ１２１３とにより、ユーザプログラムが以後はPREFIXなしのファイル名で書き込みを実行してもファイルはTT領域に書き込まれる。ステップ１２１３の終了後、処理を終了する。
【００６０】
PREFIXなしのファイル名のエントリでもアクセス可能になるので、第一の実施例のディスク装置に対応していないユーザプログラムであっても、必要なファイルエントリを事前に作っておくことで、第一の実施例のディスク装置を使用可能になる。またプログラムによっては、既存のファイルを更新する場合には古いファイルを改名してそのまま残しておき、同一ファイル名でファイルを新規作成してデータを書き込む場合がある。本実施例では、PREFIX付きのファイル名とPREFIXなしのファイル名が存在する状態でPREFIXなしのファイル名を改名すると、PREFIXなしのファイル名からPREFIX付きのファイル名へのリンクが解消され、PREFIX付きのファイル名のメタ情報のエントリは、TT領域使用フラグが設定されたまま、TT領域上のファイルの実体、つまりコンテンツが存在しない状態でそのまま残される。ここで新たにPREFIXなしのファイル名を作成しようとすると、ステップ１２２０でPREFIX付きのファイル名のメタ情報のエントリが存在するか確認し、ステップ１２１３でPRFIXありのファイル名のメタ情報のエントリへのリンクを設定する。これにより、再びPREFIXなしのファイル名にデータを書き込んでもコンテンツはTT領域上に保存されることを保証できる。
【００６１】
図１３は、本発明によるデータ書き込み方法の第二の実施例による、ファイル書き込み方法を説明するフロー図である。図１３によりファイルへの書き込み方法について説明する。処理を開始するとステップ１３０１に進み、ファイルのコンテンツを書き込むのに必要なセクタ数を算出する。ステップ１３０１の終了後、ステップ１３０２に進み、ユーザの指定したファイル名によりファイルのメタ情報を読み出す。ステップ１３０２の終了後、ステップ１３１０に進む。
【００６２】
ステップ１３１０では、メタ情報にリンクが設定しているかを判定する。リンクが設定してあればステップ１３１１に進み、リンクが設定されていなければステップ１３２０に進む。ステップ１３１１ではリンク先のメタ情報を読み出す。ステップ１３１１の終了後、ステップ１３２０に進む。
【００６３】
ステップ１３２０では、ステップ１３０２もしくはステップ１３１１で読み出したメタ情報にTT領域使用フラグが設定されているか判定する。TT領域使用フラグが設定されていればステップ１３２１に進み、TT領域使用フラグが設定されていなければステップ１３２２に進む。ステップ１３２１では、ファイルのコンテンツを保存するセクタをTT領域から確保する。ステップ１３２１の終了後、ステップ１３２３に進む。ステップ１３２２ではTT領域もしくはST領域からファイルのコンテンツを保存するセクタを確保する。ステップ１３２２の終了後、ステップ１３２３に進む。ステップ１３２３では、ステップ１３２１もしくはステップ１３２２で確保したセクタに対してユーザの指定するデータの書き込みを実行する。
【００６４】
本実施例では“.updatable_”というPREFIXを付けた場合について説明した。“.”で始まるファイル名はOSの種別によっては不可視ファイルなので、本実施例のようにファイルシステムに対するヒント情報に使用するのに都合が良い。しかし、本発明の方式はこの方式に限定されるわけではなく、任意のPREFIX、さらにはSUFFIXであっても同様に適用できる。
【００６５】
本実施例ではLBAでアクセスする通常のディスク装置の場合について説明したが、OSDをサポートしたディスク装置についても容易に拡張できる。拡張の一例として以下の方法がある。OSDではディスク装置に書かれたデータ(オブジェクト)をオブジェクトIDによって識別できる。そこでオブジェクトIDの特定ビットの値が０のオブジェクトをTT領域に書き込み、特定ビットの値が１のオブジェクトをST領域に書き込む。
【００６６】
AV用途やバックアップ用途など大規模なデータを一括して書き込むとともに大容量が必要であり、さらにはデータ管理用の頻繁に更新するデータベースの格納も必要な場合に、本発明は、ディスク装置の大容量化と既存のソフトウェアへの修正点の少なさから有用である。
【図面の簡単な説明】
【００６７】
【図１】隣接トラックを部分的に重ね書きする場合のトラック配置の概念図。
【図２】複数の連続するトラックからなるバンド構造の概念図。
【図３】ディスク装置の記憶媒体上の物理ブロックアドレス空間におけるShingled Tracks (ST)とTiled Tracks (TT)の配置を示す模式図。
【図４】本発明によるアドレス割り当て方法およびディスク装置の第一の実施例による、論理ブロックアドレス空間におけるSTとTTの配置を示す模式図。
【図５】本発明によるアドレス割り当て方法およびディスク装置の第一の実施例による、LBA空間におけるSTとTTの配置を示す模式図。
【図６】本発明によるアドレス割り当て方法およびディスク装置の第一の実施例による、LBA空間におけるSTとTTの配置を示す模式図。
【図７】ディスク装置のブロック図。
【図８】本発明によるアドレス割り当て方法およびディスク装置の第一の実施例による、ゾーン定義表。
【図９】本発明によるアドレス割り当て方法およびディスク装置の第一の実施例による、TT領域の定義表。
【図１０】本発明によるアドレス割り当て方法およびディスク装置の第一の実施例による、ゾーン内バンド数表。
【図１１】本発明によるアドレス割り当て方法およびディスク装置の第一の実施例による、LBAからPBAへのアドレス変換プログラムのフロー図。
【図１２】本発明によるデータ書き込み方法の第二の実施例による、ファイル作成方法フロー図。
【図１３】本発明によるデータ書き込み方法の第二の実施例による、ファイル書き込み方法フロー図。
【図１４】システム階層図。
【符号の説明】
【００６８】
１０１ トラック
１０２ トラック
１０３ トラック
１０４ トラック
１０５ トラック
１１１ トラック幅
１２１ 書き込みヘッド
１２２ 読み出しヘッド
２０１ バンド
２０２ 二つのバンド間でデータ破壊を防止するためのバンドギャップ
３０１ Tiled Tracks (TT)
３０２ Shingled Tracks (ST)
５０１ TT領域の開始LBA
５０２ ST領域の開始LBA
６０１ 論理ユニット番号(Logical Unit Number, LUN)０番(LUN0)の論理ドライブ
６０２ LUN１番(LUN1)の論理ドライブ
７０１ フラッシュメモリ
７０２ 主記憶
７０３ キャッシュメモリ
７０４ メモリコントローラおよびマイクロプロセッサ
７０５ ハードディスクコントローラおよびSCSIプロトコルコントローラ
７０６ ディスクインタフェース
７０７ サーボコントローラ
７０８ リードライトチャネル
７１１ ヘッド
７１２ 記憶媒体
７１３ アクチュエータアーム
７１４ ボイスコイルモータ
７２１ 各種データ
７２２ 各種制御プログラム
８０１ ゾーン番号
８０２ ゾーンの開始PBA
８０３ ゾーンの終了PBA
８０４ ゾーンのトラック内セクタ数
９０１ TT領域の開始PBA
９０２ TT領域の終了PBA
９０３ TT領域の開始LBA
９０４ TT領域の終了LBA
１００１ ゾーン内のバンド数
１００２ バンドの累積数
１４０１ アプリケーション層
１４０２ カーネルへのシステムコール層
１４０３ アクティブファイルエントリ層
１４０４ VNODE層
１４０５ ローカルネーム層
１４０６ ファイルシステム層
１４０７ バッファキャッシュ層
１４０８ ブロックデバイス層
１４０９ デバイスドライバ層
１４１０はハードウェア層
【図１】
2007184021.tif 000003
【図２】
2007184021.tif 000004
【図３】
2007184021.tif 000005
【図４】
2007184021.tif 000006
【図５】
2007184021.tif 000007
【図６】
2007184021.tif 000008
【図７】
2007184021.tif 000009
【図８】
2007184021.tif 000010
【図９】
2007184021.tif 000011
【図１０】
2007184021.tif 000012
【図１１】
2007184021.tif 000013
【図１２】
2007184021.tif 000014
【図１３】
2007184021.tif 000015
【図１４】
2007184021.tif 000016