(57)【要約】【課題】アドレス変換テーブルに使用するメモリの量を一定にしたまま、制御対象の論理ディスクの容量に制約を課さずにデータの高速書きこみを実現することができるディスクアレイ制御装置を提供する。【解決手段】本発明は、書き込み対象となるデータブロックの物理ブロック番号が前記アドレス変換テーブルに登録されているか否かを判断し（Ｓ６０１）、登録されていると判断された場合、物理クラスタ管理テーブルを参照して、空き物理クラスタを確保することができるか否かを判断し（Ｓ６０８）、確保することができると判断された場合、空き物理クラスタを確保し、この確保された空き物理クラスタに書き込み対象となるデータブロックを書き込む（Ｓ６１２〜Ｓ６１５）。【選択図】　図６
2004102822.tif 000002
【特許請求の範囲】
【請求項１】
ディスクアレイの物理クラスタの状態を管理する物理クラスタ管理テーブルと、
論理ブロック番号と、前記論理ブロック番号に対応する物理ブロック番号とを対応付けて記憶するアドレス変換テーブルと、
書き込み対象となるデータブロックの物理ブロック番号が前記アドレス変換テーブルに登録されているか否かを判断する手段と、
前記書き込み対象となるデータブロックの物理ブロック番号が前記アドレス変換テーブルに登録されていると判断された場合、前記物理クラスタ管理テーブルを参照して、空き物理クラスタを確保することができるか否かを判断する手段と、
空き物理クラスタを確保することができると判断された場合、前記空き物理クラスタを確保し、この確保された空き物理クラスタに前記書き込み対象となるデータブロックを書き込む手段とを具備し、
アドレス変換を必要とせずにアクセスできるデータブロックのみからなる直接アドレスクラスタと、アドレス変換を必要とするデータブロックを含む間接アドレスクラスタとを混在させてディスクアレイを管理することを特徴とするディスクアレイ制御装置。
【請求項２】
空き物理クラスタを確保することができないと判断された場合、前記書き込み対象となるデータブロックを前記アドレス変換テーブルに登録されている前記書き込み対象となるデータブロックに対応する物理ブロックアドレスに書き込む手段をさらに具備することを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項３】
前記書き込み対象となるデータブロックの物理ブロック番号が前記アドレス変換テーブルに登録されていないと判断された場合に、前記書き込み対象となるデータブロックが属する論理クラスタを登録するためのエントリが前記アドレス変換テーブルに存在するか否かを判断する手段と、
前記アドレス変換テーブルに前記書き込み対象となるデータブロックが属する論理クラスタを登録するためのエントリが存在すると判断された場合に、前記書き込み対象となるデータブロックが属する論理クラスタの物理ブロック番号を全て前記アドレス変換テーブルに登録する手段と、
前記アドレス変換テーブルに新たに登録された前記書き込み対象となるデータブロックに対して登録される物理ブロック番号として、前記空き物理クラスタ中の書きこみ先のデータブロックの物理ブロック番号を登録する手段と
をさらに具備することを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項４】
前記書き込み対象となるデータブロックが属する論理クラスタが前記アドレス変換テーブルに登録されている場合には、前記アドレス変換テーブルに登録されている前記データブロックの属する論理クラスタ番号に対応する物理ブロック番号を使用してアクセスを行ない、
前記書き込み対象となるデータブロックが属する論理クラスタが前記アドレス変換テーブルに登録されていない場合には、前記データブロックの論理ブロック番号を物理ブロック番号として使用してアクセスを行なうことを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項５】
前記間接アドレスクラスタに配置する論理データブロックの総数が、前記アドレス変換テーブルのエントリの総数の範囲内に制限されることを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項６】
次の書き出し対象とする空き物理クラスタが存在するか否か、或いは現在書き出し対象の物理クラスタに空き物理ブロックが存在するか否かを判断する手段と、
存在すると判断された場合に、書き出し候補の論理ブロックに、要求された論理アドレスとは異なるディスク上の物理アドレスに書き込まれている間接アドレスデータブロックが存在するか否かを判断する手段と、
前記書き出し候補の論理ブロックに前記間接アドレスデータブロックが存在すると判断された場合に、最も有効ブロック数の少ない物理クラスタに属している間接アドレスデータブロックを選択する手段とをさらに具備し、
前記選択された間接アドレスデータブロックを前記書き込み対象となるデータブロックとして書き込むことを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項７】
空き物理クラスタが存在しない、或いは現在書き出し対象の物理クラスタに空き物理ブロックが存在しないと判断された場合に、書き込み対象のブロックを前記書き込み対象となるデータブロックを前記アドレス変換テーブルに登録されている前記書き込み対象となるデータブロックに対応する物理ブロックアドレスに書き込む手段をさらに具備することを特徴とする請求項６記載のディスクアレイ制御装置。
【請求項８】
書き出し候補の論理ブロックに、要求された論理アドレスとは異なるディスク上の物理アドレスに書き込まれている間接アドレスデータブロックが存在しないと判断された場合に、書き出し候補の直接アドレスデータブロックのうち、アドレスが連続する最長の直接アドレスデータブロックの列を選択する手段と、
前記選択された直接アドレスデータブロックの列が所定の条件を満たしている場合、前記選択された直接アドレスデータブロックの列を書き込む手段と
をさらに具備することを特徴とする請求項６記載のディスクアレイ制御装置。
【請求項９】
前記所定の条件を満たしていないと判断された場合、前記書き出し候補の各直接アドレスデータブロックについて、前記ディスクアレイに書き込まれるデータを一時的に格納するキャッシュメモリのＤｉｒｔｙ率及び前記アドレス変換テーブルの使用率に基づいて、書き込み方式を決定する手段をさらに具備することを特徴とする請求項８記載のディスクアレイ制御装置。
【請求項１０】
前記所定の条件を満たしていないと判断された場合、前記書き出し候補の直接アドレスデータブロックの選択は、使用率の高いキャッシュの列に属する直接アドレスデータブロックから順に選択することを特徴とする請求項９記載のディスクアレイ制御装置。
【請求項１１】
ディスクアレイの物理クラスタの状態を管理する物理クラスタ管理テーブルと、論理ブロック番号と、前記論理ブロック番号に対応する物理ブロック番号とを対応付けて記憶するアドレス変換テーブルとを具備するディスクアレイ制御装置におけるデータ書き込み方法において、
書き込み対象となるデータブロックの物理ブロック番号が前記アドレス変換テーブルに登録されているか否かを判断し、
前記書き込み対象となるデータブロックの物理ブロック番号が前記アドレス変換テーブルに登録されていると判断された場合、前記物理クラスタ管理テーブルを参照して、空き物理クラスタを確保することができるか否かを判断し、
空き物理クラスタを確保することができると判断された場合、前記空き物理クラスタを確保し、この確保された空き物理クラスタに前記書き込み対象となるデータブロックを書き込むステップを具備し、
アドレス変換を必要とせずにアクセスできるデータブロックのみからなる直接アドレスクラスタと、アドレス変換を必要とするデータブロックを含む間接アドレスクラスタとを混在させてディスクアレイを管理することを特徴とするディスクアレイ制御装置におけるデータ書き込み方法。
【請求項１２】
空き物理クラスタを確保することができないと判断された場合、前記書き込み対象となるデータブロックを前記アドレス変換テーブルに登録されている前記書き込み対象となるデータブロックに対応する物理ブロックアドレスに書き込むステップをさらに具備することを特徴とする請求項１１記載のディスクアレイ制御装置におけるデータ書き込み方法。
【請求項１３】
前記書き込み対象となるデータブロックの物理ブロック番号が前記アドレス変換テーブルに登録されていないと判断された場合に、前記書き込み対象となるデータブロックが属する論理クラスタを登録するためのエントリが前記アドレス変換テーブルに存在するか否かを判断し、
前記アドレス変換テーブルに前記書き込み対象となるデータブロックが属する論理クラスタを登録するためのエントリが存在すると判断された場合に、前記書き込み対象となるデータブロックが属する論理クラスタの物理ブロック番号を全て前記アドレス変換テーブルに登録し、
前記アドレス変換テーブルに新たに登録された前記書き込み対象となるデータブロックに対して登録される物理ブロック番号として、前記空き物理クラスタ中の書きこみ先のデータブロックの物理ブロック番号を登録するステップをさらに具備することを特徴とする請求項１１記載のディスクアレイ制御装置におけるデータ書き込み方法。
【請求項１４】
前記書き込み対象となるデータブロックが属する論理クラスタが前記アドレス変換テーブルに登録されている場合には、前記アドレス変換テーブルに登録されている前記データブロックの属する論理クラスタ番号に対応する物理ブロック番号を使用してアクセスを行ない、
前記書き込み対象となるデータブロックが属する論理クラスタが前記アドレス変換テーブルに登録されていない場合には、前記データブロックの論理ブロック番号を物理ブロック番号として使用してアクセスを行なうことを特徴とする請求項１１記載のディスクアレイ制御装置におけるデータ書き込み方法。
【請求項１５】
前記間接アドレスクラスタに配置する論理データブロックの総数が、前記アドレス変換テーブルのエントリの総数の範囲内に制限されることを特徴とする請求項１１記載のディスクアレイ制御装置のデータ書き込み方法。
【請求項１６】
次の書き出し対象とする空き物理クラスタが存在するか否か、或いは現在書き出し対象の物理クラスタに空き物理ブロックが存在するか否かを判断し、
存在すると判断された場合に、書き出し候補の論理ブロックに、要求された論理アドレスとは異なるディスク上の物理アドレスに書き込まれている間接アドレスデータブロックが存在するか否かを判断し、
前記書き出し候補の論理ブロックに前記間接アドレスデータブロックが存在すると判断された場合に、最も有効ブロック数の少ない物理クラスタに属している間接アドレスデータブロックを選択し、
前記選択された間接アドレスデータブロックを前記書き込み対象となるデータブロックとして書き込むことを特徴とする請求項１１記載のディスクアレイ制御装置におけるデータ書き込み方法。
【請求項１７】
空き物理クラスタが存在しない、或いは現在書き出し対象の物理クラスタに空き物理ブロックが存在しないと判断された場合に、書き込み対象のブロックを前記書き込み対象となるデータブロックを前記アドレス変換テーブルに登録されている前記書き込み対象となるデータブロックに対応する物理ブロックアドレスに書き込むステップをさらに具備することを特徴とする請求項１６記載のディスクアレイ制御装置におけるデータ書き込み方法。
【請求項１８】
書き出し候補の論理ブロックに、要求された論理アドレスとは異なるディスク上の物理アドレスに書き込まれている間接アドレスデータブロックが存在しないと判断された場合に、書き出し候補の直接アドレスデータブロックのうち、アドレスが連続する最長の直接アドレスデータブロックの列を選択し、
前記選択された直接アドレスデータブロックの列が所定の条件を満たしている場合、前記選択された直接アドレスデータブロックの列を書き込むステップをさらに具備することを特徴とする請求項１６記載のディスクアレイ制御装置におけるデータ書き込み方法。
【請求項１９】
前記所定の条件を満たしていないと判断された場合、前記書き出し候補の各直接アドレスデータブロックについて、前記ディスクアレイに書き込まれるデータを一時的に格納するキャッシュメモリのＤｉｒｔｙ率及び前記アドレス変換テーブルの使用率に基づいて、書き込み方式を決定するステップをさらに具備することを特徴とする請求項１８記載のディスクアレイ制御装置におけるデータ書き込み方法。
【請求項２０】
前記所定の条件を満たしていないと判断された場合、前記書き出し候補の直接アドレスデータブロックの選択は、使用率の高いキャッシュの列に属する直接アドレスデータブロックから順に選択することを特徴とする請求項１９記載のディスクアレイ制御装置におけるデータ書き込み方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機システムのディスクアレイ制御装置及びこのようなディスクアレイ制御装置におけるデータ書き込み方法に関する。
【０００２】
【従来の技術】
従来、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ　Ａｒｒａｙ　ｏｆ　Ｉｎｄｅｐｅｎｄｅｎｔ　Ｄｉｓｋｓ）の高速化方式の１つとして、制御対象の論理ディスクの全てのユーザ領域に関してクラスタ単位でのログ化書きこみ（ログ構造化ファイルシステム）を行っていた。
【０００３】
この方式では、特に、ＲＡＩＤ５に対する複数のランダムライト要求に対して、それらを一続き、かつクラスタサイズで物理ディスクに対して一括して書きこむということをしていた。この結果、従来パリティの再計算のために必要であった、ライト処理前のデータ（元のデータ、及び書きこむ前のパリティの値）のリードを省くことができ、効率の良いライト処理を実現していた。このような技術としては、例えば、特開平１１−５３２３５号公報、特開２００１−１８４１７２号公報、特開２００２−１４７７６号公報に開示されている。
【０００４】
【発明が解決しようとする課題】
しかしながら、このようなＲＡＩＤ高速化方式では、対象の論理ディスクの全てのユーザ領域のデータブロック管理単位に対してアドレス変換テーブルでアドレス変換を行なう必要があった。このため、制御対象の論理ディスクの容量に比例したサイズのアドレス変換テーブルが必要であり、論理ディスクを構成するディスクのサイズが大きい場合や、ディスク台数が多い時には、論理ディスクの容量が大きくなり、そのアドレス変換テーブルはＲＡＩＤコントローラが使えるメモリの容量を越えてしまいかねなかった。
【０００５】
この問題を回避するために、例えば、以下の２つの方法が考えられる。
【０００６】
１．　ディスク上にアドレス変換テーブルを置き、現在参照しているエントリを含むアドレス変換テーブルのサブセットのみメモリ上にロードしてアクセスし、変更したアドレス変換テーブルのサブセットは適切なタイミングでディスク上に書き戻す（アドレス変換テーブルのキャッシング）。このようにして、限りあるメモリ容量で大きなアドレス変換テーブルを管理する。
【０００７】
２．　使用できるメモリに収まるアドレス変換テーブルのサイズで制御できるだけのサイズに論理ディスクの容量を制限する。
【０００８】
しかし、上記（１）の方法は、アドレス変換テーブルのサイズに制約が無くなり、制御対象の論理ディスクの大きさも制限しなくて良いというメリットがあるものの、一方でディスクからのアドレス変換テーブルのロード・リストアにある程度の時間がかかり、かつ、その処理が終らないとアドレス決定が出来ないため本来のユーザデータのためのＩ／Ｏ処理も止まってしまい、結局ターンアラウンドタイムが大きくなり、性能ダウンの要因になりかねない。
【０００９】
また、上記（２）の方法は、上記のような性能面でのデメリットは無いが、代りに論理ディスクの容量がアドレス変換テーブルを置くためのメモリの大きさによって制限されるというデメリットがある。
【００１０】
本発明は、アドレス変換テーブルに使用するメモリの量を一定にしたまま、制御対象の論理ディスクの容量に制約を課さずにデータの高速書きこみを実現することができるディスクアレイ制御装置を提供する目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、本発明の第１の発明は、ディスクアレイの物理クラスタの状態を管理する物理クラスタ管理テーブルと、論理ブロック番号と、前記論理ブロック番号に対応する物理ブロック番号とを対応付けて記憶するアドレス変換テーブルと、書き込み対象となるデータブロックの物理ブロック番号が前記アドレス変換テーブルに登録されているか否かを判断する手段と、前記書き込み対象となるデータブロックの物理ブロック番号が前記アドレス変換テーブルに登録されていると判断された場合、前記物理クラスタ管理テーブルを参照して、空き物理クラスタを確保することができるか否かを判断する手段と、空き物理クラスタを確保することができると判断された場合、前記空き物理クラスタを確保し、この確保された空き物理クラスタに前記書き込み対象となるデータブロックを書き込む手段とを具備し、アドレス変換を必要とせずにアクセスできるデータブロックのみからなる直接アドレスクラスタと、アドレス変換を必要とするデータブロックを含む間接アドレスクラスタとを混在させてディスクアレイを管理することを特徴とするディスクアレイ制御装置、である。
【００１２】
また、本発明の第２の発明によれば、次の書き出し対象とする空き物理クラスタが存在するか否か、或いは現在書き出し対象の物理クラスタに空き物理ブロックが存在するか否かを判断する手段と、存在すると判断された場合に、書き出し候補の論理ブロックに、要求された論理アドレスとは異なるディスク上の物理アドレスに書き込まれている間接アドレスデータブロックが存在するか否かを判断する手段と、前記書き出し候補の論理ブロックに前記間接アドレスデータブロックが存在すると判断された場合に、最も有効ブロック数の少ない物理クラスタに属している間接アドレスデータブロックを選択する手段とをさらに具備し、前記選択された間接アドレスデータブロックを前記書き込み対象となるデータブロックとして書き込むことを特徴とする請求項１記載のディスクアレイ制御装置、である。
【００１３】
【発明の実施の形態】
まず、最初に、本発明の実施の形態において使用する用語の定義について説明する。
【００１４】
１．　ストライプセット
ＲＡＩＤは、複数のディスクから論理ディスクを構成する際にストライピングという方法で論理ディスクのアドレス空間を一定サイズ毎に順番に物理ディスクに割り振る。この一定サイズのデータをストライプと呼ぶ。
【００１５】
特に、ＲＡＩＤ５の場合には、データストライプ（複数）とそれに対応するパリティストライプを１つの組にしてパリティデータの生成及びいずれか１つのディスク障害時におけるデータ再生処理を行なう。
【００１６】
ＲＡＩＤ５の論理ディスク上で、一続きの領域で「ＲＡＩＤコントローラが管理するストライプサイズのディスク台数倍（データはストライプサイズの「ディスク台数−１」）」のサイズであり、かつ、そこに含まれる各ディスクのストライプサイズのデータは、それに１つだけ含まれるパリティストライプに対応するようなストライプのグループのことを「ストライプセット」と呼ぶ。
【００１７】
例えば、図１３は、３台のディスクから構成されるＲＡＩＤ５の論理ディスクである。Ｓ０、Ｓ１、・・・はストライプを示しており、例えば６４ＫＢなどの固定長である。Ｐ０、Ｐ１、・・・はパリティブロックであり、ストライプサイズである。この図で「Ｓ０、Ｓ１、Ｐ０」はストライプセットである。同様に「Ｓ２、Ｐ１、Ｓ３」、「Ｐ２、Ｓ４、Ｓ５」はそれぞれストライプセットである。なお、論理ディスク上では、データストライプの並びは、Ｓ０、Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、・・・であり、パリティのストライプは上位にはデータとして見えない。
【００１８】
ＲＡＩＤ５に対して、このサイズの整数倍のサイズを一括して書きこむことにより、パリティ再計算のためのディスクからのデータリードを省くことができ、大幅な性能向上を実現できる。これがＲＡＩＤの高速化方式の一手法である。
【００１９】
２．　クラスタ
ディスクの物理アドレス空間をストライプセットのサイズあるいはその整数倍の大きさ毎、かつストライプセット境界で区分した各データ単位。本方式では間接アドレスデータブロックからなるデータを「クラスタ」の単位でディスクに書き出す。ここで、直接アドレスとはアドレス変換を必要とせずにアクセスできることを意味し、間接アドレスとはアドレス変換を行なわなければアクセスすることができないことを意味する。
【００２０】
３．　アドレス変換テーブル
ＲＡＩＤ高速化方式では、ホスト計算機のファイルシステムがアクセスを要求する時のブロック番号は、論理ブロック番号であり、仮想的なブロック番号である。この論理ブロック番号は，ＲＡＩＤコントローラが管理する「アドレス変換テーブル」によって物理ブロック番号（論理ディスク上のブロック番号）と対応づけられる。
【００２１】
アドレス変換テーブルは対象の論理ディスク上に有り、データ部と別の領域が割り当てられる。アドレス変換テーブルは、論理ブロック番号に対する物理ブロック番号が登録されたれたテーブルである。新たにデータブロックを書き込む時には、相当する論理ブロック番号のエントリに、そのブロックを書き込む物理ブロック番号（＝論理ディスク上のブロック番号）を登録する。逆にデータブロックを参照する際には、その論理アドレスに対して登録されている値を求め、その値を論理ディスク上のブロック番号として実際のアドレスを求め参照する。
【００２２】
４．　データブロック管理単位（ブロック）
本発明の実施の形態に係るディスクアレイ制御装置のＲＡＩＤコントローラがデータを管理する単位であり固定長（例えば４ＫＢ）である。必要に応じて、この単位でアドレス変換テーブルにアドレスを登録して管理する。
【００２３】
５．　論理ブロック番号
「論理ブロック番号」とは、ＲＡＩＤコントローラがホスト計算機など上位から受け取るＩ／Ｏのアクセス要求アドレスをＲＡＩＤコントローラが管理するデータブロック管理単位で換算した番号である。ＲＡＩＤ高速化方式では、ホスト計算機から要求される時のブロック番号は、論理ブロック番号であり、仮想的なブロック番号である。この論理ブロック番号はＲＡＩＤコントローラが管理する「アドレス変換テーブル」によって物理ブロック番号（論理ディスク上のブロック番号）と対応づけられる。（物理ブロック番号）×（ブロックサイズ［Ｂｙｔｅ］）より論理ディスク上でのバイトオフセット値（アドレス）が求まる。
【００２４】
６．　「直接アドレスデータブロック」
本発明の実施の形態において、アドレス変換テーブルに登録されていないデータブロック管理単位。その論理ブロック番号をもって物理ブロック番号とする。
【００２５】
すなわち、本来要求されたアドレス通りにディスク上に置かれている（書き込まれる）ブロックである。
【００２６】
７．　「間接アドレスデータブロック」
本発明の実施の形態において、アドレス変換テーブルに登録されているデータブロック管理単位である。　アドレス変換テーブル上のその論理アドレス番号に対応する（登録されている）物理ブロック番号をもってアクセス時のアドレスを求める。
【００２７】
すなわち、本来要求されたアドレスとは異なるディスク上のアドレスに置かれている（書き込まれる）ブロックである。
【００２８】
８．　直接アドレスクラスタ
「直接アドレスデータブロック」からなるクラスタである。
【００２９】
９．　間接アドレスクラスタ
「間接アドレスデータブロック」からなるクラスタである。
【００３０】
１０．　論理クラスタ
上位からのデータアクセスに用いるアドレス空間を「論理アドレス空間」とよぶ。論理アドレス空間を先頭から「クラスタ」単位に区切った時のデータ単位を「論理クラスタ」と呼ぶ。
【００３１】
１１．　物理クラスタ
論理クラスタに対して論理ディスク上のクラスタを「物理クラスタ」と呼ぶ。以降で「クラスタ」とある場合には「物理クラスタ」を指すことにする。
【００３２】
１２．　リパック処理
ログ化クラスタの有効なブロックを集めることにより、空き物理クラスタを生成する処理をいう。
【００３３】
本発明の実施の形態に係るディスクアレイ制御装置は、以下の条件を前提としている。
【００３４】
１．　ＲＡＩＤコントローラの制御アルゴリズムに関し、ＲＡＩＤコントローラのファームウェアとして実装される。
【００３５】
２．　ＲＡＩＤで論理ディスクが構成されている。
【００３６】
３．　ＲＡＩＤコントローラに対するライトデータに関して、高速化モジュールがそのアドレスをアドレス変換テーブルに登録することにより変換し、たとえそれらがアドレスが連続していない一連のライトデータブロックであってもディスク上の連続アドレスとなるようにアドレス変換して書き込む。なお、高速化モジュールとは、本発明の実施の形態をＲＡＩＤコントローラのファームウェアの一部としてモジュールの形で実装したものである。この高速化モジュールによりＲＡＩＤコントローラの処理性能が向上する。
【００３７】
４．　上記ディスク上の連続アドレスとして書き込むサイズは、ディスク上のパリティや元のデータを読みこむ必要がないため、ディスクに効率よく書き込める「ストライプセット（あるいはその整数倍）」である。
【００３８】
以下、図面を参照して、本発明の実施の形態に係る計算機システムのディスクアレイ制御装置について説明する。
【００３９】
図１は、本発明の実施の形態に係る計算機システムの構成を示す図である。
【００４０】
同図に示すように、ＣＰＵバス１には、ＣＰＵ２及びメインメモリ３が接続されている。
【００４１】
ＣＰＵ２は、計算機システム全体の制御を司るものであり、メインメモリ３を作業領域などに使用する。ＣＰＵバス１は、ＰＣＩ−ＰＣＩブリッジ４を介してＰＣＩバス５に接続されている。
【００４２】
ＰＣＩバス５には、ＲＡＩＤコントローラＰＣＩカード１１が接続されている。このＲＡＩＤコントローラＰＣＩカード１１は、ＰＣＩ−ＰＣＩブリッジ１２、内部バス１３、キャッシュメモリ１４、ＳＣＳＩコントローラ１５、専用ＣＰＵ１６、ローカルＲＡＭ１７及びフラッシュＲＯＭ１８を具備している。
【００４３】
ＰＣＩ−ＰＣＩブリッジ１２は、ＰＣＩバス５と内部ＰＣＩバス１３とのブリッジ制御を行なう。この内部ＰＣＩバス１３には、キャッシュメモリ１４、ＳＣＳＩコントローラ１５及び専用ＣＰＵ１６が接続される。専用ＣＰＵ１６には、ローカルＲＡＭ１７及びフラッシュＲＯＭ１８が接続されている。
【００４４】
キャッシュメモリ１４は、計算機がディスクに対してアクセスするデータが一時的に置かれ、アクセス速度向上の目的に使われる。あるいは、ＲＡＩＤ５の論理ディスクに関してはパリティ計算のための領域としても使用される。キャッシュメモリ１４の制御には、例えば一般的にはセットアソシアティブ等の管理方式が取られている。
【００４５】
ＳＣＳＩコントローラ１５は、ＲＡＩＤコントローラＰＣＩカード１１からディスクにアクセスする際のインターフェイスである。専用ＣＰＵ１６が、ＳＣＳＩコントローラ１５に指示することよりキャッシュメモリ１４と、各ディスク２１−１〜２１−ｎとの間のデータ転送や、各ディスクに対するＳＣＳＩコマンドの送信が行なわれる。
【００４６】
ローカルＲＡＭ１７は、専用ＣＰＵ１６の制御プログラムの処理に必要な作業データ領域になる。フラッシュＲＯＭ１８には、専用ＣＰＵ１６の制御プログラムが格納されている。ＳＣＳＩコントローラ１５は、ＳＣＳＩバス２０を介して、ディスク２１−１〜２１−ｎに接続されている。
【００４７】
図２は、本発明の実施の形態に係る計算機システムのキャッシュメモリ１４の構成を示す図である。このキャッシュメモリ１４は、セットアソシアティブ方式で管理されるＲＡＩＤコントローラのキャッシュメモリである。
【００４８】
同図に示すように、このキャッシュメモリ１４は、セット数はｍ、ウェイ数はｎである。升目は１つのキャッシュブロックを示す。ここでは、４ＫＢや１６ＫＢの大きさと仮定する。
【００４９】
キャッシュ管理テーブルは、キャッシュメモリ同様（ｍ、ｎ）の２次元配列になっている。そのエントリには（有効ビット３１、更新ビット３２、その他ビット３３、タグ３４）が入っている。有効ビット３１は、キャッシュメモリの有効／無効（有効なデータが入っているか否か）が１ビットで示されており、更新ビット３２には、キャッシュメモリ内データが更新されているか否かが１ビットで示されており、更にその他の管理に用いるビット３３があり（説明省略）、　タグ３４にはデータブロック番号がセットされている。
【００５０】
リード／ライトデータをキャッシュメモリに入れる際には、アドレスから以下の式によりセット番号を求める。
【００５１】
（セット番号）＝（ブロック番号）ｍｏｄ（セット数ｍ）
セット番号を決定した後、キャッシュ管理テーブルを参照し、そのセットの空きエントリの有無を確認する。空きエントリがあれば、そのエントリに相当するキャッシュ管理テーブルのエントリにそこを使う。空きエントリがなければ、同じ「列」に属するキャッシュブロックを空けてそこを確保するか、あるいはキャッシュを使わずに処理を行う。
【００５２】
図３は、ＲＡＩＤ高速化方式におけるディスクの論理ディスクアドレス空間のレイアウトを示す図であり、（ａ）は物理ディスク上のストライプ配置を示す図であり、（ｂ）は論理ディスク上のストライプ配置とレイアウトを示す図である。
【００５３】
図３において、ｄ０、ｄ１、・・・はデータを含むストライプを示す。ストライプは、例えば６４ＫＢ程度のサイズである。また、ｐ０、ｐ１、ｐ２、・・・は、それぞれ（ｄ０、ｄ１）、（ｄ２、ｄ３）、（ｄ４、ｄ５）のパリティストライプである。
【００５４】
ここで、（ｄ０、ｄ１、ｐ０）、（ｄ２、ｐ１、ｄ３）、（ｐ２、ｄ４、ｄ５）はそれぞれ「ストライプセット」である。
【００５５】
この例では、２ストライプセットを１クラスタとする。よって、物理クラスタ０は、ｄ０、ｄ１、（ｐ０、）ｄ２、（ｐ１、）ｄ３、物理クラスタ１は、（ｐ２、）ｄ４、ｄ５、ｄ６、ｄ７（、ｐ３）となる。
【００５６】
論理ディスク全体は、「直接アドレス領域」、「マージン領域」、「管理データ領域」の３つの領域に分かれている。
【００５７】
「直接アドレス領域」は、上位（ホスト計算機）に見せるディスクとして使用可能なサイズ分だけ確保する。例えば、論理ディスクとして１００ＧＢの容量を使用可能とする場合には「直接アドレス領域」のサイズは１００ＧＢとなる。
【００５８】
「マージン領域」は、複数の物理クラスタで構成される。本方式のログ化書き込みを繰り返すことによって、書き込み直後には有効なデータブロックが１００％詰まっていた状態の物理クラスタは、引き続き繰り返される間接アドレス物理クラスタの書き込みにより、論理データブロックが新しい物理ブロック番号の位置に移動する結果として、間接アドレス物理クラスタの有効なブロックの割合はどんどん下がっていく。この結果、直接アドレス領域の物理クラスタだけでは、全ての論理ブロックを収めることができなくなる。予め大目に物理クラスタをマージン領域として用意することにより、ログ化クラスタを書き込んでも空の物理クラスタが存在するようになり、間接アドレス物理クラスタを書き込むことができるようになる。
【００５９】
ただし、いずれ間接アドレス物理クラスタの数が増えて、空クラスタが無くなる状態に至る。この状態を避けるためにも、ＲＡＩＤコントローラの負荷が低いときなどに有効なデータを含む物理ブロックを集めて、空き物理クラスタを生成する処理を行なう（リパック処理）。
【００６０】
「管理データ領域」は、この論理ディスク全体を管理するためのデータ構造を置くための領域である。この領域には、アドレス変換テーブル、その他管理情報が含まれる。アドレス変換テーブルは、システム起動時に、ＲＡＩＤコントローラのキャッシュメモリの一部にロードされ、システム停止時にはディスクに書き戻される。他の管理情報に関しても必要に応じて同様にロード／セーブされる。
【００６１】
図４は、図３に相当する「論理アドレス空間」のレイアウトを示す図である。
【００６２】
論理アドレス空間は、「ＲＡＩＤコントローラの外から見える論理ディスクのアドレス空間」である。例えば、ホスト計算機は「論理アドレス空間」に対してファイルシステムを構築してデータをアクセスする。あくまでも１つのディスクとして扱う。
【００６３】
同図において、「論理クラスタ」を構成するデータブロックが全て「直接アドレスデータブロック」の場合には、その「論理クラスタ番号」はそれらデータブロックが置かれる「物理クラスタ」の番号と一致する。このようなクラスタを「直接アドレス物理クラスタ」、「直接アドレス論理クラスタ」、あるいは単に「直接アドレスクラスタ」と呼ぶ。
【００６４】
図５は、アドレス変換テーブルを示す図である。
【００６５】
論理クラスタが「間接アドレスクラスタ」の場合には、それを構成するデータブロック管理単位は「論理ブロック番号」と異なる「物理ブロック番号」に相当するディスク上のアドレスに割り当てられている。
【００６６】
この「論理ブロック番号」と「物理ブロック番号」との対応を記録管理しているのが「アドレス変換テーブル」である。従来のＲＡＩＤ高速化方式では、全ての論理ブロックに対するエントリがアドレス変換テーブルに用意されていた。対して本発明の実施の形態では、アドレス変換テーブルに使えるメモリ量が制限されており全ての論理ブロックがアドレス変換テーブルに登録される訳でなく、一部のみが登録できるという前提で考える。登録できない論理ブロックに関しては、その論理ブロック番号がすなわち物理ブロック番号を示すものとして扱う。
【００６７】
よって、「間接アドレスクラスタ」に属する「データブロック管理単位」のみがアドレス変換テーブルに登録されている。
【００６８】
アドレス変換テーブルは「間接アドレス論理クラスタ」単位で登録される。逆に、「直接アドレス論理クラスタ」に属するデータブロック管理単位はアドレス変換テーブルに登録されていない。
【００６９】
同図においては、１論理クラスタは８データブロックで構成されるものと仮定しており、「論理クラスタ番号」、「論理ブロック番号」、「物理ブロック番　号」の３つ組のテーブルエントリになっている。しかし、本来「論理ブロック　　　　番号」の項目は不要である。代わりに、以下のように求めることができるからで　　　　ある（アドレス変換テーブルが使用するメモリ量を節約するためには「論理ブ　　　　ロック番号を省くほうが良い）。
【００７０】
このテーブルの主な使用目的は、特定の「論理ブロック番号」がアドレス変換テーブルに登録されているか否かの判別と、登録されていた場合に、その論理ブロック番号に割り当てられている「物理ブロック番号」の値を知ることである。
【００７１】
今、「論理ブロック番号」ＬＢｎがあるとき、その論理クラスタ番号は、
「論理クラスタ番号」
Ａ　＝　（ＬＢｎ）　／　「論理クラスタあたりのデータブロック数」
（ただし、「／」は整数の割り算を示す）
で求められ、「論理クラスタ内のブロックオフセット番号」は
「論理クラスタ内ブロックオフセット番号」
Ｂ　＝　（ＬＢｎ）　ｍｏｄ　「論理クラスタあたりのデータブロック数」
ただし、「ｍｏｄ」はｍｏｄｕｌｏ演算を示す）
となる。よって、アドレス変換テーブルを参照し論理クラスタ番号がＡで、そのクラスタにＢ番目に登録されている物理ブロック番号を求めればよい。
【００７２】
次に、本発明の実施の形態に係るディスクアレイ制御装置のライト動作の基本的な処理の流れについて、図６のフロチャートを参照して説明する。
【００７３】
図６は、１つのデータブロック管理単位ＬＢｉ　をディスクに書き出す時の処理の流れを示している。
【００７４】
図６の説明のために、具体的に、図７（ａ）〜図７（ｃ）のような状況を考える。以降、説明のために、ブロック数、テーブルのエントリ数などは実際のシステムより遥かに少ない数で示してある。
【００７５】
図７（ａ）は、論理ディスク上の物理クラスタの様子を示している。ここで、ＬＢ０、ＬＢ１、・・・は、それぞれ論理ブロックを示しており、論理ブロック番号を添え字で表している。
【００７６】
この例では、物理クラスタは４つのデータブロックで構成される。例えば、物理クラスタ０はＬＢ０〜ＬＢ３の４つのデータブロックで構成されている。
【００７７】
この例では、論理ディスク上のデータ領域には１６個の物理クラスタが存在する。ただし、論理ディスクの「論理アドレス空間」の広さは物理クラスタ１３個分であり、この数だけ「論理クラスタ」が存在する。
【００７８】
なお、物理クラスタ０〜１２の範囲には直接アドレスデータブロックが存在しうる。この領域を「直接アドレス領域」と呼ぶ。物理クラスタ１３〜１５は「マージン領域」である。この部分には「間接アドレスデータブロック」のみ配置できる。
【００７９】
図７（ａ）においては、全ての論理ブロックは、その番号に等しい物理ブロック番号の位置に配置されている。すなわち、全ての論理クラスタは「直接アドレスクラスタ」である。また、マージン領域には有効なデータブロックは配置されていない。
【００８０】
図７（ｂ）は、図７（ａ）に示される全ての物理クラスタの状態を管理するテーブルであり、ＲＡＩＤコントローラのキャッシュメモリに置かれる。インデックスは物理クラスタ番号である。とりうる値は、
直接アドレスクラスタ　・・・クラスタ内の全てのブロックが直接アドレスデータブロックである
間接アドレスクラスタ・・・クラスタ内に１つ以上の間接アドレスデータブロックが含まれる
空クラスタ　・・・クラスタ内に１つも有効なブロックが含まれない
の３つである。
【００８１】
ここでは、物理クラスタ０〜１２は「直接アドレスクラスタ」、それ以外は「空クラスタ」になっている。
【００８２】
図７（ｃ）は、アドレス変換テーブルであり、ＲＡＩＤコントローラのキャッシュメモリに置かれる。間接アドレスの論理クラスタの番号と、それを構成する論理ブロックが配置されている物理ブロック番号が４つ分登録される。この状態で、アドレス変換テーブルには何も登録されていない（間接アドレス論理クラスタが存在しないため）。なお、この例では、４つの論理クラスタ分のブロックを登録するだけの大きさのアドレス変換テーブルが用意されているものとする。
【００８３】
ここで、ＬＢ９、ＬＢ６、ＬＢ８、ＬＢ０、ＬＢ１７、ＬＢ１５、ＬＢ２、ＬＢ７、ＬＢ６…の順番で論理ブロックをディスクに書き出す際の様子を説明する。
【００８４】
図６において、最初ＬＢｉは「ＬＢ９」である。ステップ６０１では、ＬＢ９はＡＭＴ（アドレス変換テーブル）に登録されていないので、ステップ６０２に進む。
【００８５】
ステップ６０２で、ＬＢ９が属する「直接アドレス論理クラスタ」２を登録するのに必要なエントリがアドレス変換テーブルに存在するので、ステップ６０３に進み、「論理クラスタ」２（の全てのブロック）をアドレス変換テーブルに登録する。すなわち、アドレス変換テーブルの最初の「論理クラスタ番号」に「２」、その物理ブロック番号に「８、９、１０、１１」を登録する（ステップ６０３）。
【００８６】
ステップ６０６に進み、現在書き込み中の物理クラスタＰＣが存在しないので、ステップ６０７に進み、空き物理クラスタを探す。ここで、物理クラスタＰＣとは、ステップ６０９において確保されるクラスタであり、最初の書き込みの段階では存在しない。
【００８７】
図７（ｂ）に示された物理クラスタ管理テーブルより、物理クラスタ１３が「空クラスタ」であることを知り、それを物理クラスタＰＣとして選択するとともに、物理クラスタ管理テーブルの物理クラスタ１３に「間接アドレスクラスタ」と記す（ステップ６０８、６０９）。
【００８８】
ステップ６１２で物理クラスタ１３の先頭ブロック（物理ブロック番号５２）を、ＬＢ９に割り当てて、ステップ６１３でアドレス変換テーブル（ＡＭＴ）の論理ブロック番号９のエントリに「５２」を登録する。なお、図６において、ＰＢｎｅｘｔは、書き込みのためのポインタを意味する。
【００８９】
ステップ６１４で、物理クラスタ１３には、まだ空のブロックが３つ残っているので、ステップ６１６に進み、まだ実際の書き出しは行なわない。例えば、図８（ｄ）に示すように、１クラスタ分のライトバッファをメモリ上に用意し、ここに書き込みが決まった論理ブロックのデータを置いておき、ステップ６１４で物理クラスタに書き込む全てのブロックが決定した時点で、ステップ６１５で一括して物理クラスタに書き出すようにする。
【００９０】
ここまで処理が進んだ状態を、図８に示す。図８（ａ）は、物理クラスタの図で、初めＬＢ９が置かれていた物理ブロック番号９の位置には、既にＬＢ９の最新のデータはない。
【００９１】
新たに書き込まれたＬＢ９のデータは、物理クラスタ１３の先頭ブロックに書かれることが予約されており、実際のデータは、図８（ｄ）に示すように、ライトバッファに収められている。図８（ｂ）に示した物理クラスタ管理テーブル上では、物理クラスタ２、１３が「間接アドレスクラスタ」と記され、図８（ｃ）に示すアドレス変換テーブルには、論理クラスタ２が登録され、特に書き込み対象のＬＢ９の物理ブロック番号は物理クラスタ１３の先頭ブロックの番号である５２が対応付けられる。
【００９２】
同様にして、図６のフローチャートに従って、上記順番（ＬＢ９、ＬＢ６、ＬＢ８、ＬＢ０、ＬＢ１７、ＬＢ１５、ＬＢ２、ＬＢ７、ＬＢ６…）で論理ブロックを処理した時点の様子を図９に示す。図９（ａ）において、×がついているところは、書き込みによって無効（古くなった）データを示す。ＬＢ１５は、ステップ６０２でアドレス変換テーブルに空きが無いために現在の物理ブロック番号の位置に重ね書きされていることを示している。
【００９３】
なお、このように現在の論理データブロックが置かれている物理ブロック番号の位置にそのまま新しい書き込みを行うことを本発明の実施の形態では「オーバライト」と呼んでいる。
【００９４】
また、上記順番（ＬＢ９、ＬＢ６、ＬＢ８、ＬＢ０、ＬＢ１７、ＬＢ１５、ＬＢ２、ＬＢ７、ＬＢ６…）のような書き込みは、ランダムライトと言われる書き込みパターンである。すなわち、論理アドレスがばらばらの書き込み順序になっており、通常、ディスクにこの順番に書き込むとシークが発生するなどして効率が悪い。
【００９５】
図９（ａ）の時点で、ディスクに書き込まれた部分は、物理クラスタ１３、１４である。それぞれストライプセット（の倍数）の単位で一括して書き込むので、パリティ計算のためのリードが発生せず、かつディスク上でシークする範囲が狭いので、非常に効率よく、高速に、書き込みが行える。
【００９６】
本実施の形態においては、間接アドレスクラスタとして配置する論理データブロックの総数は、前記アドレス変換テーブルのエントリの総数の範囲内に制限される。
【００９７】
すなわち、固定サイズのアドレス変換テーブルに登録できる範囲内で、間接アドレスクラスタとして一括書き込みが可能なため、従来のようにアドレス変換テーブルのサイズで、対象の論理ディスクの容量を制限する必要がない。
【００９８】
なお、ステップ６０８で空き物理クラスタを確保できなかった場合には、ＬＢｉをオーバライトで、現在の（それまでの）その論理データブロックが置かれている物理ブロックのアドレスに書き出す（ステップ６１０）。また、Ｓ６０２において、アドレス変換テーブルに十分なエントリが存在しないと判断された場合には、書き込み対象となる論理ブロックＬＢｉを直接アドレスデータブロックとして書き込む（ステップ６０４）。
【００９９】
なお、ステップ６１２、６１３では、まだディスク上の物理ブロック番号のアドレスにデータは書き込まれておらず、ライトバッファ上におかれたままとなっている。従って、これらデータをリードしたいときには、ディスクに書き込まれるまでの間はライトバッファを参照する必要がある。
【０１００】
ライトバッファに関しては、この例では、１物理クラスタ分のメモリを確保して、ライトデータを置くようにしたが、書き出すデータがキャッシュメモリ上に存在するときには、そのキャッシュメモリへのポインタ列として管理しても良い。このような実装により、データコピーのオーバヘッドをなくすことができる。
【０１０１】
図１０は、本発明の実施の形態に係るディスクアレイ制御装置の書き出し処理全体の動作を説明するためのフロチャートである。
【０１０２】
この処理は、例えば、ＲＡＩＤコントローラのＤｉｒｔｙキャッシュのディスクへの書き出し処理などに適用するロジックである。具体的には、定期的にＲＡＩＤコントローラのキャッシュからＤｉｒｔｙデータをディスクに書き出す処理を考える。キャッシュ上のＤｉｒｔｙデータの何れかを書き出さなければならない状況であり、書き出す必要がなくなるまで（例えば十分空きのキャッシュブロックが生じるまで）繰り返し実行されるものとする。なお、基本的な１データブロックの書き出しには、図６の処理を用いる。
【０１０３】
先ず、空き物理クラスタが存在しない、かつ、現在書き出し対象の物理クラスタに空き物理ブロックが存在しない場合を考える。
【０１０４】
この場合、以下のように考える。
【０１０５】
「空きクラスタ」がない、及び「現在書き出し対象の物理クラスタが存在しない」場合には、ログ化クラスタとしての書き出しはできない。このため、何れの論理ブロックを書き出し対象に選択しても、現在のその論理ブロックに割り当てられた物理ブロックに書き出す（オーバライト）しか選択肢は無い。
【０１０６】
しかしながら、いずれ空き物理クラスタが生じる可能性がある。例えば、リパック処理が同時に進んでいる可能性があり、あるいはやがて負荷が下がりリパック処理が優先的に動き出して空き物理クラスタが生成されるかもしれない。
【０１０７】
空き物理クラスタが生じた時点では、間接アドレスデータブロックを優先的にログ化クラスタの形式で書き出すのが有利である。間接アドレスデータブロックをログ化クラスタで書き出しても「アドレス変換テーブル」のエントリを新たに消費することは無いからである（既に登録されているため）。よって、直接アドレスデータブロックが書き出し候補として存在するなら、直接アドレスデータブロックを優先的にオーバライトで書き出すべきである。
【０１０８】
上記の考えに基づいて、Ｓ８０１において、空き物理クラスタが存在する或いは現在書き出した対象の物理クラスタに空き物理ブロックが存在するか否かの判断が行なわれ、存在しないと判断された場合には、Ｓ８０９において、オーバライト書き出しを試みる。
【０１０９】
図１１は、オーバライト書き込み処理の動作を説明するためのフロチャートである。
【０１１０】
同図に示すように、まず、ステップＳ９０１において、書き込み候補の直接アドレスデータブロックが存在するか否かの判断が行なわれる（Ｓ９０１）。Ｓ９０１において、直接アドレスデータブロックが存在すると判断された場合には、書き込み対象の直接アドレスデータブロックに関して、アドレスが連続する直接アドレスデータブロックの列のうち、最長のものを選択する（Ｓ９０２）。そして、選択した直接アドレスデータブロックの列をオーバライトで書きだす（Ｓ９０３）。Ｓ９０２において、最長の直接アドレスのブロックの列を選択するのは、オーバライトであっても大きなサイズで書き出すほうが効率が良いためである。また、この時、ストライプセットの境界かつストライプサイズで書き出すと最も効率がよい。
【０１１１】
このように、間接アドレスデータブロックの書き出しを遅らせることにより、空き物理クラスタが生じた時点で、アドレス変換テーブルのエントリ消費を伴わずにログ化ストライプ形式で高速にデータを書き出すことが可能になる。
【０１１２】
一方で、ステップ９０１で書き出し候補の直接アドレスデータブロックが存在しない場合を考える。
【０１１３】
この場合には、以下のように考える。
【０１１４】
１．　書き出し対象には間接アドレスデータブロックを選択するしかない。
【０１１５】
２．　書き出し処理にはある程度の時間を要する。
【０１１６】
３．　書き出し処理の間、書き出し処理対象の物理ストライプはリパック処理の対象にはなれない。
【０１１７】
４．　リパック処理の対象にしたい物理クラスタに属する間接アドレスデータブロックをここで書き出し対象に選ぶと、リパック処理の効率が悪化する。
【０１１８】
５．　現在は空き物理クラスタが少ないので、リパック処理の効率は悪くしたくない。
【０１１９】
６．　リパック対象にしたい物理クラスタとは、有効なデータブロックが少ない物理クラスタである（リパック処理では、有効ブロック数の少ない物理ストライプ同士を融合して空き物理ストライプを作るほうが効率がよい）。
【０１２０】
上記事情を考慮して、ここでは間接アドレスデータブロックのうち、最も有効ブロックを多く含んでいる物理ストライプに属するブロックを選択する。
【０１２１】
すなわち、Ｓ９０１において、直接アドレスデータブロックが存在しないと判断された場合には、候補の間接アドレスデータブロックのうち、最も有効ブロック数が多い物理クラスタに属する間接アドレスデータブロックを選択する（Ｓ９０４）。選択した間接アドレスデータブロックをオーバライトで書きだす（Ｓ９０５）。
【０１２２】
このように処理を進めることにより、リパック対象に有効ブロックの少ない物理クラスタを選択した際に、その物理クラスタに対する書き込みが行われる機会が少なくなるため、処理を続けることができリパックの効率が良くなる。
【０１２３】
図１０のＳ８０１において、空き物理クラスタが存在する、あるいは、現在書き出し対象の物理クラスタに空き物理ブロックが存在する場合を考える。
【０１２４】
この場合、以下のように考える。
【０１２５】
１．　ログ化クラスタとしての書き出し方法を選択できる可能性がある。
【０１２６】
２．　特に間接アドレスデータブロックは新たにアドレス変換テーブルのエントリを確保する必要がないので、ログ化クラスタとしての書き出し方法が可能である。
【０１２７】
３．　特に直接アドレスデータブロックは新たにアドレス変換テーブルのエントリを確保できれば、ログ化クラスタとしての書き出し方法が可能である。
【０１２８】
４．　アドレス変換テーブルのエントリは有限の資源であるので、なるべく使うべきではない。
【０１２９】
上記事情を考慮して、間接アドレスデータブロックを優先してログ化クラスタの書き出し候補とすべきである。この結果、アドレス変換テーブルのエントリの消費が多くならないように処理を進めることができる。
【０１３０】
更に、有効ブロック数の最も少ない物理クラスタに属する間接アドレスデータブロックを書き出すことにより、そのブロックが他の物理クラスタに移り、有効ブロック数の少ない物理ストライプの有効ブロック数を更に減らすことができる。このことはリパックの効率を向上する意味がある。
【０１３１】
よって、有効ブロック数の最も少ない物理クラスタに属する間接アドレスデータブロックを書き出す候補とすべきである。この結果、有効ブロック数の少ない物理クラスタが増え、リパックの効率を良くすることができる。
【０１３２】
すなわち、Ｓ８０１において、空き物理クラスタが存在する、あるいは、現在書き出し対象の物理クラスタに空き物理ブロックが存在する場合、書き出し候補のブロックに間接アドレスデータブロックがあるか否かの判断が行なわれる（Ｓ８０２）。
【０１３３】
Ｓ８０２において、書き出し候補のブロックに間接アドレスデータブロックがあると判断された場合、最も有効ブロック数の少ない物理クラスタに属している間接アドレスデータブロックを選択する（Ｓ８１０）。そして、図６のライト処理により、間接アドレスデータブロックをログ化ストライプに書き出す（Ｓ８１１）。
【０１３４】
次に、書き出し候補の間接アドレスデータブロックが存在しない場合を考える。
【０１３５】
この場合、下記のように考える。
【０１３６】
１．　書き出し対象のブロックは直接アドレスデータブロックである。
【０１３７】
２．　直接アドレスデータブロックを書き出すときにログ化クラスタ形式で書き出す場合は、要する時間は短くて済むが、反面、アドレス変換テーブルのエントリを消費することになる。
【０１３８】
３．　更に、直接アドレスデータブロックが間接アドレスデータブロックになることにより、例え論理ブロック番号が連続する一連のブロックでもディスク上に間接アドレスとして不連続に配置されてしまう結果、その後のシーケンシャルアクセス性能が悪くなる、というデメリットがある。
【０１３９】
４．　よって、直接アドレスデータブロックは、効率よくオーバライトで書き出せる場合には、なるべくオーバライトで書き出したほうが効率がよい。
【０１４０】
５．　特に、ブロック番号（＝アドレス）が連続する一連の直接アドレスデータブロックが書き出し対象として存在する場合には、比較的効率よくオーバライトで書き出すことができる。
【０１４１】
よって、一定個数以上、連続する直接アドレスデータブロックが存在する場合には、オーバライトで直接アドレスデータブロックのまま一括して書き出すべきである。
【０１４２】
すなわち、Ｓ８０２において書き出し候補のブロックに間接アドレスデータブロックが存在しないと判断された場合、書き出し対象の直接アドレスデータブロックに関して、アドレスが連続する直接アドレスデータブロックの列のうち最長のものを選択してＢＬとし、列に含まれるブロック個数をＮとする（Ｓ８０３）。
【０１４３】
次に、Ｓ８０４において、ブロック個数Ｎが所定の値である「Ａ」よりも大きいか否かの判断が行なわれる。ここで、「Ａ」はブロック長の基準値として設定されるものであり、この値には実測により、比較的高速にオーバライトで書き込めるブロック長を指定する。あるいは、動的パラメータとしてシステム全体の状態から値を決めるという実装も可能である。
【０１４４】
Ｓ８０４において、ブロック個数Ｎが所定の値である「Ａ」よりも大きいと判断された場合には、選択されたＢＬを現在のアドレスに一括して書き込む（Ｓ８１３）。なお、Ｓ８１３において、ストライプセットの境界かつストライプサイズで書き出してもよく、この場合、更に効率がよくなる。
【０１４５】
このような処理を行なうことにより、アドレス変換テーブルのエントリをむやみに消費することを防止することができる。また、間接アドレスをむやみに増やすことによりシーケンシャル性能が悪化するのを防ぐ効果が得られる。
【０１４６】
次に、Ｓ８０４において、個数Ａ以上の連続した直接アドレスデータブロックが無いと判断された場合について説明する。この場合、効率よい直接アドレスデータブロックのオーバライトは期待できないので、以下のように考える。
【０１４７】
１．　書き出すことの緊急性を評価し、なるべく早く書き出す必要がある場合には、高いスループットで書き出せるログ化クラスタでの書き出しを行なう。
【０１４８】
２．　「緊急」の度合いとしては、キャッシュのＤｉｒｔｙ率が考えられる。Ｄｉｒｔｙ率が高いほど、早めの書き出しが必要である。
【０１４９】
３．　緊急性が低い場合には、間接アドレスデータブロックが増えるのを避けるため（アドレス変換テーブルエントリの節約、シーケンシャル性能悪化防止のため）、直接アドレスデータブロックのオーバライト書き出しを行う。特に、間接アドレスデータブロックが既に多く存在しているほど、直接アドレスデータブロックはオーバライト書き出しにする。
【０１５０】
上記考察に基づいて、Ｓ８０５において、書き込み候補の直接アドレスデータブロックの１つを選択し、ログ化クラスタに書くか、オーバライトで書くかを決定する。図１２（ａ）は、Ｓ８０５における処理を説明するためのフロチャートである。
【０１５１】
同図に示すように、書き込み対象の直接アドレスデータブロックのうち、最も使用率の高いキャッシュ列（キャッシュセット）に属するものを１つ選ぶ（Ｓ１００１）。次に、書き込み方式を判定関数ｆ（α，β）を使用して決定する。
【０１５２】
図１２（ｂ）は、判定関数ｆ（α，β）を説明するための図である。同図において、αはキャッシュ全体のＤｉｒｔｙ率、βはアドレス変換テーブル全体の使用率（％）を意味する。
【０１５３】
この例では、キャッシュのＤｉｒｔｙ率αが９０％以上の時には「ログ化クラスタへの書き出し」と判断する。それ以下の場合には、アドレス変換テーブルの使用率β（使用中エントリの全エントリ数に対する割合％）とαを比較して判定している。Ｄｉｒｔｙ率が高い程、あるいは間接アドレスデータブロックの数が少ない程「ログ化クラスタへの書き出し」と判定するようになっている。状況や実装に応じて判定関数ｆ（）のロジックを変えることより、実際の状況に即した判定を行なえる。
【０１５４】
Ｓ１００２において、オーバライト書き出しではないと判定された場合には、ログ化クラスタへの書き込み指示を決定する（Ｓ１００３、１００５）。一方、Ｓ１００２において、オーバライト書き出しであると判定された場合には、オーバライトでの書き込みを決定する（Ｓ１００３，Ｓ１００４）。
【０１５５】
結果的に、以上の方法により、キャッシュのＤｉｒｔｙ使用率が低いときには、無闇に間接アドレスデータブロックを増やしてシーケンシャル性能を悪化することが無いように制御することが可能になる。
【０１５６】
その後、Ｓ８０６において、ログ化ストライプに書くことを決定したか否かの判断が行なわれ（Ｓ８０６）、決定していないと判断された場合には、選択した直接アドレスデータブロックをオーバライトで書き出す（Ｓ８０８）。一方、決定した場合には、図６のライト処理に選択した直接アドレスデータブロックを書き出す。この時、可能であればログ化クラスタで書き出す。
【０１５７】
したがって、本発明の実施の形態に係るディスクアレイ制御装置によれば、ログ形式のデータブロック管理方式を採用したディスクシステムにおいて、アドレス変換テーブルの容量を制限しつつ、その利用できる範囲内でログ形式のデータブロックを管理することにより対象の論理ディスクの容量制限を回避するこができる。
【０１５８】
また、緊急性が高い時にはデータをログ形式で書き込み、緊急性が低いときには非ログ形式で書き込み、ログ化データが増えることを避け、ディスクアレイ制御装置のシーケンシャルアクセス性能悪化を回避することができる。
【０１５９】
なお、本願発明は、上記各実施形態に限定されるものでなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は可能な限り適宜組み合わせて実施してもよく、その場合組み合わされた効果が得られる。さらに、上記各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば実施形態に示される全構成要件から幾つかの構成要件が省略されることで発明が抽出された場合には、その抽出された発明を実施する場合には省略部分が周知慣用技術で適宜補われるものである。
【０１６０】
【発明の効果】
以上詳記したように本発明によれば、アドレス変換テーブルに使用するメモリの量を一定にしたまま、制御対象の論理ディスクの容量に制約を課さず、かつ、従来のＲＡＩＤ高速化方式の高速書きこみを実現することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係る計算機システムの構成を示す図である。
【図２】本発明の実施の形態に係る計算機システムのキャッシュメモリ１４の構成を示す図である。
【図３】ＲＡＩＤ高速化方式におけるディスクの論理ディスクアドレス空間のレイアウトを示す図であり、（ａ）は物理ディスク上のストライプ配置を示す図であり、（ｂ）は論理ディスク上のストライプ配置とレイアウトを示す図である。
【図４】図３に相当する「論理アドレス空間」のレイアウトを示す図である。
【図５】アドレス変換テーブルを示す図である。
【図６】本発明の実施の形態に係るディスクアレイ制御装置のライト動作の基本的な処理の流れについて説明するためのフロチャートである。
【図７】（ａ）は、論理ディスク上の物理クラスタの様子を示す図であり、（ｂ）は図７（ａ）に示される全ての物理クラスタの状態を管理するテーブルであり、（ｃ）はアドレス変換テーブルを示す図である。
【図８】（ａ）は、論理ディスク上の物理クラスタの様子を示す図であり、（ｂ）は図８（ａ）に示される全ての物理クラスタの状態を管理するテーブルであり、（ｃ）はアドレス変換テーブルを示す図であり、（ｄ）はライトバッファを示す図である。
【図９】（ａ）は、論理ディスク上の物理クラスタの様子を示す図であり、（ｂ）は図９（ａ）に示される全ての物理クラスタの状態を管理するテーブルであり、（ｃ）はアドレス変換テーブルを示す図であり、（ｄ）はライトバッファを示す図である。
【図１０】本発明の実施の形態に係るディスクアレイ制御装置の書き出し処理全体の動作を説明するためのフロチャートである。
【図１１】オーバライト書き込み処理の動作を説明するためのフロチャートである。
【図１２】（ａ）は、Ｓ８０５における処理を説明するためのフロチャートであり、（ｂ）は、判定関数ｆ（α，β）を説明するための図である。
【図１３】３台のディスクから構成されるＲＡＩＤ５の論理ディスクを示す図である。
【符号の説明】
１…ＣＰＵバス、
２…ＣＰＵ、
３…メインメモリ、
４…ＰＣＩ−ＰＣＩブリッジ、
５…ＰＣＩバス、
１１…ＲＡＩＤコントローラＰＣＩカード、
１２…ＰＣＩ−ＰＣＩブリッジ、
１３…内部ＰＣＩバス、
１４…キャッシュメモリ、
１５…ＳＣＳＩコントローラ、
１６…専用ＣＰＵ，
１７…ローカルＲＡＭ、
１８…フラッシュＲＯＭ、
２０…ＳＣＳＩバス、
２１−１〜２１−ｎ…ディスク装置。
【図１】
2004102822.tif 000003
【図２】
2004102822.tif 000004
【図３】
2004102822.tif 000005
【図４】
2004102822.tif 000006
【図５】
2004102822.tif 000007
【図６】
2004102822.tif 000008
【図７】
2004102822.tif 000009
【図８】
2004102822.tif 000010
【図９】
2004102822.tif 000011
【図１０】
2004102822.tif 000012
【図１１】
2004102822.tif 000013
【図１２】
2004102822.tif 000014
【図１３】
2004102822.tif 000015