JP3788961B2 - ディスクアレイ装置及び同装置におけるレイドレベル変更方法 - Google Patents

ディスクアレイ装置及び同装置におけるレイドレベル変更方法 Download PDF

Info

Publication number
JP3788961B2
JP3788961B2 JP2002252372A JP2002252372A JP3788961B2 JP 3788961 B2 JP3788961 B2 JP 3788961B2 JP 2002252372 A JP2002252372 A JP 2002252372A JP 2002252372 A JP2002252372 A JP 2002252372A JP 3788961 B2 JP3788961 B2 JP 3788961B2
Authority
JP
Japan
Prior art keywords
stripe
block
logical address
disk array
raid level
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
JP2002252372A
Other languages
English (en)
Other versions
JP2004094429A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2002252372A priority Critical patent/JP3788961B2/ja
Publication of JP2004094429A publication Critical patent/JP2004094429A/ja
Application granted granted Critical
Publication of JP3788961B2 publication Critical patent/JP3788961B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、複数のディスク装置から構成されるディスクアレイを備えたディスクアレイ装置に係り、特にディスクアレイのレイドレベル(RAIDレベル)を変更する場合に好適なディスクアレイ装置及び同装置におけるレイドレベル変更方法に関する。
【0002】
【従来の技術】
従来からログ構造化ファイルシステム(Log-Structured File System)と呼ばれるディスク記憶管理方法が知られている。ログ構造化ファイルシステムについては、例えば以下の文献、"The Design and Implementation of a Log-Structured File System",Mendel Rosenblum and John K.Ousterhout,ACM Transaction on Computer Systems,February 1992に詳細に記載されている。この文献に記載されたログ構造化ファイルシステムを要約すると、更新後のデータを、複数個まとめて有効なデータが格納されていない別の連続領域に書き込み、更新前に、当該データが格納されていた古い領域を無効にする方法である。
【0003】
また、米国特許第6,219,752号公報及び米国特許第6,233,648号公報には、ログ構造化ファイルシステムをディスクアレイ装置に適用した技術(以下、先行技術と称する)が開示されている。この先行技術においては、ホストコンピュータからのアクセス要求で指定された論理アドレス(ホストコンピュータからみたディスクアレイ上のデータアドレス)を、ディスクアレイにおける物理的なデータの位置を示す物理アドレスに変換するにのにアドレス変換テーブルが用いられる。
【0004】
また、ログ構造化ファイルシステムを適用していないディスクアレイ装置においてシステムを停止することなくレイドレベルを変更する方式に関する技術が、特開平8−335146号公報に記載されている。この特開平8−335146号公報に記載されたレイドレベル変更技術においては、ディスクアレイ装置のレイドレベルを変更するのに、ディスクアレイ装置を構成している領域全体に渡ってデータの移動を行う必要がある。このため、上記レイドレベル変更技術では、アレイを構成するディスク装置の記憶容量に依存してデータの移動に伴う入出力回数が増加するため、レイドレベル変更に要する時間が増大することになる。
【0005】
一方、特開平7−141121号公報には、ログ構造化ファイルシステムを適用していないディスクアレイ装置における動的記憶容量拡張の例が記載されている。この特開平7−141121号公報に記載された技術をレイドレベル変更に適用した場合に、データの再配置中の書き込み位置を記憶することでホストからのI/O(入出力)要求がレイドレベル変更前か後かを判断し、レイドレベル変更が実現できることが類推可能である。この特開平7−141121号公報に記載された手法では、ディスク装置の増設により、物理アドレスに対する論理アドレスのマッピングを変更する必要があるため、パリティデータ(冗長データ)の再生成とそのパリティデータを含むデータの再配置を実施している。このため、データの再配置に伴うディスク装置への入出力が発生する。しかも、データの再配置に伴うディスク装置への入出力は、ディスク装置の記憶容量に依存する。
【0006】
【発明が解決しようとする課題】
上記したように、従来のディスクアレイ装置におけるレイドレベル変更では、ディスクアレイ装置を構成している領域全体に渡ってデータの移動を行う必要がある。このため、ディスクアレイを構成するディスク装置の記憶容量に依存して多くの時間が必要となる。
【0007】
本発明は上記事情を考慮してなされたものでその目的は、ディスクアレイ装置のレイドレベル変更を実施する場合に、少なくとも無効な論理アドレスに対するデータについては移動することなしに動的なレイドレベル変更が実現でき、レイドレベル変更に要する時間を大幅に短縮することができるディスクアレイ装置及び同装置におけるレイドレベル変更方法を提供することにある。
【0008】
【課題を解決するための手段】
本発明の第1の観点によれば、ログ構造化ファイルシステムを適用するディスクアレイ装置が提供される。このディスクアレイ装置は、ディスクアレイへの1ストライプ単位の書き込み時に、アドレス変換テーブルを更新するアドレス変換テーブル更新手段と、上記ディスクアレイのレイドレベルを変更する場合に、レイドレベル変更前の上記アドレス変換テーブルのコピーを生成する手段と、不揮発性メモリ上に配置される書き込みバッファを上記ディスクアレイのレイドレベル変更後のストライプサイズに対応した大きさに再構築する手段と、上記アドレス変換テーブルのコピーに従って有効な論理アドレスを検索する手段と、この検索手段によって検索された有効な論理アドレスに対応する物理アドレスのデータブロックが含まれる物理ストライプを上記ディスクアレイから読み込む手段と、この読み込み手段により読み込まれた物理ストライプ中の有効な論理アドレスに対応する論理ブロックのデータを上記再構築後の書き込みバッファに詰めて蓄積する手段と、上記再構築後の書き込みバッファにレイドレベル変更後のストライプサイズに対応した1ストライプ分の論理ブロックのデータが蓄積された段階で、当該1ストライプ分の論理ブロックに対する論理アドレスを含む論理アドレスタグブロックを生成する手段と、上記生成された論理アドレスタグブロックと当該論理アドレスタグブロックに対応する1ストライプ分の論理ブロックとを含む1ストライプ分のデータブロックを、上記ディスクアレイ内の複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込む手段とを備えている。
【0009】
このような構成のディスクアレイ装置においては、ログ構造化ファイルシステムの特徴、つまり、ディスクアレイへの1ストライプ単位の書き込みは、当該ディスクアレイを構成する複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に対して行われるという特徴に着目し、アドレス変換テーブルのコピーを利用して、ホストコンピュータにより使用されている有効な論理アドレスを検索して、その検索された有効なデータのみをレイドレベル変更後のディスクアレイの空きストライプに連続して書き込むことにより、ディスクアレイのレイドレベル変更を実現している。
【0010】
これにより、本発明の第1の観点に係るディスクアレイ装置では、ディスクアレイ装置を構成している領域全体に渡ってデータの移動を行う必要がなく、また、レイドレベル変更前のディスクアレイの全データをレイドレベル変更後のディスクアレイに再配置することなく、ディスクアレイのレイドレベルの動的変更が実現でき、レイドレベル変更を短時間で実行できる。しかも、レイドレベル変更開始時点で有効な論理アドレスの論理ブロックが含まれていた物理ストライプには、レイドレベル変更処理を終了した時点では有効な論理アドレスの論理ブロックは含まれなくなって空きストライプとなることから、セグメントクリーニングを実施する必要がない。
【0011】
ここで、アドレス変換テーブルのコピーを利用した有効な論理アドレスの検索を、論理アドレスの順番に実行するとよい。このようにすると、有効な物理ストライプ中に断片化したデータブロックがなくなり、ストライプ内のフラグメンテーションが回避できる。この結果、レイドレベル変更処理に起因するシーケンシャルアクセスの性能低下を防止できる。
【0012】
本発明の第2の観点に係るディスクアレイ装置は、上記第1の観点に係るディスクアレイ装置で適用されている論理アドレスタグブロックに相当する論理アドレスタグブロックとして、1ストライプ分の各論理ブロックに対する論理アドレス、及び時刻情報を含むタイムスタンプ情報から構成される論理アドレスタグブロックを適用することを第1の特徴とする。また、本発明の第2の観点に係るディスクアレイ装置は、上記第1の観点に係るディスクアレイ装置で適用されている、レイドレベル変更時点で有効な論理アドレスを全て検索して、その有効な論理アドレスのデータをレイドレベル変更後のディスクアレイに再配置する仕組みの代わりに、レイドレベル変更前のアドレス変換テーブルのコピーに従って、ディスクアレイ内の空きストライプを検索し、レイドレベル変更後のストライピングルールに従って当該空きストライプ中の論理アドレスタグブロックの位置を特定することで、当該論理アドレスタグブロックを初期化する手段と、ディスクアレイのレイドレベル変更の終了時の時刻情報を含むタイムスタンプ情報を、ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録する手段とを備えたことを第2の特徴とする。
【0013】
本発明の第2の観点に係るディスクアレイ装置においては、レイドレベル変更時点で有効な論理アドレスのデータも再配置の対象とならないため、上記第1の観点に係るディスクアレイ装置に比べて、レイドレベル変更を更に短時間で実行できる。ここで、レイドレベル変更時に空きとなっている物理ストライプ、つまり空きストライプ中の、レイドレベル変更後に1ストライプ分のデータが書き込まれる際に、当該1ストライプ分のデータに含まれている論理アドレスタグブロックが配置されるべき領域は、レイドレベル変更時に初期化される。したがって、レイドレベル変更後に、レイドレベル変更後のストライピングルールで決まる物理ストライプ中の論理アドレスタグブロックの領域が、初期化されたままであるか否かを調べることで、当該ストライプが現在空きストライプであるか、或いは有効な物理ストライプであるかを簡単に判定できる。
【0014】
また、レイドレベル変更後のディスクアレイ中の物理ストライプについて、アドレス変換テーブルに当該物理ストライプに対応するアドレス変換情報と組をなして記憶された時刻情報を、上記特別な領域に記録されているタイムスタンプ情報に含まれている時刻情報と比較することで、当該ストライプがレイドレベル変更前の有効な物理ストライプであるか、或いはレイドレベル変更後の有効な物理ストライプであるかをも、簡単に判定できる。これにより、有効な物理ストライプ中の有効な論理アドレスタグブロックを検出できる。また、アドレス変換テーブルを利用して検索される有効な論理アドレスについて、当該論理アドレスに対応するアドレス変換情報と組をなしてアドレス変換テーブルに記憶された時刻情報を、上記特別な領域に記録されているタイムスタンプ情報に含まれている時刻情報と比較することでも、当該論理アドレスに対応する物理ストライプがレイドレベル変更前の有効な物理ストライプであるか、或いはレイドレベル変更後の有効な物理ストライプであるかを、簡単に判定できる。この判定機能は、レイドレベル変更後に障害が発生したディスク装置のデータを復旧する場合に利用可能である。
【0015】
また、上記の判定は、アドレス変換テーブルを用いなくても可能である。そのためには、まず、レイドレベル変更後のディスクアレイ中の物理ストライプについて、当該物理ストライプがレイドレベル変更後の有効な物理ストライプであると仮定して、当該ストライプから前記レイドレベル変更後のストライピングルールに従って論理アドレスタグブロックを読み込む。そして、読み込んだ論理アドレスタグブロックのうちの、レイドレベル変更後のストライピングルールに従って初期化された論理アドレスタグブロック以外の各論理アドレスタグブロックについて、当該論理アドレスタグブロックに含まれている時刻情報を、上記特別な領域に記録されているタイムスタンプ情報に含まれている時刻情報と比較することで、対応する物理ストライプがレイドレベル変更後の有効な物理ストライプであるとの仮定が正しかったか或いは誤っていたか、つまり対応する物理ストライプがレイドレベル変更後の有効な物理ストライプであるか或いはレイドレベル変更前の有効な物理ストライプであるかを判定する。上記仮定が誤っていた場合、対応する物理ストライプ中の論理アドレスタグブロックは、レイドレベル変更前のストライピングルールに従って検出すればよい。このように、アドレス変換テーブルを用いずに、有効な論理アドレスタグブロックを検出できることから、アドレス変換テーブルが使用不可能な状態になっても、当該テーブルを再構築できる。
【0016】
本発明の第3の観点に係るディスクアレイ装置は、上記第2の観点に係るディスクアレイ装置で適用されている論理アドレスタグブロックに相当する論理アドレスタグブロックとして、1ストライプ分の各論理ブロックに対する論理アドレスを含む論理アドレスタグ、並びに時刻情報及び世代番号を含むタイムスタンプ情報であって、当該タイムスタンプ情報のチェックサムが付加されたタイムスタンプ情報から構成される論理アドレスタグブロックを適用することを第1の特徴とする。また、本発明の第3の観点に係るディスクアレイ装置は、上記第2の観点に係るディスクアレイ装置で適用されている、ディスクアレイのレイドレベル変更の終了時の時刻情報を含むタイムスタンプ情報を特別な領域に記録する手段に代えて、ディスクアレイのレイドレベル変更の終了時の時刻情報、及び世代番号を含むタイムスタンプ情報を上記特別な領域に記録する手段を備えていることを第2の特徴とする。
【0017】
本発明の第3の観点に係るディスクアレイ装置においては、レイドレベル変更時に空きストライプ中の論理アドレスタグブロックを初期化する処理が不要なため、上記第2の観点に係るディスクアレイ装置に比べて、レイドレベル変更を更に短時間で実行できる。この第3の観点に係るディスクアレイ装置においては、レイドレベル変更後のディスクアレイ中の物理ストライプが現在空きストライプであるか、或いは有効な物理ストライプであるかを、当該物理ストライプ中の論理アドレスタグブロックが初期化されているか否かにより判定して、有効な物理ストライプから有効な論理アドレスタグブロックを検出することはできない。しかし、第3の観点に係るディスクアレイ装置においては、世代番号を利用して、物理ストライプ中の論理アドレスタグブロックの位置を特定すると共に、特定した論理アドレスタグブロックに含まれているチェックサムと、当該論理アドレスタグブロックをもとに算出されるチェックサムとを利用して、当該論理アドレスタグブロックが有効であるか、或いは無効であるかを簡単に判定可能である。
【0018】
本発明の第3の観点に係るディスクアレイ装置は、少なくともレイドレベル変更後にはログ構造化ファイルシステムを適用しないディスクアレイ装置、即ち論理アドレスに一致する物理アドレスの位置に当該論理アドレスのデータが書き込まれるディスクアレイ装置であり、ディスクアレイへのデータ書き込み時に、アドレス変換テーブルを更新するアドレス変換テーブル更新手段と、上記ディスクアレイのレイドレベルを変更する場合に、レイドレベル変更前の上記アドレス変換テーブルのコピーを生成する手段と、上記アドレス変換テーブルのコピーに従って有効な論理アドレス及び当該論理アドレスに対応する物理アドレスを検索する手段と、この検索手段によって検索された有効な論理アドレスに対応する物理アドレスのデータブロックを上記ディスクアレイから読み込む手段と、この読み込み手段により読み込まれたデータブロックを、当該データブロックに対応する上記有効な論理アドレスに一致する物理アドレスで指定されるディスクアレイの領域に書き込む手段とから構成される。
【0019】
このように、少なくともレイドレベル変更後にはログ構造化ファイルシステムを適用しないディスクアレイ装置であっても、レイドレベル変更を実施する場合に、アドレス変換テーブルを利用して、有効な論理アドレスのデータだけを、その論理アドレスに一致する物理アドレスに移動することにより、少なくとも無効な論理アドレスに対するデータについては移動することなしにレイドレベル変更が実現できるため、レイドレベル変更に要する時間を大幅に短縮できる。
【0020】
なお、以上のディスクアレイ装置に係る本発明は、ディスクアレイを制御する制御装置(ディスクアレイコントローラ)に係る発明としても、ディスクアレイ装置におけるレイドレベル変更方法に係る発明としても成立する。
【0021】
また、本発明は、コンピュータに当該発明に相当する手順を実行させるためのプログラムに係る発明としても成立する。
【0022】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
図1は、本発明の一実施形態に係るログ構造化ファイルシステムを適用するディスクアレイ装置を備えたコンピュータシステムの構成を示すブロック図である。
【0023】
図1において、ディスクアレイ装置は、制御装置1と、当該制御装置1に接続されたディスクアレイ2と、当該制御装置1に接続された不揮発性メモリ3と、当該制御装置1に接続された揮発性メモリ4とから構成される。
【0024】
ディスクアレイ2は、複数のディスク装置、例えば3台のディスク装置21,22,23から構成される。ディスクアレイ2は、ディスク装置21,22,23のいずれか1台が故障しても、その故障したディスク装置のデータの復旧(復元)が可能なように、冗長化ディスク構成を適用している。ここでは、説明を簡略化するために、ディスクアレイ2がRAID4の冗長化ディスク構成を適用しており、ディスク装置21〜23のうちの特定の1台、例えばディスク装置23がパリティデータを格納するパリティディスク装置として割り当てられているものとする。また、図1の例では、ディスクアレイ2に、ディスク装置24が追加ディスク装置として新たに追加される状態が示されている。このディスク装置24が追加された後は、ディスクアレイ2は4台のディスク装置21〜24から構成されることになる。
【0025】
制御装置1は、ディスクアレイ2を制御するコントローラ(ディスクアレイコントローラ)であり、ホストコンピュータ10と接続されている。ディスクアレイ2は、ホストコンピュータ10からは1つの論理的なディスク装置としてみえる。ホストコンピュータ10と制御装置1とのインターフェースには、例えばSCSI(Small Computer System Interface)、或いはPCIバス(Peripheral Component Interconnect Bus)等が適用可能である。
【0026】
なお、本実施形態では、図1に示す構成を中心として説明するが、当該技術分野に属する熟練者にとって、それらの詳しい細部の説明がなくても、図1に示す構成から派生する他のコンピュータシステムの構成であっても、本発明を実施できることは明らかである。例えば、制御装置1を実現するのに、特開2000−10738号公報の第25頁右欄の段落0042〜0045に記載されたディスクアレイコントローラの実現方法を適用することも可能である。
【0027】
ここで、図1の構成の詳細な説明の前に、本実施形態の説明で用いる用語について説明する。
a)論理ブロック
論理ブロックとは、ホストコンピュータ10からみたデータブロック、更に詳細に述べるならば、ホストコンピュータ10からみたディスクアレイ2における論理的なディスク領域上のデータブロックを示す。
b)物理ブロック
物理ブロックとは、ディスクアレイ2上の物理的なブロック、更に詳細に述べるならば、ディスクアレイ2における物理的なディスク領域上のデータブロックを示す。データブロック(論理ブロック、物理ブロック)のサイズは予め定められており、一定である。
【0028】
c)論理アドレス
論理アドレスとは、ホストコンピュータ10からみたディスクアレイ(ディスク装置)2上のデータアドレスを示す。ここでは、論理アドレスは、ディスクアレイ2における論理的なディスク領域上のデータブロックの位置、つまり論理ブロックの位置を示す論理ブロックアドレスとして用いられる。
【0029】
d)物理アドレス
物理アドレスとは、ディスクアレイ2上のデータ(データブロック)の物理的位置を示すために使用する。ここでは、物理アドレスは、ディスクアレイ2(を構成するディスク装置)上のデータブロックの物理的位置、つまり物理ブロックの位置を示す物理ブロックアドレスであり、後述する物理ストライプ番号と物理ブロック番号とから構成される。
【0030】
e)論理アドレスタグ
論理アドレスタグとは、各論理ブロックに対する論理アドレスからなる情報群を示す。
f)パリティブロック
パリティブロックとは、複数の論理ブロックに対応する冗長データを格納するためのデータブロックを意味する。
g)論理アドレスタグブロック
論理アドレスタグブロックとは、論理アドレスタグとタイムスタンプ情報からならデータブロックを意味する。タイムスタンプ情報については後述する。
【0031】
h)論理ブロック番号
論理ブロック番号とは、ホストコンピュータからみたディスクアレイ2上のデータブロックの番号を示す。
i)物理ブロック番号
物理ブロック番号とは、ディスクアレイ2上の後述する物理ストライプ内のデータブロックの相対位置を示す番号であり、ディスクアレイ2を構成するディスク装置に固有の番号である。
【0032】
不揮発性メモリ3には、書き込みバッファ31、アドレス変換テーブル32、タイムスタンプ情報33、及びバッファ管理テーブル34が配置される。また不揮発性メモリ3には、アドレス変換テーブル32のコピー35、及び後述するソート後のアドレス変換テーブル36が適宜配置される。書き込みバッファ31は、ディスクアレイ2に書き込むデータをログ構造化して保持するのに用いられる。アドレス変換テーブル32は、ホストコンピュータ10からみたディスクアレイ(ディスク装置)2上のデータアドレス(データブロックアドレス)、つまり論理アドレス(論理ブロックアドレス)を、ディスクアレイ2における物理的なデータ(データブロック)の位置を示すアドレス、つまり物理アドレス(物理ブロックアドレス)に変換するのに用いられる変換マップである。タイムスタンプ情報33は、主として書き込みの時間的順序を維持するのに用いられる。このタイムスタンプ情報33は、1ストライプ分のデータの書き込みを実行した時点またはディスクアレイ2のレイドレベル変更時点での時刻を示す時刻情報としてのタイムスタンプと、レイドレベル変更時に更新されるストライプ世代番号と、ディスクアレイ2を構成するディスク装置の数(ディスク台数)とを含む。バッファ管理テーブル34は、書き込みバッファ31内の空き領域の情報及び当該バッファ31に保持されている書き込データの論理アドレスの情報を保持するのに用いられる。アドレス変換テーブル32のコピー35は、ディスクアレイ2のレイドレベルを変更する処理で生成される。
【0033】
揮発性メモリ4には、本発明の実施形態における第2の変形例で使用される、後述するストライプテーブル41が配置される。
【0034】
ディスクアレイ2を構成する各ディスク装置21〜23では、それぞれデータブロックのサイズ(ブロックサイズ)の整数倍(ここでは、K倍とする、但しKは1以上の整数)である予め決められた単位、つまりKブロック単位(以下、ストライプユニットと称する)で書き込みが行われる。ここで、ディスク装置21〜23の物理的に同じ位置のストライプユニットは、1つのストライプを構成するストライプユニットとして、同じタイミングで書き込みが行われる。
【0035】
明らかなように、1ストライプ(物理ストライプ)を構成するデータブロック(つまり1ストライプ分のデータブロック)の数は、ディスクアレイ2を構成するディスク装置の台数をN、1ストライプユニットのデータブロック数をKとすると、N×Kで表される。つまり1ストライプは、N×K個のデータブロックから構成される。更に詳細に述べるならば、1ストライプは、ディスクアレイ2を、パリティデータの生成が不要なRAID0,RAID1,RAID10などのレイドレベル(RAIDレベル)で用いる場合には、N×K−1個(Nは2以上の整数)の論理ブロック、及び1個の論理アドレスタグブロックTGから構成される。また、ディスクアレイ2を、パリティデータの生成が必要なRAID4,RAID5,RAID50などのレイドレベルで用いる場合には、1ストライプは、(N−1)×K−1個(Nは3以上の整数)の論理ブロック、1個の論理アドレスタグブロックTG、及びK個のパリティブロックから構成される。なお、ストライプユニットのサイズ(ブロック数)は、ディスク装置に対するアクセス効率を考慮すると、当該ディスク装置の1トラック長に近いサイズが好ましい。
【0036】
さて本実施形態では、ディスクアレイ2を、当該ディスクアレイ2を構成するディスク装置21〜23の実際の記憶容量を合わせた総記憶容量よりも少ない記憶容量のディスクアレイとして、ホストコンピュータ10に見せている。そのため、ホストコンピュータ10が最初にディスクアレイ装置内の制御装置1に対して記憶容量を問い合わせてきたとき、制御装置1は、その返答として上記総記憶容量より少ない記憶容量を返す。これにより、ディスクアレイ2の記憶領域には、ホストコンピュータ10から論理的に読み書きできる記憶領域の他に余分な記憶領域が確保されることになる。この余分な領域を空き領域と呼び、その空き領域内の各ストライプを空きストライプと呼ぶ。つまり本実施形態では、ホストコンピュータ10から論理的に読み書きできる記憶領域を全て使用している場合でも、必ずディスクアレイ2上に空き領域が確保できる。但し、ディスクアレイ2における空き領域の物理的な位置は固定ではない。また、ホストコンピュータ10が使用している論理的な領域が少ない場合、空き領域の記憶容量は上記余分な記憶領域の記憶容量より大きくなる。
【0037】
ディスクアレイ2にディスク装置24を追加して、当該ディスクアレイ2のレイドレベル変更を実施した場合、その追加されたディスク装置24では、そのブロックサイズの整数倍(K倍)であるストライプユニットを単位に書き込みが行われる。ディスクアレイ2におけるレイドレベル変更後には、当該ディスクアレイ2は、ディスク装置21〜23にディスク装置24を加えた4台のディスク装置で構成されることになる。この場合、ディスク装置21〜24内の物理的に同じ位置のストライプユニットは、1つのストライプを構成するストライプユニットとして、同じタイミングで書き込みが行われる。明らかなように、ディスクアレイ2を構成するディスク装置が3台から4台に増設された場合、1ストライプを構成するストライプユニットの数は3から4に増加する。
【0038】
制御装置1は、ROM等の記憶装置(図示せず)に予め格納されている制御プログラムに従ってディスクアレイ2へのアクセス等を制御すると共に、不揮発性メモリ3上の書き込みバッファ31、アドレス変換テーブル32、タイムスタンプ情報33、及びバッファ管理テーブル34等を管理する。
【0039】
制御装置1は、前記米国特許第6,219,752、及び米国特許第6,233,648に記載されているのと同様の高速書き込み方法を適用している。即ち制御装置1は、ホストコンピュータからの更新(書き込み)要求に対してディスクアレイ2内の対応する旧データの領域の内容を書き換えるのではなく、更新データを書き込みバッファ31の空き領域にブロック単位に分割して詰めて書き込んで蓄積しておく。この書き込みバッファ31には、パリティデータの生成が不要な場合であれば、1ストライプ分、即ちN×Kデータブロック分の、不揮発性メモリ3上の記憶領域が割り当てられる。また、パリティデータの生成が必要な場合であれば、書き込みバッファ31には、1ストライプ−1ストライプユニット分、即ち(N−1)×Kデータブロック分の、不揮発性メモリ3上の記憶領域が割り当てられる。したがって、ディスクアレイ2がRAID4の冗長化ディスク構成を適用している例では、パリティデータの生成が必要なことから、書き込みバッファ31には(N−1)×Kデータブロック分の記憶領域が割り当てられる。
【0040】
制御装置1は、1ストライプ分に1ストライプユニット+1データブロック少ない数まで、書き込みバッファ31にデータブロック(論理ブロック)が蓄積された時点で、論理アドレスタグとタイムスタンプ情報TSとから構成される論理アドレスタグブロックTGを生成して当該書き込みバッファ31上に格納する。制御装置1は、生成した論理アドレスタグブロックTGが加えられた、書き込みバッファ31上の1ストライプ−1ストライプユニット分のデータ((N−1)×K個のデータブロック)から、1ストライプユニット分のパリティデータ(K個のパリティブロック)を生成する。そして制御装置1は、1ストライプユニット分のパリティデータが1ストライプ−1ストライプユニット分のデータに加えられた(N×K個のブロックからなる)1ストライプ分のデータを、ディスクアレイ2のレイドレベルを構成するディスク装置の台数Nに応じたストライピングルールに従って、その台数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域の物理的に連続する位置に、一括して書き込む動作を開始する。
【0041】
本実施形態で適用される論理アドレスタグブロックTG中のタイムスタンプ情報TSは、タイムスタンプと、ストライプ世代番号と、ディスク台数と、チェックサムとから構成される。タイムスタンプ情報TS中のタイムスタンプ、ストライプ世代番号、及びディスク台数には、不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプ、ストライプ世代番号、及びディスク台数の情報が用いられる。このようにタイムスタンプ情報33は、ホストコンピュータ10からの書き込みデータが1ストライプ単位で実際にディスクアレイ2に書き込まれる際に当該ストライプのタイムスタンプ情報TSの一部として付加される情報であり、当該タイムスタンプ情報33中のタイムスタンプはディスクアレイ2内でのデータ書き込み順序を判定するのに用いられる。そのためタイムスタンプ情報33中のタイムスタンプの値は、書き込みバッファ31のデータがディスク装置2に書き込まれる毎に例えば1インクリメントされる。したがって、ストライプ上のタイムスタンプ情報TSに含まれているタイムスタンプを参照することにより、その書き込みデータが新しいデータであるか、古いデータであるかが判別できる。チェックサムは、論理アドレスタグブロックTG中の各論理アドレス、並びにタイムスタンプ情報TS中のタイムスタンプ、ストライプ世代番号、及びディスク台数をもとに算出される。ストライプ世代番号とチェックサムは、後述するように、対応する論理アドレスタグブロックTGがディスクアレイ2のレイドレベル変更前の旧ストライプに属するか、或いはレイドレベル変更後の新ストライプに属するかを制御装置1が判別するのに使用される。
【0042】
制御装置1により用意された1ストライプ分のデータの例(K=3の場合)と、当該1ストライプ分のデータがディスクアレイ2内のディスク装置21〜23に書き込まれる様子を図2に示す。図2の例では、論理アドレスL3,L7,L11,L15の論理ブロック(L3Data,L7Data,L11Data,L15Data)からなるストライプユニットと、論理アドレスL100,L1,L20の論理ブロック(L100Data,L1Data,L20Data)、及び論理アドレスタグブロック(TG)からなるストライプユニットと、論理アドレスL3,L100の論理ブロックに対するパリティブロックP0、論理アドレスL7,L1の論理ブロックに対するパリティブロックP1、論理アドレスL11,L20の論理ブロックに対するパリティブロックP2、及び論理アドレスL15の論理ブロックと論理アドレスタグブロックTGに対するパリティブロックP3からなるストライプユニットとが、それぞれディスク装置21,22,23の空き領域に、データD1,D2,Pとして一括して書き込まれる様子が示されている。
【0043】
この例では、パリティブロックP0は論理アドレスL3,L100の論理ブロックの間の排他的論理和(XOR)演算により生成され、パリティブロックP1は論理アドレスL7,L1の論理ブロックの間の排他的論理和演算により生成される。また、パリティブロックP2は論理アドレスL11,L20の論理ブロックの間の排他的論理和演算により生成され、パリティブロックP3は論理アドレスL15の論理ブロックと論理アドレスタグブロックTGとの間の排他的論理和演算により生成される。
【0044】
ここで、不揮発性メモリ3上に配置されるアドレス変換テーブル32について図3を参照して説明する。同図に示すように、アドレス変換テーブル32の各エントリは、それぞれ固有の論理アドレスに対応している。ここでは、アドレス変換テーブル32を参照する場合の効率を考慮して、当該テーブル32のj番目(j=0,1,2…)のエントリを、論理ブロックjの論理アドレスLjに対応させている。アドレス変換テーブル32のエントリ数は、ホストコンピュータ10からみえる全論理アドレスの数に一致する。
【0045】
アドレス変換テーブル32の各エントリjの情報(アドレス変換情報)は、論理アドレス(論理ブロックアドレス)と、当該論理アドレス(論理ブロックアドレス)で示される論理ブロックが割り当てられるディスクアレイ2(における物理的なディスク領域)上の物理ブロックを含む物理ストライプを示す物理ストライプ番号と、その物理ストライプ内の当該物理ブロックの相対位置を示す物理ブロック番号と、当該論理アドレスのデータブロックがディスクアレイ2に書き込まれた時間的順序を管理するためのタイムスタンプの各項目から構成される。なお、本実施形態のように、アドレス変換テーブル32のj番目のエントリを論理アドレスjに対応させる場合、当該論理アドレスjから対応するj番目のエントリを参照可能であることから、当該エントリ中に必ずしも論理アドレスの項目を用意する必要はない。但し、後述する第2の変形例で使用される、有効な論理アドレスの順にソートされたソート後のアドレス変換テーブル36(図1参照)では、各エントリ中に論理アドレスの項目を用意する必要がある。
【0046】
このようなデータ構造のアドレス変換テーブル32を用いることで、制御装置1は、論理アドレスLjが与えられれば、当該論理アドレスLjに対応するアドレス変換テーブル32内エントリを参照することにより、物理ストライプ番号と物理ブロック番号とから実際の物理アドレスを簡単に求めることができる。例えば、ホストコンピュータ10からの読み出し要求に従うディスクアレイ2を対象とするデータ読み込み処理は、当該要求で指定された論理アドレスをアドレス変換テーブル32に従ってディスクアレイ2上の物理アドレスに変換することで行われる。なお、図3中の論理アドレスLiは無効(使用されていない)論理アドレスを示す。
【0047】
図4は、不揮発性メモリ3上に配置される書き込みバッファ31とバッファ管理テーブル34との関係の一例を示す。
ホストコンピュータ10からディスクアレイ2への書き込みが要求された場合、制御装置1は先に述べたように、要求された書き込みデータをディスクアレイ2に対して即書き込まずに、ブロック(論理ブロック)単位に分割して書き込みバッファ31に順番に詰めてログ形式で格納していく。書き込みバッファ31の領域は、レイドレベル変更後は、追加されたディスク装置24のブロックサイズに応じて変更される。
【0048】
制御装置1は、書き込みバッファ31に書き込みデータをブロック単位で書き込む際には、当該書き込みデータを構成する論理ブロックを指定する論理アドレス、つまりホストコンピュータ10から見た論理アドレスを、当該論理ブロックが格納された書き込みバッファ31内の領域(ブロック領域)に対応する、バッファ管理テーブル34のエントリに保存する。このエントリ(のエントリ番号)をiとすると、そのエントリiには、対応するバッファ31内のブロック領域Biに有効なデータが格納されているか否か(つまり当該ブロック領域が空き領域であるか)を示すフラグフィールドが設けられている。バッファ31内の空きのブロック領域に対応する、バッファ管理テーブル34内のエントリには、その旨を示すフラグ“U”が設定されている。
【0049】
制御装置1は、バッファ管理テーブル34内のエントリiに論理アドレスを保存した場合、当該エントリi中のフラグフィールドに、対応する書き込みバッファ31内のブロック領域Biにデータが格納されていることを示すフラグ“F”を設定する。したがって、バッファ管理テーブル34を参照することにより、ホストコンピュータ10から要求された書き込みデータを格納すべき次のブロック領域を決めることができる。
【0050】
図4に示す例では、書き込みバッファ31内のブロック領域B0〜B15のうちのB7まで書き込みデータが格納されており、ブロック領域B0,B1,…,B7に格納されている論理ブロックの論理アドレスがそれぞれL123,L99,…,L1であることを表わしている。
【0051】
次に、図1に示すディスクアレイ装置の動作を説明する。
まず、ディスクアレイ装置における書き込み動作について、パリティディスク装置23がデータディスク装置に変更された後、つまりディスクアレイ2のレイドレベルがRAID4からRAID0に変更された後を例に簡単に説明する。
【0052】
今、ディスクアレイ装置内の制御装置1が、ホストコンピュータ10からの書き込み(更新)要求に応じて、当該ホストコンピュータ10から書き込むべきデータと当該データの開始位置の論理アドレス及び当該データのサイズ(データブロックのサイズの整数倍)を受け取ったものとする。すると、制御装置1は、ホストコンピュータ10から受け取った書き込みデータ(更新データ)を、不揮発性メモリ3上の書き込みバッファ31の空き領域に、ブロック単位に分割して詰めて格納する。ここで、書き込みバッファ31は、後述する図6のフローチャート中のステップS5の処理で、レイドレベル変更後のストライプサイズに対応した大きさに変更されている。
【0053】
また、制御装置1は、受け取った論理アドレスを、当該論理アドレスとサイズとから、ブロック毎の論理アドレス(論理ブロックアドレス)に変換して、バッファ管理テーブル34内の対応するエントリに格納する。なお、既に書き込みバッファ31に格納されているデータに対する更新データの書き込みの場合には、制御装置1は書き込みバッファ31の空き領域に詰めて格納するのではなく、直接書き込みバッファ31内の旧データを変更する。書き込みバッファ31に格納されているデータに対する更新データの書き込みであるか否かは、バッファ管理テーブル34内に、対応する論理ブロックアドレスが設定されていて、且つフラグが“F”のエントリが存在するか否かにより判定可能である。
【0054】
制御装置1は、書き込みバッファ31に格納された書き込みデータを構成する論理ブロックの数がRAID0へのレイドレベル変更後の1ストライプ分の論理ブロック数(1ストライプ分のデータブロック数でない点に注意されたい)、つまりN×M−1個に達すると、その論理ブロック数の論理ブロックの論理アドレスを含む論理アドレスタグとタイムスタンプ情報TSとから構成される論理アドレスタグブロックTGを生成して、当該書き込みバッファ31内の最後のブロック領域(論理アドレスタグブロック領域)に格納する。ここで、論理アドレスタグブロックTGは、書き込みバッファ31内のブロック領域にデータブロック(論理ブロック)が格納される際に、バッファ管理テーブル34内の対応するエントリに格納された論理アドレスと、不揮発性メモリ3上のタイムスタンプ情報33とから生成される。このタイムスタンプ情報33中のストライプ世代番号は、レイドレベル変更に伴い1だけ加算される。
【0055】
制御装置1は、生成した論理アドレスタグブロックTGをバッファ管理テーブル34内の最後のブロック領域に格納すると、その時点において書き込みバッファ31に格納されている、1ストライプ分の論理ブロック数(N×K−1個)の論理ブロックと1個の論理アドレスタグブロックTGとからなるN×K個のデータブロック、即ち1ストライプ分のデータを、ディスクアレイ2内のディスク装置21〜24上の更新されるべきデータを保持している領域とは別の空き領域の物理的に連続する領域に書き込む。
【0056】
この様子を図5に示す。図5の例では、論理アドレスL3,L21,L32,L41の論理ブロック(L3Data,L21Data,L32Data,L41Data)からなるストライプユニットと、論理アドレスL2,L7,L8,L0の論理ブロック(L2Data,L7Data,L8Data,L0Data)からなるストライプユニットと、論理アドレスL1,L99,L20,L4の論理ブロック(L1Data,L99Data,L20Data,L4Data)からなるストライプユニットと、論理アドレスL11,L17,L40の論理ブロック(L11Data,L17Data,L40Data)及び論理アドレスタグブロックTGからなるストライプユニットとが、それぞれディスク装置21,22,23,24の空き領域に、データD1,D2,D3,D4として一括して書き込まれる様子が示されている。
【0057】
制御装置1は、1ストライプ分のデータを、レイドレベル変更後のディスクアレイ2上の更新されるべきデータを保持している領域とは別の空き領域に書き込んだ場合、当該ストライプ中の各論理ブロックについて、当該論理ブロックに対する論理アドレスと、当該論理ブロックが書き込まれたディスクアレイ2上の物理的なデータ位置、つまり物理ストライプ番号と物理ブロック番号とで示される物理アドレスとの関係を、レイドレベル変更後のアドレス変換テーブル32に設定する。具体的には、制御装置1は、上記ストライプ中の各論理ブロックに対する論理アドレスに対応するアドレス変換テーブル32内のエントリにおける物理ブロック番号と物理ストライプ番号とを、それぞれ当該論理ブロックが実際に書き込まれた物理ストライプ内の物理ブロック位置を示す番号と当該物理ストライプの番号とに更新する。このとき制御装置1は、不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプの値を1インクリメントし、そのインクリメント後のタイムスタンプで、アドレス変換テーブル32内の上記更新されたエントリ中のタイムスタンプを更新する。
【0058】
次に、ディスクアレイ2のレイドレベルを変更する処理について、図6及び図7のフローチャートを参照して説明する。
今、図1に示すコンピュータシステムの利用者が、ディスクアレイ2にディスク装置24を追加したものとする。この状態で利用者がホストコンピュータ10を操作することにより、当該ホストコンピュータ10からディスクアレイ装置内の制御装置1に対して、RAID4からRAID0へのレイドレベル変更処理が要求されたものとする。この場合、制御装置1はバッファ管理テーブル34を調べて、書き込みバッファ31に蓄積されているデータがあるか否かを判定する(ステップS1)。
【0059】
もし、書き込みバッファ31内に蓄積されているデータがあるならば(ステップS1のYES)、制御装置1はステップS2に進む。制御装置1はステップS2において、バッファ管理テーブル34内の各エントリのうち、フラグフィールドにフラグ“U”が設定されている空きエントリを検索する(但し、最後のエントリは除く)。また、制御装置1はステップS2において、検索されたエントリ中のフラグフィールドの状態を“U”のままにして、当該エントリに対応する書き込みバッファ31内のブロック領域、つまり空きブロック領域にゼロを設定する。このゼロを設定する処理は、空きエントリがないならば、つまり空きブロック領域がないならば、当然不要である。そして、制御装置1はステップS2において、そのときのバッファ管理テーブル34の各エントリのうち、フラグフィールドの状態が“F”のエントリに設定されている論理アドレスとタイムスタンプ情報33とから論理アドレスタグブロックTGを生成し、この論理アドレスタグブロックTGを含むレイドレベル変更前のサイズの1ストライプ分のデータを、ディスクアレイ2内のディスク装置21〜23の空き領域に一括して書き込む。ここで、1ストライプ分のデータは、書き込みバッファ31のデータとパリティデータとからなる。
【0060】
制御装置1はステップS2を実行すると、当該ステップS2でのディスク装置21〜23へのデータ書き込みに応じて、不揮発性メモリ3上のアドレス変換テーブル32を更新する(ステップS3)。制御装置1は、ステップS3でアドレス変換テーブル32を更新した場合、或いはステップS1で書き込みバッファ31内に蓄積されているデータがないと判定された場合には、アドレス変換テーブル32を不揮発性メモリ3上の別の領域にコピーして、アドレス変換テーブルのコピー35を生成する(ステップS4)。
【0061】
次に制御装置1は、レイドレベル変更後にストライプサイズが変更になることを考慮して、不揮発性メモリ3上の書き込みバッファ31をレイドレベル変更後のストライプサイズに対応した大きさに変更する(ステップS5)。また制御装置1は、レイドレベル変更で増加する記憶容量分の物理ブロック用のエントリを、アドレス変換テーブル32の内容をレイドレベル変更前の状態に維持したままで、当該テーブル32に追加する(ステップS6)。これによりアドレス変換テーブル32は、レイドレベル変更に対応したものに再構築される。
【0062】
次に制御装置1は、論理ブロックの論理アドレスを示す変数iの初期値として0(i=0)を設定する(ステップS7)。次に制御装置1は、不揮発性メモリ3上のアドレス変換テーブルのコピー35を参照して、論理アドレスiが有効か否か、つまり論理アドレスiの論理ブロックがホストコンピュータ10により使用されているか否かを判定する(ステップS8)。この判定は、論理アドレスiに対応する、アドレス変換テーブルのコピー35内のエントリ中の物理ストライプ番号、物理ブロック番号、及びタイムスタンプの各項目がいずれもNULL以外であるか否かを調べることで行われる。なお、アドレス変換テーブル32内エントリに、対応する論理アドレスが有効であるか或いは無効であるかを示すフラグを設け、当該テーブル32のコピー35内の各エントリに設定されている当該フラグを参照することで、対応する論理アドレスが有効であるか否かを判定する構成であってもよい。
【0063】
論理アドレスiが有効な場合(ステップS8のYES)、つまりアドレス変換テーブル32から有効な論理アドレスiが検索できた場合、制御装置1は、論理アドレスiのデータがレイドレベル変更処理においてディスクアレイ2に対し未書き込みであったか否かを判定する(ステップS9)。この判定を効率的に行うには、アドレス変換テーブル32の各エントリに、対応する論理アドレスの論理ブロックのデータがディスクアレイ2に対して新たに書き込み(再配置)済みであるか或いは未書き込みであるかを示すフラグの設定フィールドを設けるとよい。
【0064】
もし、論理アドレスiのデータがディスクアレイ2に対して未書き込みであった場合(ステップS9のYES)、制御装置1はアドレス変換テーブルのコピー35から、論理アドレスiに対応する物理ストライプの物理ストライプ番号を取得し、その物理ストライプ番号で示されるレイドレベル変更前のサイズの物理ストライプのデータをディスクアレイ2内のディスク装置21〜23から読み込む(ステップS10)。
【0065】
次に制御装置1は、読み込んだ物理ストライプに含まれている論理ブロックの論理アドレスの中に未処理の有効な論理アドレスjがあるか否かを判定する(ステップS11)。この判定は、上記読み込んだ物理ストライプの物理ストライプ番号をキーにしてアドレス変換テーブル32内のエントリを参照して、対応する未処理の論理アドレスが検索できたか否かにより行われる。
【0066】
制御装置1は未処理の有効な論理アドレスjがある場合(ステップS11のYES)、ステップS10で読み込んだ物理ストライプの中から、その有効な論理アドレスjの論理ブロックを取り出して、書き込みを実行する(ステップS12)。このステップS12での書き込みは、従来技術の欄で述べたような高速書き込み方法を用いた通常通りの手順で次のように行われる。
【0067】
まず制御装置1は、論理アドレスjの論理ブロックを不揮発性メモリ3上の書き込みバッファ31の空き領域に詰めて書き込む。通常は、この書き込みバッファ31への書き込みで、ステップS12は完了する。しかし、論理アドレスjの論理ブロックを書き込みバッファ31に書き込んだ結果、当該バッファ31に蓄積されている書き込みデータの量が、変更後のレイドレベルで決まる量(RAID0の例では、1ストライプ分に1ブロックだけ少ない量)となった場合には、制御装置1は上記ステップS12において更に次に述べる書き込みを行う。
【0068】
まず制御装置1は、書き込みバッファ31に蓄積されている1ストライプ−1ブロック分の書き込みデータに対応する論理アドレスタグブロックTGを生成してアドレス変換テーブル32の最後のブロック領域に書き込む。次に制御装置1は、この論理アドレスタグブロック書き込み後の書き込みバッファ31上のデータ、即ち1ストライプ分のデータを、ディスク装置24が追加されたディスクアレイ2に一括して書き込む。この一括書き込みは、ディスク装置24が追加された後のディスクアレイ2の空きストライプに対し、レイドレベル変更後のディスクアレイ2に対応する新たなストライピングルールに従って行われる。制御装置1は、ステップS12でディスクアレイ2への一括書き込みを行った場合、再構築後のアドレス変換テーブル32を更新する。なお、この例とは逆に、RAID0からRAID4へのレイドレベル変更の場合には、制御装置1は、バッファ31に蓄積されている書き込みデータの量が1ストライプ分に1ストライプユニット+1ブロック分少ない量となった段階で、以下の書き込みを行う。即ち制御装置1は、書き込みバッファ31に蓄積されている1ストライプ−(1ストライプユニット+1ブロック)分の書き込みデータに対応する論理アドレスタグブロックTGを生成してアドレス変換テーブル32の最後のブロック領域に書き込み、この論理アドレスタグブロック書き込み後の書き込みバッファ31上のデータ(1ストライプ−1ストライプユニット分のデータ)から1ストライプユニット分のパリティデータ(つまり1ストライプユニット分のブロック数のパリティブロック)を生成する。そして制御装置1は、書き込みバッファ31上の1ストライプ−1ストライプユニット分のデータと生成された1ストライプユニット分のパリティデータとから構成される1ストライプ分のデータを、ディスク装置24が追加されたディスクアレイ2に一括して書き込む。
【0069】
制御装置1は、上記ステップS11,S12を、ステップS10で読み込んだ物理ストライプに含まれている全ての論理ブロックの論理アドレスについて、繰り返す(ステップS13)。
【0070】
制御装置1は、ステップS10で読み込んだ物理ストライプに含まれている全ての論理ブロックの論理アドレスについて処理したならば(ステップS13のYES)、iを1だけインクリメントする(ステップS14)。また、制御装置1は、論理アドレスiが有効でない場合(ステップS8のNO)、或いは論理アドレスiの論理ブロックがディスクアレイ2に対して書き込み済みである場合には(ステップS9のNO)、そのままステップS14に進んでiを1だけインクリメントする。
【0071】
制御装置1はiを1だけインクリメントすると、そのインクリメント後のiの値から、全ての論理アドレスについて処理したか否かを判定する(ステップS15)。もし、未処理の論理アドレスが残っているならば(ステップS15のNO)、ステップS14でのインクリメント後のiで指定される論理アドレスiについて、上記ステップS8以降の処理を実行する。これに対し、全ての論理アドレスiについて処理したならば(ステップS15のYES)、制御装置1はレイドレベル変更処理を終了する。
【0072】
このように本実施形態においては、アドレス変換テーブルのコピー35を利用して、ホストコンピュータ10により使用されている有効な論理アドレスiを全て検索し、その有効な論理アドレスのデータをレイドレベル変更後のディスクアレイ2の空きストライプに連続して書き込んで行く(ステップS7〜S15)。
【0073】
本実施形態において、レイドレベル変更処理に伴ってホストコンピュータ10からの書き込み要求を停止しなければならないのは、明らかなようにステップS1からステップS7までの間である。この間に発生するディスクアレイ2への入出力回数は、レイドレベル変更の開始時に既に書き込みバッファ31上に蓄積されていたデータをディスクアレイ2に書き込むためのステップS2の1回だけである。それ以外は、全て不揮発性メモリ3上での操作であるため、ホストコンピュータ10からの書き込み要求の実行を停止しなければならない期間はごくわずかである。また、ステップS7以降の処理は、ホストコンピュータ10からの入出力要求と混在しても実行可能である。よって、本実施形態においては、システムを停止させずにディスクアレイ2のレイドレベルを変更すること、つまり動的なレイドレベル変更が可能となる。
【0074】
また、本実施形態においては、レイドレベル変更処理の開始時点でのアドレス変換テーブル32で有効となっている論理アドレスのデータのみをディスクアレイ2内での移動(再配置)対象としている。このため、レイドレベル変更開始時点で有効な論理アドレスの論理ブロックが含まれていた物理ストライプには、レイドレベル変更処理を終了した時点では有効な論理アドレスの論理ブロックは含まれなくなる。つまり、レイドレベル変更開始時点で有効な論理アドレスの論理ブロックが含まれていた物理ストライプは、レイドレベル変更処理を終了した時点では空きストライプとなることから、後述するセグメントクリーニングを実施する必要がない。
【0075】
[第1の変形例]
次に、本発明の実施形態の第1の変形例について、図6及び図7のフローチャートを援用して説明する。この第1の変形例の特徴は、有効な論理アドレスの順番に、対応するデータを、ディスクアレイ2上の更新されるべきデータを保持している領域とは別の空き領域の物理的に連続する位置に順次書き込みながらレイドレベル変更を行う点にある。
【0076】
第1の変形例では、制御装置1は、ステップS4で生成されたアドレス変換テーブルのコピー35を使用して、各エントリ情報が有効な論理アドレスの昇順にソートされた、レイドレベル変更処理用のアドレス変換テーブル(以下、ソート後のアドレス変換テーブルと称する)36を不揮発性メモリ3上に新たに生成する。このソートには、従来からよく知られているMergesort、Quicksort、Shellsort、Heapsort等の高速ソートアルゴリズムを適用するとよい。なお、アドレス変換テーブル32のi番目のエントリを論理アドレスiに対応させている場合、当該テーブル32内の各エントリは論理アドレスの昇順の並びとなっていることから、特別のソートアルゴリズムは不要である。
【0077】
ソート後のアドレス変換テーブル36が生成されると、制御装置1は当該テーブル36を使用して、図6及び図7のフローチャート中のステップS7以降の処理を実行する。これにより、有効な論理アドレスの順番に、対応するデータを、ディスクアレイ2上の更新されるべきデータを保持している領域とは別の空き領域の物理的に連続する位置に順次書き込みながら、ディスクアレイ2のレイドレベル変更が行われる。このように、有効な論理アドレスの順番に処理することで、有効な物理ストライプ中に無効なデータブロック、つまり断片化したデータブロックがなくなり、ストライプ内のフラグメンテーションが回避できる。この結果、レイドレベル変更後の論理アドレスと物理アドレスのマッピング関係の最適化が実施され、レイドレベル変更処理に起因するシーケンシャルアクセスの性能低下を防止できる。
【0078】
[第2の変形例]
次に、本発明の実施形態の第2の変形例について説明する。この第2の変形例では、ディスクアレイ2にRAID5の冗長化ディスク構成を適用しているものとする。ここでは、物理ストライプ中のパリティデータ(パリティ用のストライプユニット)が配置されるディスク装置は、上記実施形態で便宜的に想定したRAID4の冗長化ディスク構成を適用する場合と異なって固定化されず、物理ストライプ毎にサイクリックに切り替えられる。また、論理アドレスタグブロックTGが配置されるディスク装置も、パリティデータと同様に物理ストライプ毎にサイクリックに切り替えられる。
【0079】
まず本発明の実施形態の第2の変形例の概要について説明する。
第2の変形例において、ディスクアレイ2のレイドレベルをRAID5からレイド0に変更するものとする。レイドレベル変更直後のパリティデータの記録位置は、レイドレベル変更前と同じディスクアレイ2内の位置となる。つまり第3の変形例におけるレイドレベル変更処理では、パリティデータを含むデータの移動(再配置)は行われず、したがってパリティデータは、レイドレベル変更直後は、ディスク装置24を追加する前にディスクアレイ2を構成していたディスク装置21〜23のいずれかに配置されたままとなる。
【0080】
その後、ホストコンピュータ10からの書き込み要求に従うディスクアレイ2へのデータ書き込みをトリガにして、ディスク装置24の追加により拡張された物理ストライプ毎に、その物理ストライプの番号とディスク装置追加後にディスクアレイ2を構成しているディスク装置の台数とから決定される位置に、新たな論理アドレスタグブロックが格納される(RAID0へのレベル変更であるからパリティデータが必要なくなることに注意)。ここでは、ストライプ世代番号が更新(+1)されたタイムスタンプ情報TSを含む新たな論理アドレスタグブロックTGが生成され、同一ストライプ内の論理ブロックのデータと合わせてディスクアレイ2にまとめ書きされる。ディスクアレイ2に書き込まれた論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれている世代番号は、再度レイドレベル変更が実施されるまで同じ値が継続される。
【0081】
第2の変形例においては、レイドレベル変更前にディスクアレイ2を構成していたディスク装置21〜23に記録されているデータの移動とパリティデータの再生成とを実施する必要がない。このため、レイドレベル変更に要する時間を大幅に短縮することができる。
【0082】
次に、本発明の実施形態の第2の変形例におけるレイドレベル変更処理の詳細について、図8のフローチャートを参照して説明する。
制御装置1は、ホストコンピュータ10からレイドレベル変更が要求されると、バッファ管理テーブル34を調べて、書き込みバッファ31に蓄積されているデータがあるか否かを判定する(ステップS21)。もし、書き込みバッファ31内に蓄積されているデータがあるならば(ステップS21のYES)、制御装置1はステップS22に進む。制御装置1はステップS22において、書き込みバッファ31内に空きブロック領域があるならば、当該空きブロック領域にゼロを設定する。このゼロを設定する処理は、空きブロック領域がないならば、当然不要である。そして、制御装置1はステップS22において、そのときのバッファ管理テーブル34の各エントリのうち、フラグフィールドの状態が“F”のエントリに設定されている論理アドレスとタイムスタンプ情報33とから論理アドレスタグブロックTGを生成し、この論理アドレスタグブロックTGを含むレイドレベル変更前のサイズの1ストライプ分のデータを、ディスクアレイ2内のディスク装置21〜23の空き領域に一括して書き込む。ここで、1ストライプ分のデータは、書き込みバッファ31のデータとパリティデータとからなる。
【0083】
制御装置1はステップS22を実行すると、当該ステップS22でのディスク装置21〜23へのデータ書き込みに応じて、不揮発性メモリ3上のアドレス変換テーブル32を更新する(ステップS23)。制御装置1は、ステップS23でアドレス変換テーブル32を更新した場合、或いは書き込みバッファ31内に蓄積されているデータがないとステップS21で判定された場合には、アドレス変換テーブル32を不揮発性メモリ3上の別の領域にコピーして、アドレス変換テーブルのコピー35を生成する(ステップS24)。
【0084】
次に制御装置1は、レイドレベル変更後にストライプサイズが変更になることを考慮して、不揮発性メモリ3上の書き込みバッファ31をレイドレベル変更後のストライプサイズに対応した大きさに変更する(ステップS25)。つまり、制御装置1は、書き込みバッファ31を、レイドレベル変更後のストライプサイズに対応した大きさとなるように再構築する。また、制御装置1は、レイドレベル変更で増加する記憶容量分の物理ブロック用のエントリを、アドレス変換テーブル32の内容をレイドレベル変更前の状態に維持したままで、当該テーブル32に追加する(ステップS26)。これによりアドレス変換テーブル32は、レイドレベル変更後に対応したものに再構築される。
【0085】
次に制御装置1は、ステップS24で生成したアドレス変換テーブルのコピー35を使用してディスクアレイ2内の空きストライプを検索し、レイドレベル変更後のストライピングルールに従って当該空きストライプ中の論理アドレスタグブロックTGの位置を特定することで、その論理アドレスタグブロックTGをNULL(ここではゼロ)で初期化する(ステップS27)。
【0086】
次に制御装置1は、不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプ、ストライプ世代番号及びディスク台数を、それぞれ1だけインクリメントして更新し、その更新後のタイムスタンプ情報33をディスクアレイ2に確保されている特別な空き領域に記録する(ステップS28)。この特別な空き領域は、データを記録する領域とは別にディスクアレイ2内に確保される領域であり、制御装置1による管理に使用される領域である。このステップS28で、ディスクアレイ2内に記録されたタイムスタンプの情報(レイドレベル変更時タイムスタンプ情報)は、レイドレベル変更後において追加ディスク装置24への書き込みがあったか否かを判断する場合に必要となる。
【0087】
RAID5のように、パリティブロックがディスクアレイ2を構成する複数のディスク装置に分散配置される場合、レイドレベル変更前と、レイドレベル変更後で且つ拡張された物理ストライプに対する書き込みが行われた場合とで、論理アドレスタグブロックTGの記録位置がそれぞれ異なる。この様子を、図1においてディスク装置24が追加される前と、ディスク装置24が追加され、且つ拡張された物理ストライプに対する書き込みが行われた後とについて図9に示す。
【0088】
図9では、例えば物理ストライプ100中の論理アドレスタグブロック(を含むデータブロック)の位置が、ディスク装置21からディスク装置24へと変わっている。論理アドレスタグブロックの位置は、ディスクアレイ2を構成するディスク装置の台数と物理ストライプの番号(物理ストライプ番号)とから計算で求めることができる。
【0089】
図9の例では、ディスクアレイ2を構成するディスク装置の台数がディスク装置21,22,23の3台であるレイドレベル変更前は、物理ストライプ番号iをその台数3で割った剰余がそれぞれ0,1,2であれば、対応する物理ストライプ中のパリティブロックはそれぞれディスク装置21,22,23に配置され、論理アドレスタグブロック(を含むデータブロック)はそれぞれディスク装置23,21,22に配置される。一方、ディスクアレイ2を構成するディスク装置の台数がディスク装置21,22,23,24の4台であるレイドレベル変更後は、物理ストライプ番号iをその台数4で割った剰余がそれぞれ0,1,2,3であれば、対応する物理ストライプ中の論理アドレスタグブロック(を含むデータブロック)はそれぞれディスク装置24,21,22,23に配置される。このような配置を右対称の配置と称する。
【0090】
物理ストライプに記録されたデータブロックが有効か否かを判定するには、当該ストライプ中の論理アドレスタグブロックTGを読み込み、その論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれているタイムスタンプとディスクアレイ2上の特別な空き領域に記録されたタイムスタンプ情報に含まれているタイムスタンプとを比較すればよい。
【0091】
上記実施形態の第2の変形例では、不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプの値はストライプ単位のまとめ書き時点だけでなく、レイドレベル変更処理を終了する際の処理ステップ(ステップS28)でもインクリメントされる。このため、ある時点のタイムスタンプをT1、そのT1より後の時点のタイムスタンプであってT1より後に少なくとも1回は更新されたタイムスタンプをT2とすると、T1,T2の間にはT1<T2の関係がある。
【0092】
したがって、物理ストライプ中の論理アドレスタグブロックTGに設定されたタイムスタンプ情報TSに含まれているタイムスタンプの値の方が、レイドレベル変更処理を終了する際にディスクアレイ2の特別の領域に記録されたタイムスタンプ情報(レイドレベル変更時タイムスタンプ情報)に含まれているタイムスタンプの値より小さい場合には、そのストライプはレイドレベル変更前に使用されていたと判定できる。また、物理ストライプ中の論理アドレスタグブロックTGに設定されたタイムスタンプ情報TSがNULLであった場合には、そのストライプは、レイドレベル変更時点で未使用であり、つまり空きストライプであり、その状態が現在まで継続していると判定できる。また、物理ストライプ中の論理アドレスタグブロックTGに設定されたタイムスタンプ情報TSに含まれているタイムスタンプの値が、レイドレベル変更時タイムスタンプ情報TSに含まれているタイムスタンプの値以上の場合には、そのストライプはレイドレベル変更後に使用されたと判定できる。更に、レイドレベル変更処理が複数回実行される場合もあり得る。この場合には、後述する本発明の実施形態の第3の変形例で述べるように、物理ストライプ中の論理アドレスタグブロックTGに設定されたタイムスタンプ情報TSに含まれている世代番号を調べることで、そのストライプが何度目のレイドレベル変更時点で使用されていたかを判別することができる。
【0093】
よって、原理的には、パリティブロックまたは論理アドレスタグブロックTGの読み出しが必要となる度に、ディスクアレイ2上の各物理ストライプのチェック、つまりレイドレベル変更前に使用されていたストライプであるか、レイドレベル変更後に使用されたストライプであるかをチェックすることにより、読み出すべきパリティブロックまたは論理アドレスタグブロックTGを検出することができる。ところが、パリティブロックまたは論理アドレスタグブロックTGを頻繁に読み出す必要がある場合に、この方法を使用すると、ブロック読み出しに多大な時間を要することから実用的でない。
【0094】
そこで、パリティブロックまたは論理アドレスタグブロックTGのデータが必要となるディスクアレイ構成の再構築や後述するアドレス変換テーブルの再構築を実施する場合に限って、ディスクアレイ2上の全物理ストライプを対象に論理アドレスタグブロックTGの調査を行うことにより、ストライプテーブル41を生成して図1に示すように揮発性メモリ4上に配置するとよい。このストライプテーブル41の各エントリには、図10に示すように、ディスクアレイ2から読み出された物理ストライプの番号(物理ストライプ番号)と、当該物理ストライプ中の論理アドレスタグブロックTGに設定されたタイムスタンプ情報TSに含まれているタイムスタンプとが設定される。
【0095】
さて、ストライプテーブル41を生成する場合には、ディスクアレイ2を構成するディスク装置の台数と適用するレイドレベルとを意識して、論理アドレスタグブロックTGの読み込みのための入出力が各ディスク装置で並列に実行できるように論理アドレスタグブロックTG(物理アドレス)を選ぶならば、効率の向上を図ることが可能となる。図9中のレイドレベル変更後のディスクアレイ2の例であれば、物理ストライプ0,1,2,3に含まれる論理アドレスタグブロックは、それぞれ異なるディスク装置24,21,22,23に分散して配置されているため、同時に読み込むことが可能である。
【0096】
なお、ストライプテーブル41は必ずしも揮発性メモリ4上に配置する必要はなく、不揮発性メモリ3上に配置されるものであっても構わない。また、ストライプテーブル41が配置される揮発性メモリ4(または不揮発性メモリ3)の記憶容量に余裕がある場合には、ディスクアレイ2の構築時に、各エントリに全てNULLが設定されたストライプテーブル41を当該揮発性メモリ4(または不揮発性メモリ3)上に用意し、アドレス変換テーブル32の更新と同様に、ストライプ単位のまとめ書きの時点で、不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプの値を記録して当該ストライプテーブル41を更新するようにしてもよい。また、図1の例のように、ストライプテーブル41を揮発性メモリ4上に生成する場合には、先に述べたストライプテーブル41を生成する方法を適用して、システム起動の都度、当該ストライプテーブル41を揮発性メモリ4上に再生すればよい。
【0097】
本実施形態の第2の変形例では、レイドレベル変更処理に伴ってホストコンピュータ10からの書き込み要求を停止しなければならないのは、明らかなようにステップS21からステップS28までの間である。この間に発生するディスクアレイ2への入出力回数は、レイドレベル変更処理の開始時点で書き込みバッファ31に蓄積されていたデータをディスクアレイ2に書き込むためと、タイムスタンプ情報TSの書き込み(空きストライプ中の論理アドレスタグブロックTGに含まれているタイムスタンプ情報TSを初期化するため)に関する入出力のみである。しかも、ディスクアレイ2のレイドレベル変更を実施するのは、一般に、当該ディスクアレイ2の空き記憶容量が少なくなった場合、つまりディスクアレイ2上に空きストライプが少なくなった場合が多い。したがって、本実施形態の第2の変形例では、殆どの処理が不揮発性メモリ3上での操作となる。このため、ディスクアレイ2との間の入出力回数は最低限に抑えられ、レイドレベル変更に必要な時間はごくわずかである。
【0098】
ここで、本発明の実施形態の第2の変形例における、レイドレベル変更後のディスクアレイ装置の書き込み動作及び読み出し動作について簡単に順次説明する。
まず、ディスクアレイ装置内の制御装置1は、レイドレベル変更後にホストコンピュータ10からデータ書き込み要求を受け取った場合、当該ホストコンピュータ10により指定された書き込みデータ(更新データ)を、ステップS25で再構築された書き込みバッファ31に蓄積する。制御装置1は、レイドレベル変更後のストライピングルールで決まる量の、論理アドレスタグブロックTGを含むデータが書き込みバッファ31に蓄積された時点で、そのデータ及びパリティデータを含む1ストライプ分のデータを、ディスクアレイ2上の更新されるべきデータを保持している領域とは別の空き領域の物理的に連続する位置に順次書き込む。このとき制御装置1は、ステップS26で生成されたレイドレベル変更後のアドレス変換テーブル32を更新する。
【0099】
このように、第2の変形例における、レイドレベル変更後のディスクアレイ装置の書き込み動作は、上記実施形態と同様に行われる。但し、第2の変形例は、次の点で上記実施形態と異なる。まず、上記実施形態では、レイドレベル変更処理において、有効な論理アドレスのデータの移動(再配置)がレイドレベル変更後のレイドレベルに従って行われる。このため上記実施形態では、レイドレベル変更が終了した段階で、ディスクアレイ2の全ての有効な物理ストライプには、レイドレベル変更前の状態とは異なって、いずれも、レイドレベル変更後のストライピングルールに従って論理アドレスタグブロックTGが配置された1ストライプ分のデータが格納されている。これに対し、第2の変形例では、レイドレベル変更処理でデータの移動(再配置)は行われない。このため第2の変形例においては、レイドレベル変更後のディスクアレイ2上には、レイドレベル変更前のストライピングルールに従ってストライプ単位の書き込みが行われた有効な物理ストライプ、つまりレイドレベル変更前の有効な物理ストライプと、レイドレベル変更後のストライピングルールに従ってストライプ単位の書き込みが行われた有効な物理ストライプ、つまりレイドレベル変更後の有効な物理ストライプとが混在する可能性がある。この点が、上記実施形態と異なる。
【0100】
明らかなように、第2の変形例では、レイドレベル変更後は時間が経過するにつれて、レイドレベル変更後の有効な物理ストライプの割合が増加する。このことは、第2の変形例におけるレイドレベル変更処理、即ちディスクアレイ2上のデータの移動を行うことなく当該ディスクアレイ2のレイドレベルを変更する処理を実行しても、何ら問題がないことを示す。但し、第2の変形例では、上記したように、レイドレベル変更前の有効な物理ストライプと、レイドレベル変更後の有効な物理ストライプとが混在する。このため、第2の変形例では、物理ストライプから論理アドレスタグブロックTG及びパリティブロックを取り出す必要がある場合には、ディスクアレイ2が適用するレイドレベルによっては、その物理ストライプに適用されたストライピングルールを特定するために、その物理ストライプがレイドレベル変更前の有効な物理ストライプであるか、或いはレイドレベル変更後の有効な物理ストライプであるかを判別する必要がある。これについては、後述する。
【0101】
次に、第2の変形例における、レイドレベル変更後のディスクアレイ装置の読み込み動作について、簡単に説明する。
まず、制御装置1は、ホストコンピュータ10からの読み出し要求に応じて、読み出すべきデータの開始位置の論理アドレス(論理ブロックアドレス)とサイズ(データブロックのサイズの整数倍)とを受け取る。制御装置1は、受け取った論理アドレスとサイズとから、当該論理アドレスを含む、当該サイズで指定されるブロック数分の論理ブロックの論理アドレスを求める。制御装置1は、求めた各論理アドレスについて、ステップS26で不揮発性メモリ3上に再構築されたレイドレベル変更後のアドレス変換テーブル32の対応するエントリを参照することで、当該論理アドレス(論理ブロックアドレス)を物理アドレス(物理ブロックアドレス)に変換する。この物理アドレスは、物理ストライプ番号と物理ブロック番号とから構成される。
【0102】
制御装置1は、変換後の物理アドレスを用いて、ディスクアレイ2から当該物理アドレスで指定される物理ブロックのデータを読み込み、ホストコンピュータ10に転送する。ここで、ディスクアレイ2からの読み出しの対象となる物理ブロックを含む物理ストライプは、レイドレベル変更前の物理ストライプ、またはレイドレベル変更後の物理ストライプである。しかし、この物理ブロックを読み出すのに、いずれの物理ストライプであるかを意識する必要はない。明らかなように、アドレス変換後の物理アドレスの示す物理ブロックがレイドレベル変更前の物理ストライプに含まれている場合、そのアドレス変換に用いられたアドレス変換テーブル32内のエントリの情報は、レイドレベル変更前に登録されたものである。これに対し、アドレス変換後の物理アドレスの示す物理ブロックがレイドレベル変更後の物理ストライプに含まれている場合、そのアドレス変換に用いられたアドレス変換テーブル32内のエントリの情報は、レイドレベル変更後に登録されたものである。
【0103】
なお、ディスクアレイ装置には、一般にホストコンピュータ10と当該ディスクアレイ装置との間で入出力されるデータを一時保持するのに用いられるデータキャッシュが設けられている。したがって、ホストコンピュータ10から要求された読み出しの対象となるデータがデータキャッシュ上に存在する場合には、当該キャッシュ上のデータが読み出されてホストコンピュータ10に転送される。
【0104】
図11に、本発明の実施形態の第2の変形例におけるレイドレベル変更後のアドレス変換テーブル32の一例を示す。
図11の例では、例えば論理アドレスL0,L1に対応するアドレス変換テーブル32内のエントリには、NULL以外の値のタイムスタンプが設定されている。NULLでないので、不揮発性メモリ3に記録されているレイドレベル変更前のアドレス変換テーブル、つまりアドレス変換テーブルのコピー35に対応する物理ストライプ番号と物理ブロック番号とが登録されていることを示す。また、論理アドレスL2,Liの論理ブロックは、それぞれ物理ストライプ番号7000,10000の物理ストライプ中の、物理ブロック番号14,2のブロック領域に記録されていることを示す。論理アドレスLjは、無効な論理アドレスであることを示す。
【0105】
さて、RAID5を適用したディスクアレイ2のレイドレベル変更に、上記第2の変形例を用いた場合、レイドレベル変更後に書き込みが実施されていないストライプとレイドレベル変更後に書き込みが実施されたストライプとでは、論理アドレスタグロックの位置が異なってくる。先に述べたように、論理アドレスタグブロック位置は、物理ストライプ番号とディスクアレイを構成するディスク装置の台数とから簡単に計算できる。
【0106】
例えば、図2に示したように、ディスク装置21〜23を使用してレイドレベル変更前のディスクアレイ2を構成すると共に、当該ディスクアレイ2を右対称にパリティデータが配置されるRAID5で使用する場合には、物理ストライプ番号が100のパリティブロックは、100/3の剰余が1であることから、ディスク装置21〜23のうちの2番目のディスク装置22に配置され、論理アドレスタグブロックは、ディスク装置21〜23のうちの3番目のディスク装置23(パリティブロックが配置されるディスク位置 + 1)に配置される(図9(a)参照)。また、図5に示したように、追加されたディスク装置24を含むディスク装置21〜24を使用してレイドレベル変更後のディスクアレイ2を構成すると共に、当該ディスクアレイ2をRAID0で使用する場合には、右対称に論理アドレスタグブロックが配置され、レイドレベル変更後の物理ストライプ番号が100の物理ストライプに対するストライプ単位での書き込みが実施された後には、論理アドレスタグブロックは、100/4の剰余が0であることから、ディスク装置21〜24のうちの2番目のディスク装置22に配置される(図9(b)参照)。
【0107】
上述のようにディスクアレイ2内の各物理ストライプに配置される論理アドレスタグブロックの位置は、レイドレベル変更前とレイドレベル変更後(で且つ拡張された物理ストライプへの書き込みの後)とによって異なる。レイドレベル変更の前と後のどちらの物理ストライプが有効であるかを判定するためには、図11に示したレイドレベル変更後のアドレス変換テーブル32を使用すればよい。具体的には、判定の対象となる物理ストライプの物理ストライプ番号でレイドレベル変更後のアドレス変換テーブル32を逆引きし、当該物理ストライプ番号が登録されているエントリ中のタイムスタンプを、レイドレベル変更時にディスクアレイ2の特別な領域に保存されたタイムスタンプ情報(レイドレベル変更時タイムスタンプ情報)中のタイムスタンプと比較すればよい。ここでは、レイドレベル変更後のアドレス変換テーブル32内のエントリ中のタイムスタンプの値がレイドレベル変更時タイムスタンプ情報中のタイムスタンプの値以上であれば、対応する物理ストライプはレイドレベル変更後に物理ストライプ単位での書き込みがなされた有効なストライプであると判定される。これに対し、レイドレベル変更後のアドレス変換テーブル32内のエントリ中のタイムスタンプの値がレイドレベル変更時タイムスタンプ情報中のタイムスタンプの値より小さいならば、そのエントリ中のタイムスタンプが非NULLであるか否かにより、対応する物理ストライプが、レイドレベル変更前に物理ストライプ単位での書き込みがなされた有効なストライプであるか(非NULLの場合)、或いはレイドレベル変更前から空きストライプであったか(NULLの場合)が判定される。
【0108】
ここで、レイドレベル変更前またはレイドレベル変更後の有効な各物理ストライプ中の論理アドレスタグブロックの記録位置は、先に述べたように、そのレイドレベルの変更前または変更後においてディスクアレイ2を構成するディスク装置の台数と当該物理ストライプの物理ストライプ番号とから計算により決定される。
【0109】
本発明の実施形態の第2の変形例では、レイドレベル変更後にセグメントクリーニング処理が行われる。以下、このセグメントクリーニング処理について説明する。
【0110】
まず、本発明の実施形態では、前記したように、ホストコンピュータ10から要求された書き込みデータ(更新データ)により旧データの領域を直接書き換えるのではなく、その書き込みデータをブロック単位に分割して書き込みバッファ31に溜めておき、当該書き込みバッファ31に1ストライプ分の論理ブロックが溜まった段階で、その1ストライプ分の論理ブロック及びパリティブロックを含む1ストライプ分のデータブロックを、ディスクアレイ2内の旧データの領域とは別の空き領域にまとめて書き込む方法を適用している。この、まとめ書きのためには、空き領域が常に存在することが必要である。そこで、既に他の領域にデータが書き込まれ無効になっているデータを寄せ集めて空き領域を確保する必要がある。この処理をセグメントクリーニング処理と呼ぶ。
【0111】
セグメントクリーニング処理は、無効ブロック判定とストライプ統合との2つのステップに大別される。無効ブロックの判定には、レイドレベル変更後のアドレス変換テーブル32に記録されているタイムスタンプを使用する。このアドレス変換テーブル32に記録されているタイムスタンプには、その記録時点に不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプが用いられる。このタイムスタンプ情報33は、書き込みバッファ31に蓄積されたデータをストライプ単位でディスクアレイ2にまとめ書きする際に、論理アドレスタグブロックTGにタイムスタンプ情報TSの一部として付加される。先に述べたように、タイムスタンプ情報33に含まれているタイムスタンプは、ディスクアレイ2に対するストライプ単位の書き込みが行われる毎にインクリメントされる。したがって、ストライプ統合の対象となる各物理ストライプ中の各論理ブロックが無効であるか否か(有効であるか)は、当該ストライプに含まれている論理アドレスタグブロック中に、当該論理アドレスタグブロック中の各論理アドレスに対応するアドレス変換テーブル32内のエントリに設定されているタイムスタンプより値が小さいタイムスタンプ、つまり古いタイムスタンプが設定されているか否かにより判定可能である。
【0112】
ストライプ統合の対象となる物理ストライプに含まれている論理アドレスタグブロックの位置は、ディスクアレイ2にRAID5の冗長化ディスク構成を適用している第2の変形例では、先に述べたように当該ストライプがレイドレベル変更前の有効なストライプであるか、或いはレイドレベル変更後の有効なストライプであるかによって異なる。この物理ストライプ中の論理アドレスタグブロックの位置は、対応する物理ストライプ番号とディスクアレイ2を構成するディスク装置の台数とから、更に詳細に述べるならば、物理ストライプ番号とディスクアレイ2を構成するディスク装置の台数で決まるストライピングルールとから、簡単に計算できる。ここでは、ディスクアレイ2を構成するディスク装置の台数には、レイドレベル変更前の物理ストライプ中の論理アドレスタグブロック位置を計算する場合であれば、レイドレベル変更前のディスク台数3を用い、レイドレベル変更後の物理ストライプ中の論理アドレスタグブロック位置を計算する場合であれば、レイドレベル変更後のディスク台数4を用いればよい。
【0113】
ストライプ統合の対象となる物理ストライプがレイドレベル変更前の有効なストライプであるか、或いはレイドレベル変更後の有効なストライプであるかの判定、つまりストライプ判定のためには、先に述べたように、ストライプ統合の対象となる物理ストライプの物理ストライプ番号でレイドレベル変更後のアドレス変換テーブル32を逆引きし、当該物理ストライプ番号が登録されているエントリ中のタイムスタンプを、レイドレベル変更時タイムスタンプ情報中のタイムスタンプと比較すればよい。但し、第2の変形例では、以下に述べるように、ストライプ統合の対象となるストライプには、レイドレベル変更前のストライプが用いられる。なお、ストライプ統合の対象となるストライプを選択するためのアルゴリズムについては、従来から種々提案されていると共に本発明に直接関係しないため、説明を省略する。
【0114】
ストライプ統合処理の具体例を、図12を参照して説明する。
図12は、2つのストライプi,jを1つのストライプkに統合する例を示している。まず、ストライプi,jは、いずれも上述のストライプ判定でレイドレベル変更前の有効なストライプであると判定された物理ストライプである。ストライプiは、ブロックB1〜B11と論理アドレスタグブロックTGiとの12ブロックから構成され、ブロックB1〜B11中ではブロックB2,B7,B8の3ブロックが有効で他の8ブロックは無効であるとする。同様に、ストライプjは、ブロックB12〜B22と論理アドレスタグブロックTGjとの12ブロックから構成され、ブロックB12〜B22中ではブロックB12,B13,B18,B19,B20,B21,B22の7ブロックが有効で他の4ブロックが無効であるとする。ここで、ブロックBx(x=1〜22)の表記は、当該ブロックが論理アドレスがxの論理ブロックであることを示す。
【0115】
図12の例では、2つのストライプi,jの有効ブロックは論理アドレスタグブロックTGi,TGjを除くと合計で10ブロックしかない。したがって、この2つのストライプi,jを、当該ストライプi,jに含まれていた有効なブロックB2,B7,B8,B12,B13,B18,B19,B20,B21,B22と、対応する論理アドレスタグブロックTGkとを含む、拡張されたストライプkに統合することにより、結果として1つの空きストライプが確保できる。
【0116】
図12の例では、ストライプkに統合された有効ブロックを、B2,B7,B8,B12,B13,B18,B19,B20,B21,B22の順番、つまり論理アドレスの順番に並べている。このように、ストライプ統合時に、各有効ブロックを対応する論理アドレスの昇順に並び替えると、シーケンシャルアクセスの性能の低下を防ぐことができる。そのためには、ストライプ統合の対象として、連続した有効な論理アドレスの論理ブロックを含むストライプi,jを選択することが好ましい。
【0117】
さて制御装置1は、選択された2つのストライプi,jをストライプkに統合するために、当該ストライプi,jを揮発性メモリ4に読み込み、しかる後に当該ストライプi,j中の有効ブロックだけを不揮発性メモリ3上のレイドレベル変更後の書き込みバッファ31に詰めて書き込む。図12の例では、書き込みバッファ31上には、有効ブロックが書き込まれない空きのブロック領域が5つある。そこで制御装置1は、上記5つの空きブロック領域に、それぞれNULLを設定する。また、制御装置1は、ストライプi,j中の、対応する物理ストライプ番号とレイドレベル変更前のストライピングルールとで決まる位置に配置されている論理アドレスタグブロックTGi,TGjから有効ブロックの論理アドレスだけを取り出して、ストライプkにおける有効ブロックの配列に一致する並びの論理アドレス列とタイムスタンプ情報TSとを含む新たな論理アドレスタグブロックTGkを生成し、その論理アドレスタグブロックTGkを書き込みバッファ31の最後のブロック領域に書き込む。ここで、タイムスタンプ情報TS中のタイムスタンプ、世代番号、及びディスク台数には、その時点におけるタイムスタンプ情報33中のタイムスタンプ、世代番号、及びディスク台数が用いられる。このタイムスタンプ情報33は、ストライプkがディスクアレイ2に書き込まれた際に更新される。
【0118】
このように、ストライプ統合は、無効なデータブロックを持つ複数のストライプを統合して、その複数のストライプに含まれている全ての有効なデータブロックを持つストライプを作成する処理である。なお、2つのストライプを1つのストライプに統合するだけでなく、3つ以上のストライプを、それより少ない2つ以上のストライプに統合することも可能である。
【0119】
次に、本発明の実施形態の第2の変形例において、不揮発性メモリ3が故障した場合に適用されるアドレス変換テーブル32の再構築処理について、図13及び図14のフローチャートを参照して説明する。
【0120】
まず、本発明の実施形態では、ホストコンピュータ10からディスクアレイ装置への入出力要求に対し、不揮発性メモリ3上のアドレス変換テーブル32を用いて論理アドレスから物理アドレスへの変換が行われ、その物理アドレスを用いてディスクアレイ2がアクセスされる。このため、不揮発性メモリ3が故障した場合には、アドレス変換テーブル32が使用できなくなって、ディスクアレイ2へのアクセスができなくなってしまう。この場合、アドレス変換テーブル32の再構築処理が必要となる。
【0121】
アドレス変換テーブル32の再構築処理のためには、制御装置1はまず、各エントリの論理アドレスのフィールドにのみ論理アドレスが設定され、他のフィールドには全てNULLが設定されたアドレス変換テーブル32、つまり初期化されたアドレス変換テーブル32を、故障不揮発性メモリ3と交換された新たな不揮発性メモリ3上に配置する(ステップS31)。ここでは、アドレス変換テーブル32のエントリiには、そのエントリiに一致する論理アドレスLiが設定されている。
【0122】
次に、制御装置1は、物理ストライプを指定する変数iを最初の物理ストライプを示す初期値に設定する(ステップS32)。そして制御装置1は、ディスクアレイ2内の物理ストライプiに含まれている論理アドレスタグブロックTGを検出する処理(ステップS33〜S38)を実行する。この論理アドレスタグブロックTGを検出する処理の詳細については後述する。
【0123】
制御装置1は、検出した論理アドレスタグブロックTG中の各論理アドレスについて、その論理アドレスに対応するアドレス変換テーブル32内のエントリを参照する(ステップS39,S40)。そして制御装置1は、参照したアドレス変換テーブル32内エントリ中のタイムスタンプの値が、上記検出した論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれているタイムスタンプの値より小さいか否かを判定する(ステップS41)。
【0124】
もし、参照したアドレス変換テーブル32内エントリ中のタイムスタンプの値が、検出した論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれているタイムスタンプの値より小さいならば(ステップS41のYES)、制御装置1は当該エントリに設定されているアドレス変換情報は無効であり、したがって当該情報の示す物理ブロックのデータは無効であると判定する。この場合、制御装置1は、参照したアドレス変換テーブル32内エントリ中の物理ストライプ番号、物理ブロック番号、及びタイムスタンプを、上記検出した論理アドレスタグブロックTGが属する物理ストライプを示す番号、当該エントリに対応する論理アドレスの論理ブロックが格納されている物理ブロックの番号、及び当該論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれているタイムスタンプに更新し(ステップS42)、ステップS43に進む。
【0125】
これに対し、参照したアドレス変換テーブル32内のエントリ中のタイムスタンプの値が、上記検出した論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれているタイムスタンプの値以上であるならば、制御装置1は、当該エントリに設定されている情報の示す物理ブロックのデータは有効であると判定する。この場合、制御装置1は、参照したアドレス変換テーブル32内のエントリの更新を行わずに、そのままステップS43に進む。
【0126】
制御装置1は、上記ステップS43において、上記検出した論理アドレスタグブロックTG中の全ての論理アドレスについて処理したか否かを判定する。もし、未処理の論理アドレスが残っているならば(ステップS43のNO)、制御装置1はステップS39に戻って、上記検出した論理アドレスタグブロックTGから未処理の論理アドレスを取り出す。これに対し、全ての論理アドレスについて処理したならば(ステップS43のYES)、制御装置1はiを1だけインクリメントして(ステップS44)、そのインクリメント後のiの値、つまり物理ストライプiから、全ての物理ストライプについて処理したか否かを判定する(ステップS45)。もし、未処理の物理ストライプが残っているならば(ステップS45のNO)、制御装置1は、インクリメント後のiで指定される物理ストライプiについて、ステップS33以降の処理を実行する。これに対し、全ての物理ストライプについて処理したならば(ステップS45のYES)、制御装置1は、アドレス変換テーブル32の再構築処理を終了する。
【0127】
次に上記論理アドレスタグブロックTGを検出する処理の詳細について説明する。RAID5を適用したディスクアレイ2では、前記したようにレイドレベル変更後に書き込みが実施されていないストライプとレイドレベル変更後に書き込みが実施されたストライプとでは、論理アドレスタグブロックTGの位置が異なる場合がある(図9参照)。そのため、レイドレベル変更の前と後のどちらの物理ストライプが有効であるかを判断する必要がある。そこで、制御装置1は、物理ストライプiから論理アドレスタグブロックTGを検出するために、例えば当該物理ストライプiはレイドレベル変更後に書き込みがなされた物理ストライプであると仮定する。そして制御装置1は、レイドレベル変更後のストライピングルールに従って、物理ストライプi中の、物理ストライプ番号とディスクアレイ2を構成するディスク装置の台数(ここでは4)とで決まる位置から、論理アドレスタグブロックTGを読み込む(ステップS33)。
【0128】
制御装置1は、読み込んだ論理アドレスタグブロックTGがNULLであるか否かを判定する(ステップS34)。もし、読み込んだ論理アドレスタグブロックTGがNULLであるならば(ステップS34のYES)、制御装置1は、対応する物理ストライプiはレイドレベル変更時の上記ステップS27の処理で初期化(NULL初期化)されたままであり、レイドレベル変更後も依然として空きストライプのままであると判定する。この場合、制御装置1はディスクアレイ2内の次の物理ストライプからの論理アドレスタグブロックTGの検出のために、ステップS44に進む。これに対し、読み込んだ論理アドレスタグブロックTGがNULLでないならば(ステップS34のNO)、制御装置1は、当該論理アドレスタグブロックTG中のタイムスタンプの値がレイドレベル変更時にディスクアレイ2の特別な領域に保存されたタイムスタンプ情報(レイドレベル変更時タイムスタンプ情報)中のタイムスタンプの値以上であるか否かを判定する(ステップS35)。
【0129】
もし、論理アドレスタグブロックTG中のタイムスタンプの値がレイドレベル変更時タイムスタンプ情報中のタイムスタンプの値以上であるならば(ステップS35のYES)、制御装置1は、対応する物理ストライプiはレイドレベル変更後の有効な物理ストライプであるとして、ステップS33で読み込んだ論理アドレスタグブロックTGを採用する(ステップS36)。これにより、レイドレベル変更後の有効な物理ストライプiから、論理アドレスタグブロックTGが検出されたことになる。
【0130】
一方、論理アドレスタグブロックTG中のタイムスタンプの値がレイドレベル変更拡張時タイムスタンプ情報中のタイムスタンプの値以上であると判定できない場合(論理アドレスタグブロックTGが不定の場合も含む)には(ステップS35のNO)、制御装置1は、対応する物理ストライプがレイドレベル変更後の有効な物理ストライプであるとの仮定が誤っており、当該物理ストライプはレイドレベル変更前の有効な物理ストライプであると判定する。この場合、制御装置1は、レイドレベル変更前のストライピングルールに従って、物理ストライプi中の、物理ストライプ番号とレイドレベル変更前のディスクアレイ2を構成するディスク装置の台数(ここでは3)とで決まる位置から、論理アドレスタグブロックTGを読み込み(ステップS37)、当該論理アドレスタグブロックTGを採用する(ステップS38)。これにより、レイドレベル変更前の有効な物理ストライプiから、論理アドレスタグブロックTGが検出されたことになる。
【0131】
次に、本発明の実施形態の第2の変形例において、ディスクアレイ2のレイドレベルが例えばRAID5からRAID1(またはRAID1からRAID1)のような冗長データ(またはパリティデータ)を有するレイドレベルに変更された後に、当該ディスクアレイ2を構成するディスク装置のいずれか1つに障害が発生した場合に、その障害が発生したディスク装置のデータを予備のディスク装置に復旧する処理について、図15のフローチャートを参照して説明する。
【0132】
まず、制御装置1は、論理アドレス(論理ブロックアドレス)を示す変数iを初期値0に設定する(ステップS51)。次に、制御装置1は、論理アドレスiに対応する、レイドレベル変更後のアドレス変換テーブル32内のエントリを参照する(ステップ52)。制御装置1は、参照したアドレス変換テーブル32内エントリ中の物理ストライプ番号、物理ブロック番号、及びタイムスタンプの各項目がいずれもNULL以外であるか否かを調べることで、論理アドレスiが有効であるか否かを判定する(ステップS53)。
【0133】
もし、論理アドレスiが有効であるならば(ステップS53のYES)、つまり有効な論理アドレスiが検索できたなら、制御装置1は、上記参照したアドレス変換テーブル32内エントリ中の物理ブロック番号が、障害が発生したディスク装置(障害ディスク装置)に固有の物理ブロック番号であるか否かを判定する(ステップS54)。もし、参照したアドレス変換テーブル32内エントリに、障害ディスク装置に固有の物理ブロック番号が登録されているならば(ステップS54のYES)、つまり障害ディスク装置に固有の物理ブロック番号に対応する有効な論理アドレスiが検索できたなら、制御装置1は、当該エントリ中のタイムスタンプの値が、レイドレベル変更時タイムスタンプ情報中のタイムスタンプの値以上であるか否かを判定する(ステップS55)。
【0134】
もし、参照したアドレス変換テーブル32内エントリ中のタイムスタンプの値が、レイドレベル変更時タイムスタンプ情報中のタイムスタンプの値より小さいならば(ステップS55のNO)、制御装置1は、論理アドレスiのデータブロックが存在する物理ストライプがレイドレベル変更前の有効な物理ストライプであると判定する。この場合、制御装置1は、論理アドレスiのデータを、レイドレベル変更前のストライピングルールに従って復旧し、その復旧されたデータを障害ディスク装置に代えて用いられる予備ディスク装置、つまり置換ディスク装置に書き込む(ステップS56)。これに対し、参照したアドレス変換テーブル32内エントリ中のタイムスタンプの値が、レイドレベル変更時タイムスタンプ情報中のタイムスタンプの値以上ならば(ステップS55のYES)、制御装置1は、論理アドレスiのデータブロックが存在する物理ストライプがレイドレベル変更後の有効な物理ストライプであると判定する。この場合、制御装置1は、論理アドレスiのデータを、レイドレベル変更後のストライピングルールに従って復旧し、その復旧されたデータを上記置換ディスク装置に書き込む(ステップS57)。具体的には、ディスク装置21に障害が発生した場合を例にとると、制御装置1は、レイドレベル変更前の有効な物理ストライプに対応する有効な論理アドレスiについては、当該ストライプ中のディスク装置22及び23に属するデータブロックをもとに、レイドレベル変更後の有効な物理ストライプに対応する有効な論理アドレスiについては、当該ストライプ中のディスク装置22乃至24に属するデータブロックをもとに、いずれも各データブロック間の排他的論理和演算により(ディスクアレイ2がRAID4またはRAID5等を適用する場合)データを復旧する。
【0135】
制御装置1は、ステップS56またはS57を実行すると、iを1だけインクリメントする(ステップS58)。制御装置1は、このインクリメント後のiの値から、全ての論理アドレスについて処理したか否かを判定する(ステップS59)。もし、未処理の論理アドレスが残っているならば(ステップS59のNO)、ステップS58でのインクリメント後のiで指定される論理アドレスiについて、上記ステップS52以降の処理を実行する。これに対し、全ての論理アドレスについて処理したならば(ステップS59のYES)、制御装置1は、障害ディスク装置のデータを復旧する処理を終了する。これにより、ディスクアレイ2が再構築される。
【0136】
このように、本発明の実施形態の第2の変形例では、ディスクアレイ2を構成するディスク装置のいずれか1つに障害が発生した場合、ホストコンピュータ10により使用されている有効な論理アドレスであって、且つ障害ディスク装置上に存在する物理ブロックに割り当てられていた有効な論理アドレスが、アドレス変換テーブル32から検索され、その論理アドレスのデータのみが復旧される。このため、復旧処理が短時間で行える。ここで、論理アドレスのデータを復旧するためには、上記したように、当該論理アドレスのデータブロックが存在する物理ストライプが、レイドレベル変更前の有効な物理ストライプであるか、或いはレイドレベル変更後の有効な物理ストライプであるかを、判定する必要がある。第2の変形例では、この判定を、対象となる論理アドレスに対応するアドレス変換テーブル32内のエントリ中のタイムスタンプを、レイドレベル変更時タイムスタンプ情報中のタイムスタンプと比較することにより行っているため、正しい判定が可能となる。
【0137】
なお、復旧したデータは、当該データが障害ディスク装置に格納されていた物理ブロックに相当する置換ディスク装置内の物理ブロックに必ずしも書き込む必要はない。例えば、復旧したデータを含めて有効な論理アドレスのデータのみを、書き込みバッファ31に蓄積しながら、障害ディスク装置が置換ディスク装置に置き換えられたディスクアレイ2に対し、ストライプ単位で書き込みを行うようにしても構わない。この場合、セグメントクリーニングが同時に行える。
【0138】
つまり、ディスクアレイ2のRAID構成を再構築する場合には、次のようにすることで同時にセグメントクリーニングを実施することが可能となる。まず、レイドレベル変更後のアドレス変換テーブル32を使用して、有効な論理アドレスに対応する論理ブロックのデータのみをディスクアレイ2から読み出す。このディスクアレイ2から読み出した論理ブロックのデータをレイドレベル変更後の書き込みバッファ31に順次書き込む。そして、書き込みバッファ31に1ストライプ分の論理ブロックのデータが溜まる毎に、論理アドレスタグブロックとパリティブロックを生成し、その1ストライプ分の論理ブロックのデータと論理アドレスタグブロックとパリティブロックとからなる1ストライプ分のデータブロックを、レイドレベル変更後のストライピングルールに従ってディスクアレイ2に書き込む。これにより、RAID構成の再構築と同時にセグメントクリーニングを実現できる。
【0139】
ここで、RAID構成を再構築するに際し、先に述べた本発明の実施形態の第1の変形例と同様に、有効な論理アドレスを昇順に並び替えるとよい。この場合、有効な論理アドレスの順番に、その論理アドレスのデータをレイドレベル変更後の書き込みバッファ31に蓄積し、レイドレベル変更後のストライピングルールに従ってディスクアレイ2に書き込みすることになる。これにより、RAID構成の再構築処理後の論理アドレスの連続性が保証され、ホストコンピュータ10からのシーケンシャルリードを効率よく処理することができる。
【0140】
[第3の変形例]
次に、本発明の実施形態の第3の変形例によるレイドレベル変更処理について図16のフローチャートを参照して説明する。
【0141】
図16に示すように、第3の変形例によるレイドレベル変更処理は、図8のフローチャート中のステップS21〜S26に相当するステップS61〜S66と、図8のフローチャート中のステップS28に相当するステップS67とにより実現される。このように、第3の変形例の特徴は、第2の変形例におけるレイドレベル変更処理とは異なって、図8のフローチャート中のステップS27に相当する処理を必要としない点にある。このステップS27の処理、つまりディスクアレイ2のレイドレベル変更後の空きストライプに含まれている論理アドレスタグブロックTGをNULL初期化する処理は、有効な論理アドレスタグブロックTGがレイドレベル変更前と後のいずれで生成されたものであるかを判別可能とするために実行されている。しかし、第3の変形例では、有効な論理アドレスタグブロックTGがレイドレベル変更前または後のいずれに生成されたものであるか(或いは、何度目のレイドレベル変更で生成されたものであるか)を、当該論理アドレスタグブロックTG中の各論理アドレス、タイムスタンプ、ストライプ世代番号、及びディスク台数をもとに算出されるチェックサムを利用して判別することで、図16に示したように、レイドレベル変更処理における論理アドレスタグブロックTGのNULL初期化を不要としている。これにより、ディスク装置に対する入出力を必要最低限に抑えることができ、レイドレベル変更処理にかかる時間をより一層短縮することができる。
【0142】
次に、本発明の実施形態の第3の変形例において適用される有効な論理アドレスタグブロックを判別する処理について、図17のフローチャートを参照して説明する。なお、図17のフローチャートは、レイドレベル変更後におけるディスクアレイ2上の1つの物理ストライプについて有効な論理アドレスタグブロックTGを求める処理を示すものである。したがって、図17のフローチャートによって示される処理を、ディスクアレイ2上の全ての物理ストライプについて実行することにより、その全ての物理ストライプに対する有効な論理アドレスタグブロックTGを求めることが可能となる。
【0143】
まず、制御装置1は、ディスクアレイ2の特別な領域に保存されているタイムスタンプ情報、つまり最も最近に行われたレイドレベル変更時のタイムスタンプ情報を読み込む(ステップS71)。次に、制御装置1は、読み込んだタイムスタンプ情報から世代番号を取り出す(ステップS72)。制御装置1は、取り出した世代番号に対応するディスク台数と、判別の対象とする論理アドレスタグブロックTGを含む物理ストライプの物理ストライプ番号とから、当該論理アドレスタグブロックTGの記録位置を算出する(ステップS73)。
【0144】
制御装置1は、ステップS73での算出結果に基づき上記物理ストライプ番号で指定される物理ストライプに含まれている論理アドレスタグブロックTGを読み込む(ステップS74)。次に、制御装置1は、読み込んだ論理アドレスタグブロックTGが有効であると仮定して、当該論理アドレスタグブロックTG中の各論理アドレス、タイムスタンプ、ディスク台数、及び世代番号からチェックサムを算出する(ステップS75)。そして、制御装置1は、読み込んだ論理アドレスタグブロックTG中のチェックサムと、ステップS75で算出したチェックサムとが等しいか否かを判定する(ステップS76)。
【0145】
もし、読み込んだ論理アドレスタグブロックTG中のチェックサムと、算出したチェックサムとが等しいならば(ステップS76のYES)、制御装置1は、当該論理アドレスタグブロックTGは、上記世代番号で示されるレイドレベル変更後に生成された有効なブロックであると判定して、対応する物理ストライプについての処理を終了する(ステップS77)。この場合、有効であると判定された論理アドレスタグブロックTGを含む物理ストライプ中の有効な論理ブロックの位置、及び有効なパリティブロックの位置も、上記ディスク台数及び物理ストライプ番号とから決定可能である。
【0146】
これに対し、読み込んだ論理アドレスタグブロックTG中のチェックサムと、算出したチェックサムとが等しくないならば(ステップS76のNO)、制御装置1は、当該論理アドレスタグブロックTGは無効であると判定する。この場合、制御装置1は、上記世代番号を1だけデクリメントして(ステップS78)、上記ステップS73に戻る。なお、図17では省略されているが、世代番号が初期値に一致するまでステップS78が繰り返されても、論理アドレスタグブロックTGが無効であると判定された場合には、対応する物理ストライプは空きストライプであると判定され、当該物理ストライプについての処理は終了となる。
【0147】
このように、本発明の実施形態の第3の変形例では、世代番号とチェックサムを利用することで、上記第2の変形例のようにレイドレベル変更処理で論理アドレスタグブロックをNULL初期化することなく、レイドレベル変更前の有効な論理アドレスタグブロックとレイドレベル変更後の有効な論理アドレスタグブロックを検出でき、加えて、それぞれ異なるレイドレベル変更時点で使用されていた有効な論理アドレスタグブロックも正しく検出できる。したがって、この有効な論理アドレスタグブロックの検出機能を利用して、図13及び図14のフローチャート中のステップS33〜S38に相当する論理アドレスタグブロック検出処理を実行することで、不揮発性メモリ13が故障した場合のアドレス変換テーブル32の再構築処理も、上記第2の変形例と同様に実現できる。また、ディスクアレイ2を構成するディスク装置のいずれか1つに障害が発生した場合における、その障害が発生したディスク装置のデータを復旧する処理も、上記第2の変形例と同様に実現できる。
【0148】
[第4の変形例]
次に、本発明の実施形態の第4の変形例について説明する。この第4の変形例の特徴は、レイドレベル変更処理において、論理アドレスと物理アドレスとが一致するようにデータの移動(再配置)を実施する点にある。
【0149】
次に、本発明の実施形態の第4の変形例によるレイドレベル変更処理について図18及び図19のフローチャートを参照して説明する。
図18及び図19に示すように、第4の変形例によるレイドレベル変更処理は、図6のフローチャート中のステップS1〜S6に相当するステップS87〜S96と、図6及び図7のフローチャート中のステップS7〜S15に対応するステップS87〜S95とにより実現される。第4の変形例によるレイドレベル変更処理が図6及び図7のフローチャートに従うレイドレベル変更処理と異なる点は、このステップS87〜S95の処理にある。
【0150】
第4の変形例において、制御装置1は、アドレス変換テーブルのコピー35から有効な論理アドレスiと当該論理アドレスiに対応する物理アドレス(を構成する物理ストライプ番号及び物理ブロック番号)とを検索する(ステップS87〜S90)。制御装置1は、有効な論理アドレスi及び対応する物理アドレスを検索する都度、その物理アドレスの指定するレベル変更前のディスクアレイ2の領域から当該論理アドレスiのデータ(データブロック)を読み込む(ステップS91)。そして制御装置1は、読み込んだ論理アドレスiのデータを、書き込みバッファ31を介して、当該論理アドレスiに一致する物理アドレスiの指定するレベル変更後のディスクアレイ2の領域に書き込む(ステップS92,S93)。これにより、論理アドレスiのデータが当該論理アドレスiに一致する物理アドレスiの領域に移動されたことになる。制御装置1は、このデータ移動のための処理(ステップS90〜S93)を、アドレス変換テーブルのコピー35で示されている全ての有効な論理アドレスについて実行する(ステップS94,S95,S88,S89)。
【0151】
このように第4の変形例においては、アドレス変換テーブルのコピー35を利用して、有効な論理アドレス(と対応する物理アドレスを構成する物理ストライプ番号及び物理ブロック番号と)を検索し、その有効な論理アドレスのデータのみを、当該有効な論理アドレスに一致する物理アドレス(を構成する物理ストライプ番号及び物理ブロック番号)により示されるディスクアレイ2の領域に移動している。したがって第4の変形例においては、論理アドレスが有効であるか無効であるかに拘わらずにデータ移動を実施する従来技術に比較して、レイドレベル変更時のディスクアレイ2上でのデータ移動に係わる入出力を必要最低限に抑えることができ、レイドレベル変更処理に要する時間を短縮することができる。
【0152】
ここで、有効な論理アドレスiを検索する毎に、その論理アドレスiのデータを当該論理アドレスiに一致する物理アドレスで指定されるディスクアレイ2の領域に書き込む代わりに、そのデータを当該論理アドレスi(物理アドレスi)に対応するレイドレベル変更後の書き込みバッファ31の領域に蓄積するようにしてもよい。もし、論理アドレスiが無効であった場合には、当該論理アドレスiに対応する書き込みバッファ31の領域には何もデータを書き込む必要はないが、NULLを書き込んでもよい。そして、1ストライプ分の連続する論理アドレスについて処理する毎に、その際の書き込みバッファ31の1ストライプ分の領域のデータを、その連続する論理アドレスに一致する、ディスクアレイ2の連続する物理アドレスの領域に一括して書き込む。このようにすると、ディスクアレイ2に対する入出力回数が著しく減るため、レイドレベル変更処理に要する時間を一層短縮できる。
【0153】
なお、第4の変形例によるレイドレベル変更後は、不揮発性メモリ13上のアドレス変換テーブルを削除するか、或いは当該アドレス変換テーブルを使用しない構成とするならば、ディスクアレイにログ構造化ファイルシステムを適用しないディスクアレイ装置に対する入出力方式、つまり論理アドレスに一致する物理アドレスで指定されるディスクアレイ2の領域を固定的にアクセスする入出力方式に変更することも可能である。
【0154】
上記実施形態では、書き込みバッファ31、アドレス変換テーブル32、タイムスタンプ33、バッファ管理テーブル34、アドレス変換テーブルのコピー35、及びソート後のアドレス変換テーブル36の各部が不揮発性メモリ3に配置されるものとして説明したが、これに限るものではない。例えば、揮発性メモリと、電源オフ時にも当該揮発性メモリの記憶内容が消失するのを防止するための、電池等のメモリバックアップ機構とにより、等価的に不揮発性メモリ3に相当する不揮発性メモリを実現し、上記各部が揮発性メモリに配置される構成であっても構わない。つまり上記各部が、揮発性メモリとメモリバックアップ機構とから構成される不揮発性メモリに配置される構成であっても構わない。
【0155】
また、上記実施形態では、ディスク装置を追加してディスクアレイのレイドレベルを変更する場合について説明したが、ディスク装置を追加せずにディスクアレイのレイドレベルを変更する場合にも同様に実施できる。
【0156】
また、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0157】
【発明の効果】
以上詳述したように本発明によれば、ディスク装置を追加してディスクアレイ装置のレイドレベル変更を実施する場合に、ログ構造化ファイルシステムの特徴を利用することで、少なくとも無効な論理アドレスに対するデータについては移動することなしに動的なレイドレベル変更が実現でき、レイドレベル変更処理に要する時間を大幅に短縮することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るディスクアレイ装置を備えたコンピュータシステムの構成を示すブロック図。
【図2】1ストライプ分のデータの例と、当該1ストライプ分のデータがディスクアレイ2内のディスク装置21〜23に書き込まれる様子を示す図。
【図3】図1中のアドレス変換テーブル32のデータ構造例を示す図。
【図4】不揮発性メモリ3上に配置される書き込みバッファ31とバッファ管理テーブル34との関係の一例を示す図。
【図5】ディスクアレイ2のレイドレベル変更後における1ストライプ分のデータの例と、当該1ストライプ分のデータがディスクアレイ2内のディスク装置21〜24に書き込まれる様子を示す図。
【図6】同実施形態におけるディスクアレイ2のレイドレベルを変更するレイドレベル変更処理を説明するためのフローチャートの一部を示す図。
【図7】同実施形態におけるディスクアレイ2のレイドレベルを変更するレイドレベル変更処理を説明するためのフローチャートの残りを示す図。
【図8】同実施形態の第2の変形例で適用されるレイドレベル変更処理を説明するためのフローチャート。
【図9】レイドレベル変更の前と、レイドレベル変更の後で且つ拡張された物理ストライプに対する書き込みが行われた場合とで、論理アドレスタグブロックの記録位置がそれぞれ異なる様子を示す図。
【図10】図1中のストライプテーブル41のデータ構造例を示す図。
【図11】ディスクアレイ2のレイドレベル変更後におけるアドレス変換テーブル32のエントリ情報例を示す図。
【図12】同実施形態の第2の変形例で適用されるストライプ統合処理の具体例を説明するための図。
【図13】同実施形態の第2の変形例で適用されるアドレス変換テーブル32の再構築処理を説明するためのフローチャートの一部を示す図。
【図14】同実施形態の第2の変形例で適用されるアドレス変換テーブル32の再構築処理を説明するためのフローチャートの残りを示す図。
【図15】同実施形態の第2の変形例で適用されるデータ復旧処理を説明するためのフローチャート。
【図16】同実施形態の第3の変形例で適用されるレイドレベル変更処理を説明するためのフローチャート。
【図17】同実施形態の第3の変形例で適用される有効な論理アドレスタグを判別する処理を説明するためのフローチャート。
【図18】同実施形態の第4の変形例で適用されるレイドレベル変更処理を説明するためのフローチャートの一部を示す図。
【図19】同実施形態の第4の変形例で適用されるレイドレベル変更処理を説明するためのフローチャートの残りを示す図。
【符号の説明】
1…制御装置
2…ディスクアレイ
3…不揮発性メモリ
4…揮発性メモリ
10…ホストコンピュータ
21〜23…ディスク装置
24…追加ディスク装置
31…書き込みバッファ
32…アドレス変換テーブル
33…タイムスタンプ情報
34…バッファ管理テーブル
35…アドレス変換テーブルのコピー
36…ソート後のアドレス変換テーブル
41…ストライプテーブル

Claims (13)

  1. 複数のディスク装置から構成されるディスクアレイを備え、論理アドレスから物理アドレスに変換するアドレス変換テーブルを参照して前記ディスクアレイをアクセスするディスクアレイ装置であって、
    前記ディスクアレイへの1ストライプ単位の書き込み時に、前記アドレス変換テーブルを更新するアドレス変換テーブル更新手段と、
    前記ディスクアレイのレイドレベルを変更する場合に、レイドレベル変更前の前記アドレス変換テーブルのコピーを生成する手段と、
    前記ディスクアレイに書き込むべきデータを一時蓄積するための不揮発性メモリ上に確保された書き込みバッファと、
    前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイのレイドレベル変更後のストライプサイズに対応した大きさに再構築する手段と、
    前記アドレス変換テーブルのコピーに従って有効な論理アドレスを検索する手段と、
    前記検索手段によって検索された有効な論理アドレスに対応する物理アドレスのデータブロックが含まれる物理ストライプを前記ディスクアレイから読み込む手段と、
    前記読み込み手段により読み込まれた物理ストライプ中の有効な論理アドレスに対応する論理ブロックのデータを前記レイドレベル変更後の書き込みバッファに詰めて蓄積する手段と、
    前記レイドレベル変更後の書き込みバッファに前記レイドレベル変更後のストライプサイズに対応した1ストライプ分の論理ブロックのデータが蓄積された段階で、当該1ストライプ分の論理ブロックに対する論理アドレスを含む論理アドレスタグブロックを生成する手段と、
    前記論理アドレスタグブロック生成手段によって生成された論理アドレスタグブロックと当該論理アドレスタグブロックに対応する前記1ストライプ分の論理ブロックとを含む1ストライプ分のデータブロックを、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込む手段とを具備することを特徴とするディスクアレイ装置。
  2. 前記検索手段は、前記アドレス変換テーブルのコピーに従って論理アドレスの順番に有効な論理アドレスを検索することを特徴とする請求項1記載のディスクアレイ装置。
  3. 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと、当該1ストライプ分の各論理ブロックに対する論理アドレス、及び時刻情報を含むタイムスタンプ情報から構成される論理アドレスタグブロックと、当該1ストライプ分の論理ブロック及び当該論理アドレスタグブロックに対するパリティデータであるパリティブロックとを含む1ストライプ分のデータブロックが、レイドレベルを構成する前記ディスクアレイ内の前記複数のディスク装置の台数に対応したストライピングルールに従って、当該複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置であって、
    前記ホストコンピュータからの論理アドレスを前記ディスクアレイの物理アドレスに変換するためのアドレス変換情報、及び当該アドレス変換情報の登録または更新時の時刻情報の組が記憶されたアドレス変換テーブルと、
    前記ディスクアレイへの1ストライプ単位の書き込み時に、前記アドレス変換テーブル内の対応するアドレス変換情報及び時刻情報を更新するアドレス変換テーブル更新手段と、
    前記ディスクアレイのレイドレベルを変更する場合に、レイドレベル変更前の前記アドレス変換テーブルのコピーを生成する手段と、
    前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイのレイドレベル変更後のストライプサイズに対応した大きさに再構築する手段と、
    前記レイドレベル変更後のアドレス変換テーブルを、レイドレベル変更後に使用されるアドレス変換テーブルに再構築する手段と、
    前記レイドレベル変更前のアドレス変換テーブルのコピーに従って、前記ディスクアレイ内の空きストライプを検索し、レイドレベル変更後のストライピングルールに従って当該空きストライプ中の前記論理アドレスタグブロックの位置を特定することで、当該論理アドレスタグブロックを初期化する手段と、
    前記ディスクアレイのレイドレベル変更の終了時の時刻情報を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録する手段と
    前記レイドレベル変更後の前記ディスクアレイ中の物理ストライプについて、前記アドレス変換テーブルに当該物理ストライプに対応するアドレス変換情報と組をなして記憶された前記時刻情報を、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている時刻情報と比較することで、当該ストライプがレイドレベル変更前の有効な物理ストライプであるか、或いはレイドレベル変更後の有効な物理ストライプであるかを判定するストライプ判定手段と
    を具備することを特徴とするディスクアレイ装置。
  4. 前記ストライプ判定手段によりレイドレベル変更前の有効な物理ストライプであると判定された、ストライプ統合の対象となる物理ストライプを前記ディスクアレイから読み込む手段と、
    前記読み込み手段により読み込まれた前記ストライプ統合の対象となる物理ストライプ中の前記論理アドレスタグブロックに含まれている各論理アドレス毎に、当該論理アドレスに対応するアドレス変換情報と組をなして前記再構築されたアドレス変換テーブルに記憶された時刻情報を、当該論理アドレスタグブロックに含まれている時刻情報と比較することで、当該論理アドレスに対応する前記物理ストライプ中の論理ブロックが無効であるか或いは有効であるかを判定するブロック判定手段と、
    前記ストライプ統合の対象となる複数の物理ストライプ中の論理ブロックのうちの、前記ブロック判定手段により有効であると判定された論理ブロックを含む、前記レイドレベル変更後の1ストライプ分の論理ブロックのデータを前記書き込みバッファに蓄積する手段と、
    前記ブロック判定手段により有効であると判定された論理ブロックを含む前記レイドレベル変更後の1ストライプ分の論理ブロックのデータが前記書き込みバッファに蓄積された段階で、当該1ストライプ分の論理ブロックと、当該1ストライプ分の論理ブロックに対する論理アドレス、及びその時点の時刻情報を含むタイムスタンプ情報から構成される論理アドレスタグブロックと、当該1ストライプ分の論理ブロック及び当該論理アドレスタグブロックに対するパリティブロックとを含む1ストライプ分のデータブロックを、前記レイドレベル変更後のストライピングルールに従って、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込むことでストライプ統合を実行するストライプ統合手段と
    を更に具備することを特徴とする請求項3記載のディスクアレイ装置。
  5. 前記ディスクアレイ中の各物理ストライプ毎に、当該物理ストライプがレイドレベル変更後の有効な物理ストライプであると仮定して、当該ストライプから前記レイドレベル変更後のストライピングルールに従って論理アドレスタグブロックを読み込む手段と、
    前記読み込み手段により読み込まれた論理アドレスタグブロックのうちの、前記レイドレベル変更後のストライピングルールに従って初期化された論理アドレスタグブロック以外の各論理アドレスタグブロックについて、当該論理アドレスタグブロックに含まれている時刻情報を、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている時刻情報と比較することで、対応する前記物理ストライプがレイドレベル変更後の有効な物理ストライプであるか、或いはレイドレベル変更前の有効な物理ストライプであるかを判定するストライプ判定手段
    とを更に具備することを特徴とする請求項3記載のディスクアレイ装置。
  6. 前記アドレス変換テーブルが使用不可能な状態となった場合に、初期化された新たなアドレス変換テーブルを生成する手段と、
    前記ディスクアレイの各物理ストライプのうち、前記レイドレベル変更後のストライピングルールに従って初期化された論理アドレスタグブロックを含む空きストライプ以外の有効な物理ストライプから、有効な論理アドレスタグブロックを検出する手段と、
    前記検出手段により検出された論理アドレスタグブロックに含まれている各論理アドレス毎に、当該論理アドレスに対応するアドレス変換情報と組をなして前記新たなアドレス変換テーブルに記憶された時刻情報を、当該論理アドレスタグブロックに含まれている時刻情報と比較することで、当該アドレス変換情報が有効であるか或いは無効であるかを判定するアドレス変換情報判定手段と
    を更に具備し、
    前記アドレス変換テーブル更新手段は、前記アドレス変換情報判定手段により前記アドレス変換情報が無効であると判定された場合に、前記新たなアドレス変換テーブル内の当該アドレス変換情報及び時刻情報を更新する
    ことを特徴とする請求項3記載のディスクアレイ装置。
  7. 前記論理アドレスタグブロック検出手段は、
    前記ディスクアレイ中の各物理ストライプ毎に、当該物理ストライプがレイドレベル変更後の有効な物理ストライプであると仮定して、当該ストライプから前記レイドレベル変更後のストライピングルールに従って論理アドレスタグブロックを読み込む第1の論理アドレスタグブロック読み込み手段と、
    前記第1の論理アドレスタグブロック読み込み手段により読み込まれた論理アドレスタグブロックのうちの、前記レイドレベル変更後のストライピングルールに従って初期化された論理アドレスタグブロック以外の各論理アドレスタグブロックについて、当該論理アドレスタグブロックに含まれている時刻情報を、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている時刻情報と比較することで、対応する前記物理ストライプがレイドレベル変更後の有効な物理ストライプであるとの仮定が正しかったか或いは誤っていたかを判定する手段と、
    前記物理ストライプがレイドレベル変更後の有効な物理ストライプであるとの仮定が誤っていたと判定された場合、当該物理ストライプから前記レイドレベル変更前のストライピングルールに従って論理アドレスタグブロックを読み込む第2の論理アドレスタグブロック読み込み手段と、
    前記物理ストライプがレイドレベル変更後の有効な物理ストライプであるとの仮定が正しかったと判定された場合には、当該物理アドレスから前記第1の論理アドレスタグブロック読み込み手段により読み込まれた論理アドレスタグブロックを採用し、前記物理ストライプがレイドレベル変更後の有効な物理ストライプであるとの仮定が誤っていたと判定された場合には、当該物理アドレスから前記第2の論理アドレスタグブロック読み込み手段により読み込まれた論理アドレスタグブロックを採用する手段と
    を含むことを特徴とする請求項6記載のディスクアレイ装置。
  8. 前記ディスクアレイを構成する前記複数のディスク装置のいずれか1つが故障して、当該故障したディスク装置に代えて予備のディスク装置を用いて前記ディスクアレイを再構築する場合に、前記再構築されたアドレス変換テーブル内の各アドレス変換情報を参照することで、前記故障ディスク装置上に存在する物理ブロックに割り当てられていた有効な論理アドレスを検索する手段と、
    前記検索手段により検索された各論理アドレス毎に、当該論理アドレスに対応するアドレス変換情報と組をなして前記再構築されたアドレス変換テーブルに記憶された時刻情報を、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている時刻情報と比較することで、当該論理アドレスに対応する物理ストライプがレイドレベル変更前の有効な物理ストライプであるか、或いはレイドレベル変更後の有効な物理ストライプであるかを判定するストライプ判定手段と、
    前記検索手段により検索された各論理アドレス毎に、前記ストライプ判定手段の判定結果に応じて、対応するデータをレイドレベル変更前またはレイドレベル変更後のストライピングルールに従って復旧する手段と、
    を更に具備することを特徴とする請求項3記載のディスクアレイ装置。
  9. 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと、当該1ストライプ分の各論理ブロックに対する論理アドレスを含む論理アドレスタグ、並びに時刻情報及びレイドレベル変更回数を示す世代番号を含むタイムスタンプ情報であって、当該タイムスタンプ情報のチェックサムが付加されたタイムスタンプ情報から構成される論理アドレスタグブロックと、当該1ストライプ分の論理ブロック及び当該論理アドレスタグブロックに対するパリティデータであるパリティブロックとを含む1ストライプ分のデータブロックが、レイドレベルを構成する前記ディスクアレイ内の前記複数のディスク装置の台数に対応したストライピングルールに従って、当該複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置であって、
    前記ホストコンピュータからの論理アドレスを前記ディスクアレイの物理アドレスに変換するためのアドレス変換情報、及び当該アドレス変換情報の登録または更新時の時刻情報の組が記憶されたアドレス変換テーブルと、
    前記ディスクアレイへの1ストライプ単位の書き込み時に、前記アドレス変換テーブル内の対応するアドレス変換情報及び時刻情報を更新するアドレス変換テーブル更新手段と、
    前記ディスクアレイのレイドレベルを変更する場合に、レイドレベル変更前の前記アドレス変換テーブルのコピーを生成する手段と、
    前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイのレイドレベル変更後のストライプサイズに対応した大きさに再構築する手段と、
    前記レイドレベル変更前のアドレス変換テーブルを、レイドレベル変更後に使用されるアドレス変換テーブルに再構築する手段と、
    前記ディスクアレイのレイドレベル変更の終了時の時刻情報、及び世代番号を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録する手段と
    前記ディスクアレイ中の各物理ストライプから、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている前記世代番号に対応するレイドレベル変更で再構築されたディスクアレイを構成するディスク装置の台数と、当該物理ストライプの物理ストライプ番号とをもとに、前記論理アドレスタグブロックを読み込む手段と、
    前記論理アドレスタグブロック読み込み手段により前記論理アドレスタグブロックが読み込まれる毎に、当該論理アドレスタグブロックに含まれている前記論理アドレスタグ及びタイムスタンプ情報のチェックサムを算出する手段と、
    前記論理アドレスタグブロック読み込み手段により前記論理アドレスタグブロックが読み込まれる毎に、当該論理アドレスタグブロックに含まれているチェックサムと、当該論理アドレスタグブロックをもとに前記チェックサム算出手段により算出されたチェックサムとを比較し、その比較結果に応じて当該論理アドレスタグブロックが有効であるか、或いは無効であるかを判定することで、有効な論理アドレスタグブロックを検出する手段と、
    前記検出手段により前記論理アドレスタグブロックが無効であると判定された場合、前記世代番号を1世代前の番号に変更し、その変更後の世代番号を用いて、前記論理アドレスタグブロック読み込み手段による当該論理アドレスタグブロックに対応する前記物理ストライプからの再度の論理アドレスタグブロック読み込みを行わせる手段と
    を具備することを特徴とするディスクアレイ装置。
  10. 前記ディスクアレイのレイドレベル変更に際し、前記書き込みバッファにデータが蓄積されているならば、当該バッファにレイドレベル変更前のストライプサイズの1ストライプ分の論理ブロックが蓄積されたとして、当該バッファに蓄積されているデータを含む1ストライプ分のデータブロックを生成して、前記ディスクアレイに強制的に書き込む強制書き込み手段を更に具備することを特徴とする請求項1または請求項3記載のディスクアレイ装置。
  11. 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと当該1ストライプ分の論理ブロックに対する論理アドレスを含む論理アドレスタグブロックとを含む1ストライプ分のデータブロックが、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれ、論理アドレスから物理アドレスに変換するアドレス変換テーブルを参照して前記ディスクアレイをアクセスするディスクアレイ装置におけるレイドレベル変更方法であって、
    前記ディスクアレイへの1ストライプ単位の書き込み時に、前記アドレス変換テーブルを更新するステップと、
    前記ディスクアレイのレイドレベルを変更する場合に、レイドレベル変更前の前記アドレス変換テーブルのコピーを生成するステップと、
    前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイのレイドレベル変更後のストライプサイズに対応した大きさに再構築するステップと、
    前記アドレス変換テーブルのコピーに従って有効な論理アドレスを検索するステップと、
    前記検索ステップで検索された有効な論理アドレスに対応する物理アドレスのデータブロックが含まれる物理ストライプを前記ディスクアレイから読み込むステップと、
    前記読み込みステップで読み込まれた物理ストライプ中の有効な論理アドレスに対応する論理ブロックのデータを前記再構築後の書き込みバッファに詰めて蓄積するステップと、
    前記再構築後の書き込みバッファに前記レイドレベル変更後のストライプサイズに対応した1ストライプ分の論理ブロックのデータが蓄積された段階で、当該1ストライプ分の論理ブロックに対する論理アドレスを含む論理アドレスタグブロックを生成するステップと、
    前記生成された論理アドレスタグブロックと当該論理アドレスタグブロックに対応する前記1ストライプ分の論理ブロックとを含む1ストライプ分のデータブロックを、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込むステップと
    を具備することを特徴とするディスクアレイ装置におけるレイドレベル変更方法。
  12. 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと、当該1ストライプ分の各論理ブロックに対する論理アドレス及び時刻情報を含むタイムスタンプ情報から構成される論理アドレスタグブロックと、当該1ストライプ分の論理ブロック、及び当該論理アドレスタグブロックに対するパリティデータであるパリティブロックとを含む1ストライプ分のデータブロックが、レイドレベルを構成する前記ディスクアレイ内の前記複数のディスク装置の台数に対応したストライピングルールに従って、当該複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置におけるレイドレベル変更方法であって、
    前記ディスクアレイへの1ストライプ単位の書き込み時に、前記ホストコンピュータからの論理アドレスを前記ディスクアレイの物理アドレスに変換するためのアドレス変換情報、及び当該アドレス変換情報の登録または更新時の時刻情報の組が記憶されたアドレス変換テーブルを更新するステップと
    前記ディスクアレイにディスク装置を追加して当該ディスクアレイの記憶容量を拡張する場合に、前記アドレス変換テーブルのコピーを生成するステップと、
    前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイのレイドレベル変更後のストライプサイズに対応した大きさに再構築するステップと、
    前記レイドレベル変更前のアドレス変換テーブルを、レイドレベル変更後に使用されるアドレス変換テーブルに再構築するステップと、
    前記アドレス変換テーブルのコピーに従って、前記ディスクアレイ内の空きストライプを検索し、レイドレベル変更後のストライピングルールに従って当該空きストライプ中の前記論理アドレスタグブロックの位置を特定することで、当該論理アドレスタグブロックを初期化するステップと、
    前記ディスクアレイのレイドレベル変更の終了時の時刻情報を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録するステップと
    前記レイドレベル変更後の前記ディスクアレイ中の物理ストライプについて、前記アドレス変換テーブルに当該物理ストライプに対応するアドレス変換情報と組をなして記憶された前記時刻情報を、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている時刻情報と比較することで、当該ストライプがレイドレベル変更前の有効な物理ストライプであるか、或いはレイドレベル変更後の有効な物理ストライプであるかを判定するステップと
    を具備することを特徴とするディスクアレイ装置におけるレイドレベル変更方法。
  13. 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと、当該1ストライプ分の各論理ブロックに対する論理アドレスを含む論理アドレスタグ、並びに時刻情報及びレイドレベル変更回数を示す世代番号を含むタイムスタンプ情報であって、当該タイムスタンプ情報のチェックサムが付加されたタイムスタンプ情報から構成される論理アドレスタグブロックと、当該1ストライプ分の論理ブロック及び当該論理アドレスタグブロックに対するパリティデータであるパリティブロックとを含む1ストライプ分のデータブロックが、レイドレベルを構成する前記ディスクアレイ内の前記複数のディスク装置の台数に対応したストライピングルールに従って、当該複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置におけるレイドレベル変更方法であって、
    前記ディスクアレイへの1ストライプ単位の書き込み時に、前記ホストコンピュータからの論理アドレスを前記ディスクアレイの物理アドレスに変換するためのアドレス変換情報、及び当該アドレス変換情報の登録または更新時の時刻情報の組が記憶されたアドレス変換テーブル内の対応するアドレス変換情報及び時刻情報を更新するステップと、
    前記ディスクアレイのレイドレベルを変更する場合に、レイドレベル変更前の前記アドレス変換テーブルのコピーを生成するステップと、
    前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイのレイドレベル変更後のストライプサイズに対応した大きさに再構築するステップと、
    前記レイドレベル変更前のアドレス変換テーブルを、レイドレベル変更後に使用されるアドレス変換テーブルに再構築するステップと、
    前記ディスクアレイのレイドレベル変更の終了時の時刻情報、及び世代番号を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録するステップと
    前記ディスクアレイ中の各物理ストライプから、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている前記世代番号に対応するレイドレベル変更で再構築されたディスクアレイを構成するディスク装置の台数と、当該物理ストライプの物理ストライプ番号とをもとに、前記論理アドレスタグブロックを読み込むステップと、
    前記論理アドレスタグブロックが読み込まれる毎に、当該論理アドレスタグブロックに含まれている前記論理アドレスタグ及びタイムスタンプ情報のチェックサムを算出するステップと、
    前記論理アドレスタグブロックが読み込まれる毎に、当該論理アドレスタグブロックに含まれているチェックサムと、当該論理アドレスタグブロックをもとに算出されたチェックサムとを比較し、その比較結果に応じて当該論理アドレスタグブロックが有効であるか、或いは無効であるかを判定することで、有効な論理アドレスタグブロックを検出するステップと、
    前記論理アドレスタグブロックが無効であると判定された場合、前記世代番号を1世代前の番号に変更し、その変更後の世代番号を用いて、前記論理アドレスタグブロックを読み込むステップによる当該論理アドレスタグブロックに対応する前記物理ストライプからの再度の論理アドレスタグブロック読み込みを行わせるステップと
    を具備することを特徴とするディスクアレイ装置におけるレイドレベル変更方法。
JP2002252372A 2002-08-30 2002-08-30 ディスクアレイ装置及び同装置におけるレイドレベル変更方法 Expired - Fee Related JP3788961B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002252372A JP3788961B2 (ja) 2002-08-30 2002-08-30 ディスクアレイ装置及び同装置におけるレイドレベル変更方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002252372A JP3788961B2 (ja) 2002-08-30 2002-08-30 ディスクアレイ装置及び同装置におけるレイドレベル変更方法

Publications (2)

Publication Number Publication Date
JP2004094429A JP2004094429A (ja) 2004-03-25
JP3788961B2 true JP3788961B2 (ja) 2006-06-21

Family

ID=32058656

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002252372A Expired - Fee Related JP3788961B2 (ja) 2002-08-30 2002-08-30 ディスクアレイ装置及び同装置におけるレイドレベル変更方法

Country Status (1)

Country Link
JP (1) JP3788961B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10282252B2 (en) 2016-05-03 2019-05-07 Samsung Electronics Co., Ltd. RAID storage device and method of management thereof

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005332123A (ja) * 2004-05-19 2005-12-02 Fujitsu Ltd ディスクアレイ装置およびディスクアレイ装置におけるグループ分割方法
JP2006209237A (ja) * 2005-01-25 2006-08-10 Hitachi Ltd 記憶システム及びその制御方法並びに仮想化装置
WO2010121902A1 (en) 2009-04-21 2010-10-28 International Business Machines Corporation Apparatus and method for controlling a solid state disk ( ssd ) device
US9229809B2 (en) * 2011-09-11 2016-01-05 Microsoft Technology Licensing Llc Nonvolatile media journaling of verified data sets
US10789209B2 (en) * 2013-02-01 2020-09-29 Hitachi Vantara Llc Method and apparatus to enable finer-grained, scalable allocation of storage in a data storage system
JP6171478B2 (ja) 2013-03-28 2017-08-02 富士通株式会社 ストレージシステム、情報処理装置、情報処理装置の制御プログラム、および情報処理装置の制御方法
WO2018165957A1 (en) * 2017-03-16 2018-09-20 Microsoft Technology Licensing, Llc. Log-appended-structured storage management with byte-level accessibility
JP6864228B2 (ja) 2017-06-07 2021-04-28 株式会社バッファロー 記憶装置および記憶装置のデータ管理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659704A (en) * 1994-12-02 1997-08-19 Hewlett-Packard Company Methods and system for reserving storage space for data migration in a redundant hierarchic data storage system by dynamically computing maximum storage space for mirror redundancy
JP3641872B2 (ja) * 1996-04-08 2005-04-27 株式会社日立製作所 記憶装置システム
JP2000010738A (ja) * 1998-06-17 2000-01-14 Toshiba Corp ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10282252B2 (en) 2016-05-03 2019-05-07 Samsung Electronics Co., Ltd. RAID storage device and method of management thereof

Also Published As

Publication number Publication date
JP2004094429A (ja) 2004-03-25

Similar Documents

Publication Publication Date Title
JP3702231B2 (ja) ディスクアレイ装置及び同装置における動的記憶容量拡張方法
US7761655B2 (en) Storage system and method of preventing deterioration of write performance in storage system
US10430279B1 (en) Dynamic raid expansion
US6738863B2 (en) Method for rebuilding meta-data in a data storage system and a data storage system
US6898668B2 (en) System and method for reorganizing data in a raid storage system
US7386758B2 (en) Method and apparatus for reconstructing data in object-based storage arrays
US6886068B2 (en) Disk array apparatus and data update method for storing tag blocks
JP3682256B2 (ja) ディスクアレイ装置及び同装置におけるパリティ処理方法
KR100211790B1 (ko) 직접 액세스 저장 장치에서 데이터 압축을 위한 디렉토리 재 구축 방법 및 장치
JP3505093B2 (ja) ファイル管理システム
EP1739535B1 (en) File system storing transaction records in flash-like media
US9104342B2 (en) Two stage checksummed raid storage model
US5488701A (en) In log sparing for log structured arrays
JP3579389B2 (ja) ディスクアレイ装置及び同装置におけるデータ復旧方法
JP4950897B2 (ja) 種々のサイズの格納デバイスを可能にする動的に拡張可能かつ縮小可能な故障許容格納システム、および方法
CN112596673B (zh) 具有双重raid数据保护的多活多控存储系统
JP2003186628A (ja) ディスクアレイ装置及びデータバックアップ方法
JP6696280B2 (ja) 情報処理装置、raid制御方法、およびraid制御プログラム
US7346733B2 (en) Storage apparatus, system and method using a plurality of object-based storage devices
JP2001243021A (ja) ランダムディスクライトに好適なディスク制御機構
JP3788961B2 (ja) ディスクアレイ装置及び同装置におけるレイドレベル変更方法
US7526622B1 (en) Method and system for detecting and correcting data errors using checksums and replication
US7293193B2 (en) Array controller for disk array, and method for rebuilding disk array
JP2006178926A (ja) 複数のオブジェクトベースのストレージ装置を使用したストレージ装置、システム、および方法
US7281188B1 (en) Method and system for detecting and correcting data errors using data permutations

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050712

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050912

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: 20060322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060324

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

Free format text: PAYMENT UNTIL: 20090407

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100407

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100407

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110407

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees