JP4792335B2 - Raid装置、raid制御プログラムおよびキャッシュ管理方法 - Google Patents

Raid装置、raid制御プログラムおよびキャッシュ管理方法 Download PDF

Info

Publication number
JP4792335B2
JP4792335B2 JP2006167665A JP2006167665A JP4792335B2 JP 4792335 B2 JP4792335 B2 JP 4792335B2 JP 2006167665 A JP2006167665 A JP 2006167665A JP 2006167665 A JP2006167665 A JP 2006167665A JP 4792335 B2 JP4792335 B2 JP 4792335B2
Authority
JP
Japan
Prior art keywords
magnetic disk
management
written
data block
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006167665A
Other languages
English (en)
Other versions
JP2007334752A (ja
Inventor
明人 小林
克彦 長嶋
秀憲 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006167665A priority Critical patent/JP4792335B2/ja
Priority to US11/589,860 priority patent/US7908434B2/en
Publication of JP2007334752A publication Critical patent/JP2007334752A/ja
Application granted granted Critical
Publication of JP4792335B2 publication Critical patent/JP4792335B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache

Description

この発明は、磁気ディスクへ書き出すべきデータブロックをキャッシュに一時記憶するRAID装置、RAID制御プログラムおよびキャッシュ管理方法に関し、特に、大容量のキャッシュを備えた場合においても、キャッシュの管理に係る処理時間の増大を抑制することができるRAID装置、RAID制御プログラムおよびキャッシュ管理方法に関する。
RAID(Redundant Arrays of Inexpensive Disks)装置等は、一般に、ホストからの要求に対する応答速度を向上させるためのキャッシュを備える。例えば、ホストからデータブロックの書き込み要求があった場合、RAID装置は、書き込み要求のあったデータブロックをキャッシュに格納し、その段階でホストに対して、書き込みが完了した旨の応答を返し、その後、所定のタイミングで磁気ディスク装置への書き込み処理を実行する。
このように、ホストが備えるCPU(Central Processing Unit)等と比較して動作が低速な磁気ディスク装置への書き込みを遅延させ、キャッシュへの格納をもって書き込み完了の応答を返すことは、ホストの処理待ち時間を減少させ、システム全体の性能を向上させる。
キャッシュには、ホストからの読み取り要求に対する応答速度を向上させる効果もあり、性能向上のためには、なるべく多くのデータブロックをキャッシュに格納しておくことが好ましいが、キャッシュの容量は有限である。そこで、多くのRAID装置は、有限のキャッシュを有効活用するため、LRU(Least Recently Used)論理に基づいてキャッシュに格納されたデータブロックを管理している(例えば、特許文献1および2を参照)。
ホスト上で動作する各種プログラムによるデータアクセスには、局所性があることが知られており、キャッシュに格納されてから時間が経っていないデータブロックほど、ホストから再びアクセス要求がなされる可能性が高い。LRU論理を用いることにより、ホストからアクセス要求がある可能性の低いデータブロックを優先してキャッシュから追い出し、有限のキャッシュを効率よく活用することができる。
特開2003−228461号公報 特開平11−338775号公報
ところで、近年、RAID装置の性能向上への要求が高まり、100ギガバイト以上の大容量のキャッシュを搭載するRAID装置が出現している。LRU論理に基づくデータブロックの管理に係る処理時間は、従来は、無視できるほどに小さいものであったが、このようにキャッシュが大容量化し、キャッシュに格納されるデータブロックの数が増大するにつれて、処理性能に大きく影響を与えるようになりつつある。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、大容量のキャッシュを備えた場合においても、キャッシュの管理に係る処理時間の増大を抑制することができるRAID装置、RAID制御プログラムおよびキャッシュ管理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一つの態様では、磁気ディスクへ書き出すべきデータブロックをキャッシュに一時記憶するRAID装置であって、前記キャッシュに一時記憶したデータブロックを前記磁気ディスク装置へ書き出す優先順位に従って、各データブロックに対応する要素を配列したリストを形成させ、該リストにおいて、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素の一群が存在する場合に、その一群の両端の要素を接続するリンクを設けるキャッシュ管理手段と、前記磁気ディスクへの書き出しを実行する対象のデータブロックを選定する場合に、前記リストに属する要素を優先順位が高い順に探索し、書き込みを行うことができない磁気ディスクが書き込み先であるデータブロックに対応する要素に前記リンクが設定されていれば、該リンクを辿って次の要素の探索を行う書き出し制御手段とを備えたことを特徴とする。
また、本発明の他の態様では、磁気ディスクへ書き出すべきデータブロックをキャッシュに一時記憶するRAID制御プログラムであって、前記キャッシュに一時記憶したデータブロックを前記磁気ディスク装置へ書き出す優先順位に従って、各データブロックに対応する要素を配列したリストを形成させ、該リストにおいて、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素の一群が存在する場合に、その一群の両端の要素を接続するリンクを設けるキャッシュ管理手順と、前記磁気ディスクへの書き出しを実行する対象のデータブロックを選定する場合に、前記リストに属する要素を優先順位が高い順に探索し、書き込みを行うことができない磁気ディスクが書き込み先であるデータブロックに対応する要素に前記リンクが設定されていれば、該リンクを辿って次の要素の探索を行う書き出し制御手順とをコンピュータに実行させることを特徴とする。
また、本発明の他の態様では、磁気ディスクへ書き出すべきデータブロックを一時記憶するキャッシュを管理するキャッシュ管理方法であって、前記キャッシュに一時記憶したデータブロックを前記磁気ディスク装置へ書き出す優先順位に従って、各データブロックに対応する要素を配列したリストを形成させ、該リストにおいて、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素の一群が存在する場合に、その一群の両端の要素を接続するリンクを設けるリスト編成工程と、前記磁気ディスクへの書き出しを実行する対象のデータブロックを選定する場合に、前記リストに属する要素を優先順位が高い順に探索し、書き込みを行うことができない磁気ディスクが書き込み先であるデータブロックに対応する要素に前記リンクが設定されていれば、該リンクを辿って次の要素の探索を行う書き出し制御工程とを含んだことを特徴とする。
この発明の態様によれば、磁気ディスクへの書き出しが必要なディスクブロックに対応する要素を優先順位順に配列したリストを探索して書き出し対象のデータブロックを選定する場合に、書き出し不能な磁気ディスクが書き出し先であるデータブロックに対応する要素にリンクがあれば、そのリンクを辿って、書き出し不能な磁気ディスクが書き出し先であるデータブロックに対応する要素の一群を一気に読み飛ばすことができるように構成したので、キャッシュの大容量化により、多数のデータブロックの管理が必要になった場合であっても、効率よくキャッシュを管理し、キャッシュの管理に係る処理時間の増大を抑制することができる。
また、本発明の他の態様では、上記の発明の態様において、前記キャッシュ管理手段は、前記リストから要素を削除する場合に、該要素の前後の要素に対応するデータブロックの書き出し先が同一の磁気ディスク装置であれば、該要素の前後の要素を含む要素の一群であって、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素の一群の、両端の要素を接続するリンクを設けることを特徴とする。
この発明の態様によれば、リストから要素を削除する場合に、削除する要素の前後の要素に対応するデータブロックの書き出し先が同一の磁気ディスク装置であれば、それらを含む、データブロックの書き出し先が同一の磁気ディスク装置である要素の両端にリンクを設定するように構成したので、リンクが断片化することを防止し、キャッシュの管理に係る処理時間の増大を抑制することができる。
また、本発明の他の態様では、上記の発明の態様において、前記キャッシュ管理手段は、前記リストへ要素を挿入する場合に、前記リストに属する要素を優先順位が低い順に探索し、挿入する要素に対応するデータブロックが書き出される磁気ディスク装置と同一の磁気ディスク装置へ書き出されるデータブロックに対応する要素の手前を挿入位置とすることを特徴とする。
この発明の態様によれば、リストに要素を挿入する場合に、データブロックの書き出し先の磁気ディスク装置が同一である要素が連続することになる位置へ挿入するように構成したので、リンクが断片化することを防止し、キャッシュの管理に係る処理時間の増大を抑制することができる。
本発明の一つの態様によれば、磁気ディスクへの書き出しが必要なディスクブロックに対応する要素を優先順位順に配列したリストを探索して書き出し対象のデータブロックを選定する場合に、書き出し不能な磁気ディスクが書き出し先であるデータブロックに対応する要素にリンクがあれば、そのリンクを辿って、書き出し不能な磁気ディスクが書き出し先であるデータブロックに対応する要素の一群を一気に読み飛ばすことができるように構成したので、キャッシュの大容量化により、多数のデータブロックの管理が必要になった場合であっても、効率よくキャッシュを管理し、キャッシュの管理に係る処理時間の増大を抑制することができるという効果を奏する。
また、本発明の他の態様によれば、リストから要素を削除する場合に、削除する要素の前後の要素に対応するデータブロックの書き出し先が同一の磁気ディスク装置であれば、それらを含む、データブロックの書き出し先が同一の磁気ディスク装置である要素の両端にリンクを設定するように構成したので、リンクが断片化することを防止し、キャッシュの管理に係る処理時間の増大を抑制することができるという効果を奏する。
また、本発明の他の態様によれば、リストに要素を挿入する場合に、データブロックの書き出し先の磁気ディスク装置が同一である要素が連続することになる位置へ挿入するように構成したので、リンクが断片化することを防止し、キャッシュの管理に係る処理時間の増大を抑制することができるという効果を奏する。
以下に添付図面を参照して、本発明に係るRAID装置、RAID制御プログラムおよびキャッシュ管理方法の好適な実施の形態を詳細に説明する。
まず、従来のRAID装置におけるキャッシュ管理方法の概要について説明する。図17は、従来のキャッシュ管理方法の概要について説明するための説明図である。同図は、ホストから書き込み要求があったが、まだ磁気ディスク装置への書き出しが行われることなくキャッシュに格納されているデータブロック(以下。「Dirtyブロック」という)の書き出し順序を管理するためのリスト(以下、「Dirtyリンク」という)を示している。
同図に示すように、Dirtyリンクは、各Dirtyブロックに対応する管理ブロック21〜28をNext Dirtyポインタ1とPrevious Dirtyポインタ2を用いて双方向に接続して構成される。そして、管理ブロック21側の端は、MRU(Most Recently Used)ポインタ11と接続され、管理ブロック28側の端は、LRUポインタ12と接続される。
MRUポインタ11は、ホストから最も近時にアクセス要求があったデータブロックに対応する管理ブロックをポイントするためのポインタであり、LRUポインタ12は、ホストからアクセス要求があってから最も時間が経過しているデータブロックに対応する管理ブロックをポイントするためのポインタである。
管理ブロック21〜28は、対応するデータブロックの管理情報を記憶するブロックであり、対応するデータブロックに対してホストからアクセス要求があった時期が近い管理ブロックほどMRUポインタ11に近く配置された一列のリストを構成する。Next Dirtyポインタ1は、LRUポインタ12からMRUポインタ11の方向へ各管理ブロックを接続するためのポインタであり、Previous Dirtyポインタ2は、MRUポインタ11からLRUポインタ12の方向へ各管理ブロックを接続するためのポインタである。
管理ブロック21〜28が記憶する管理情報には、対応するデータブロックの書き出し先の磁気ディスク装置を識別するためのディスク番号も含まれる。管理ブロック21〜28が記憶するディスク番号は、それぞれ、「3」、「2」、「2」、「1」、「2」、「2」、「2」、「1」となっている。なお、このディスク番号は、物理的な磁気ディスク装置を複数束ねて構成された仮想的な磁気ディスク装置を示すものであってもよい。
このDirtyリンクは、キャッシュの容量が逼迫した場合等に、磁気ディスク装置への書き出し処理を実行するデータブロックを選定するために使用される。具体的には、LRUポインタ12に近く配置されている管理ブロックに対応するデータブロックほど高い優先順位で書き出し処理の対象として選定され、書き出し処理が実行されたデータブロックに対応する管理ブロックはDirtyリンクから削除される。
書き出し処理の対象となるデータブロックの選定においては、書き出し先の磁気ディスク装置の負荷状況が考慮される。すなわち、既に書き出し処理が集中して発生し、負荷が高まっている磁気ディスク装置が書き出し先であるデータブロックは、処理対象から除外される。
ここで、「2」というディスク番号に対応する磁気ディスク装置の負荷が高い状態にあるときに2つのデータブロックの書き出しを行う必要が生じたものとする。この場合、LRUポインタ12に最も近い位置からDirtyリンクが走査され、まず、管理ブロック28が選択される。管理ブロック28が記憶するディスク番号「1」は、負荷に問題のない磁気ディスク装置のものなので、処理対象のデータブロックの1つ目は、管理ブロック28に対応するデータブロックとなる。
続いて、管理ブロック27が選択される。管理ブロック27が記憶するディスク番号「2」は、負荷が高い状態にある磁気ディスク装置のものなので、この管理ブロックに対応するデータブロックは、処理対象とはならない。続いて選択される管理ブロック26および25が記憶するディスク番号も「2」であり、これらの管理ブロックに対応するデータブロックも、処理対象とはならない。
続いて、管理ブロック24が選択される。管理ブロック24が記憶するディスク番号「1」は、負荷に問題のない磁気ディスク装置のものなので、処理対象のデータブロックの2つ目は、管理ブロック24に対応するデータブロックとなる。
この例では、ディスク番号「2」を有する管理ブロック25〜27が3個連続して存在し、これらを読み飛ばす分だけ余分な処理が必要となっているが、この程度の処理量の増加であれば、処理性能への影響はない。しかし、大容量のキャッシュをもつRAID装置において特定の磁気ディスク装置へのアクセスが集中して発生した場合には、同一のディスク番号を有する管理ブロックがDirtyリンク中に数千個連続して存在する場合があり、これらを読み飛ばす必要が生じた場合には、大きな性能低下が生じる。
次に、本実施例に係るRAID装置におけるキャッシュ管理方法の概要について説明する。図1は、本実施例に係るキャッシュ管理方法の概要について説明するための説明図である。同図に示すDirtyリンクにおいては、管理ブロック21〜28が図17と同じ順序で配置されている。
同図に示すように、本実施例に係るキャッシュ管理方法では、個々の管理ブロックを双方向接続するNext Dirtyポインタ1およびPrevious Dirtyポインタ2に加えて、同一のディスク番号を有する連続する管理ブロックの両端を双方向接続するNext Skipポインタ3およびPrevious Skipポインタ4を用いる。
Next Skipポインタ3は、同一のディスク番号を有する連続する管理ブロックの両端を、LRUポインタ12からMRUポインタ11の方向へ接続するためのポインタであり、Previous Skipポインタ4は、同一のディスク番号を有する連続する管理ブロックの両端を、MRUポインタ11からLRUポインタ12の方向へ接続するためのポインタである。なお、以下の説明においては、Next Skipポインタ3とPrevious Skipポインタ4による双方向接続をSkipリンクと称する。
図1の例では、Next Skipポインタ3は、管理ブロック27と管理ブロック25を接続し、また、管理ブロック23と管理ブロック22を接続している。そして、Previous Skipポインタ4は、管理ブロック25と管理ブロック27を接続し、また、管理ブロック22と管理ブロック23を接続している。
ここで、図17の場合と同様に、「2」というディスク番号に対応する磁気ディスク装置の負荷が高い状態にあるときに2つのデータブロックの書き出しを行う必要が生じたものとする。この場合、LRUポインタ12に最も近い位置からDirtyリンクが走査され、まず、管理ブロック28が選択される。管理ブロック28が記憶するディスク番号「1」は、負荷に問題のない磁気ディスク装置のものなので、処理対象のデータブロックの1つ目は、管理ブロック28に対応するデータブロックとなる。
続いて、管理ブロック27が選択される。管理ブロック27が記憶するディスク番号「2」は、負荷が高い状態にある磁気ディスク装置のものなので、この管理ブロックに対応するデータブロックは、処理対象とはならない。
本実施例に係るキャッシュ管理方法では、ある管理ブロックが記憶するディスク番号に対応する磁気ディスク装置の負荷が高い状態にあり、さらに、その管理ブロックのNext Skipポインタ3が他の管理ブロックをポイントしている場合には、Next Skipポインタ3を辿って次の管理ブロックとして選択する。
管理ブロック27が記憶するディスク番号「2」に対応する磁気ディスク装置は、負荷が高い状態にあり、管理ブロック27のNext Skipポインタ3は、管理ブロック25をポイントしているので、次に選択される管理ブロックは、管理ブロック25のNext Dirtyポインタ1がポイントしている管理ブロック、すなわち、管理ブロック24となる。
こうして選択された管理ブロック24が記憶するディスク番号「1」は、負荷に問題のない磁気ディスク装置のものなので、処理対象のデータブロックの2つ目は、管理ブロック24に対応するデータブロックとなる。
このように、本実施例に係るキャッシュ管理方法では、Skipリンクを利用して、同一のディスク番号を有する管理ブロックの塊をまとめて読み飛ばすことができる。このため、大容量のキャッシュをもつRAID装置において特定の磁気ディスク装置へのアクセスが集中し、同一のディスク番号を有する管理ブロックが連続する長大な塊が形成された場合であっても、Dirtyリンクを高速に走査することができ、RAID装置の性能低下を抑制することができる。
なお、図1では、同一のディスク番号を有する連続する管理ブロックの両端のみをSkipリンクで接続する例を示したが、図2に示すように、前後の管理ブロックのいずれとも異なるディスク番号を有する管理ブロックに自身をポイントするNext Skipポインタ5およびPrevious Skipポインタ6を設定することとしてもよい。
このように、同一のディスク番号を有する管理ブロックの塊に含まれない管理ブロックにもNext Skipポインタ5およびPrevious Skipポインタ6を設定することにより、全ての管理ブロックがいずれかのSkipリンクに関連することになり、Dirtyリンクに新たに管理ブロックを追加する際の処理等を単純化することができる。
また、図3に示すように、同一のディスク番号を有する連続する管理ブロックの他方の端の次の管理ブロックをポイントするようにNext Skipポインタ7およびPrevious Skipポインタ8を設定することとしてもよい。このように次の管理ブロックをポイントすることにより、Skipリンクを辿ってDirtyリンクを探索する場合に、Next Dirtyポインタ1もしくはPrevious Dirtyポインタ2を用いることなく、一工程省略して、塊の次の管理ブロックを選択することができる。
次に、図1に示したDirtyリンクに管理ブロックを追加する場合と削除する場合の動作の概要について説明する。図4は、Dirtyリンクに管理ブロックを追加する場合の動作を示す図である。同図は、図1に示したDirtyリンクに、ディスク番号「3」を有する管理ブロック29を追加する場合の動作を示している。
管理ブロック29は、LRU論理に従って、DirtyリンクのMRUポインタ11に最も近い位置に追加される。この例の場合、管理ブロック29が記憶するディスク番号「3」は、隣接する管理ブロック21が記憶するディスク番号「3」と一致しているので、管理ブロック29と管理ブロック21の間にSkipリンクが新たに設定される。
このように、Dirtyリンクに追加される管理ブロックが記憶するディスク番号と、隣接する管理ブロックが記憶するディスク番号が一致する場合であって、隣接する管理ブロックにSkipリンクが設定されていない場合には、Dirtyリンクに追加される管理ブロックと隣接する管理ブロックの間にSkipリンクが新たに設定される。
また、Dirtyリンクに追加される管理ブロックが記憶するディスク番号と、隣接する管理ブロックが記憶するディスク番号が一致する場合であって、隣接する管理ブロックにSkipリンクが設定されている場合には、そのSkipリンクに対応する管理ブロックの塊に、追加される管理ブロックが含まれるようにSkipリンクが再設定される。
例えば、図4において、管理ブロック22が記憶するディスク番号が「3」であり、管理ブロック21と管理ブロック22の間にSkipリンクが設定されていた場合、管理ブロック29の追加後は、管理ブロック22と管理ブロック29の間にSkipリンクが設定されることになる。
また、Dirtyリンクに追加される管理ブロックが記憶するディスク番号と、隣接する管理ブロックが記憶するディスク番号が一致しない場合は、追加される管理ブロックにはSkipリンクが設定されない。
ところで、本実施例に係るキャッシュ管理方法では、同じディスク番号を有する管理ブロックがDirtyリンク中に散在している場合よりも、連続して配置されている場合の方が、効率よくDirtyリンクを探索することができる。そこで、DirtyリンクのMRUポインタ11に最も近い位置に新たな管理ブロックを追加する代わりに、同じディスク番号を有する管理ブロックが連続して配置されるように、新たな管理ブロックをDirtyリンクの途中に挿入することとしてもよい。
図5は、Dirtyリンクに管理ブロックを挿入する場合の動作を示す図である。同図は、図1に示したDirtyリンクに、ディスク番号「2」を有する管理ブロック30を挿入する場合の動作を示している。
Dirtyリンクに管理ブロックを挿入する場合、DirtyリンクをMRUポインタ11に近い側より走査し、同一のディスク番号を記憶する管理ブロックの手前が挿入位置となる。ただし、Dirtyリンク全体を走査すると性能低下が生じる可能性があるため、走査は、MRUポインタ11に近い側からN個目の管理ブロックまでに限定し、N個目の管理ブロックまでに同一のディスク番号を記憶する管理ブロックが発見されなかった場合は、図4の例と同様にMRUポインタ11に最も近い位置を挿入位置とする。
なお、上記のNの値は、当該のRAID装置の負荷状況に応じて動的に変動させることとしてもよいし、当該のRAID装置に接続されている磁気ディスク装置の数等に応じて決定することとしてもよい。
図5の例では、N個の範囲内にディスク番号「2」を記憶する管理ブロック22が存在するので、管理ブロック22の手前が管理ブロック30の挿入位置となり、ディスク番号「2」を記憶する管理ブロックの塊の両端となる管理ブロック23と管理ブロック30の間にSkipリンクが設定されることになる。
図6は、Dirtyリンクから管理ブロックを削除する場合の動作を示す図である。同図は、図1に示したDirtyリンクから、ディスク番号「2」を有する管理ブロック26を削除する場合の動作を示している。
同図に示した例のように、同じディスク番号を有する管理ブロックの塊の内部に位置する管理ブロックの一つが削除された場合には、その塊の両端を接続するSkipリンクはそのまま維持される。
また、同じディスク番号を有する3個以上の管理ブロックの塊の両端のいずれかの管理ブロックが削除された場合は、削除された管理ブロックを除いた塊の両端を接続するようにSkipリンクが再設定される。また、同じディスク番号を有する2個の連続する管理ブロックのいずれが削除された場合は、それらの管理ブロック間に設定されていたSkipリンクは削除される。
また、同じディスク番号を有する管理ブロックの塊に属さない管理ブロックが削除された場合は、通常は、既存のSkipリンクはそのまま維持される。ただし、図7に示すように、削除された管理ブロックの前後の管理ブロックが記憶するディスク番号が同一の場合は、それらを含めた同じディスク番号を有する管理ブロックの塊の両端を接続するようにSkipリンクが設定される。
このように、管理ブロックの削除後に、その前後の管理ブロックを連結した塊に対してSkipリンクを設定することにより、Skipリンクが断片化することを防止し、Dirtyリンクを探索する場合の効率を向上させることができる。
次に、本実施例に係るキャッシュ管理方法を実装したRAID装置100について説明する。図8は、本実施例に係るRAID装置100の構成を示す機能ブロック図である。同図に示すように、RAID装置100は、ホストインターフェース部1101〜110kと、ディスクインターフェース部1201〜120mと、磁気ディスク装置1301〜130mと、制御部140と、記憶部150とを有する。
ホストインターフェース部1101〜110kは、RAID装置に対してデータブロックの書き出しや読み込みを依頼するホストとの間で各種情報をやりとりするためのインターフェース部である。なお、RAID装置とホストの接続は、ファイバーチャネル等の各種方式を用いて実現することができる。また、ホストインターフェース部1101〜110kの数は、いくつであってもよい。
ディスクインターフェース部1201〜120mは、磁気ディスク装置1301〜130mを接続するためのインターフェース部であり、磁気ディスク装置1301〜130mは、各種情報を記憶可能な記憶装置である。なお、ディスクインターフェース部1201〜120mおよび磁気ディスク装置1301〜130mの数は、いくつであってもよい。
制御部140は、RAID装置100を全体制御する制御部であり、ホストインターフェース部1101〜110k、ディスクインターフェース部1201〜120mおよび記憶部150と接続され、キャッシュ管理部141と、書き出し制御部142とを有する。
制御部140は、RAID5等の各種のRAID方式に従って情報を読み書きするために必要な制御を実行する。また、記憶部150に設けられたキャッシュを有効に活用して、ホストからの要求に対する応答時間を短縮させるための制御も実行する。
キャッシュ管理部141は、記憶部150に設けられたキャッシュの状態を管理するための処理部であり、既に説明したDirtyリンクの管理も担当する。書き出し制御部142は、ホストから書き込み要求があったが、まだ磁気ディスク装置1301〜130mへの書き出しが行われることなくキャッシュに格納されているデータブロックの書き出し処理を実行する処理部である。
書き出し制御部142は、書き出し処理の対象となるデータブロックを選定するために、キャッシュ管理部141によって管理されているDirtyリンクの探索を行う。その際、負荷が高い状態にある磁気ディスク装置に対応する管理ブロックを読み飛ばすために、Skipリンクを利用する。なお、書き出し制御部142による書き出し処理は、例えば、記憶部150に設けられたキャッシュの容量が逼迫した場合や、予めスケジュールされた時間間隔ごとに起動される。
記憶部150は、RAM(Random Access Memory)等からなる高速な記憶装置であり、管理ブロック1531〜153n、MRUポインタ154およびLRUポインタ155が格納される管理領域151と、データブロック1561〜156nが格納されるキャッシュ領域152とを有する。
データブロック1561〜156nは、磁気ディスク装置1301〜130mが保持すべきデータブロックの一時的な複製であり、管理ブロック1531〜153nは、データブロック1561〜156nと1対1で対応し、対応するデータブロックの管理情報を保持する。管理ブロック1531が保持する管理情報の一例を図9に示す。なお、管理ブロック1532〜153nも、管理ブロック1531と同様の情報を保持する。
同図に示した管理ブロック1531は、ディスク番号201と、ディスクブロック番号202と、Next Pointer203と、Previous Pointer204と、Next Dirty Pointer205と、Previous Dirty Pointer206と、Next Skip Pointer207と、Previous Skip Pointer208といった項目を有する。
ディスク番号201は、当該の管理ブロックに対応するデータブロックが記憶されるべき磁気ディスク装置を識別するための番号が設定される項目である。ディスクブロック番号202は、ディスク番号201によって識別される磁気ディスク装置において、当該の管理ブロックに対応するデータブロックが記憶されるべき位置を識別するための番号が設定される項目である。
Next Pointer203およびPrevious Pointer204は、書き出し要求であるか読み込み要求であるかを問わず、ホストから最近アクセス要求があったデータブロック順に管理ブロック1531〜153nを配置するリストを構成するための項目であり、このリストにおいて前後に配置される管理ブロックを識別するための番号が設定される。Next Pointer203およびPrevious Pointer204によるリンクについては、周知技術であるので本明細書においては詳細な説明を省略する。
Next Dirty Pointer205およびPrevious Dirty Pointer206は、Dirtyリンクを構成するための項目であり、Dirtyリンクにおいて前後に配置される管理ブロックを識別するための番号が設定される。Dirtyリンクにおける管理ブロックの配置の変更は、これらの項目の値を変更することにより実現される。
Next Skip Pointer207およびPrevious Skip Pointer208は、Dirtyリンクにおいてディスク番号201に同一の値を保持する管理ブロックの塊の両端を接続するSkipリンクを構成するための項目であり、Skipリンクにおいて他方の端に位置する管理ブロックを識別するための番号が設定される。
次に、図8に示したRAID装置100の動作について説明する。なお、以下の処理手順の説明においては、説明を簡単にするために、図2に示すように、同じディスク番号を有する他の管理ブロックと連続していない管理ブロックは、自身をポイントするSkipリンクを有していることを前提とする。
図10は、Dirtyリンクに管理ブロックを追加する場合の処理手順を示すフローチャートである。同図に示すように、Dirtyリンクに管理ブロックを追加することが必要になった場合、キャッシュ管理部141は、まず、MRUポインタ154が示す管理ブロック、すなわち、最も最近書き込み要求があったデータブロックに対応する管理ブロックを選択する(ステップS101)。
そして、選択した管理ブロックのNext Dirty Pointer205に追加対象の管理ブロックの番号を設定し(ステップS102)、追加対象の管理ブロックのPrevious Dirty Pointer206に選択した管理ブロックの番号を設定する(ステップS103)。
こうして追加対象の管理ブロックをDirtyリンクに接続した後、追加対象の管理ブロックのディスク番号201の値が、選択した管理ブロックのディスク番号201の値と同一であれば(ステップS104肯定)、選択した管理ブロックに設定されているSkipリンクを追加対象の管理ブロックに設定し直すための処理を行う。
すなわち、選択した管理ブロックのPrevious Skip Pointer208が示す管理ブロックのNext Skip Pointer207に追加対象の管理ブロックの番号を設定し(ステップS105)、追加対象の管理ブロックのPrevious Skip Pointer208に選択した管理ブロックのPrevious Skip Pointer208の値を設定し(ステップS106)、選択した管理ブロックのPrevious Skip Pointer208の値をクリアする(ステップS107)。
一方、追加対象の管理ブロックのディスク番号201の値が、選択した管理ブロックのディスク番号201の値と同一でなければ(ステップS104否定)、追加対象の管理ブロックのNext Skip Pointer207に追加対象の管理ブロックの番号を設定し(ステップS108)、追加対象の管理ブロックのPrevious Skip Pointer208に追加対象の管理ブロックの番号を設定する(ステップS109)。
なお、上記の処理手順は、MRUポインタ154が示す位置を追加対象の管理ブロックの追加位置とするものであるが、図5に示すように、Skipリンクが設定される機会を増やすことを目的として、Dirtyリンクの途中に管理ブロックを挿入する場合の処理手順は、図10に示したステップS101を図11に示す処理に置き換えることで実現することができる。
この場合、キャッシュ管理部141は、まず、カウンタnの値を、同一のディスク番号をもつ管理ブロックを探索する最大の論理ブロック数であるNに設定し(ステップS201)、MRUポインタ154が示す管理ブロック、すなわち、最も最近書き込み要求がったデータブロックに対応する管理ブロックを選択する(ステップS202)。
そして、カウンタnの値が0よりも大きい場合は(ステップS203肯定)、選択した管理ブロックの位置が、追加対象の管理ブロックの挿入位置であるか否かを確認するため、追加対象の管理ブロックのディスク番号201の値と、選択した管理ブロックのディスク番号201の値とを比較する。
そして、2つの値が同一でない場合、すなわち、選択した管理ブロックの位置が、追加対象の管理ブロックの挿入位置でない場合は(ステップS204否定)、選択した管理ブロックのPrevious Dirty Pointer206が示す管理ブロックを選択し(ステップS205)、カウンタnの値を1だけ減算して(ステップS206)、ステップS203から処理を再開する。
一方、2つの値が同一である場合、すなわち、選択した管理ブロックの位置が、追加対象の管理ブロックの挿入位置である場合は(ステップS204肯定)、カウンタnの値を確認する。ここで、カウンタnの値が、初期値のNのままである場合、すなわち、挿入位置がMRUポインタ154側のDirtyリストの末端である場合は(ステップS207肯定)、特に処理をすることなく、ステップS102へ遷移する。
カウンタnの値が、Nと異なる場合、すなわち、挿入位置がDirtyリストのMRUポインタ154側の末端でない場合は(ステップS207否定)、選択した管理ブロックのMRUポインタ側の管理ブロックと追加対象の管理ブロックを接続するために、選択した管理ブロックのNext Dirty Pointer205が示す管理ブロックのPrevious Dirty Pointer206に追加対象の管理ブロックの番号を設定し(ステップS208)、追加対象の管理ブロックのNext Dirty Pointer205に選択した管理ブロックのNext Dirty Pointer205の値を設定し(ステップS209)、その後、ステップS102へ遷移する。
また、ステップS203においてカウンタnの値が0以下となった場合、すなわち、同一のディスク番号をもつ管理ブロックを発見できなかった場合は(ステップS203否定)、MRUポインタ154が示す管理ブロックを選択し(ステップS210)、その後、ステップS102へ遷移する。
図12は、Dirtyリンクから管理ブロックを削除する場合の処理手順を示すフローチャートである。同図に示すように、Dirtyリンクから管理ブロックを削除することが必要になった場合、キャッシュ管理部141は、まず、削除対象の管理ブロックの前後の管理ブロックのディスク番号201の値を取得する(ステップS301)。
ここで、前後の管理ブロックのディスク番号201の値が同一であり(ステップS302肯定)、かつ、削除対象の管理ブロックのディスク番号201の値が前後の管理ブロックのディスク番号201の値と異なる場合は(ステップS303否定)、前後の管理ブロックを含むSkipリンクを結合するために、後述するSkipリンク結合処理を実行する(ステップS304)。一方、前後の管理ブロックのディスク番号201の値が異なる場合(ステップS302否定)、もしくは、削除対象の管理ブロックのディスク番号201の値が前後の管理ブロックのディスク番号201の値と同一の場合は(ステップS303肯定)、後述するSkipリンク付替処理を実行する(ステップS305)。
その後、削除対象の管理ブロックをDirtyリンクから外すために、削除対象の管理ブロックのNext Dirty Pointer205が示す管理ブロックのPrevious Dirty Pointer206に削除対象の管理ブロックのPrevious Dirty Pointer206の値を設定し(ステップS306)、削除対象の管理ブロックのPrevious Dirty Pointer206が示す管理ブロックのNext Dirty Pointer205に削除対象の管理ブロックのNext Dirty Pointer205の値を設定する(ステップS307)。
図13は、Skipリンク結合処理の処理手順を示すフローチャートである。同図に示すように、キャッシュ管理部141は、削除対象の管理ブロックのNext Dirty Pointer205が示す管理ブロックを選択し(ステップS401)、選択した管理ブロックのNext Skip Pointer207が示す管理ブロックをMRU側の末端の管理ブロックとして記憶した後(ステップS402)、選択した管理ブロックのNext Skip Pointer207の値をクリアする(ステップS403)。
そして、削除対象の管理ブロックのPrevious Dirty Pointer206が示す管理ブロックを選択し(ステップS404)、選択した管理ブロックのPrevious Skip Pointer208が示す管理ブロックをLRU側の末端の管理ブロックとして記憶した後(ステップS405)、選択した管理ブロックのPrevious Skip Pointer208の値をクリアする(ステップS406)。
そして、LRU側の末端として記憶した管理ブロックのNext Skip Pointer207にMRU側の末端として記憶した管理ブロックの番号を設定し(ステップS407)、MRU側の末端として記憶した管理ブロックのPrevious Skip Pointer208にLRU側の末端として記憶した管理ブロックの番号を設定する(ステップS408)。
図14は、Skipリンク付替処理の処理手順を示すフローチャートである。同図に示すように、キャッシュ管理部141は、削除対象の管理ブロックのNext Skip Pointer207に値が設定されており(ステップS501肯定)、かつ、そのNext Skip Pointer207が削除対象の管理ブロック以外の管理ブロックを示している場合は(ステップS502肯定)、削除対象の管理ブロックのNext Dirty Pointer205が示す管理ブロックのNext Skip Pointer207に削除対象の管理ブロックのNext Skip Pointer207の値を設定し(ステップS503)、さらに、削除対象の管理ブロックのNext Skip Pointer207が示す管理ブロックのPrevious Skip Pointer208に削除対象の管理ブロックのNext Dirty Pointer205の値を設定する(ステップS504)。
また、削除対象の管理ブロックのPrevious Skip Pointer208に値が設定されており(ステップS505肯定)、かつ、そのPrevious Skip Pointer208が削除対象の管理ブロック以外の管理ブロックを示している場合は(ステップS506肯定)、削除対象の管理ブロックのPrevious Dirty Pointer206が示す管理ブロックのPrevious Skip Pointer208に削除対象の管理ブロックのPrevious Skip Pointer208の値を設定し(ステップS507)、さらに、削除対象の管理ブロックのPrevious Skip Pointer208が示す管理ブロックのNext Skip Pointer207に削除対象の管理ブロックのPrevious Dirty Pointer206の値を設定する(ステップS508)。
図15は、書き出し処理の対象となるデータブロックを選定する場合の処理手順を示すフローチャートである。なお、同図は、書き出し処理の対象となるデータブロックを一つだけ選定する場合の処理手順を示している。
同図に示すように、書き出し処理の対象となるデータブロックを選定することが必要になった場合、書き出し制御部142は、まず、LRUポインタ155が示す管理ブロックを選択する(ステップS601)。
そして、選択した管理ブロックのディスク番号201の値を取得する(ステップS602)ここで、その番号に対応する磁気ディスク装置が、書き込み可能な状態にあるときは(ステップS603肯定)、選択した管理ブロックに対応するデータブロックを書き出し処理の対象として選定する(ステップS608)。
取得した番号に対応する磁気ディスク装置が、負荷の高さ等の理由で書き込み不可能な状態にあるときは(ステップS603否定)、選択した管理ブロックのNext Skip Pointer207が、選択した管理ブロック以外の管理ブロックを示していれば(ステップS604肯定)、選択した管理ブロックのNext Skip Pointer207が示す管理ブロックを選択し(ステップS605)、さらに、選択した管理ブロックのNext Dirty Pointer205が示す管理ブロックを選択した後(ステップS606)、ステップS602から処理を再開する。
また、磁気ディスク装置が、負荷の高さ等の理由で書き込み不可能な状態にあるときであって(ステップS603否定)、選択した管理ブロックのNext Skip Pointer207が、選択した管理ブロック自身を示しているときは(ステップS604否定)、選択した管理ブロックのNext Dirty Pointer205が示す管理ブロックを選択した後(ステップS607)、ステップS602から処理を再開する。
なお、図8に示した本実施例に係るRAID装置100の構成は、本発明の要旨を逸脱しない範囲で種々に変更することができる。例えば、図8に示したRAID装置100の構成からホストインターフェース部1101〜110kおよび磁気ディスク装置1301〜130mを除外した構成を一枚の基板上に実装し、サーバ装置等に内臓可能なRAID制御装置として構成することができる。
また、RAID装置100の制御部140の機能をソフトウェアとして実装し、いわゆる、ソフトウェアRAIDを実現することもできる。以下に、制御部140の機能をソフトウェアとして実装したRAID制御プログラム1072を実行するコンピュータの一例を示す。
図16は、RAID制御プログラム1072を実行するコンピュータ1000を示す機能ブロック図である。このコンピュータ1000は、各種演算処理を実行するCPU1010と、ユーザからのデータの入力を受け付ける入力装置1020と、各種情報を表示するモニタ1030と、各種プログラム等を記録した記録媒体からプログラム等を読み取る媒体読取り装置1040と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置1050と、各種情報を一時記憶するRAM1060と、磁気ディスク装置1070とをバス1080で接続して構成される。
そして、磁気ディスク装置1070には、コンピュータ1000の基本的な制御を行うオペレーティングシステム1061の実体であるカーネルプログラム1071と、図8に示した制御部140と同様の機能を有するRAID制御プログラム1072とが記憶される。なお、RAID構成を実現するため、コンピュータ1000は、図示した磁気ディスク装置1070以外にも複数の磁気ディスク装置を備える。
そして、CPU1010がカーネルプログラム1071を磁気ディスク装置1070から読み出してRAM1060に展開することにより、カーネルプログラム1071は、オペレーティングシステム1061として機能するようになる。そして、オペレーティングシステム1061は、RAID機能を実現するため、磁気ディスク装置1070からRAID制御プログラム1072を読み出してRAM1060に展開し、自身の一部として機能させる。
こうして、RAID制御プログラム1072を自身に組み込んだオペレーティングシステム1061は、RAM1060上に、図8に示した管理領域151に相当する管理領域1062と、キャッシュ領域152に相当するキャッシュ領域1063を設け、これらの領域を使用してRAID機能に係る各種データ処理を実行する。
なお、上記のRAID制御プログラム1072は、必ずしも磁気ディスク装置1070に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたこのプログラムを、コンピュータ1000が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等を介してコンピュータ1000に接続される他のコンピュータ(またはサーバ)等にこのプログラムを記憶させておき、コンピュータ1000がこれらからプログラムを読み出して実行するようにしてもよい。
上述してきたように、本実施例では、磁気ディスクへの書き出しが必要なディスクブロックに対応する管理ブロックを優先順位順に配列したDirtyリンクを探索して書き出し対象のデータブロックを選定する場合に、書き出し不能な磁気ディスクが書き出し先であるデータブロックに対応する管理ブロックにSkipリンクがあれば、そのSkipリンクを辿って、書き出し不能な磁気ディスクが書き出し先であるデータブロックに対応する管理ブロックを一気に読み飛ばすことができるように構成したので、キャッシュの大容量化により、多数のデータブロックの管理が必要になった場合であっても、効率よくキャッシュを管理し、キャッシュの管理に係る処理時間の増大を抑制することができる。
なお、上記の実施例では、本発明に係るキャッシュ管理方法をRAID装置におけるキャッシュ管理に適用した例について説明したが、本発明に係るキャッシュ管理方法は、キャッシュを利用する各種の装置および方法に適用することが可能である。
(付記1)磁気ディスクへ書き出すべきデータブロックをキャッシュに一時記憶するRAID装置であって、
前記キャッシュに一時記憶したデータブロックを前記磁気ディスク装置へ書き出す優先順位に従って、各データブロックに対応する要素を配列したリストを形成させ、該リストにおいて、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素の一群が存在する場合に、その一群の両端の要素を接続するリンクを設けるキャッシュ管理手段と、
前記磁気ディスクへの書き出しを実行する対象のデータブロックを選定する場合に、前記リストに属する要素を優先順位が高い順に探索し、書き込みを行うことができない磁気ディスクが書き込み先であるデータブロックに対応する要素に前記リンクが設定されていれば、該リンクを辿って次の要素の探索を行う書き出し制御手段と
を備えたことを特徴とするRAID装置。
(付記2)前記キャッシュ管理手段は、前記リストから要素を削除する場合に、該要素の前後の要素に対応するデータブロックの書き出し先が同一の磁気ディスク装置であれば、該要素の前後の要素を含む要素の一群であって、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素の一群の、両端の要素を接続するリンクを設けることを特徴とする付記1に記載のRAID装置。
(付記3)前記キャッシュ管理手段は、前記リストへ要素を挿入する場合に、前記リストに属する要素を優先順位が低い順に探索し、挿入する要素に対応するデータブロックが書き出される磁気ディスク装置と同一の磁気ディスク装置へ書き出されるデータブロックに対応する要素の手前を挿入位置とすることを特徴とする付記1または2に記載のRAID装置。
(付記4)磁気ディスクへ書き出すべきデータブロックをキャッシュに一時記憶するRAID制御プログラムであって、
前記キャッシュに一時記憶したデータブロックを前記磁気ディスク装置へ書き出す優先順位に従って、各データブロックに対応する要素を配列したリストを形成させ、該リストにおいて、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素の一群が存在する場合に、その一群の両端の要素を接続するリンクを設けるキャッシュ管理手順と、
前記磁気ディスクへの書き出しを実行する対象のデータブロックを選定する場合に、前記リストに属する要素を優先順位が高い順に探索し、書き込みを行うことができない磁気ディスクが書き込み先であるデータブロックに対応する要素に前記リンクが設定されていれば、該リンクを辿って次の要素の探索を行う書き出し制御手順と
をコンピュータに実行させることを特徴とするRAID制御プログラム。
(付記5)前記キャッシュ管理手順は、前記リストから要素を削除する場合に、該要素の前後の要素に対応するデータブロックの書き出し先が同一の磁気ディスク装置であれば、該要素の前後の要素を含む要素の一群であって、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素の一群の、両端の要素を接続するリンクを設けることを特徴とする付記4に記載のRAID制御プログラム。
(付記6)前記キャッシュ管理手順は、前記リストへ要素を挿入する場合に、前記リストに属する要素を優先順位が低い順に探索し、挿入する要素に対応するデータブロックが書き出される磁気ディスク装置と同一の磁気ディスク装置へ書き出されるデータブロックに対応する要素の手前を挿入位置とすることを特徴とする付記4または5に記載のRAID制御プログラム。
(付記7)磁気ディスクへ書き出すべきデータブロックを一時記憶するキャッシュを管理するキャッシュ管理方法であって、
前記キャッシュに一時記憶したデータブロックを前記磁気ディスク装置へ書き出す優先順位に従って、各データブロックに対応する要素を配列したリストを形成させ、該リストにおいて、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素の一群が存在する場合に、その一群の両端の要素を接続するリンクを設けるリスト編成工程と、
前記磁気ディスクへの書き出しを実行する対象のデータブロックを選定する場合に、前記リストに属する要素を優先順位が高い順に探索し、書き込みを行うことができない磁気ディスクが書き込み先であるデータブロックに対応する要素に前記リンクが設定されていれば、該リンクを辿って次の要素の探索を行う書き出し制御工程と
を含んだことを特徴とするキャッシュ管理方法。
(付記8)前記リスト編成工程は、前記リストから要素を削除する場合に、該要素の前後の要素に対応するデータブロックの書き出し先が同一の磁気ディスク装置であれば、該要素の前後の要素を含む要素の一群であって、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素の一群の、両端の要素を接続するリンクを設けることを特徴とする付記7に記載のキャッシュ管理方法。
(付記9)前記リスト編成工程は、前記リストへ要素を挿入する場合に、前記リストに属する要素を優先順位が低い順に探索し、挿入する要素に対応するデータブロックが書き出される磁気ディスク装置と同一の磁気ディスク装置へ書き出されるデータブロックに対応する要素の手前を挿入位置とすることを特徴とする付記7または8に記載のキャッシュ管理方法。
以上のように、本発明に係るRAID装置、RAID制御プログラムおよびキャッシュ管理方法は、磁気ディスクへ書き出すべきデータブロックをキャッシュに一時記憶する場合に有用であり、特に、大容量のキャッシュを備えた場合においても、キャッシュの管理に係る処理時間の増大を抑制することが必要な場合に適している。
本実施例に係るキャッシュ管理方法の概要について説明するための説明図である。 本実施例に係るキャッシュ管理方法の変形例を示す図である。 本実施例に係るキャッシュ管理方法の変形例を示す図である。 Dirtyリンクに管理ブロックを追加する場合の動作を示す図である。 Dirtyリンクに管理ブロックを挿入する場合の動作を示す図である。 Dirtyリンクから管理ブロックを削除する場合の動作を示す図である。 管理ブロックの削除にともなってSkipリンクの結合を行う場合の動作を示す図である。 本実施例に係るRAID装置の構成を示す機能ブロック図である。 管理ブロックの構成の一例を示す図である。 Dirtyリンクに管理ブロックを追加する場合の処理手順を示すフローチャートである。 Dirtyリンクに管理ブロックを挿入する場合の処理手順を示すフローチャートである。 Dirtyリンクから管理ブロックを削除する場合の処理手順を示すフローチャートである。 Skipリンク結合処理の処理手順を示すフローチャートである。 Skipリンク付替処理の処理手順を示すフローチャートである。 書き出し処理の対象となるデータブロックを選定する場合の処理手順を示すフローチャートである。 RAID制御プログラムを実行するコンピュータを示す機能ブロック図である。 従来のキャッシュ管理方法の概要について説明するための説明図である。
符号の説明
1 Next Dirtyポインタ
2 Previous Dirtyポインタ
3、5、7 Next Skipポインタ
4、6、8 Previous Skipポインタ
11 MRUポインタ
12 LRUポインタ
21〜30 管理ブロック
100 RAID装置
1101〜110k ホストインターフェース部
1201〜120m ディスクインターフェース部
1301〜130m 磁気ディスク装置
140 制御部
141 キャッシュ管理部
142 書き出し制御部
150 記憶部
151 管理領域
152 キャッシュ領域
1531〜153n 管理ブロック
154 MRUポインタ
155 LRUポインタ
1561〜156n データブロック
201 ディスク番号
202 ディスクブロック番号
203 Next Pointer
204 Previous Pointer
205 Next Dirty Pointer
206 Previous Dirty Pointer
207 Next Skip Pointer
208 Previous Skip Pointer
1000 コンピュータ
1010 CPU
1020 入力装置
1030 モニタ
1040 媒体読取り装置
1050 ネットワークインターフェース装置
1060 RAM
1061 オペレーティングシステム
1062 管理領域
1063 キャッシュ領域
1070 磁気ディスク装置
1071 カーネルプログラム
1072 RAID制御プログラム
1080 バス

Claims (5)

  1. 磁気ディスクへ書き出すべきデータブロックをキャッシュに一時記憶するRAID装置であって、
    前記キャッシュに一時記憶したデータブロックを前記磁気ディスク装置へ書き出す優先順位に従って、各データブロックに対応する要素を配列したリストを形成させ、該リストにおいて、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素のみが連続して配置された一群が存在する場合に、その一群の両端の要素を接続するリンクを設けるキャッシュ管理手段と、
    前記磁気ディスクへの書き出しを実行する対象のデータブロックを選定する場合に、前記リストに属する要素を優先順位が高い順に探索し、書き込みを行うことができない磁気ディスクが書き込み先であるデータブロックに対応する要素に前記リンクが設定されていれば、該リンクを辿って次の要素の探索を行う書き出し制御手段と
    を備えたことを特徴とするRAID装置。
  2. 前記キャッシュ管理手段は、前記リストから要素を削除する場合に、該要素の前後の要素に対応するデータブロックの書き出し先が同一の磁気ディスク装置であれば、該要素の前後の要素を含む要素の一群であって、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素のみが連続して配置された一群の、両端の要素を接続するリンクを設けることを特徴とする請求項1に記載のRAID装置。
  3. 前記キャッシュ管理手段は、前記リストへ要素を挿入する場合に、前記リストに属する要素を優先順位が低い順に探索し、挿入する要素に対応するデータブロックが書き出される磁気ディスク装置と同一の磁気ディスク装置へ書き出されるデータブロックに対応する要素の手前を挿入位置とすることを特徴とする請求項1または2に記載のRAID装置。
  4. 磁気ディスクへ書き出すべきデータブロックをキャッシュに一時記憶するRAID制御プログラムであって、
    前記キャッシュに一時記憶したデータブロックを前記磁気ディスク装置へ書き出す優先順位に従って、各データブロックに対応する要素を配列したリストを形成させ、該リストにおいて、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素のみが連続して配置された一群が存在する場合に、その一群の両端の要素を接続するリンクを設けるキャッシュ管理手順と、
    前記磁気ディスクへの書き出しを実行する対象のデータブロックを選定する場合に、前記リストに属する要素を優先順位が高い順に探索し、書き込みを行うことができない磁気ディスクが書き込み先であるデータブロックに対応する要素に前記リンクが設定されていれば、該リンクを辿って次の要素の探索を行う書き出し制御手順と
    をコンピュータに実行させることを特徴とするRAID制御プログラム。
  5. 磁気ディスクへ書き出すべきデータブロックを一時記憶するキャッシュを管理するキャッシュ管理方法であって、
    前記キャッシュに一時記憶したデータブロックを前記磁気ディスク装置へ書き出す優先順位に従って、各データブロックに対応する要素を配列したリストを形成させ、該リストにおいて、同一の磁気ディスク装置へ書き出すべきデータブロックに対応する要素のみが連続して配置された一群が存在する場合に、その一群の両端の要素を接続するリンクを設けるリスト編成工程と、
    前記磁気ディスクへの書き出しを実行する対象のデータブロックを選定する場合に、前記リストに属する要素を優先順位が高い順に探索し、書き込みを行うことができない磁気ディスクが書き込み先であるデータブロックに対応する要素に前記リンクが設定されていれば、該リンクを辿って次の要素の探索を行う書き出し制御工程と
    を含んだことを特徴とするキャッシュ管理方法。
JP2006167665A 2006-06-16 2006-06-16 Raid装置、raid制御プログラムおよびキャッシュ管理方法 Expired - Fee Related JP4792335B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006167665A JP4792335B2 (ja) 2006-06-16 2006-06-16 Raid装置、raid制御プログラムおよびキャッシュ管理方法
US11/589,860 US7908434B2 (en) 2006-06-16 2006-10-31 Raid apparatus, cache management method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006167665A JP4792335B2 (ja) 2006-06-16 2006-06-16 Raid装置、raid制御プログラムおよびキャッシュ管理方法

Publications (2)

Publication Number Publication Date
JP2007334752A JP2007334752A (ja) 2007-12-27
JP4792335B2 true JP4792335B2 (ja) 2011-10-12

Family

ID=38862851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006167665A Expired - Fee Related JP4792335B2 (ja) 2006-06-16 2006-06-16 Raid装置、raid制御プログラムおよびキャッシュ管理方法

Country Status (2)

Country Link
US (1) US7908434B2 (ja)
JP (1) JP4792335B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6016939B2 (ja) * 2011-12-16 2016-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation テープ・ドライブ・システム・サーバ、それを含むテープ・アライアンス・システムおよびシステム、ならびにコンピュータ・プログラム
US20150032956A1 (en) * 2013-07-29 2015-01-29 CNEXLABS, Inc. Method and Apparatus for Enhancing Storage Reliability Using Double Link Redundancy Protection
JP2015191604A (ja) 2014-03-28 2015-11-02 富士通株式会社 制御装置、制御プログラム、および制御方法
JP6956934B2 (ja) 2017-03-24 2021-11-02 富士通株式会社 ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム
TW202403560A (zh) * 2022-07-08 2024-01-16 瑞昱半導體股份有限公司 資料存取方法及資料存取系統

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5220653A (en) * 1990-10-26 1993-06-15 International Business Machines Corporation Scheduling input/output operations in multitasking systems
JPH05303528A (ja) 1992-04-27 1993-11-16 Oki Electric Ind Co Ltd ライトバック式ディスクキャッシュ装置
JPH07129470A (ja) * 1993-11-09 1995-05-19 Hitachi Ltd ディスク制御方法
JP3906231B2 (ja) * 1995-09-18 2007-04-18 株式会社東芝 パケット転送装置
JP3279253B2 (ja) 1998-05-27 2002-04-30 日本電気株式会社 キャッシュページの管理方法およびキャッシュページの管理プログラムを記憶した媒体
US6253262B1 (en) * 1998-09-11 2001-06-26 Advanced Micro Devices, Inc. Arbitrating FIFO implementation which positions input request in a buffer according to its status
JP3908482B2 (ja) * 2001-06-22 2007-04-25 富士通株式会社 入出力制御装置及び入出力制御方法並びに情報記憶システム
JP3759048B2 (ja) 2002-02-04 2006-03-22 日本電気株式会社 ディスクアレイ装置のディスクキャッシュ管理方法

Also Published As

Publication number Publication date
US7908434B2 (en) 2011-03-15
US20070294475A1 (en) 2007-12-20
JP2007334752A (ja) 2007-12-27

Similar Documents

Publication Publication Date Title
US7447836B2 (en) Disk drive storage defragmentation system
CN106547476B (zh) 用于数据存储系统的方法和装置
US8595451B2 (en) Managing a storage cache utilizing externally assigned cache priority tags
CN101620516B (zh) 信息处理装置、其控制方法,以及程序
US20110314205A1 (en) Storage system
CN101110061A (zh) 使用多个数据结构管理高速缓存中的数据的方法和系统
JP4402103B2 (ja) データ記憶装置、そのデータ再配置方法、プログラム
CN113515471A (zh) 用于管理存储系统的方法和装置
CN107329704B (zh) 一种缓存镜像方法及控制器
CN105897859B (zh) 一种存储系统
JP4792335B2 (ja) Raid装置、raid制御プログラムおよびキャッシュ管理方法
JP4992835B2 (ja) ディスク記憶装置およびプログラム
US20180307426A1 (en) Storage apparatus and storage control method
JP2019028954A (ja) ストレージ制御装置、プログラム、及び重複排除方法
JP2018197933A (ja) ストレージ制御装置、情報処理システムおよびプログラム
JP4685911B2 (ja) Lu設定機能を備えたストレージシステム
KR100847021B1 (ko) 데이터 저장 장치, 데이터 저장 방법 및 그 방법이 기록된컴퓨터로 읽을 수 있는 기록매체
JP6194875B2 (ja) キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム
CN108334457B (zh) 一种io处理方法及装置
JP2010237837A (ja) ファイルシステム及びそのデータ再配置方法,プログラム
CN103186349B (zh) 块级分布式存储系统及其数据读写方法
JP4466192B2 (ja) 情報記録装置および情報記録方法並びにプログラム
WO2014147840A1 (ja) アクセス制御プログラム、ディスク装置及びアクセス制御方法
CN110196785A (zh) 数据备份管理方法、装置及电子设备
US20090249007A1 (en) Method and system for accessing data using an asymmetric cache device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110616

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110719

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110725

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140729

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4792335

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees