JP3702231B2 - ディスクアレイ装置及び同装置における動的記憶容量拡張方法 - Google Patents
ディスクアレイ装置及び同装置における動的記憶容量拡張方法 Download PDFInfo
- Publication number
- JP3702231B2 JP3702231B2 JP2002023919A JP2002023919A JP3702231B2 JP 3702231 B2 JP3702231 B2 JP 3702231B2 JP 2002023919 A JP2002023919 A JP 2002023919A JP 2002023919 A JP2002023919 A JP 2002023919A JP 3702231 B2 JP3702231 B2 JP 3702231B2
- Authority
- JP
- Japan
- Prior art keywords
- stripe
- disk array
- storage capacity
- logical
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1096—Parity calculation or recalculation after configuration or reconfiguration of the system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Description
【発明の属する技術分野】
本発明は、複数のディスク装置から構成されるディスクアレイを備え、ログ構造化ファイルシステム(Log-Structured File System)を適用するディスクアレイ装置に係り、特にディスク装置を追加してディスクアレイの記憶容量を拡張する場合に好適なディスクアレイ装置及び同装置における動的記憶容量拡張方法に関する。
【0002】
【従来の技術】
従来からログ構造化ファイルシステムと呼ばれるディスク記憶管理方法が知られている。ログ構造化ファイルシステムについては、例えば以下の文献、"The Design and Implementation of a Log-Structured File System",Mendel Rosenblum and John K.Ousterhout,ACM Transaction on Computer Systems,February 1992に詳細に記載されている。この文献に記載されたログ構造化ファイルシステムを要約すると、更新後のデータを、複数個まとめて有効なデータが格納されていない別の連続領域に書き込み、更新前に、当該データが格納されていた古い領域を無効にする方法である。
【0003】
また、ログ構造化ファイルシステムを、ディスクアレイ装置においてシステムを停止することなく記憶容量を拡張する、いわゆる動的記憶容量拡張に適用した例が、特開2000−10738号公報の第34頁右欄の段落[0195]〜[0198]等に記載されている。ここでは、追加するディスク装置の全ての領域に“0”を書き込むことによって、パリティを再計算することなしに当該追加するディスク装置の領域をディスクアレイ装置に追加する動的記憶容量拡張技術が提案されている。
【0004】
この特開2000−10738号公報に記載された動的記憶容量拡張技術においては、ディスク装置をディスクアレイ装置に追加して当該ディスクアレイ装置の記憶容量を拡張するのに、ディスクアレイ装置を構成している領域全体に渡ってデータの移動を行う必要はないものの、追加するディスク装置の全てのデータ領域に“0”を書き込む、つまり全てのデータブロックを無効にする必要がある。このため、上記動的記憶容量拡張技術では、追加するディスク装置の記憶容量に依存して多くの時間が必要となる。また、上記動的記憶容量拡張技術では、記憶容量拡張後の論理アドレスと物理アドレスのマッピング関係の最適化の考慮がなされていないため、シーケンシャルアクセスの性能が低下するという問題もある。
【0005】
この特開2000−107378号公報に記載された動的記憶容量拡張技術においては、ディスク装置をディスクアレイ装置に追加して当該ディスクアレイ装置の記憶容量を拡張するのに、ディスクアレイ装置を構成している領域全体に渡ってデータの移動を行う必要はないものの、追加するディスク装置の全てのデータ領域に“0”を書き込む、つまり全てのデータブロックを無効にする必要がある。このため、上記動的記憶容量拡張技術では、追加するディスク装置の記憶容量に依存して多くの時間が必要となる。また、上記動的記憶容量拡張技術では、記憶容量拡張後の論理アドレスと物理アドレスのマッピング関係の最適化の考慮がなされていないため、シーケンシャルアクセスの性能が低下するという問題もある。
【0006】
一方、特開平7−141121号公報には、ログ構造化ファイルシステムを適用していないディスクアレイ装置における動的記憶容量拡張の例が記載されている。ここでは、データの再配置中の書き込み位置を記憶することでホストからのI/O(入出力)要求が記憶容量拡張前か後かを判断し、動的記憶容量拡張を実現する手法が提案されている。この特開平7−141121号公報に記載された手法では、ディスク装置の増設により、物理アドレスに対する論理アドレスのマッピングを変更する必要があるため、パリティデータ(冗長データ)の再生成とそのパリティデータを含むデータの再配置を実施している。このため、データの再配置に伴うディスク装置への入出力が発生して、記憶容量拡張後のディスクアレイ装置への入出力性能が劣化するという問題が発生する。しかも、データの再配置に伴うディスク装置への入出力は、ディスク装置の記憶容量に依存する。
【0007】
【発明が解決しようとする課題】
上記したように、ログ構造化ファイルシステムを適用する従来のディスクアレイ装置における動的記憶容量拡張では、追加するディスク装置の全てのデータブロックを無効にする必要がある。このため、追加するディスク装置の記憶容量に依存して多くの時間が必要となる。更に、記憶容量拡張後の論理アドレスと物理アドレスのマッピング関係の最適化の考慮がなされていないため、シーケンシャルアクセスの性能が低下するという問題もある。
【0008】
一方、ログ構造化ファイルシステムを適用しない従来のディスクアレイ装置における動的記憶容量拡張では、ディスク装置の増設後のデータの再配置が必要となるため、そのデータの再配置に伴うディスク装置への入出力が発生し、記憶容量拡張後のディスクアレイ装置への入出力性能が劣化するという問題がある。
【0009】
本発明は上記事情を考慮してなされたものでその目的は、ディスク装置を追加してディスクアレイ装置の記憶容量拡張を実施する場合に、少なくとも無効な論理アドレスに対するデータについては移動することなしに動的記憶容量拡張が実現でき、記憶容量拡張に要する時間を大幅に短縮することができるディスクアレイ装置及び同装置における動的記憶容量拡張方法を提供することにある。
【0010】
【課題を解決するための手段】
本発明の第1の観点によれば、ログ構造化システムを適用するディスクアレイ装置が提供される。このディスクアレイ装置は、ディスクアレイへの1ストライプ単位の書き込み時に、アドレス変換テーブルを更新するアドレス変換テーブル更新手段と、上記ディスクアレイにディスク装置を追加して当該ディスクアレイの記憶容量を拡張する場合に、その記憶容量拡張前の上記アドレス変換テーブルのコピーを生成する手段と、不揮発性メモリ上に配置される書き込みバッファを上記ディスクアレイの記憶容量拡張後のストライプサイズに対応した大きさに再構築する手段と、上記アドレス変換テーブルのコピーに従って有効な論理アドレスを検索する手段と、この検索手段によって検索された有効な論理アドレスに対応する物理アドレスのデータブロックが含まれる物理ストライプを上記ディスクアレイから読み込む手段と、この読み込み手段により読み込まれた物理ストライプ中の有効な論理アドレスに対応する論理ブロックのデータを上記再構築後の書き込みバッファに詰めて蓄積する手段と、上記再構築後の書き込みバッファに記憶容量拡張後のストライプサイズに対応した1ストライプ分の論理ブロックのデータが蓄積された段階で、当該1ストライプ分の論理ブロックに対する論理アドレスを含む論理アドレスタグブロックを生成する手段と、上記生成された論理アドレスタグブロックと当該論理アドレスタグブロックに対応する1ストライプ分の論理ブロックとを含む1ストライプ分のデータブロックを、上記ディスクアレイ内の複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込む手段とを備えている。
【0011】
このような構成のディスクアレイ装置においては、ログ構造化ファイルシステムの特徴、つまり、ディスクアレイへの1ストライプ単位の書き込みは、当該ディスクアレイを構成する複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に対して行われるという特徴に着目し、アドレス変換テーブルのコピーを利用して、ホストコンピュータにより使用されている有効な論理アドレスを検索して、その検索された有効なデータのみを記憶容量拡張後のディスクアレイの空きストライプに連続して書き込むことにより、ディスクアレイの記憶容量拡張を実現している。
【0012】
これにより、本発明の第1の観点に係るディスクアレイ装置では、追加ディスク装置の全ての領域に“0”を書き込むことなく、また、記憶容量拡張前のディスクアレイの全データを記憶容量拡張後のディスクアレイに再配置することなく、ディスクアレイの記憶容量の動的拡張が実現でき、記憶容量拡張を短時間で実行できる。しかも、記憶容量拡張開始時点で有効な論理アドレスの論理ブロックが含まれていた物理ストライプには、記憶容量拡張処理を終了した時点では有効な論理アドレスの論理ブロックは含まれなくなって空きストライプとなることから、セグメントクリーニングを実施する必要がない。
【0013】
ここで、アドレス変換テーブルのコピーを利用した有効な論理アドレスの検索を、論理アドレスの順番に実行するとよい。このようにすると、有効な物理ストライプ中に断片化したデータブロックがなくなり、ストライプ内のフラグメンテーションが回避できる。この結果、記憶容量拡張処理に起因するシーケンシャルアクセスの性能低下を防止できる。
【0014】
本発明の第2の観点に係るディスクアレイ装置は、上記第1の観点に係るディスクアレイ装置で適用されている論理アドレスタグブロックに相当する論理アドレスタグブロックとして、1ストライプ分の各論理ブロックに対する論理アドレス、及び時刻情報を含むタイムスタンプ情報から構成される論理アドレスタグブロックを適用することを第1の特徴とする。また、本発明の第2の観点に係るディスクアレイ装置は、上記第1の観点に係るディスクアレイ装置で適用されている、記憶容量拡張時点で有効な論理アドレスを全て検索して、その有効な論理アドレスのデータを記憶容量拡張後のディスクアレイに再配置する仕組みの代わりに、記憶容量拡張前のアドレス変換テーブルのコピーに従って、ディスクアレイ内の空きストライプを検索し、記憶容量拡張後のストライピングルールに従って当該空きストライプ中の論理アドレスタグブロックの位置を特定することで、当該論理アドレスタグブロックを初期化する手段と、ディスクアレイの記憶容量拡張の終了時の時刻情報を含むタイムスタンプ情報を、ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録する手段とを備えたことを第2の特徴とする。
【0015】
本発明の第2の観点に係るディスクアレイ装置においては、記憶容量拡張時点で有効な論理アドレスのデータも再配置の対象とならないため、上記第1の観点に係るディスクアレイ装置に比べて、記憶容量拡張を更に短時間で実行できる。
ここで、記憶容量拡張時に空きとなっている物理ストライプ、つまり空きストライプ中の、記憶容量拡張後に1ストライプ分のデータが書き込まれる際に、当該1ストライプ分のデータに含まれている論理アドレスタグブロックが配置されるべき領域は、記憶容量拡張時に初期化される。したがって、記憶容量拡張後に、その記憶容量拡張後のストライピングルールで決まる物理ストライプ中の論理アドレスタグブロックの領域が、初期化されたままであるか否かを調べることで、当該ストライプが現在空きストライプであるか、或いは有効な物理ストライプであるかを簡単に判定できる。
【0016】
また、記憶容量拡張後のディスクアレイ中の物理ストライプについて、アドレス変換テーブルに当該物理ストライプに対応するアドレス変換情報と組をなして記憶された時刻情報を、上記特別な領域に記録されているタイムスタンプ情報に含まれている時刻情報と比較することで、当該ストライプが記憶容量拡張前の有効な物理ストライプであるか、或いは記憶容量拡張後の有効な物理ストライプであるかをも、簡単に判定できる。これにより、有効な物理ストライプ中の有効な論理アドレスタグブロックを検出できる。また、アドレス変換テーブルを利用して検索される有効な論理アドレスについて、当該論理アドレスに対応するアドレス変換情報と組をなしてアドレス変換テーブルに記憶された時刻情報を、上記特別な領域に記録されているタイムスタンプ情報に含まれている時刻情報と比較することでも、当該論理アドレスに対応する物理ストライプが記憶容量拡張前の有効な物理ストライプであるか、或いは記憶容量拡張後の有効な物理ストライプであるかを、簡単に判定できる。この判定機能は、記憶容量拡張後に障害が発生したディスク装置のデータを復旧する場合に利用可能である。
【0017】
また、上記の判定は、アドレス変換テーブルを用いなくても可能である。そのためには、まず、記憶容量拡張後のディスクアレイ中の物理ストライプについて、当該物理ストライプが記憶容量拡張後の有効な物理ストライプであると仮定して、当該ストライプから前記記憶容量拡張後のストライピングルールに従って論理アドレスタグブロックを読み込む。そして、読み込んだ論理アドレスタグブロックのうちの、記憶容量拡張後のストライピングルールに従って初期化された論理アドレスタグブロック以外の各論理アドレスタグブロックについて、当該論理アドレスタグブロックに含まれている時刻情報を、上記特別な領域に記録されているタイムスタンプ情報に含まれている時刻情報と比較することで、対応する物理ストライプが記憶容量拡張後の有効な物理ストライプであるとの仮定が正しかったか或いは誤っていたか、つまり対応する物理ストライプが記憶容量拡張後の有効な物理ストライプであるか或いは記憶容量拡張前の有効な物理ストライプであるかを判定する。上記仮定が誤っていた場合、対応する物理ストライプ中の論理アドレスタグブロックは、記憶容量拡張前のストライピングルールに従って検出すればよい。このように、アドレス変換テーブルを用いずに、有効な論理アドレスタグブロックを検出できることから、アドレス変換テーブルが使用不可能な状態になっても、当該テーブルを再構築できる。
【0018】
本発明の第3の観点に係るディスクアレイ装置は、上記第2の観点に係るディスクアレイ装置で適用されている論理アドレスタグブロックに相当する論理アドレスタグブロックとして、1ストライプ分の各論理ブロックに対する論理アドレスを含む論理アドレスタグ、並びに時刻情報及び世代番号を含むタイムスタンプ情報であって、当該タイムスタンプ情報のチェックサムが付加されたタイムスタンプ情報から構成される論理アドレスタグブロックを適用することを第1の特徴とする。また、本発明の第3の観点に係るディスクアレイ装置は、上記第2の観点に係るディスクアレイ装置で適用されている、ディスクアレイの記憶容量拡張の終了時の時刻情報を含むタイムスタンプ情報を特別な領域に記録する手段に代えて、ディスクアレイの記憶容量拡張の終了時の時刻情報、及び世代番号を含むタイムスタンプ情報を上記特別な領域に記録する手段を備えていることを第2の特徴とする。
【0019】
本発明の第3の観点に係るディスクアレイ装置においては、記憶容量拡張時に空きストライプ中の論理アドレスタグブロックを初期化する処理が不要なため、上記第2の観点に係るディスクアレイ装置に比べて、記憶容量拡張を更に短時間で実行できる。この第3の観点に係るディスクアレイ装置においては、記憶容量拡張後のディスクアレイ中の物理ストライプが現在空きストライプであるか、或いは有効な物理ストライプであるかを、当該物理ストライプ中の論理アドレスタグブロックが初期化されているか否かにより判定して、有効な物理ストライプから有効な論理アドレスタグブロックを検出することはできない。しかし、第3の観点に係るディスクアレイ装置においては、世代番号を利用して、物理ストライプ中の論理アドレスタグブロックの位置を特定すると共に、特定した論理アドレスタグブロックに含まれているチェックサムと、当該論理アドレスタグブロックをもとに算出されるチェックサムとを利用して、当該論理アドレスタグブロックが有効であるか、或いは無効であるかを簡単に判定可能である。
【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などのRAIDレベルで用いる場合には、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のRAIDレベルを構成するディスク装置の台数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に示すディスクアレイ装置の動作を説明する。
まず、ディスクアレイ装置における書き込み動作について、ディスク装置24がディスクアレイ2に追加された後、つまりディスクアレイ2の記憶容量拡張後を例に簡単に説明する。
【0052】
今、ディスクアレイ装置内の制御装置1が、ホストコンピュータ10からの書き込み(更新)要求に応じて、当該ホストコンピュータ10から書き込むべきデータと当該データの開始位置の論理アドレス及び当該データのサイズ(データブロックのサイズの整数倍)を受け取ったものとする。すると、制御装置1は、ホストコンピュータ10から受け取った書き込みデータ(更新データ)を、不揮発性メモリ3上の書き込みバッファ31の空き領域に、ブロック単位に分割して詰めて格納する。ここで、書き込みバッファ31は、後述する図6のフローチャート中のステップS5の処理で、記憶容量拡張後のストライプサイズに対応した大きさに変更されている。
【0053】
また、制御装置1は、受け取った論理アドレスを、当該論理アドレスとサイズとから、ブロック毎の論理アドレス(論理ブロックアドレス)に変換して、バッファ管理テーブル34内の対応するエントリに格納する。なお、既に書き込みバッファ31に格納されているデータに対する更新データの書き込みの場合には、制御装置1は書き込みバッファ31の空き領域に詰めて格納するのではなく、直接書き込みバッファ31内の旧データを変更する。書き込みバッファ31に格納されているデータに対する更新データの書き込みであるか否かは、バッファ管理テーブル34内に、対応する論理ブロックアドレスが設定されていて、且つフラグが“F”のエントリが存在するか否かにより判定可能である。
【0054】
制御装置1は、書き込みバッファ31に格納された書き込みデータを構成する論理ブロックの数が記憶容量拡張後の1ストライプ分の論理ブロック数−1(1ストライプ分のデータブロック数−1でない点に注意されたい)に達すると、その論理ブロック数の論理ブロックの論理アドレスを含む論理アドレスタグとタイムスタンプ情報TSとから構成される論理アドレスタグブロックTGを生成して、当該書き込みバッファ31内の最後のブロック領域(論理アドレスタグブロック領域)に格納する。ここで、論理アドレスタグブロックTGは、書き込みバッファ31内のブロック領域にデータブロック(論理ブロック)が格納される際に、バッファ管理テーブル34内の対応するエントリに格納された論理アドレスと、不揮発性メモリ3上のタイムスタンプ情報33とから生成される。このタイムスタンプ情報33中のストライプ世代番号は、記憶容量拡張に伴い1だけ加算される。
【0055】
制御装置1は、生成した論理アドレスタグブロックTGをバッファ管理テーブル34内の最後のブロック領域に格納すると、本実施形態のようにパリティデータの生成が必要な場合であれば、その時点において書き込みバッファ31に格納されている(N−1)×K個のデータブロック、即ち(N−1)×K個−1個の論理ブロック(1ストライプ分の論理ブロック数−1個の論理ブロック)、及び1個の論理アドレスタグブロックTGからなる(N−1)×K個のデータブロック(1ストライプ−1ストライプユニット分のデータブロック)から、K個のパリティブロック(1ストライプユニット分のパリティデータ)を生成する。そして制御装置1は、生成したK個のパリティブロックが(N−1)×K個のデータブロックに加えられた、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の論理ブロック(L1Data,L99Data,L20Data)及び論理アドレスタグブロックTGからなるストライプユニットと、パリティブロックP0,P1,P2,P3からなるストライプユニットとが、それぞれディスク装置21,22,24,23の空き領域に、データD1,D2,D3,Pとして一括して書き込まれる様子が示されている。この例では、パリティブロックP0は論理アドレスL3,L2,L1の論理ブロックの間の排他的論理和(XOR)演算により、パリティブロックP1は論理アドレスL21,L7,L99の論理ブロックの間の排他的論理和演算により、それぞれ生成される。また、パリティブロックP2は論理アドレスL32,L8,L20の間の排他的論理和演算により、パリティブロックP3は論理アドレスL41,L0の論理ブロック及び論理アドレスタグブロックTGの間の排他的論理和演算により、それぞれ生成される。
【0057】
なお、本実施形態と異なってパリティデータの生成が不要な場合であれば、その時点において書き込みバッファ31に格納されている1ストライプ分のデータブロック、即ちN×K−1個の論理ブロック、及び1個の論理アドレスタグブロックTGからなるN×K個のデータブロックが、ディスク装置21〜24上の空き領域の物理的に連続する領域に書き込まれる。
【0058】
制御装置1は、1ストライプ分のデータを、記憶容量拡張後のディスクアレイ2上の更新されるべきデータを保持している領域とは別の空き領域に書き込んだ場合、当該ストライプ中の各論理ブロックについて、当該論理ブロックに対する論理アドレスと、当該論理ブロックが書き込まれたディスクアレイ2上の物理的なデータ位置、つまり物理ストライプ番号と物理ブロック番号とで示される物理アドレスとの関係を、記憶容量拡張後のアドレス変換テーブル32に設定する。具体的には、制御装置1は、上記ストライプ中の各論理ブロックに対する論理アドレスに対応するアドレス変換テーブル32内のエントリにおける物理ブロック番号と物理ストライプ番号とを、それぞれ当該論理ブロックが実際に書き込まれた物理ストライプ内の物理ブロック位置を示す番号と当該物理ストライプの番号とに更新する。このとき制御装置1は、不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプの値を1インクリメントし、そのインクリメント後のタイムスタンプで、アドレス変換テーブル32内の上記更新されたエントリ中のタイムスタンプを更新する。
【0059】
次に、ディスクアレイ2の記憶容量を拡張する記憶容量拡張処理について、図6及び図7のフローチャートを参照して説明する。
今、図1に示すコンピュータシステムの利用者が、ディスクアレイ2にディスク装置24を追加したものとする。この状態で利用者がホストコンピュータ10を操作することにより、当該ホストコンピュータ10からディスクアレイ装置内の制御装置1に対して、記憶容量拡張処理が要求されたものとする。この場合、制御装置1はバッファ管理テーブル34を調べて、書き込みバッファ31に蓄積されているデータがあるか否かを判定する(ステップS1)。
【0060】
もし、書き込みバッファ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のデータとパリティデータとからなる。
【0061】
制御装置1はステップS2を実行すると、当該ステップS2でのディスク装置21〜23へのデータ書き込みに応じて、不揮発性メモリ3上のアドレス変換テーブル32を更新する(ステップS3)。制御装置1は、ステップS3でアドレス変換テーブル32を更新した場合、或いはステップS1で書き込みバッファ31内に蓄積されているデータがないと判定された場合には、アドレス変換テーブル32を不揮発性メモリ3上の別の領域にコピーして、アドレス変換テーブルのコピー35を生成する(ステップS4)。
【0062】
次に制御装置1は、記憶容量拡張後にストライプサイズが変更になることを考慮して、不揮発性メモリ3上の書き込みバッファ31を記憶容量拡張後のストライプサイズに対応した大きさに変更する(ステップS5)。また制御装置1は、記憶容量拡張で増加する記憶容量分の物理ブロック用のエントリを、アドレス変換テーブル32の内容を記憶容量変更前の状態に維持したままで、当該テーブル32に追加する(ステップS6)。これによりアドレス変換テーブル32は、記憶容量拡張後に対応したものに再構築される。
【0063】
次に制御装置1は、論理ブロックの論理アドレスを示す変数iの初期値として0(i=0)を設定する(ステップS7)。次に制御装置1は、不揮発性メモリ3上のアドレス変換テーブルのコピー35を参照して、論理アドレスiが有効か否か、つまり論理アドレスiの論理ブロックがホストコンピュータ10により使用されているか否かを判定する(ステップS8)。この判定は、論理アドレスiに対応する、アドレス変換テーブルのコピー35内のエントリ中の物理ストライプ番号、物理ブロック番号、及びタイムスタンプの各項目がいずれもNULL以外であるか否かを調べることで行われる。なお、アドレス変換テーブル32内エントリに、対応する論理アドレスが有効であるか或いは無効であるかを示すフラグを設け、当該テーブル32のコピー35内の各エントリに設定されている当該フラグを参照することで、対応する論理アドレスが有効であるか否かを判定する構成であってもよい。
【0064】
論理アドレスiが有効な場合(ステップS8のYES)、つまりアドレス変換テーブル32から有効な論理アドレスiが検索できた場合、制御装置1は、論理アドレスiのデータが記憶容量拡張処理においてディスクアレイ2に対し未書き込みであったか否かを判定する(ステップS9)。この判定を効率的に行うには、アドレス変換テーブル32の各エントリに、対応する論理アドレスの論理ブロックのデータがディスクアレイ2に対して新たに書き込み(再配置)済みであるか或いは未書き込みであるかを示すフラグの設定フィールドを設けるとよい。
【0065】
もし、論理アドレスiのデータがディスクアレイ2に対して未書き込みであった場合(ステップS9のYES)、制御装置1はアドレス変換テーブルのコピー35から、論理アドレスiに対応する物理ストライプの物理ストライプ番号を取得し、その物理ストライプ番号で示される記憶容量拡張前のサイズの物理ストライプのデータをディスクアレイ2内のディスク装置21〜23から読み込む(ステップS10)。
【0066】
次に制御装置1は、読み込んだ物理ストライプに含まれている論理ブロックの論理アドレスの中に未処理の有効な論理アドレスjがあるか否かを判定する(ステップS11)。この判定は、上記読み込んだ物理ストライプの物理ストライプ番号をキーにしてアドレス変換テーブル32内のエントリを参照して、対応する未処理の論理アドレスが検索できたか否かにより行われる。
【0067】
制御装置1は未処理の有効な論理アドレスjがある場合(ステップS11のYES)、ステップS10で読み込んだ物理ストライプの中から、その有効な論理アドレスjの論理ブロックを取り出して、書き込みを実行する(ステップS12)。このステップS12での書き込みは、従来技術の欄で述べたような高速書き込み方法を用いた通常通りの手順で次のように行われる。
【0068】
まず制御装置1は、論理アドレスjの論理ブロックを不揮発性メモリ3上の書き込みバッファ31の空き領域に詰めて書き込む。通常は、この書き込みバッファ31への書き込みで、ステップS12は完了する。しかし、論理アドレスjの論理ブロックを書き込みバッファ31に書き込んだ結果、当該バッファ31に蓄積されている書き込みデータの量が1ストライプ分に1ストライプユニット+1ブロック分少ない量となった場合には、制御装置1は上記ステップS12において更に次に述べる書き込みを行う。
【0069】
即ち制御装置1は、書き込みバッファ31に蓄積されている1ストライプ−(1ストライプユニット+1ブロック)分の書き込みデータに対応する論理アドレスタグブロックTGを生成して書き込みバッファ31の最後のブロック領域に書き込み、この論理アドレスタグブロック書き込み後の書き込みバッファ31上のデータ(1ストライプ−1ストライプユニット分のデータ)から1ストライプユニット分のパリティデータ(つまり1ストライプユニット分のブロック数のパリティブロック)を生成する。そして制御装置1は、書き込みバッファ31上の1ストライプ−1ストライプユニット分のデータと生成された1ストライプユニット分のパリティデータとから構成される1ストライプ分のデータを、ディスク装置24が追加されたディスクアレイ2に一括して書き込む。この一括書き込みは、ディスク装置24が追加された後のディスクアレイ2の空きストライプに対し、記憶容量拡張後のディスクアレイ2に対応する新たなストライピングルールに従って行われる。制御装置1は、ステップS12でディスクアレイ2への一括書き込みを行った場合、再構築後のアドレス変換テーブル32を更新する。
【0070】
制御装置1は、上記ステップS11,S12を、ステップS10で読み込んだ物理ストライプに含まれている全ての論理ブロックの論理アドレスについて、繰り返す(ステップS13)。
【0071】
制御装置1は、ステップS10で読み込んだ物理ストライプに含まれている全ての論理ブロックの論理アドレスについて処理したならば(ステップS13のYES)、iを1だけインクリメントする(ステップS14)。また、制御装置1は、論理アドレスiが有効でない場合(ステップS8のNO)、或いは論理アドレスiの論理ブロックがディスクアレイ2に対して書き込み済みである場合には(ステップS9のNO)、そのままステップS14に進んでiを1だけインクリメントする。
【0072】
制御装置1はiを1だけインクリメントすると、そのインクリメント後のiの値から、全ての論理アドレスについて処理したか否かを判定する(ステップS15)。もし、未処理の論理アドレスが残っているならば(ステップS15のNO)、ステップS14でのインクリメント後のiで指定される論理アドレスiについて、上記ステップS8以降の処理を実行する。これに対し、全ての論理アドレスiについて処理したならば(ステップS15のYES)、制御装置1は記憶容量拡張処理を終了する。
【0073】
このように本実施形態においては、アドレス変換テーブルのコピー35を利用して、ホストコンピュータ10により使用されている有効な論理アドレスiを全て検索し、その有効な論理アドレスのデータを記憶容量拡張後のディスクアレイ2の空きストライプに連続して書き込んで行く(ステップS7〜S15)。
【0074】
本実施形態において、記憶容量拡張処理に伴ってホストコンピュータ10からの書き込み要求を停止しなければならないのは、明らかなようにステップS1からステップS7までの間である。この間に発生するディスクアレイ2への入出力回数は、記憶容量拡張の開始時に既に書き込みバッファ31上に蓄積されていたデータをディスクアレイ2に書き込むためのステップS2の1回だけである。それ以外は、全て不揮発性メモリ3上での操作であるため、ホストコンピュータ10からの書き込み要求の実行を停止しなければならない期間はごくわずかである。また、ステップS7以降の処理は、ホストコンピュータ10からの入出力要求と混在しても実行可能である。よって、本実施形態においては、システムを停止させずにディスクアレイ2の記憶容量を拡張すること、つまり動的な記憶容量拡張が可能となる。
【0075】
また、本実施形態においては、記憶容量拡張処理の開始時点でのアドレス変換テーブル32で有効となっている論理アドレスのデータのみをディスクアレイ2内での移動(再配置)対象としている。このため、記憶容量拡張開始時点で有効な論理アドレスの論理ブロックが含まれていた物理ストライプには、記憶容量拡張処理を終了した時点では有効な論理アドレスの論理ブロックは含まれなくなる。つまり、記憶容量拡張開始時点で有効な論理アドレスの論理ブロックが含まれていた物理ストライプは、記憶容量拡張処理を終了した時点では空きストライプとなることから、後述するセグメントクリーニングを実施する必要がない。
【0076】
[第1の変形例]
次に、本発明の実施形態の第1の変形例について、図6及び図7のフローチャートを援用して説明する。この第1の変形例の特徴は、有効な論理アドレスの順番に、対応するデータを、ディスクアレイ2上の更新されるべきデータを保持している領域とは別の空き領域の物理的に連続する位置に順次書き込みながら記憶容量拡張を行う点にある。
【0077】
第1の変形例では、制御装置1は、ステップS4で生成されたアドレス変換テーブルのコピー35を使用して、各エントリ情報が有効な論理アドレスの昇順にソートされた、記憶容量拡張処理用のアドレス変換テーブル(以下、ソート後のアドレス変換テーブルと称する)36を不揮発性メモリ3上に新たに生成する。
このソートには、従来からよく知られているMergesort、Quicksort、Shellsort、Heapsort等の高速ソートアルゴリズムを適用するとよい。なお、アドレス変換テーブル32のi番目のエントリを論理アドレスiに対応させている場合、当該テーブル32内の各エントリは論理アドレスの昇順の並びとなっていることから、特別のソートアルゴリズムは不要である。
【0078】
ソート後のアドレス変換テーブル36が生成されると、制御装置1は当該テーブル36を使用して、図6及び図7のフローチャート中のステップS7以降の処理を実行する。これにより、有効な論理アドレスの順番に、対応するデータを、ディスクアレイ2上の更新されるべきデータを保持している領域とは別の空き領域の物理的に連続する位置に順次書き込みながら、ディスクアレイ2の記憶容量の拡張が行われる。このように、有効な論理アドレスの順番に処理することで、有効な物理ストライプ中に無効なデータブロック、つまり断片化したデータブロックがなくなり、ストライプ内のフラグメンテーションが回避できる。この結果、記憶容量拡張処理に起因するシーケンシャルアクセスの性能低下を防止できる。これに対して、従来の記憶容量拡張処理では、記憶容量拡張後の論理アドレスと物理アドレスのマッピング関係の最適化の考慮がなされていないため、シーケンシャルアクセスの性能低下を招いている。
【0079】
[第2の変形例]
次に、本発明の実施形態の第2の変形例について説明する。この第2の変形例では、ディスクアレイ2にRAID5の冗長化ディスク構成を適用しているものとする。ここでは、物理ストライプ中のパリティデータ(パリティ用のストライプユニット)が配置されるディスク装置は、上記実施形態で便宜的に想定したRAID4の冗長化ディスク構成を適用する場合と異なって固定化されず、物理ストライプ毎にサイクリックに切り替えられる。また、論理アドレスタグブロックTGが配置されるディスク装置も、パリティデータと同様に物理ストライプ毎にサイクリックに切り替えられる。
【0080】
まず本発明の実施形態の第2の変形例の概要について説明する。
第2の変形例において、記憶容量拡張直後のパリティデータの記録位置は、記憶容量拡張前と同じディスクアレイ2内の位置となる。つまり第2の変形例における記憶容量拡張処理では、パリティデータを含むデータの移動(再配置)は行われず、したがってパリティデータは、記憶容量拡張直後は、ディスク装置24を追加する前にディスクアレイ2を構成していたディスク装置21〜23のいずれかに配置されたままとなる。
【0081】
その後、ホストコンピュータ10からの書き込み要求に従うディスクアレイ2へのデータ書き込みをトリガにして、ディスク装置24の追加により拡張された物理ストライプ毎に、その物理ストライプの番号とディスク装置追加後にディスクアレイ2を構成しているディスク装置の台数とから決定されるパリティ位置に、新たなパリティデータが格納される。ここでは、ストライプ世代番号が更新(+1)されたタイムスタンプ情報TSを含む新たな論理アドレスタグブロックTGが生成され、同一ストライプ内のパリティデータ及び論理ブロックのデータと合わせてディスクアレイ2にまとめ書きされる。ディスクアレイ2に書き込まれた論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれている世代番号は、再度記憶容量拡張が実施されるまで同じ値が継続される。
【0082】
第2の変形例においては、記憶容量拡張前にディスクアレイ2を構成していたディスク装置21〜23に記録されているデータの移動とパリティデータの再生成とを実施する必要がない。このため、記憶容量拡張に要する時間を大幅に短縮することができる。
【0083】
次に、本発明の実施形態の第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のデータとパリティデータとからなる。
【0084】
制御装置1はステップS22を実行すると、当該ステップS22でのディスク装置21〜23へのデータ書き込みに応じて、不揮発性メモリ3上のアドレス変換テーブル32を更新する(ステップS23)。制御装置1は、ステップS23でアドレス変換テーブル32を更新した場合、或いは書き込みバッファ31内に蓄積されているデータがないとステップS21で判定された場合には、アドレス変換テーブル32を不揮発性メモリ3上の別の領域にコピーして、アドレス変換テーブルのコピー35を生成する(ステップS24)。
【0085】
次に制御装置1は、記憶容量拡張後にストライプサイズが変更になることを考慮して、不揮発性メモリ3上の書き込みバッファ31を記憶容量拡張後のストライプサイズに対応した大きさに変更する(ステップS25)。つまり、制御装置1は、書き込みバッファ31を、記憶容量拡張後のストライプサイズに対応した大きさとなるように再構築する。また、制御装置1は、記憶容量拡張で増加する記憶容量分の物理ブロック用のエントリを、アドレス変換テーブル32の内容を記憶容量変更前の状態に維持したままで、当該テーブル32に追加する(ステップS26)。これによりアドレス変換テーブル32は、記憶容量拡張後に対応したものに再構築される。
【0086】
次に制御装置1は、ステップS24で生成したアドレス変換テーブルのコピー35を使用してディスクアレイ2内の空きストライプを検索し、記憶容量拡張後のストライピングルールに従って当該空きストライプ中の論理アドレスタグブロックTGの位置を特定することで、その論理アドレスタグブロックTGをNULL(ここではゼロ)で初期化する(ステップS27)。
【0087】
次に制御装置1は、不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプ、ストライプ世代番号及びディスク台数を、それぞれ1だけインクリメントして更新し、その更新後のタイムスタンプ情報33をディスクアレイ2に確保されている特別な空き領域に記録する(ステップS28)。この特別な空き領域は、データを記録する領域とは別にディスクアレイ2内に確保される領域であり、制御装置1による管理に使用される領域である。このステップS28で、ディスクアレイ2内に記録されたタイムスタンプの情報(記憶容量拡張時タイムスタンプ情報)は、記憶容量拡張後において追加ディスク装置24への書き込みがあったか否かを判断する場合に必要となる。
【0088】
RAID5のように、パリティブロックがディスクアレイ2を構成する複数のディスク装置に分散配置される場合、記憶容量の拡張前と、記憶容量の拡張後で且つ拡張された物理ストライプに対する書き込みが行われた場合とで、パリティブロックと論理アドレスタグブロックTGの記録位置がそれぞれ異なる。この様子を、図1においてディスク装置24が追加される前と、ディスク装置24が追加され、且つ拡張された物理ストライプに対する書き込みが行われた後とについて図9に示す。
【0089】
図9では、例えば物理ストライプ100中のパリティブロックP及び論理アドレスタグブロック(を含むデータブロック)DTの各位置が、それぞれ、ディスク装置22からディスク装置21へ、ディスク装置21からディスク装置24へと変わっている。この変更されたパリティブロックPと論理アドレスタグブロックDTの位置は、ディスクアレイ2を構成するディスク装置の台数と物理ストライプの番号(物理ストライプ番号)とから計算で求めることができる。
【0090】
図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であれば、対応する物理ストライプ中のパリティブロックはそれぞれディスク装置21,22,23,24に配置され、論理アドレスタグブロック(を含むデータブロック)はそれぞれディスク装置24,21,22,23に配置される。このような配置を右対称の配置と称する。
【0091】
物理ストライプに記録されたパリティブロックが有効か否かを判定するには、当該ストライプ中の論理アドレスタグブロックTGを読み込み、その論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれているタイムスタンプとディスクアレイ2上の特別な空き領域に記録されたタイムスタンプ情報に含まれているタイムスタンプとを比較すればよい。
【0092】
上記実施形態の第2の変形例では、不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプの値はストライプ単位のまとめ書き時点だけでなく、記憶容量拡張処理を終了する際の処理ステップ(ステップS28)でもインクリメントされる。このため、ある時点のタイムスタンプをT1、そのT1より後の時点のタイムスタンプであって、T1より後に少なくとも1回は更新されたタイムスタンプをT2とすると、T1,T2の間にはT1<T2の関係がある。
【0093】
したがって、物理ストライプ中の論理アドレスタグブロックTGに設定されたタイムスタンプ情報TSに含まれているタイムスタンプの値の方が、記憶容量拡張処理を終了する際にディスクアレイ2の特別の領域に記録されたタイムスタンプ情報(記憶容量拡張時タイムスタンプ情報)に含まれているタイムスタンプの値より小さい場合には、そのストライプは記憶容量拡張前に使用されていたと判定できる。また、物理ストライプ中の論理アドレスタグブロックTGに設定されたタイムスタンプ情報TSがNULLであった場合には、そのストライプは、記憶容量拡張時点で未使用であり、つまり空きストライプであり、その状態が現在まで継続していると判定できる。また、物理ストライプ中の論理アドレスタグブロックTGに設定されたタイムスタンプ情報TSに含まれているタイムスタンプの値が、記憶容量拡張時タイムスタンプ情報TSに含まれているタイムスタンプの値以上の場合には、そのストライプは記憶容量拡張後に使用されたと判定できる。更に、記憶容量拡張処理が複数回実行される場合もあり得る。この場合には、後述する本発明の実施形態の第3の変形例で述べるように、物理ストライプ中の論理アドレスタグブロックTGに設定されたタイムスタンプ情報TSに含まれている世代番号を調べることで、そのストライプが何度目の記憶容量拡張時点で使用されていたかを判別することができる。
【0094】
よって、原理的には、パリティブロックまたは論理アドレスタグブロックTGの読み出しが必要となる度に、ディスクアレイ2上の各物理ストライプのチェック、つまり記憶容量拡張前に使用されていたストライプであるか、記憶容量拡張後に使用されたストライプであるかをチェックすることにより、読み出すべきパリティブロックまたは論理アドレスタグブロックTGを検出することができる。
ところが、パリティブロックまたは論理アドレスタグブロックTGを頻繁に読み出す必要がある場合に、この方法を使用すると、ブロック読み出しに多大な時間を要することから実用的でない。
【0095】
そこで、パリティブロックまたは論理アドレスタグブロックTGのデータが必要となるディスクアレイ構成の再構築や後述するアドレス変換テーブルの再構築を実施する場合に限って、ディスクアレイ2上の全物理ストライプを対象に論理アドレスタグブロックTGの調査を行うことにより、ストライプテーブル41を生成して図1に示すように揮発性メモリ4上に配置するとよい。このストライプテーブル41の各エントリには、図10に示すように、ディスクアレイ2から読み出された物理ストライプの番号(物理ストライプ番号)と、当該物理ストライプ中の論理アドレスタグブロックTGに設定されたタイムスタンプ情報TSに含まれているタイムスタンプとが設定される。
【0096】
さて、ストライプテーブル41を生成する場合には、ディスクアレイ2を構成するディスク装置の台数と適用するRAIDレベルとを意識して、論理アドレスタグブロックTGの読み込みのための入出力が各ディスク装置で並列に実行できるように論理アドレスタグブロックTG(物理アドレス)を選ぶならば、効率の向上を図ることが可能となる。図9中の記憶容量拡張後のディスクアレイ2の例であれば、物理ストライプ0,1,2,3に含まれる論理アドレスタグブロックは、それぞれ異なるディスク装置24,21,22,23に分散して配置されているため、同時に読み込むことが可能である。
【0097】
なお、ストライプテーブル41は必ずしも揮発性メモリ4上に配置する必要はなく、不揮発性メモリ3上に配置されるものであっても構わない。また、ストライプテーブル41が配置される揮発性メモリ4(または不揮発性メモリ3)の記憶容量に余裕がある場合には、ディスクアレイ2の構築時に、各エントリに全てNULLが設定されたストライプテーブル41を当該揮発性メモリ4(または不揮発性メモリ3)上に用意し、アドレス変換テーブル32の更新と同様に、ストライプ単位のまとめ書きの時点で、不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプの値を記録して当該ストライプテーブル41を更新するようにしてもよい。また、図1の例のように、ストライプテーブル41を揮発性メモリ4上に生成する場合には、先に述べたストライプテーブル41を生成する方法を適用して、システム起動の都度、当該ストライプテーブル41を揮発性メモリ4上に生成すればよい。
【0098】
本実施形態の第2の変形例では、記憶容量拡張処理に伴ってホストコンピュータ10からの書き込み要求を停止しなければならないのは、明らかなようにステップS21からステップS28までの間である。この間に発生するディスクアレイ2への入出力回数は、記憶容量拡張処理の開始時点で書き込みバッファ31に蓄積されていたデータをディスクアレイ2に書き込むためと、空きストライプ中の論理アドレスタグブロックTGに含まれているタイムスタンプ情報TSを初期化するためと、タイムスタンプ情報TSの書き込みに関する入出力のみである。
しかも、ディスクアレイ2の記憶容量拡張を実施するのは、一般に、当該ディスクアレイ2の空き記憶容量が少なくなった場合、つまりディスクアレイ2上に空きストライプが少なくなった場合が多い。したがって、本実施形態の第2の変形例では、殆どの処理が不揮発性メモリ3上での操作となる。このため、ディスクアレイ2との間の入出力回数は最低限に抑えられ、記憶容量拡張に必要な時間はごくわずかである。
【0099】
ここで、本発明の実施形態の第2の変形例における、記憶容量拡張後のディスクアレイ装置の書き込み動作及び読み出し動作について簡単に順次説明する。
まず、ディスクアレイ装置内の制御装置1は、記憶容量拡張後にホストコンピュータ10からデータ書き込み要求を受け取った場合、当該ホストコンピュータ10により指定された書き込みデータ(更新データ)を、ステップS25で再構築された書き込みバッファ31に蓄積する。制御装置1は、記憶容量拡張後のストライピングルールで決まる量の、論理アドレスタグブロックTGを含むデータが書き込みバッファ31に蓄積された時点で、そのデータ及びパリティデータを含む1ストライプ分のデータを、ディスクアレイ2上の更新されるべきデータを保持している領域とは別の空き領域の物理的に連続する位置に順次書き込む。このとき制御装置1は、ステップS26で生成された記憶容量拡張後のアドレス変換テーブル32を更新する。
【0100】
このように、第2の変形例における、記憶容量拡張後のディスクアレイ装置の書き込み動作は、上記実施形態と同様に行われる。但し、第2の変形例は、次の点で上記実施形態と異なる。まず、上記実施形態では、記憶容量拡張処理において、有効な論理アドレスのデータの移動(再配置)が記憶容量拡張後のストライピングルールに従って行われる。このため上記実施形態では、記憶容量拡張が終了した段階で、ディスクアレイ2の全ての有効な物理ストライプには、記憶容量拡張前の状態とは異なって、いずれも、記憶容量拡張後のストライピングルールに従って論理アドレスタグブロックTG及びパリティデータが配置された1ストライプ分のデータが格納されている。これに対し、第2の変形例では、記憶容量拡張処理でデータの移動(再配置)は行われない。このため第2の変形例においては、記憶容量拡張後のディスクアレイ2上には、記憶容量拡張前のストライピングルールに従ってストライプ単位の書き込みが行われた有効な物理ストライプ、つまり記憶容量拡張前の有効な物理ストライプと、記憶容量拡張後のストライピングルールに従ってストライプ単位の書き込みが行われた有効な物理ストライプ、つまり記憶容量拡張後の有効な物理ストライプとが混在する可能性がある。この点が、上記実施形態と異なる。
【0101】
明らかなように、第2の変形例では、記憶容量拡張後は時間が経過するにつれて、記憶容量拡張後の有効な物理ストライプの割合が増加する。このことは、第2の変形例における記憶容量拡張処理、即ちディスクアレイ2上のデータの移動を行うことなく当該ディスクアレイ2の記憶容量を拡張する処理を実行しても、何ら問題がないことを示す。但し、第2の変形例では、上記したように、記憶容量拡張前の有効な物理ストライプと、記憶容量拡張後の有効な物理ストライプとが混在する。このため、第2の変形例では、物理ストライプから論理アドレスタグブロックTG及びパリティブロックを取り出す必要がある場合には、ディスクアレイ2が適用するRAIDレベルによっては、その物理ストライプに適用されたストライピングルールを特定するために、その物理ストライプが記憶容量拡張前の有効な物理ストライプであるか、或いは記憶容量拡張後の有効な物理ストライプであるかを判別する必要がある。これについては、後述する。
【0102】
次に、第2の変形例における、記憶容量拡張後のディスクアレイ装置の読み込み動作について、簡単に説明する。
まず、制御装置1は、ホストコンピュータ10からの読み出し要求に応じて、読み出すべきデータの開始位置の論理アドレス(論理ブロックアドレス)とサイズ(データブロックのサイズの整数倍)とを受け取る。制御装置1は、受け取った論理アドレスとサイズとから、当該論理アドレスを含む、当該サイズで指定されるブロック数分の論理ブロックの論理アドレスを求める。制御装置1は、求めた各論理アドレスについて、ステップS26で不揮発性メモリ3上に再構築された記憶容量拡張後のアドレス変換テーブル32の対応するエントリを参照することで、当該論理アドレス(論理ブロックアドレス)を物理アドレス(物理ブロックアドレス)に変換する。この物理アドレスは、物理ストライプ番号と物理ブロック番号とから構成される。
【0103】
制御装置1は、変換後の物理アドレスを用いて、ディスクアレイ2から当該物理アドレスで指定される物理ブロックのデータを読み込み、ホストコンピュータ10に転送する。ここで、ディスクアレイ2からの読み出しの対象となる物理ブロックを含む物理ストライプは、記憶容量拡張前の物理ストライプ、または記憶容量拡張後の物理ストライプである。しかし、この物理ブロックを読み出すのに、いずれの物理ストライプであるかを意識する必要はない。明らかなように、アドレス変換後の物理アドレスの示す物理ブロックが記憶容量拡張前の物理ストライプに含まれている場合、そのアドレス変換に用いられたアドレス変換テーブル32内のエントリの情報は、記憶容量拡張前に登録されたものである。これに対し、アドレス変換後の物理アドレスの示す物理ブロックが記憶容量拡張後の物理ストライプに含まれている場合、そのアドレス変換に用いられたアドレス変換テーブル32内のエントリの情報は、記憶容量拡張後に登録されたものである。
【0104】
なお、ディスクアレイ装置には、一般にホストコンピュータ10と当該ディスクアレイ装置との間で入出力されるデータを一時保持するのに用いられるデータキャッシュが設けられている。したがって、ホストコンピュータ10から要求された読み出しの対象となるデータがデータキャッシュ上に存在する場合には、当該キャッシュ上のデータが読み出されてホストコンピュータ10に転送される。
【0105】
図11に、本発明の実施形態の第2の変形例における記憶容量拡張後のアドレス変換テーブル32の一例を示す。
図11の例では、例えば論理アドレスL0,L1に対応するアドレス変換テーブル32内のエントリには、NULL以外の値のタイムスタンプが設定されている。NULLでないので、不揮発性メモリ3に記録されている記憶容量拡張前のアドレス変換テーブル、つまりアドレス変換テーブルのコピー35に対応する物理ストライプ番号と物理ブロック番号とが登録されていることを示す。また、論理アドレスL2,Liの論理ブロックは、それぞれ物理ストライプ番号7000,10000の物理ストライプ中の、物理ブロック番号14,2のブロック領域に記録されていることを示す。論理アドレスLjは、無効な論理アドレスであることを示す。
【0106】
さて、RAID5を適用したディスクアレイ2の記憶容量の拡張に、上記第2の変形例を用いた場合、記憶容量拡張後に書き込みが実施されていないストライプと記憶容量拡張後に書き込みが実施されたストライプとでは、パリティブロックの位置が異なってくる。先に述べたように、パリティブロック位置は、物理ストライプ番号とディスクアレイを構成するディスク装置の台数とから簡単に計算できる。
【0107】
例えば、図2に示したように、ディスク装置21〜23を使用して記憶容量拡張前のディスクアレイ2を構成すると共に、当該ディスクアレイ2を右対称にパリティデータが配置されるRAID5で使用する場合には、物理ストライプ番号が100のパリティブロックは、100/3の剰余が1であることから、ディスク装置21〜23のうちの2番目のディスク装置22に配置される(図9(a)参照)。また、図5に示したように、追加されたディスク装置24を含むディスク装置21〜24を使用して記憶容量拡張後のディスクアレイ2を構成すると共に、当該ディスクアレイ2を記憶容量拡張前と同様に右対称にパリティデータが配置されるRAID5で使用する場合には、物理ストライプ番号が100の物理ストライプに対するストライプ単位での書き込みが実施された後には、パリティブロックは、100/4の剰余が0であることから、ディスク装置21〜24のうちの1番目のディスク装置21に配置される(図9(b)参照)。
【0108】
上述のようにディスクアレイ2内の各物理ストライプに配置されるパリティブロックの位置は、記憶容量拡張前と記憶容量拡張後(で且つ拡張された物理ストライプへの書き込みの後)とによって異なる。記憶容量拡張の前と後のどちらの物理ストライプが有効であるかを判定するためには、図11に示した記憶容量拡張後のアドレス変換テーブル32を使用すればよい。具体的には、判定の対象となる物理ストライプの物理ストライプ番号で記憶容量拡張後のアドレス変換テーブル32を逆引きし、当該物理ストライプ番号が登録されているエントリ中のタイムスタンプを、記憶容量拡張時にディスクアレイ2の特別な領域に保存されたタイムスタンプ情報(記憶容量拡張時タイムスタンプ情報)中のタイムスタンプと比較すればよい。ここでは、記憶容量拡張後のアドレス変換テーブル32内のエントリ中のタイムスタンプの値が記憶容量拡張時タイムスタンプ情報中のタイムスタンプの値以上であれば、対応する物理ストライプは記憶容量拡張後に物理ストライプ単位での書き込みがなされた有効なストライプであると判定される。
これに対し、記憶容量拡張後のアドレス変換テーブル32内のエントリ中のタイムスタンプの値が記憶容量拡張時タイムスタンプ情報中のタイムスタンプの値より小さいならば、そのエントリ中のタイムスタンプが非NULLであるか否かにより、対応する物理ストライプが、記憶容量拡張前に物理ストライプ単位での書き込みがなされた有効なストライプであるか(非NULLの場合)、或いは記憶容量拡張前から空きストライプであったか(NULLの場合)が判定される。
【0109】
ここで、記憶容量拡張前または記憶容量拡張後の有効な各物理ストライプ中のパリティブロックの記録位置は、先に述べたように、その記憶容量の拡張前または拡張後においてディスクアレイ2を構成するディスク装置の台数と当該物理ストライプの物理ストライプ番号とから計算により決定される。
【0110】
本発明の実施形態の第2の変形例では、記憶容量拡張後にセグメントクリーニング処理が行われる。以下、このセグメントクリーニング処理について説明する。
【0111】
まず、本発明の実施形態では、前記したように、ホストコンピュータ10から要求された書き込みデータ(更新データ)により旧データの領域を直接書き換えるのではなく、その書き込みデータをブロック単位に分割して書き込みバッファ31に溜めておき、当該書き込みバッファ31に1ストライプ分の論理ブロックが溜まった段階で、その1ストライプ分の論理ブロック及びパリティブロックを含む1ストライプ分のデータブロックを、ディスクアレイ2内の旧データの領域とは別の空き領域にまとめて書き込む方法を適用している。この、まとめ書きのためには、空き領域が常に存在することが必要である。そこで、既に他の領域にデータが書き込まれ無効になっているデータを寄せ集めて空き領域を確保する必要がある。この処理をセグメントクリーニング処理と呼ぶ。
【0112】
セグメントクリーニング処理は、無効ブロック判定とストライプ統合との2つのステップに大別される。無効ブロックの判定には、記憶容量拡張後のアドレス変換テーブル32に記録されているタイムスタンプを使用する。このアドレス変換テーブル32に記録されているタイムスタンプには、その記録時点に不揮発性メモリ3上のタイムスタンプ情報33に含まれているタイムスタンプが用いられる。このタイムスタンプ情報33は、書き込みバッファ31に蓄積されたデータをストライプ単位でディスクアレイ2にまとめ書きする際に、論理アドレスタグブロックTGにタイムスタンプ情報TSの一部として付加される。先に述べたように、タイムスタンプ情報33に含まれているタイムスタンプは、ディスクアレイ2に対するストライプ単位の書き込みが行われる毎にインクリメントされる。
したがって、ストライプ統合の対象となる各物理ストライプ中の各論理ブロックが無効であるか否か(有効であるか)は、当該ストライプに含まれている論理アドレスタグブロック中に、当該論理アドレスタグブロック中の各論理アドレスに対応するアドレス変換テーブル32内のエントリに設定されているタイムスタンプより値が小さいタイムスタンプ、つまり古いタイムスタンプが設定されているか否かにより判定可能である。
【0113】
ストライプ統合の対象となる物理ストライプに含まれている論理アドレスタグブロックの位置は、ディスクアレイ2にRAID5の冗長化ディスク構成を適用している第2の変形例では、先に述べたように当該ストライプが記憶容量拡張前の有効なストライプであるか、或いは記憶容量拡張後の有効なストライプであるかによって異なる。この物理ストライプ中の論理アドレスタグブロックの位置は、対応する物理ストライプ番号とディスクアレイ2を構成するディスク装置の台数とから、更に詳細に述べるならば、物理ストライプ番号とディスクアレイ2を構成するディスク装置の台数で決まるストライピングルールとから、簡単に計算できる。ここでは、ディスクアレイ2を構成するディスク装置の台数には、記憶容量拡張前の物理ストライプ中の論理アドレスタグブロック位置を計算する場合であれば、記憶容量拡張前のディスク台数3を用い、記憶容量拡張後の物理ストライプ中の論理アドレスタグブロック位置を計算する場合であれば、記憶容量拡張後のディスク台数4を用いればよい。
【0114】
ストライプ統合の対象となる物理ストライプが記憶容量拡張前の有効なストライプであるか、或いは記憶容量拡張後の有効なストライプであるかの判定、つまりストライプ判定のためには、先に述べたように、ストライプ統合の対象となる物理ストライプの物理ストライプ番号で記憶容量拡張後のアドレス変換テーブル32を逆引きし、当該物理ストライプ番号が登録されているエントリ中のタイムスタンプを、記憶容量拡張時タイムスタンプ情報中のタイムスタンプと比較すればよい。但し、第2の変形例では、以下に述べるように、ストライプ統合の対象となるストライプには、記憶容量拡張前のストライプが用いられる。なお、ストライプ統合の対象となるストライプを選択するためのアルゴリズムについては、従来から種々提案されていると共に本発明に直接関係しないため、説明を省略する。
【0115】
ストライプ統合処理の具体例を、図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の論理ブロックであることを示す。
【0116】
図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つの空きストライプが確保できる。
【0117】
図12の例では、ストライプkに統合された有効ブロックを、B2,B7,B8,B12,B13,B18,B19,B20,B21,B22の順番、つまり論理アドレスの順番に並べている。このように、ストライプ統合時に、各有効ブロックを対応する論理アドレスの昇順に並び替えると、シーケンシャルアクセスの性能の低下を防ぐことができる。そのためには、ストライプ統合の対象として、連続した有効な論理アドレスの論理ブロックを含むストライプi,jを選択することが好ましい。
【0118】
さて制御装置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に書き込まれた際に更新される。
【0119】
このように、ストライプ統合は、無効なデータブロックを持つ複数のストライプを統合して、その複数のストライプに含まれている全ての有効なデータブロックを持つストライプを作成する処理である。なお、2つのストライプを1つのストライプに統合するだけでなく、3つ以上のストライプを、それより少ない2つ以上のストライプに統合することも可能である。
【0120】
次に、本発明の実施形態の第2の変形例において、不揮発性メモリ3が故障した場合に適用されるアドレス変換テーブル32の再構築処理について、図13及び図14のフローチャートを参照して説明する。
【0121】
まず、本発明の実施形態では、ホストコンピュータ10からディスクアレイ装置への入出力要求に対し、不揮発性メモリ3上のアドレス変換テーブル32を用いて論理アドレスから物理アドレスへの変換が行われ、その物理アドレスを用いてディスクアレイ2がアクセスされる。このため、不揮発性メモリ3が故障した場合には、アドレス変換テーブル32が使用できなくなって、ディスクアレイ2へのアクセスができなくなってしまう。この場合、アドレス変換テーブル32の再構築処理が必要となる。
【0122】
アドレス変換テーブル32の再構築処理のためには、制御装置1はまず、各エントリの論理アドレスのフィールドにのみ論理アドレスが設定され、他のフィールドには全てNULLが設定されたアドレス変換テーブル32、つまり初期化されたアドレス変換テーブル32を、故障不揮発性メモリ3と交換された新たな不揮発性メモリ3上に配置する(ステップS31)。ここでは、アドレス変換テーブル32のエントリiには、そのエントリiに一致する論理アドレスLiが設定されている。
【0123】
次に、制御装置1は、物理ストライプを指定する変数iを最初の物理ストライプを示す初期値に設定する(ステップS32)。そして制御装置1は、ディスクアレイ2内の物理ストライプiに含まれている論理アドレスタグブロックTGを検出する処理(ステップS33〜S38)を実行する。この論理アドレスタグブロックTGを検出する処理の詳細については後述する。
【0124】
制御装置1は、検出した論理アドレスタグブロックTG中の各論理アドレスについて、その論理アドレスに対応するアドレス変換テーブル32内のエントリを参照する(ステップS39,S40)。そして制御装置1は、参照したアドレス変換テーブル32内エントリ中のタイムスタンプの値が、上記検出した論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれているタイムスタンプの値より小さいか否かを判定する(ステップS41)。
【0125】
もし、参照したアドレス変換テーブル32内エントリ中のタイムスタンプの値が、検出した論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれているタイムスタンプの値より小さいならば(ステップS41のYES)、制御装置1は当該エントリに設定されているアドレス変換情報は無効であり、したがって当該情報の示す物理ブロックのデータは無効であると判定する。この場合、制御装置1は、参照したアドレス変換テーブル32内エントリ中の物理ストライプ番号、物理ブロック番号、及びタイムスタンプを、上記検出した論理アドレスタグブロックTGが属する物理ストライプを示す番号、当該エントリに対応する論理アドレスの論理ブロックが格納されている物理ブロックの番号、及び当該論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれているタイムスタンプに更新し(ステップS42)、ステップS43に進む。
【0126】
これに対し、参照したアドレス変換テーブル32内のエントリ中のタイムスタンプの値が、上記検出した論理アドレスタグブロックTG中のタイムスタンプ情報TSに含まれているタイムスタンプの値以上であるならば、制御装置1は、当該エントリに設定されている情報の示す物理ブロックのデータは有効であると判定する。この場合、制御装置1は、参照したアドレス変換テーブル32内のエントリの更新を行わずに、そのままステップS43に進む。
【0127】
制御装置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の再構築処理を終了する。
【0128】
次に上記論理アドレスタグブロックTGを検出する処理の詳細について説明する。RAID5を適用したディスクアレイ2では、前記したように記憶容量拡張後に書き込みが実施されていないストライプと記憶容量拡張後に書き込みが実施されたストライプとでは、論理アドレスタグブロックTGの位置が異なる場合がある(図9参照)。そのため、記憶容量拡張の前と後のどちらの物理ストライプが有効であるかを判断する必要がある。そこで、制御装置1は、物理ストライプiから論理アドレスタグブロックTGを検出するために、例えば当該物理ストライプiは記憶容量拡張後に書き込みがなされた物理ストライプであると仮定する。そして制御装置1は、記憶容量拡張後のストライピングルールに従って、物理ストライプi中の、物理ストライプ番号とディスクアレイ2を構成するディスク装置の台数(ここでは4)とで決まる位置から、論理アドレスタグブロックTGを読み込む(ステップS33)。
【0129】
制御装置1は、読み込んだ論理アドレスタグブロックTGがNULLであるか否かを判定する(ステップS34)。もし、読み込んだ論理アドレスタグブロックTGがNULLであるならば(ステップS34のYES)、制御装置1は、対応する物理ストライプiは記憶容量拡張時の上記ステップS27の処理で初期化(NULL初期化)されたままであり、記憶容量拡張後も依然として空きストライプのままであると判定する。この場合、制御装置1はディスクアレイ2内の次の物理ストライプからの論理アドレスタグブロックTGの検出のために、ステップS44に進む。これに対し、読み込んだ論理アドレスタグブロックTGがNULLでないならば(ステップS34のNO)、制御装置1は、当該論理アドレスタグブロックTG中のタイムスタンプの値が記憶容量拡張時にディスクアレイ2の特別な領域に保存されたタイムスタンプ情報(記憶容量拡張時タイムスタンプ情報)中のタイムスタンプの値以上であるか否かを判定する(ステップS35)。
【0130】
もし、論理アドレスタグブロックTG中のタイムスタンプの値が記憶容量拡張時タイムスタンプ情報中のタイムスタンプの値以上であるならば(ステップS35のYES)、制御装置1は、対応する物理ストライプiは記憶容量拡張後の有効な物理ストライプであるとして、ステップS33で読み込んだ論理アドレスタグブロックTGを採用する(ステップS36)。これにより、記憶容量拡張後の有効な物理ストライプiから、論理アドレスタグブロックTGが検出されたことになる。
【0131】
一方、論理アドレスタグブロックTG中のタイムスタンプの値が記憶容量拡張時タイムスタンプ情報中のタイムスタンプの値以上であると判定できない場合(論理アドレスタグブロックTGが不定の場合も含む)には(ステップS35のNO)、制御装置1は、対応する物理ストライプが記憶容量拡張後の有効な物理ストライプであるとの仮定が誤っており、当該物理ストライプは記憶容量拡張前の有効な物理ストライプであると判定する。この場合、制御装置1は、記憶容量拡張前のストライピングルールに従って、物理ストライプi中の、物理ストライプ番号と記憶容量拡張前のディスクアレイ2を構成するディスク装置の台数(ここでは3)とで決まる位置から、論理アドレスタグブロックTGを読み込み(ステップS37)、当該論理アドレスタグブロックTGを採用する(ステップS38)。これにより、記憶容量拡張前の有効な物理ストライプiから、論理アドレスタグブロックTGが検出されたことになる。
【0132】
次に、本発明の実施形態の第2の変形例において、ディスクアレイ2の記憶容量が拡張された後に、当該ディスクアレイ2を構成するディスク装置のいずれか1つに障害が発生した場合に、その障害が発生したディスク装置のデータを予備のディスク装置に復旧する処理について、図15のフローチャートを参照して説明する。
【0133】
まず、制御装置1は、論理アドレス(論理ブロックアドレス)を示す変数iを初期値0に設定する(ステップS51)。次に、制御装置1は、論理アドレスiに対応する、記憶容量拡張後のアドレス変換テーブル32内のエントリを参照する(ステップ52)。制御装置1は、参照したアドレス変換テーブル32内エントリ中の物理ストライプ番号、物理ブロック番号、及びタイムスタンプの各項目がいずれもNULL以外であるか否かを調べることで、論理アドレスiが有効であるか否かを判定する(ステップS53)。
【0134】
もし、論理アドレスiが有効であるならば(ステップS53のYES)、つまり有効な論理アドレスiが検索できたなら、制御装置1は、上記参照したアドレス変換テーブル32内エントリ中の物理ブロック番号が、障害が発生したディスク装置(障害ディスク装置)に固有の物理ブロック番号であるか否かを判定する(ステップS54)。もし、参照したアドレス変換テーブル32内エントリに、障害ディスク装置に固有の物理ブロック番号が登録されているならば(ステップS54のYES)、つまり障害ディスク装置に固有の物理ブロック番号に対応する有効な論理アドレスiが検索できたなら、制御装置1は、当該エントリ中のタイムスタンプの値が、記憶容量拡張時タイムスタンプ情報中のタイムスタンプの値以上であるか否かを判定する(ステップS55)。
【0135】
もし、参照したアドレス変換テーブル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等を適用する場合)データを復旧する。
【0136】
制御装置1は、ステップS56またはS57を実行すると、iを1だけインクリメントする(ステップS58)。制御装置1は、このインクリメント後のiの値から、全ての論理アドレスについて処理したか否かを判定する(ステップS59)。もし、未処理の論理アドレスが残っているならば(ステップS59のNO)、ステップS58でのインクリメント後のiで指定される論理アドレスiについて、上記ステップS52以降の処理を実行する。これに対し、全ての論理アドレスについて処理したならば(ステップS59のYES)、制御装置1は、障害ディスク装置のデータを復旧する処理を終了する。これにより、ディスクアレイ2が再構築される。
【0137】
このように、本発明の実施形態の第2の変形例では、ディスクアレイ2を構成するディスク装置のいずれか1つに障害が発生した場合、ホストコンピュータ10により使用されている有効な論理アドレスであって、且つ障害ディスク装置上に存在する物理ブロックに割り当てられていた有効な論理アドレスが、アドレス変換テーブル32から検索され、その論理アドレスのデータのみが復旧される。
このため、復旧処理が短時間で行える。ここで、論理アドレスのデータを復旧するためには、上記したように、当該論理アドレスのデータブロックが存在する物理ストライプが、記憶容量拡張前の有効な物理ストライプであるか、或いは記憶容量拡張後の有効な物理ストライプであるかを、判定する必要がある。第2の変形例では、この判定を、対象となる論理アドレスに対応するアドレス変換テーブル32内のエントリ中のタイムスタンプを、記憶容量拡張時タイムスタンプ情報中のタイムスタンプと比較することにより行っているため、正しい判定が可能となる。
【0138】
なお、復旧したデータは、当該データが障害ディスク装置に格納されていた物理ブロックに相当する置換ディスク装置内の物理ブロックに必ずしも書き込む必要はない。例えば、復旧したデータを含めて有効な論理アドレスのデータのみを、書き込みバッファ31に蓄積しながら、障害ディスク装置が置換ディスク装置に置き換えられたディスクアレイ2に対し、ストライプ単位で書き込みを行うようにしても構わない。この場合、セグメントクリーニングが同時に行える。
【0139】
つまり、ディスクアレイ2のRAID構成を再構築する場合には、次のようにすることで同時にセグメントクリーニングを実施することが可能となる。まず、記憶容量拡張後のアドレス変換テーブル32を使用して、有効な論理アドレスに対応する論理ブロックのデータのみをディスクアレイ2から読み出す。このディスクアレイ2から読み出した論理ブロックのデータを記憶容量拡張後の書き込みバッファ31に順次書き込む。そして、書き込みバッファ31に1ストライプ分の論理ブロックのデータが溜まる毎に、論理アドレスタグブロックとパリティブロックを生成し、その1ストライプ分の論理ブロックのデータと論理アドレスタグブロックとパリティブロックとからなる1ストライプ分のデータブロックを、記憶容量拡張後のストライピングルールに従ってディスクアレイ2に書き込む。これにより、RAID構成の再構築と同時にセグメントクリーニングを実現できる。
【0140】
ここで、RAID構成を再構築するに際し、先に述べた本発明の実施形態の第1の変形例と同様に、有効な論理アドレスを昇順に並び替えるとよい。この場合、有効な論理アドレスの順番に、その論理アドレスのデータを記憶容量拡張後の書き込みバッファ31に蓄積し、記憶容量拡張後のストライピングルールに従ってディスクアレイ2に書き込みすることになる。これにより、RAID構成の再構築処理後の論理アドレスの連続性が保証され、ホストコンピュータ10からのシーケンシャルリードを効率よく処理することができる。
【0141】
[第3の変形例]
次に、本発明の実施形態の第3の変形例による記憶容量拡張処理について図16のフローチャートを参照して説明する。
【0142】
図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初期化を不要としている。これにより、ディスク装置に対する入出力を必要最低限に抑えることができ、動的拡張処理にかかる時間をより一層短縮することができる。
【0143】
次に、本発明の実施形態の第3の変形例において適用される有効な論理アドレスタグブロックを判別する処理について、図17のフローチャートを参照して説明する。なお、図17のフローチャートは、記憶容量拡張後におけるディスクアレイ2上の1つの物理ストライプについて有効な論理アドレスタグブロックTGを求める処理を示すものである。したがって、図17のフローチャートによって示される処理を、ディスクアレイ2上の全ての物理ストライプについて実行することにより、その全ての物理ストライプに対する有効な論理アドレスタグブロックTGを求めることが可能となる。
【0144】
まず、制御装置1は、ディスクアレイ2の特別な領域に保存されているタイムスタンプ情報、つまり最も最近に行われた記憶容量拡張時のタイムスタンプ情報を読み込む(ステップS71)。次に、制御装置1は、読み込んだタイムスタンプ情報から世代番号を取り出す(ステップS72)。制御装置1は、取り出した世代番号に対応するディスク台数と、判別の対象とする論理アドレスタグブロックTGを含む物理ストライプの物理ストライプ番号とから、当該論理アドレスタグブロックTGの記録位置を算出する(ステップS73)。
【0145】
制御装置1は、ステップS73での算出結果に基づき上記物理ストライプ番号で指定される物理ストライプに含まれている論理アドレスタグブロックTGを読み込む(ステップS74)。次に、制御装置1は、読み込んだ論理アドレスタグブロックTGが有効であると仮定して、当該論理アドレスタグブロックTG中の各論理アドレス、タイムスタンプ、ディスク台数、及び世代番号からチェックサムを算出する(ステップS75)。そして、制御装置1は、読み込んだ論理アドレスタグブロックTG中のチェックサムと、ステップS75で算出したチェックサムとが等しいか否かを判定する(ステップS76)。
【0146】
もし、読み込んだ論理アドレスタグブロックTG中のチェックサムと、算出したチェックサムとが等しいならば(ステップS76のYES)、制御装置1は、当該論理アドレスタグブロックTGは、上記世代番号で示される記憶拡張後に生成された有効なブロックであると判定して、対応する物理ストライプについての処理を終了する(ステップS77)。この場合、有効であると判定された論理アドレスタグブロックTGを含む物理ストライプ中の有効な論理ブロックの位置、及び有効なパリティブロックの位置も、上記ディスク台数及び物理ストライプ番号とから決定可能である。
【0147】
これに対し、読み込んだ論理アドレスタグブロックTG中のチェックサムと、算出したチェックサムとが等しくないならば(ステップS76のNO)、制御装置1は、当該論理アドレスタグブロックTGは無効であると判定する。この場合、制御装置1は、上記世代番号を1だけデクリメントして(ステップS78)、上記ステップS73に戻る。なお、図17では省略されているが、世代番号が初期値に一致するまでステップS78が繰り返されても、論理アドレスタグブロックTGが無効であると判定された場合には、対応する物理ストライプは空きストライプであると判定され、当該物理ストライプについての処理は終了となる。
【0148】
このように、本発明の実施形態の第3の変形例では、世代番号とチェックサムを利用することで、上記第2の変形例のように記憶容量拡張処理で論理アドレスタグブロックをNULL初期化することなく、記憶容量拡張前の有効な論理アドレスタグブロックと記憶容量拡張後の有効な論理アドレスタグブロックを検出でき、加えて、それぞれ異なる記憶容量拡張時点で使用されていた有効な論理アドレスタグブロックも正しく検出できる。したがって、この有効な論理アドレスタグブロックの検出機能を利用して、図13及び図14のフローチャート中のステップS33〜S38に相当する論理アドレスタグブロック検出処理を実行することで、不揮発性メモリ13が故障した場合のアドレス変換テーブル32の再構築処理も、上記第2の変形例と同様に実現できる。また、ディスクアレイ2を構成するディスク装置のいずれか1つに障害が発生した場合における、その障害が発生したディスク装置のデータを復旧する処理も、上記第2の変形例と同様に実現できる。
【0149】
以上に述べた実施形態では、書き込みバッファ31、アドレス変換テーブル32、タイムスタンプ33、バッファ管理テーブル34、アドレス変換テーブルのコピー35、及びソート後のアドレス変換テーブル36の各部が不揮発性メモリ3に配置されるものとして説明したが、これに限るものではない。例えば、揮発性メモリと、電源オフ時にも当該揮発性メモリの記憶内容が消失するのを防止するための、電池等のメモリバックアップ機構とにより、等価的に不揮発性メモリ3に相当する不揮発性メモリを実現し、上記各部が揮発性メモリに配置される構成であっても構わない。つまり上記各部が、揮発性メモリとメモリバックアップ機構とから構成される不揮発性メモリに配置される構成であっても構わない。
【0150】
また、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0151】
【発明の効果】
以上詳述したように本発明によれば、ディスク装置を追加してディスクアレイ装置の記憶容量拡張を実施する場合に、ログ構造化ファイルシステムの特徴を利用することで、少なくとも無効な論理アドレスに対するデータについては移動することなしに動的記憶容量拡張が実現でき、記憶容量拡張に要する時間を大幅に短縮することができる。
【図面の簡単な説明】
【図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の変形例で適用される有効な論理アドレスタグを判別する処理を説明するためのフローチャート。
【符号の説明】
1…制御装置
2…ディスクアレイ
3…不揮発性メモリ
4…揮発性メモリ
10…ホストコンピュータ
21〜23…ディスク装置
24…追加ディスク装置
31…書き込みバッファ
32…アドレス変換テーブル
33…タイムスタンプ情報
34…バッファ管理テーブル
35…アドレス変換テーブルのコピー
36…ソート後のアドレス変換テーブル
41…ストライプテーブル
Claims (15)
- 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと当該1ストライプ分の論理ブロックに対する論理アドレスを含む論理アドレスタグブロックとを含む1ストライプ分のデータブロックが、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれ、論理アドレスから物理アドレスに変換するアドレス変換テーブルを参照して前記ディスクアレイをアクセスするディスクアレイ装置であって、
前記ディスクアレイへの1ストライプ単位の書き込み時に、前記アドレス変換テーブルを更新するアドレス変換テーブル更新手段と、
前記ディスクアレイにディスク装置を追加して当該ディスクアレイの記憶容量を拡張する場合に、その記憶容量拡張前の前記アドレス変換テーブルのコピーを生成する手段と、
前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイの記憶容量拡張後のストライプサイズに対応した大きさに再構築する手段と、
前記アドレス変換テーブルのコピーに従って有効な論理アドレスを検索する手段と、
前記検索手段によって検索された有効な論理アドレスに対応する物理アドレスのデータブロックが含まれる物理ストライプを前記ディスクアレイから読み込む手段と、
前記読み込み手段により読み込まれた物理ストライプ中の有効な論理アドレスに対応する論理ブロックのデータを前記再構築後の書き込みバッファに詰めて蓄積する手段と、
前記再構築後の書き込みバッファに前記記憶容量拡張後のストライプサイズに対応した1ストライプ分の論理ブロックのデータが蓄積された段階で、当該1ストライプ分の論理ブロックに対する論理アドレスを含む論理アドレスタグブロックを生成する手段と、
前記論理アドレスタグブロック生成手段によって生成された論理アドレスタグブロックと当該論理アドレスタグブロックに対応する前記1ストライプ分の論理ブロックとを含む1ストライプ分のデータブロックを、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込む手段と
を具備することを特徴とするディスクアレイ装置。 - 前記検索手段は、前記アドレス変換テーブルのコピーに従って論理アドレスの順番に有効な論理アドレスを検索することを特徴とする請求項1記載のディスクアレイ装置。
- 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと、当該1ストライプ分の各論理ブロックに対する論理アドレスを含む論理アドレスタグブロックと、当該1ストライプ分の論理ブロック及び当該論理アドレスタグブロックに対するパリティデータであるパリティブロックとを含む1ストライプ分のデータブロックが、レイドレベルを構成する前記ディスクアレイ内の前記複数のディスク装置の台数に対応したストライピングルールに従って、当該複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置であって、
前記ホストコンピュータからの論理アドレスを前記ディスクアレイの物理アドレスに変換するためのアドレス変換情報が記憶されたアドレス変換テーブルと、
前記ディスクアレイへの1ストライプ単位の書き込み時に、前記アドレス変換テーブル内の対応するアドレス変換情報を更新するアドレス変換テーブル更新手段と、
前記ディスクアレイにディスク装置を追加して当該ディスクアレイの記憶容量を拡張する場合に、その記憶容量の拡張前の前記アドレス変換テーブルのコピーを生成する手段と、
前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイの記憶容量拡張後のストライプサイズに対応した大きさに再構築する手段と、
前記記憶容量拡張前のアドレス変換テーブルを、記憶容量拡張後に使用されるアドレス変換テーブルに再構築する手段と、
前記記憶容量拡張のために、前記記憶容量拡張前のアドレス変換テーブルのコピーに従って、前記ディスクアレイ内の空きストライプを検索し、記憶容量拡張後のストライピングルールに従って当該空きストライプ中の前記論理アドレスタグブロックの位置を特定することで、当該論理アドレスタグブロックを初期化する手段と
を具備することを特徴とするディスクアレイ装置。 - 前記アドレス変換テーブルには、前記アドレス変換情報と組をなして、当該アドレス変換情報の設定または更新時の時刻を表す時刻情報が設定され、
前記論理アドレスタグブロックは、1ストライプ分の各論理ブロックに対する論理アドレス、及び当該タグブロックを含む物理ストライプが前記ディスクアレイに書き込まれた際の時刻を表す時刻情報を含むタイムスタンプ情報から構成され、
前記アドレス変換テーブル更新手段は、前記アドレス変換情報を更新する際には、当該アドレス変換情報と組をなす前記時刻情報も更新し、
前記ディスクアレイ装置は、
前記ディスクアレイの記憶容量拡張の終了時の時刻情報を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録する手段と、
前記記憶容量拡張後の前記ディスクアレイ中の物理ストライプについて、前記アドレス変換テーブルに当該物理ストライプに対応するアドレス変換情報と組をなして記憶された前記時刻情報を、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている時刻情報と比較することで、当該ストライプが記憶容量拡張前の有効な物理ストライプであるか、或いは記憶容量拡張後の有効な物理ストライプであるかを判定するストライプ判定手段とを更に具備する
ことを特徴とする請求項3記載のディスクアレイ装置。 - 前記ストライプ判定手段により記憶容量拡張前の有効な物理ストライプであると判定された、ストライプ統合の対象となる物理ストライプを前記ディスクアレイから読み込む手段と、
前記読み込み手段により読み込まれた前記ストライプ統合の対象となる物理ストライプ中の前記論理アドレスタグブロックに含まれている各論理アドレス毎に、当該論理アドレスに対応するアドレス変換情報と組をなして前記再構築されたアドレス変換テーブルに記憶された時刻情報を、当該論理アドレスタグブロックに含まれている時刻情報と比較することで、当該論理アドレスに対応する前記物理ストライプ中の論理ブロックが無効であるか或いは有効であるかを判定するブロック判定手段と、
前記ストライプ統合の対象となる複数の物理ストライプ中の論理ブロックのうちの、前記ブロック判定手段により有効であると判定された論理ブロックを含む、前記記憶容量拡張後の1ストライプ分の論理ブロックのデータを前記書き込みバッファに蓄積する手段と、
前記ブロック判定手段により有効であると判定された論理ブロックを含む前記記憶容量拡張後の1ストライプ分の論理ブロックのデータが前記書き込みバッファに蓄積された段階で、当該1ストライプ分の論理ブロックと、当該1ストライプ分の論理ブロックに対する論理アドレス、及びその時点の時刻情報を含むタイムスタンプ情報から構成される論理アドレスタグブロックと、当該1ストライプ分の論理ブロック及び当該論理アドレスタグブロックに対するパリティブロックとを含む1ストライプ分のデータブロックを、前記記憶容量拡張後のストライピングルールに従って、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込むことでストライプ統合を実行するストライプ統合手段と
を更に具備することを特徴とする請求項4記載のディスクアレイ装置。 - 前記アドレス変換テーブルには、前記アドレス変換情報と組をなして、当該アドレス変換情報の設定または更新時の時刻を表す時刻情報が設定され、
前記論理アドレスタグブロックは、1ストライプ分の各論理ブロックに対する論理アドレス、及び当該タグブロックを含む物理ストライプが前記ディスクアレイに書き込まれた際の時刻を表す時刻情報を含むタイムスタンプ情報から構成され、
前記アドレス変換テーブル更新手段は、前記アドレス変換情報を更新する際には、当該アドレス変換情報と組をなす前記時刻情報も更新し、
前記ディスクアレイ装置は、
前記ディスクアレイの記憶容量拡張の終了時の時刻情報を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録する手段と、
前記ディスクアレイ中の各物理ストライプ毎に、当該物理ストライプが記憶容量拡張後の有効な物理ストライプであると仮定して、当該ストライプから前記記憶容量拡張後のストライピングルールに従って論理アドレスタグブロックを読み込む手段と、
前記読み込み手段により読み込まれた論理アドレスタグブロックのうちの、前記記憶容量拡張後のストライピングルールに従って初期化された論理アドレスタグブロック以外の各論理アドレスタグブロックについて、当該論理アドレスタグブロックに含まれている時刻情報を、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている時刻情報と比較することで、対応する前記物理ストライプが記憶容量拡張後の有効な物理ストライプであるか、或いは記憶容量拡張前の有効な物理ストライプであるかを判定するストライプ判定手段と
とを具備することを特徴とする請求項3記載のディスクアレイ装置。 - 前記アドレス変換テーブルには、前記アドレス変換情報と組をなして、当該アドレス変換情報の設定または更新時の時刻を表す時刻情報が設定され、
前記論理アドレスタグブロックは、1ストライプ分の各論理ブロックに対する論理アドレス、及び当該タグブロックを含む物理ストライプが前記ディスクアレイに書き込まれた際の時刻を表す時刻情報を含むタイムスタンプ情報から構成され、
前記アドレス変換テーブル更新手段は、前記アドレス変換情報を更新する際には、当該アドレス変換情報と組をなす前記時刻情報も更新し、
前記ディスクアレイ装置は、
前記アドレス変換テーブルが使用不可能な状態となった場合に、初期化された新たなアドレス変換テーブルを生成する手段と、
前記ディスクアレイの各物理ストライプのうち、前記記憶容量拡張後のストライピングルールに従って初期化された論理アドレスタグブロックを含む空きストライプ以外の有効な物理ストライプから、有効な論理アドレスタグブロックを検出する手段と、
前記検出手段により検出された論理アドレスタグブロックに含まれている各論理アドレス毎に、当該論理アドレスに対応するアドレス変換情報と組をなして前記新たなアドレス変換テーブルに記憶された時刻情報を、当該論理アドレスタグブロックに含まれている時刻情報と比較することで、当該アドレス変換情報が有効であるか或いは無効であるかを判定するアドレス変換情報判定手段とを更に具備し、
前記アドレス変換テーブル更新手段は、前記アドレス変換情報判定手段により前記アドレス変換情報が無効であると判定された場合に、前記新たなアドレス変換テーブル内の当該アドレス変換情報及び時刻情報を更新する
ことを特徴とする請求項3記載のディスクアレイ装置。 - 前記ディスクアレイの記憶容量拡張の終了時の時刻情報を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録する手段を更に具備し、
前記論理アドレスタグブロック検出手段は、
前記ディスクアレイ中の各物理ストライプ毎に、当該物理ストライプが記憶容量拡張後の有効な物理ストライプであると仮定して、当該ストライプから前記記憶容量拡張後のストライピングルールに従って論理アドレスタグブロックを読み込む第1の論理アドレスタグブロック読み込み手段と、
前記第1の論理アドレスタグブロック読み込み手段により読み込まれた論理アドレスタグブロックのうちの、前記記憶容量拡張後のストライピングルールに従って初期化された論理アドレスタグブロック以外の各論理アドレスタグブロックについて、当該論理アドレスタグブロックに含まれている時刻情報を、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている時刻情報と比較することで、対応する前記物理ストライプが記憶容量拡張後の有効な物理ストライプであるとの仮定が正しかったか或いは誤っていたかを判定する手段と、
前記物理ストライプが記憶容量拡張後の有効な物理ストライプであるとの仮定が誤っていたと判定された場合、当該物理ストライプから前記記憶容量拡張前のストライピングルールに従って論理アドレスタグブロックを読み込む第2の論理アドレスタグブロック読み込み手段と、
前記物理ストライプが記憶容量拡張後の有効な物理ストライプであるとの仮定が正しかったと判定された場合には、当該物理ストライプから前記第1の論理アドレスタグブロック読み込み手段により読み込まれた論理アドレスタグブロックを採用し、前記物理ストライプが記憶容量拡張後の有効な物理ストライプであるとの仮定が誤っていたと判定された場合には、当該物理アドレスから前記第2の論理アドレスタグブロック読み込み手段により読み込まれた論理アドレスタグブロックを採用する手段とを含む
ことを特徴とする請求項7記載のディスクアレイ装置。 - 前記アドレス変換テーブルには、前記アドレス変換情報と組をなして、当該アドレス変換情報の設定または更新時の時刻を表す時刻情報が設定され、
前記論理アドレスタグブロックは、1ストライプ分の各論理ブロックに対する論理アドレス、及び当該タグブロックを含む物理ストライプが前記ディスクアレイに書き込まれた際の時刻を表す時刻情報を含むタイムスタンプ情報から構成され、
前記アドレス変換テーブル更新手段は、前記アドレス変換情報を更新する際には、当該アドレス変換情報と組をなす前記時刻情報も更新し、
前記ディスクアレイ装置は、
前記ディスクアレイの記憶容量拡張の終了時の時刻情報を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録する手段と、
前記ディスクアレイを構成する前記複数のディスク装置のいずれか1つが故障して、当該故障したディスク装置に代えて予備のディスク装置を用いて前記ディスクアレイを再構築する場合に、前記再構築されたアドレス変換テーブル内の各アドレス変換情報を参照することで、前記故障ディスク装置上に存在する物理ブロックに割り当てられていた有効な論理アドレスを検索する手段と、
前記検索手段により検索された各論理アドレス毎に、当該論理アドレスに対応するアドレス変換情報と組をなして前記再構築されたアドレス変換テーブルに記憶された時刻情報を、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている時刻情報と比較することで、当該論理アドレスに対応する物理ストライプが記憶容量拡張前の有効な物理ストライプであるか、或いは記憶容量拡張後の有効な物理ストライプであるかを判定するストライプ判定手段と、
前記検索手段により検索された各論理アドレス毎に、前記ストライプ判定手段の判定結果に応じて、対応するデータを記憶容量拡張前または記憶容量拡張後のストライピングルールに従って復旧する手段とを更に具備する
ことを特徴とする請求項3記載のディスクアレイ装置。 - 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと、当該1ストライプ分の各論理ブロックに対する論理アドレスを含む論理アドレスタグ、並びに時刻情報及び記憶容量拡張回数を示す世代番号を含むタイムスタンプ情報であって、当該タイムスタンプ情報のチェックサムが付加されたタイムスタンプ情報から構成される論理アドレスタグブロックと、当該1ストライプ分の論理ブロック及び当該論理アドレスタグブロックに対するパリティデータであるパリティブロックとを含む1ストライプ分のデータブロックが、レイドレベルを構成する前記ディスクアレイ内の前記複数のディスク装置の台数に対応したストライピングルールに従って、当該複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置であって、
前記ホストコンピュータからの論理アドレスを前記ディスクアレイの物理アドレスに変換するためのアドレス変換情報、及び当該アドレス変換情報の登録または更新時の時刻情報の組が記憶されたアドレス変換テーブルと、
前記ディスクアレイへの1ストライプ単位の書き込み時に、前記アドレス変換テーブル内の対応するアドレス変換情報及び時刻情報を更新するアドレス変換テーブル更新手段と、
前記ディスクアレイにディスク装置を追加して当該ディスクアレイの記憶容量を拡張する場合に、その記憶容量の拡張前の前記アドレス変換テーブルのコピーを生成する手段と、
前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイの記憶容量拡張後のストライプサイズに対応した大きさに再構築する手段と、
前記記憶容量拡張前のアドレス変換テーブルを、記憶容量拡張後に使用されるアドレス変換テーブルに再構築する手段と、
前記ディスクアレイの記憶容量拡張の終了時の時刻情報、及び世代番号を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録する手段と、
前記ディスクアレイ中の各物理ストライプから、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている前記世代番号に対応する記憶容量拡張で再構築されたディスクアレイを構成するディスク装置の台数と、当該物理ストライプの物理ストライプ番号とをもとに、前記論理アドレスタグブロックを読み込む手段と、
前記論理アドレスタグブロック読み込み手段により前記論理アドレスタグブロックが読み込まれる毎に、当該論理アドレスタグブロックに含まれている前記論理アドレスタグ及びタイムスタンプ情報のチェックサムを算出する手段と、
前記論理アドレスタグブロック読み込み手段により前記論理アドレスタグブロックが読み込まれる毎に、当該論理アドレスタグブロックに含まれているチェックサムと、当該論理アドレスタグブロックをもとに前記チェックサム算出手段により算出されたチェックサムとを比較し、その比較結果に応じて当該論理アドレスタグブロックが有効であるか、或いは無効であるかを判定することで、有効な論理アドレスタグブロックを検出する手段と、
前記検出手段により前記論理アドレスタグブロックが無効であると判定された場合、前記世代番号を1世代前の番号に変更し、その変更後の世代番号を用いて、前記論理アドレスタグブロック読み込み手段による当該論理アドレスタグブロックに対応する前記物理ストライプからの再度の論理アドレスタグブロック読み込みを行わせる手段と
を具備することを特徴とするディスクアレイ装置。 - 前記ディスクアレイの記憶容量の拡張に際し、前記書き込みバッファにデータが蓄積されているならば、当該バッファに記憶容量拡張前のストライプサイズの1ストライプ分の論理ブロックが蓄積されたとして、当該バッファに蓄積されているデータを含む1ストライプ分のデータブロックを生成して、前記ディスクアレイに強制的に書き込む強制書き込み手段を更に具備することを特徴とする請求項1または請求項3記載のディスクアレイ装置。
- 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと当該1ストライプ分の論理ブロックに対する論理アドレスを含む論理アドレスタグブロックとを含む1ストライプ分のデータブロックが、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれ、論理アドレスから物理アドレスに変換するアドレス変換テーブルを参照して前記ディスクアレイをアクセスするディスクアレイ装置における動的記憶容量拡張方法であって、
前記ディスクアレイへの1ストライプ単位の書き込み時に、前記アドレス変換テーブルを更新するステップと、
前記ディスクアレイにディスク装置を追加して当該ディスクアレイの記憶容量を拡張する場合に、その記憶容量拡張前の前記アドレス変換テーブルのコピーを生成するステップと、
前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイの記憶容量拡張後のストライプサイズに対応した大きさに再構築するステップと、
前記アドレス変換テーブルのコピーに従って有効な論理アドレスを検索するステップと、
前記検索ステップで検索された有効な論理アドレスに対応する物理アドレスのデータブロックが含まれる物理ストライプを前記ディスクアレイから読み込むステップと、
前記読み込みステップで読み込まれた物理ストライプ中の有効な論理アドレスに対応する論理ブロックのデータを前記再構築後の書き込みバッファに詰めて蓄積するステップと、
前記再構築後の書き込みバッファに前記記憶容量拡張後のストライプサイズに対応した1ストライプ分の論理ブロックのデータが蓄積された段階で、当該1ストライプ分の論理ブロックに対する論理アドレスを含む論理アドレスタグブロックを生成するステップと、
前記生成された論理アドレスタグブロックと当該論理アドレスタグブロックに対応する前記1ストライプ分の論理ブロックとを含む1ストライプ分のデータブロックを、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込むステップと
を具備することを特徴とするディスクアレイ装置における動的記憶容量拡張方法。 - 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと、当該1ストライプ分の各論理ブロックに対する論理アドレスを含む論理アドレスタグブロックと、当該1ストライプ分の論理ブロック、及び当該論理アドレスタグブロックに対するパリティデータであるパリティブロックとを含む1ストライプ分のデータブロックが、レイドレベルを構成する前記ディスクアレイ内の前記複数のディスク装置の台数に対応したストライピングルールに従って、当該複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置における動的記憶容量拡張方法であって、
前記ディスクアレイへの1ストライプ単位の書き込み時に、前記ホストコンピュータからの論理アドレスを前記ディスクアレイの物理アドレスに変換するためのアドレス変換情報が記憶されたアドレス変換テーブルを更新するステップと
前記ディスクアレイにディスク装置を追加して当該ディスクアレイの記憶容量を拡張する場合に、前記アドレス変換テーブルのコピーを生成するステップと、
前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイの記憶容量拡張後のストライプサイズに対応した大きさに再構築するステップと、
前記記憶容量拡張前のアドレス変換テーブルを、記憶容量拡張後に使用されるアドレス変換テーブルに再構築するステップと、
前記記憶容量拡張のために、前記アドレス変換テーブルのコピーに従って、前記ディスクアレイ内の空きストライプを検索し、記憶容量拡張後のストライピングルールに従って当該空きストライプ中の前記論理アドレスタグブロックの位置を特定することで、当該論理アドレスタグブロックを初期化するステップと
を具備することを特徴とするディスクアレイ装置における動的記憶容量拡張方法。 - 前記アドレス変換テーブルには、前記アドレス変換情報と組をなして、当該アドレス変換情報の設定または更新時の時刻を表す時刻情報が設定され、
前記論理アドレスタグブロックは、1ストライプ分の各論理ブロックに対する論理アドレス、及び当該タグブロックを含む物理ストライプが前記ディスクアレイに書き込まれた際の時刻を表す時刻情報を含むタイムスタンプ情報から構成され、
前記ディスクアレイ装置における動的記憶容量拡張方法は、
前記ディスクアレイの記憶容量拡張の終了時の時刻情報を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別な領域に記録するステップと、
前記記憶容量拡張後の前記ディスクアレイ中の物理ストライプについて、前記アドレス変換テーブルに当該物理ストライプに対応するアドレス変換情報と組をなして記憶された前記時刻情報を、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている時刻情報と比較することで、当該ストライプが記憶容量拡張前の有効な物理ストライプであるか、或いは記憶容量拡張後の有効な物理ストライプであるかを判定するステップとを更に具備する
ことを特徴とする請求項13記載のディスクアレイ装置における動的記憶容量拡張方法。 - 複数のディスク装置から構成されるディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して不揮発性メモリ上に確保された書き込みバッファに詰めて蓄積し、当該バッファに1ストライプ分の論理ブロック数のデータが蓄積された段階で、当該1ストライプ分の論理ブロックと、当該1ストライプ分の各論理ブロックに対する論理アドレスを含む論理アドレスタグ、並びに時刻情報及び記憶容量拡張回数を示す世代番号を含むタイムスタンプ情報であって、当該タイムスタンプ情報のチェックサムが付加されたタイムスタンプ情報から構成される論理アドレスタグブロックと、当該1ストライプ分の論理ブロック及び当該論理アドレスタグブロックに対するパリティデータであるパリティブロックとを含む1ストライプ分のデータブロックが、レイドレベルを構成する前記ディスクアレイ内の前記複数のディスク装置の台数に対応したストライピングルールに従って、当該複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置における動的記憶容量拡張方法であって、
前記ディスクアレイへの1ストライプ単位の書き込み時に、前記ホストコンピュータからの論理アドレスを前記ディスクアレイの物理アドレスに変換するためのアドレス変換情報、及び当該アドレス変換情報の登録または更新時の時刻情報の組が記憶されたアドレス変換テーブル内の対応するアドレス変換情報及び時刻情報を更新するステップと、
前記ディスクアレイにディスク装置を追加して当該ディスクアレイの記憶容量を拡張する場合に、その記憶容量の拡張前の前記アドレス変換テーブルのコピーを生成するステップと、
前記不揮発性メモリ上の前記書き込みバッファを前記ディスクアレイの記憶容量拡張後のストライプサイズに対応した大きさに再構築するステップと、
前記記憶容量拡張前のアドレス変換テーブルを、記憶容量拡張後に使用されるアドレス変換テーブルに再構築するステップと、
前記ディスクアレイの記憶容量拡張の終了時の時刻情報、及び世代番号を含むタイムスタンプ情報を、前記ディスクアレイ内の、データを記録する領域とは別に確保された特別 な領域に記録するステップと、
前記ディスクアレイ中の各物理ストライプから、前記特別な領域に記録されている前記タイムスタンプ情報に含まれている前記世代番号に対応する記憶容量拡張で再構築されたディスクアレイを構成するディスク装置の台数と、当該物理ストライプの物理ストライプ番号とをもとに、前記論理アドレスタグブロックを読み込むステップと、
前記論理アドレスタグブロックが読み込まれる毎に、当該論理アドレスタグブロックに含まれている前記論理アドレスタグ及びタイムスタンプ情報のチェックサムを算出するステップと、
前記論理アドレスタグブロックが読み込まれる毎に、当該論理アドレスタグブロックに含まれているチェックサムと、当該論理アドレスタグブロックをもとに算出されたチェックサムとを比較し、その比較結果に応じて当該論理アドレスタグブロックが有効であるか、或いは無効であるかを判定することで、有効な論理アドレスタグブロックを検出するステップと、
前記論理アドレスタグブロックが無効であると判定された場合、前記世代番号を1世代前の番号に変更し、その変更後の世代番号を用いて、前記論理アドレスタグブロックを読み込むステップによる当該論理アドレスタグブロックに対応する前記物理ストライプからの再度の論理アドレスタグブロック読み込みを行わせるステップと
を具備することを特徴とするディスクアレイ装置における動的記憶容量拡張方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002023919A JP3702231B2 (ja) | 2002-01-31 | 2002-01-31 | ディスクアレイ装置及び同装置における動的記憶容量拡張方法 |
US10/353,042 US6901479B2 (en) | 2002-01-31 | 2003-01-29 | Disk array apparatus for and method of expanding storage capacity dynamically |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002023919A JP3702231B2 (ja) | 2002-01-31 | 2002-01-31 | ディスクアレイ装置及び同装置における動的記憶容量拡張方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003223284A JP2003223284A (ja) | 2003-08-08 |
JP3702231B2 true JP3702231B2 (ja) | 2005-10-05 |
Family
ID=27606421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002023919A Expired - Fee Related JP3702231B2 (ja) | 2002-01-31 | 2002-01-31 | ディスクアレイ装置及び同装置における動的記憶容量拡張方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6901479B2 (ja) |
JP (1) | JP3702231B2 (ja) |
Families Citing this family (161)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594780B1 (en) * | 1999-10-19 | 2003-07-15 | Inasoft, Inc. | Operating system and data protection |
US7337360B2 (en) * | 1999-10-19 | 2008-02-26 | Idocrase Investments Llc | Stored memory recovery system |
US7162600B2 (en) | 2005-03-29 | 2007-01-09 | Hitachi, Ltd. | Data copying method and apparatus in a thin provisioned system |
JP4080227B2 (ja) * | 2002-03-28 | 2008-04-23 | 株式会社日立製作所 | データ検証方法およびディスクアレイ装置 |
JP4283004B2 (ja) * | 2003-02-04 | 2009-06-24 | 株式会社日立製作所 | ディスク制御装置およびディスク制御装置の制御方法 |
JP4651913B2 (ja) * | 2003-02-17 | 2011-03-16 | 株式会社日立製作所 | 記憶装置システム |
JP2004265162A (ja) * | 2003-03-03 | 2004-09-24 | Renesas Technology Corp | 記憶装置およびアドレス管理方法 |
JP2004348464A (ja) | 2003-05-22 | 2004-12-09 | Hitachi Ltd | ストレージ装置、及び通信信号の整形回路 |
JP4060235B2 (ja) | 2003-05-22 | 2008-03-12 | 株式会社日立製作所 | ディスクアレイ装置及びディスクアレイ装置の制御方法 |
JP4438457B2 (ja) * | 2003-05-28 | 2010-03-24 | 株式会社日立製作所 | 記憶領域割当方法、システム及び仮想化装置 |
JP4401132B2 (ja) * | 2003-09-19 | 2010-01-20 | 株式会社日立国際電気 | 循環記録装置 |
JP4215606B2 (ja) * | 2003-09-24 | 2009-01-28 | 日本電気株式会社 | ディスクアレイ装置および記憶容量拡張方法ならびにプログラム |
JP2005107841A (ja) * | 2003-09-30 | 2005-04-21 | Toshiba Corp | ディスクアレイコントローラ及び容量拡張方法 |
JP4156499B2 (ja) * | 2003-11-28 | 2008-09-24 | 株式会社日立製作所 | ディスクアレイ装置 |
JP4354268B2 (ja) * | 2003-12-22 | 2009-10-28 | 株式会社河合楽器製作所 | 信号処理装置 |
JP4497918B2 (ja) * | 2003-12-25 | 2010-07-07 | 株式会社日立製作所 | ストレージシステム |
JP2005228278A (ja) | 2004-01-14 | 2005-08-25 | Hitachi Ltd | 記憶領域の管理方法、管理装置及び管理プログラム |
JP4477365B2 (ja) * | 2004-01-29 | 2010-06-09 | 株式会社日立製作所 | 複数インタフェースを有する記憶装置、および、その記憶装置の制御方法 |
JP4634049B2 (ja) | 2004-02-04 | 2011-02-16 | 株式会社日立製作所 | ディスクアレイ装置における異常通知制御 |
US7406563B1 (en) * | 2004-03-09 | 2008-07-29 | Adaptec, Inc. | Method and apparatus for accessing a striped configuration of disks |
JP2005293363A (ja) * | 2004-04-01 | 2005-10-20 | Toshiba Corp | ディスクアレイコントローラおよび情報処理装置 |
US7424574B1 (en) * | 2004-04-21 | 2008-09-09 | Sun Microsystems, Inc. | Method and apparatus for dynamic striping |
US7603568B1 (en) | 2004-04-21 | 2009-10-13 | Sun Microsystems, Inc. | Method and apparatus for self-validating checksums in a file system |
US7415653B1 (en) | 2004-04-21 | 2008-08-19 | Sun Microsystems, Inc. | Method and apparatus for vectored block-level checksum for file system data integrity |
US7213103B2 (en) * | 2004-04-22 | 2007-05-01 | Apple Inc. | Accessing data storage systems without waiting for read errors |
US7809898B1 (en) * | 2004-05-18 | 2010-10-05 | Symantec Operating Corporation | Detecting and repairing inconsistencies in storage mirrors |
US7412450B1 (en) | 2004-05-26 | 2008-08-12 | Sun Microsystems, Inc. | Method and apparatus for identifying tampering of data in a file system |
US7526622B1 (en) | 2004-05-26 | 2009-04-28 | Sun Microsystems, Inc. | Method and system for detecting and correcting data errors using checksums and replication |
US7496586B1 (en) | 2004-05-26 | 2009-02-24 | Sun Microsystems, Inc. | Method and apparatus for compressing data in a file system |
US7281188B1 (en) | 2004-05-26 | 2007-10-09 | Sun Microsystems, Inc. | Method and system for detecting and correcting data errors using data permutations |
US7533225B1 (en) | 2004-08-17 | 2009-05-12 | Sun Microsystems, Inc. | Method and apparatus for enabling adaptive endianness |
US7437528B1 (en) | 2004-08-17 | 2008-10-14 | Sun Microsystems, Inc. | Gang blocks |
GB2418769B (en) * | 2004-10-02 | 2009-06-17 | Hewlett Packard Development Co | Method and system for storing data |
US8066515B2 (en) * | 2004-11-17 | 2011-11-29 | Nvidia Corporation | Multiple graphics adapter connection systems |
JP4699808B2 (ja) * | 2005-06-02 | 2011-06-15 | 株式会社日立製作所 | ストレージシステム及び構成変更方法 |
US7711897B1 (en) | 2005-06-10 | 2010-05-04 | American Megatrends, Inc. | Method, system, apparatus, and computer-readable medium for improving disk array performance |
US7747835B1 (en) | 2005-06-10 | 2010-06-29 | American Megatrends, Inc. | Method, system, and apparatus for expanding storage capacity in a data storage system |
US7523146B2 (en) | 2005-06-21 | 2009-04-21 | Apple Inc. | Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment |
US8495015B2 (en) * | 2005-06-21 | 2013-07-23 | Apple Inc. | Peer-to-peer syncing in a decentralized environment |
US7721044B1 (en) | 2005-10-20 | 2010-05-18 | American Megatrends, Inc. | Expanding the storage capacity of a virtualized data storage system |
US8010829B1 (en) | 2005-10-20 | 2011-08-30 | American Megatrends, Inc. | Distributed hot-spare storage in a storage cluster |
US7480684B2 (en) * | 2005-11-04 | 2009-01-20 | Sun Microsystems, Inc. | Method and system for object allocation using fill counts |
US7689877B2 (en) * | 2005-11-04 | 2010-03-30 | Sun Microsystems, Inc. | Method and system using checksums to repair data |
US20070106868A1 (en) * | 2005-11-04 | 2007-05-10 | Sun Microsystems, Inc. | Method and system for latency-directed block allocation |
US7877554B2 (en) * | 2005-11-04 | 2011-01-25 | Oracle America, Inc. | Method and system for block reallocation |
US7925827B2 (en) | 2005-11-04 | 2011-04-12 | Oracle America, Inc. | Method and system for dirty time logging |
US7596739B2 (en) * | 2005-11-04 | 2009-09-29 | Sun Microsystems, Inc. | Method and system for data replication |
US8938594B2 (en) * | 2005-11-04 | 2015-01-20 | Oracle America, Inc. | Method and system for metadata-based resilvering |
US7865673B2 (en) * | 2005-11-04 | 2011-01-04 | Oracle America, Inc. | Multiple replication levels with pooled devices |
US7899989B2 (en) * | 2005-11-04 | 2011-03-01 | Oracle America, Inc. | Method and system for using a block allocation policy |
US7873799B2 (en) * | 2005-11-04 | 2011-01-18 | Oracle America, Inc. | Method and system supporting per-file and per-block replication |
US8495010B2 (en) * | 2005-11-04 | 2013-07-23 | Oracle America, Inc. | Method and system for adaptive metadata replication |
US7716445B2 (en) * | 2005-11-04 | 2010-05-11 | Oracle America, Inc. | Method and system for storing a sparse file using fill counts |
US20070112895A1 (en) * | 2005-11-04 | 2007-05-17 | Sun Microsystems, Inc. | Block-based incremental backup |
US8635190B2 (en) * | 2005-11-04 | 2014-01-21 | Oracle America, Inc. | Method and system for pruned resilvering using a dirty time log |
US7930495B2 (en) * | 2005-11-04 | 2011-04-19 | Oracle America, Inc. | Method and system for dirty time log directed resilvering |
US8549051B2 (en) * | 2005-11-04 | 2013-10-01 | Oracle America, Inc. | Unlimited file system snapshots and clones |
US7716519B2 (en) * | 2005-11-04 | 2010-05-11 | Oracle America, Inc. | Method and system for repairing partially damaged blocks |
US7743225B2 (en) * | 2005-11-04 | 2010-06-22 | Oracle America, Inc. | Ditto blocks |
US7376758B2 (en) * | 2005-11-04 | 2008-05-20 | Sun Microsystems, Inc. | I/O dependency graphs |
JP2007133807A (ja) * | 2005-11-14 | 2007-05-31 | Hitachi Ltd | データ処理システム、ストレージ装置及び管理装置 |
KR100706808B1 (ko) | 2006-02-03 | 2007-04-12 | 삼성전자주식회사 | 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법 |
US7797670B2 (en) * | 2006-04-14 | 2010-09-14 | Apple Inc. | Mirrored file system |
JP4272227B2 (ja) * | 2006-06-16 | 2009-06-03 | 三洋電機株式会社 | メモリおよび制御装置 |
JP2008033921A (ja) * | 2006-06-29 | 2008-02-14 | Seagate Technology Llc | 加速ストライピングによる分散記憶システム |
US7860826B2 (en) | 2006-08-04 | 2010-12-28 | Apple Inc. | Method and system for using global equivalency sets to identify data during peer-to-peer synchronization |
US7783847B2 (en) * | 2006-10-31 | 2010-08-24 | Oracle America Inc. | Method and system for reallocating blocks in a storage pool |
US7584229B2 (en) * | 2006-10-31 | 2009-09-01 | Sun Microsystems, Inc. | Method and system for priority-based allocation in a storage pool |
US7840657B2 (en) * | 2006-10-31 | 2010-11-23 | Oracle America, Inc. | Method and apparatus for power-managing storage devices in a storage pool |
JP4949804B2 (ja) * | 2006-11-07 | 2012-06-13 | 株式会社日立製作所 | 統合管理計算機と記憶装置管理方法および計算機システム |
US7657769B2 (en) * | 2007-01-08 | 2010-02-02 | Marcy M Scott | N-way synchronization of data |
JP4967680B2 (ja) * | 2007-01-23 | 2012-07-04 | ソニー株式会社 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
TWI334564B (en) * | 2007-02-14 | 2010-12-11 | Via Tech Inc | Data migration systems and methods for independent storage device expansion and adaptation |
US8006061B1 (en) | 2007-04-13 | 2011-08-23 | American Megatrends, Inc. | Data migration between multiple tiers in a storage system using pivot tables |
US8370597B1 (en) | 2007-04-13 | 2013-02-05 | American Megatrends, Inc. | Data migration between multiple tiers in a storage system using age and frequency statistics |
US8001352B1 (en) | 2007-04-17 | 2011-08-16 | American Megatrends, Inc. | Networked raid in a virtualized cluster |
US8271757B1 (en) | 2007-04-17 | 2012-09-18 | American Megatrends, Inc. | Container space management in a data storage system |
US20080276041A1 (en) * | 2007-05-01 | 2008-11-06 | International Business Machines Corporation | Data storage array scaling method and system with minimal data movement |
US8127096B1 (en) | 2007-07-19 | 2012-02-28 | American Megatrends, Inc. | High capacity thin provisioned storage server with advanced snapshot mechanism |
US7873878B2 (en) * | 2007-09-24 | 2011-01-18 | International Business Machines Corporation | Data integrity validation in storage systems |
US7792882B2 (en) * | 2007-09-27 | 2010-09-07 | Oracle America, Inc. | Method and system for block allocation for hybrid drives |
JP5028218B2 (ja) * | 2007-10-30 | 2012-09-19 | 株式会社日立製作所 | 記憶制御装置、ストレージシステム及び記憶制御装置の制御方法 |
US7761740B2 (en) * | 2007-12-13 | 2010-07-20 | Spansion Llc | Power safe translation table operation in flash memory |
US8095728B2 (en) * | 2008-04-18 | 2012-01-10 | Oracle America, Inc. | Method and system for power aware I/O scheduling |
US8037279B2 (en) * | 2008-06-12 | 2011-10-11 | Oracle America, Inc. | Method and system for cross-domain data sharing |
US8135907B2 (en) * | 2008-06-30 | 2012-03-13 | Oracle America, Inc. | Method and system for managing wear-level aware file systems |
KR20100016987A (ko) * | 2008-08-05 | 2010-02-16 | 삼성전자주식회사 | 상 변화 메모리를 포함하는 컴퓨팅 시스템 |
US8397051B2 (en) * | 2009-02-23 | 2013-03-12 | Autonomy, Inc. | Hybrid hash tables |
US8145598B2 (en) * | 2009-02-23 | 2012-03-27 | Iron Mountain Incorporated | Methods and systems for single instance storage of asset parts |
US20100215175A1 (en) * | 2009-02-23 | 2010-08-26 | Iron Mountain Incorporated | Methods and systems for stripe blind encryption |
US8090683B2 (en) * | 2009-02-23 | 2012-01-03 | Iron Mountain Incorporated | Managing workflow communication in a distributed storage system |
MX2011010822A (es) * | 2009-04-21 | 2011-10-28 | Internat Bussines Machines Corp | Aparato y metodo para controlar un dispositivo de disco de estado solido (ssd). |
US8280858B2 (en) * | 2009-06-29 | 2012-10-02 | Oracle America, Inc. | Storage pool scrubbing with concurrent snapshots |
US9377960B2 (en) * | 2009-07-29 | 2016-06-28 | Hgst Technologies Santa Ana, Inc. | System and method of using stripes for recovering data in a flash storage system |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US8194340B1 (en) | 2010-03-18 | 2012-06-05 | Western Digital Technologies, Inc. | Disk drive framing write data with in-line mapping data during write operations |
US8699185B1 (en) | 2012-12-10 | 2014-04-15 | Western Digital Technologies, Inc. | Disk drive defining guard bands to support zone sequentiality when butterfly writing shingled data tracks |
US8687306B1 (en) | 2010-03-22 | 2014-04-01 | Western Digital Technologies, Inc. | Systems and methods for improving sequential data rate performance using sorted data zones |
US8693133B1 (en) | 2010-03-22 | 2014-04-08 | Western Digital Technologies, Inc. | Systems and methods for improving sequential data rate performance using sorted data zones for butterfly format |
US8856438B1 (en) | 2011-12-09 | 2014-10-07 | Western Digital Technologies, Inc. | Disk drive with reduced-size translation table |
US9330715B1 (en) | 2010-03-22 | 2016-05-03 | Western Digital Technologies, Inc. | Mapping of shingled magnetic recording media |
US8751740B1 (en) * | 2010-03-31 | 2014-06-10 | Emc Corporation | Systems, methods, and computer readable media for performance optimization of storage allocation to virtual logical units |
US8959284B1 (en) | 2010-06-28 | 2015-02-17 | Western Digital Technologies, Inc. | Disk drive steering write data to write cache based on workload |
US8479046B1 (en) | 2010-06-28 | 2013-07-02 | Emc Corporation | Systems, methods, and computer readable media for tracking pool storage space reservations |
JP5605043B2 (ja) | 2010-07-16 | 2014-10-15 | 富士通株式会社 | データコピー装置、データコピー方法およびストレージ装置 |
US9268499B1 (en) | 2010-08-13 | 2016-02-23 | Western Digital Technologies, Inc. | Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory |
US9058280B1 (en) | 2010-08-13 | 2015-06-16 | Western Digital Technologies, Inc. | Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time |
US8667248B1 (en) | 2010-08-31 | 2014-03-04 | Western Digital Technologies, Inc. | Data storage device using metadata and mapping table to identify valid user data on non-volatile media |
US8402230B2 (en) * | 2010-09-10 | 2013-03-19 | International Business Machines Corporation | Recoverability while adding storage to a redirect-on-write storage pool |
US8954664B1 (en) | 2010-10-01 | 2015-02-10 | Western Digital Technologies, Inc. | Writing metadata files on a disk |
US8756361B1 (en) | 2010-10-01 | 2014-06-17 | Western Digital Technologies, Inc. | Disk drive modifying metadata cached in a circular buffer when a write operation is aborted |
US8990502B2 (en) * | 2010-11-23 | 2015-03-24 | International Business Machines Corporation | Write cache structure in a storage system |
US8645615B2 (en) | 2010-12-09 | 2014-02-04 | Apple Inc. | Systems and methods for handling non-volatile memory operating at a substantially full capacity |
JP2012128643A (ja) * | 2010-12-15 | 2012-07-05 | Toshiba Corp | メモリシステム |
US9069473B2 (en) | 2011-01-27 | 2015-06-30 | International Business Machines Corporation | Wait-free stream oriented migration based storage |
US8549113B2 (en) | 2011-01-27 | 2013-10-01 | International Business Machines Corporation | Transactional independent persister cloning system |
EP2686773A4 (en) * | 2011-03-16 | 2015-11-04 | Hewlett Packard Development Co | SYSTEMS AND METHOD FOR FINELY MEMORY RESERVATION |
US8615640B2 (en) * | 2011-03-17 | 2013-12-24 | Lsi Corporation | System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8756382B1 (en) | 2011-06-30 | 2014-06-17 | Western Digital Technologies, Inc. | Method for file based shingled data storage utilizing multiple media types |
US9251059B2 (en) * | 2011-09-23 | 2016-02-02 | Avalanche Technology, Inc. | Storage system employing MRAM and redundant array of solid state disk |
US9213493B1 (en) | 2011-12-16 | 2015-12-15 | Western Digital Technologies, Inc. | Sorted serpentine mapping for storage drives |
US8819367B1 (en) | 2011-12-19 | 2014-08-26 | Western Digital Technologies, Inc. | Accelerated translation power recovery |
US8612706B1 (en) | 2011-12-21 | 2013-12-17 | Western Digital Technologies, Inc. | Metadata recovery in a disk drive |
JP2013131192A (ja) * | 2011-12-22 | 2013-07-04 | Fujitsu Ltd | ストレージ装置及びストレージ装置の制御方法 |
US9513845B2 (en) * | 2012-03-30 | 2016-12-06 | Violin Memory Inc. | Memory module virtualization |
US9104330B1 (en) * | 2012-06-30 | 2015-08-11 | Emc Corporation | System and method for interleaving storage |
WO2014038016A1 (ja) | 2012-09-05 | 2014-03-13 | 富士通株式会社 | 制御プログラム、制御方法及び制御装置 |
US8959281B1 (en) * | 2012-11-09 | 2015-02-17 | Western Digital Technologies, Inc. | Data management for a storage device |
US9141176B1 (en) | 2013-07-29 | 2015-09-22 | Western Digital Technologies, Inc. | Power management for data storage device |
US9070379B2 (en) | 2013-08-28 | 2015-06-30 | Western Digital Technologies, Inc. | Data migration for data storage device |
US8917471B1 (en) | 2013-10-29 | 2014-12-23 | Western Digital Technologies, Inc. | Power management for data storage device |
US8843700B1 (en) * | 2013-11-29 | 2014-09-23 | NXGN Data, Inc. | Power efficient method for cold storage data retention management |
US9229860B2 (en) | 2014-03-26 | 2016-01-05 | Hitachi, Ltd. | Storage system |
US9875063B2 (en) | 2014-07-02 | 2018-01-23 | Hedvig, Inc. | Method for writing data to a virtual disk using a controller virtual machine and different storage and communication protocols |
US10067722B2 (en) | 2014-07-02 | 2018-09-04 | Hedvig, Inc | Storage system for provisioning and storing data to a virtual disk |
US9558085B2 (en) | 2014-07-02 | 2017-01-31 | Hedvig, Inc. | Creating and reverting to a snapshot of a virtual disk |
US9411534B2 (en) * | 2014-07-02 | 2016-08-09 | Hedvig, Inc. | Time stamp generation for virtual disks |
US9424151B2 (en) | 2014-07-02 | 2016-08-23 | Hedvig, Inc. | Disk failure recovery for virtual disk with policies |
US9798489B2 (en) | 2014-07-02 | 2017-10-24 | Hedvig, Inc. | Cloning a virtual disk in a storage platform |
US9483205B2 (en) | 2014-07-02 | 2016-11-01 | Hedvig, Inc. | Writing to a storage platform including a plurality of storage clusters |
US9864530B2 (en) | 2014-07-02 | 2018-01-09 | Hedvig, Inc. | Method for writing data to virtual disk using a controller virtual machine and different storage and communication protocols on a single storage platform |
US8953269B1 (en) | 2014-07-18 | 2015-02-10 | Western Digital Technologies, Inc. | Management of data objects in a data object zone |
US9875055B1 (en) | 2014-08-04 | 2018-01-23 | Western Digital Technologies, Inc. | Check-pointing of metadata |
US9766837B2 (en) | 2015-06-10 | 2017-09-19 | Micron Technology, Inc. | Stripe mapping in memory |
JP6609199B2 (ja) * | 2016-03-01 | 2019-11-20 | ルネサスエレクトロニクス株式会社 | 組込み機器 |
US10678470B2 (en) * | 2016-04-05 | 2020-06-09 | Hitachi, Ltd. | Computer system,control method for physical storage device,and recording medium |
US10248174B2 (en) | 2016-05-24 | 2019-04-02 | Hedvig, Inc. | Persistent reservations for virtual disk using multiple targets |
US10296224B2 (en) * | 2016-12-21 | 2019-05-21 | Intel Corporation | Apparatus, system and method for increasing the capacity of a storage device available to store user data |
US10409682B1 (en) * | 2017-02-24 | 2019-09-10 | Seagate Technology Llc | Distributed RAID system |
JP2019008730A (ja) * | 2017-06-28 | 2019-01-17 | 東芝メモリ株式会社 | メモリシステム |
JP6731553B2 (ja) * | 2017-07-20 | 2020-07-29 | 株式会社日立製作所 | 分散ストレージシステム及び分散ストレージ制御方法 |
US10585749B2 (en) * | 2017-08-10 | 2020-03-10 | Samsung Electronics Co., Ltd. | System and method for distributed erasure coding |
EP3553664B1 (en) | 2017-11-03 | 2022-07-27 | Huawei Technologies Co., Ltd. | Method and apparatus for calculating available capacity of storage system |
CN110058789B (zh) * | 2018-01-18 | 2022-06-03 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、存储系统以及计算机程序产品 |
US10848468B1 (en) | 2018-03-05 | 2020-11-24 | Commvault Systems, Inc. | In-flight data encryption/decryption for a distributed storage platform |
US10942808B2 (en) | 2018-12-17 | 2021-03-09 | International Business Machines Corporation | Adaptive data and parity placement using compression ratios of storage devices |
JP6946485B2 (ja) * | 2020-01-17 | 2021-10-06 | 株式会社東芝 | 磁気記憶装置 |
US11403022B2 (en) * | 2020-06-03 | 2022-08-02 | Dell Products L.P. | Growing and splitting a disk array by moving RAID group members |
CN112199383B (zh) * | 2020-10-19 | 2024-07-16 | 珠海金山数字网络科技有限公司 | 数据更新方法及装置 |
CN113296702B (zh) * | 2021-05-20 | 2023-01-10 | 山东云海国创云计算装备产业创新中心有限公司 | 一种磁盘阵列扩容方法、装置、设备及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3249868B2 (ja) | 1993-11-19 | 2002-01-21 | 株式会社日立製作所 | アレイ形式の記憶装置システム |
US5524204A (en) * | 1994-11-03 | 1996-06-04 | International Business Machines Corporation | Method and apparatus for dynamically expanding a redundant array of disk drives |
US5809224A (en) * | 1995-10-13 | 1998-09-15 | Compaq Computer Corporation | On-line disk array reconfiguration |
US5758118A (en) * | 1995-12-08 | 1998-05-26 | International Business Machines Corporation | Methods and data storage devices for RAID expansion by on-line addition of new DASDs |
JP3170455B2 (ja) * | 1996-05-27 | 2001-05-28 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | データ記憶システムにおけるデータの再配置方法、そのシステムに記憶されたデータのアクセス方法及びデータ記憶システム |
US5875457A (en) * | 1996-10-08 | 1999-02-23 | Mylex Corporation | Fault-tolerant preservation of data integrity during dynamic raid set expansion |
US6058455A (en) * | 1997-07-02 | 2000-05-02 | International Business Corporation | RAID system having a selectable unattended mode of operation with conditional and hierarchical automatic re-configuration |
JPH1153235A (ja) * | 1997-08-08 | 1999-02-26 | Toshiba Corp | ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム |
JPH11194899A (ja) | 1997-12-26 | 1999-07-21 | Toshiba Corp | ディスク記憶システム及び同システムに適用するデータ更新方法 |
US6347359B1 (en) * | 1998-02-27 | 2002-02-12 | Aiwa Raid Technology, Inc. | Method for reconfiguration of RAID data storage systems |
US6304941B1 (en) * | 1998-04-08 | 2001-10-16 | International Business Machines Corporation | Method and apparatus for reducing processor operations when adding a new drive to a raid-6 drive group |
JP2000010738A (ja) * | 1998-06-17 | 2000-01-14 | Toshiba Corp | ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体 |
JP2001211412A (ja) * | 2000-01-26 | 2001-08-03 | Matsushita Electric Ind Co Ltd | 高速av情報サーバー及びその磁気ディスク装置増設方法 |
-
2002
- 2002-01-31 JP JP2002023919A patent/JP3702231B2/ja not_active Expired - Fee Related
-
2003
- 2003-01-29 US US10/353,042 patent/US6901479B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003223284A (ja) | 2003-08-08 |
US20030145167A1 (en) | 2003-07-31 |
US6901479B2 (en) | 2005-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3702231B2 (ja) | ディスクアレイ装置及び同装置における動的記憶容量拡張方法 | |
US6738863B2 (en) | Method for rebuilding meta-data in a data storage system and a data storage system | |
US7761655B2 (en) | Storage system and method of preventing deterioration of write performance in storage system | |
JP3682256B2 (ja) | ディスクアレイ装置及び同装置におけるパリティ処理方法 | |
US6886068B2 (en) | Disk array apparatus and data update method for storing tag blocks | |
EP1739535B1 (en) | File system storing transaction records in flash-like media | |
JP3526452B2 (ja) | ディスクアレイ装置及びデータバックアップ方法 | |
US7386758B2 (en) | Method and apparatus for reconstructing data in object-based storage arrays | |
KR100211790B1 (ko) | 직접 액세스 저장 장치에서 데이터 압축을 위한 디렉토리 재 구축 방법 및 장치 | |
US6898668B2 (en) | System and method for reorganizing data in a raid storage system | |
US9104342B2 (en) | Two stage checksummed raid storage model | |
JP3579389B2 (ja) | ディスクアレイ装置及び同装置におけるデータ復旧方法 | |
JP4950897B2 (ja) | 種々のサイズの格納デバイスを可能にする動的に拡張可能かつ縮小可能な故障許容格納システム、および方法 | |
US8880843B2 (en) | Providing redundancy in a virtualized storage system for a computer system | |
JP3505093B2 (ja) | ファイル管理システム | |
JP6696280B2 (ja) | 情報処理装置、raid制御方法、およびraid制御プログラム | |
US7970803B2 (en) | Optimized startup verification of file system integrity | |
US7346733B2 (en) | Storage apparatus, system and method using a plurality of object-based storage devices | |
JP3788961B2 (ja) | ディスクアレイ装置及び同装置におけるレイドレベル変更方法 | |
JP2018181202A (ja) | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム | |
US7281188B1 (en) | Method and system for detecting and correcting data errors using data permutations | |
JP3122252B2 (ja) | ディスクアレイ制御方式 | |
JP2006178926A (ja) | 複数のオブジェクトベースのストレージ装置を使用したストレージ装置、システム、および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040825 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040907 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041108 |
|
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: 20050712 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050715 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090722 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090722 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100722 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100722 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110722 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120722 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |