(57)【要約】【課題】　費用対効果の大きなデータ保護を提供する方法を提供する。【解決手段】　故障と無関係のデータ記憶装置のアレイを有する耐障害性の記憶サブシステムにおいて、データを格納するための方法は、記憶装置上の記憶領域を論理ミラー領域および論理ストライプ領域に分割するステップと、ミラー領域にデータを格納する際に、一対の記憶装置にデータの複製コピーを保持することによってデータを複製するステップと、ストライプ領域にデータを格納する際に、データブロックおよび関連するエラー訂正ブロックを含むブロックのストライプとしてデータを格納するステップとを含む。【選択図】　　　　図３Ｂ
2004118837.tif 000002
【特許請求の範囲】
【請求項１】
　障害と無関係のデータ記憶装置の配列を有する耐故障性の記憶サブシステムにデータを格納するための方法であって、
　前記データ記憶装置上のデータ記憶領域を、論理ミラー領域と論理ストライプ領域とに分割するステップと、
　前記ミラー領域にデータを格納する際に、一対の記憶装置に前記データの複製コピーを保持することによってデータを複製するステップと、
　前記ストライプ領域にデータを格納する際に、データブロックおよび関連するエラー訂正ブロックを含むブロックのストライプとしてデータを格納するステップとを含む、方法。
【請求項２】
　前記ストライプ領域にデータセットを格納するステップと、
　前記ミラー領域に、関連するログキャッシュを格納するステップとをさらに含む、請求項１に記載の方法。
【請求項３】
　前記データセットにデータを書込むようにとのホストからの要求に応答して、
　前記ミラー領域のログキャッシュにホストデータを格納するステップと、
　前記ホストに書込の終了を通知するステップとをさらに含む、請求項２に記載の方法。
【請求項４】
　前記ミラー領域の前記ログキャッシュから、前記ストライプ領域内のデータセットに、前記ホストデータを複写するステップをさらに含む、請求項３に記載の方法。
【請求項５】
　前記データセットからデータを読出すようにとの前記ホストからの要求に応答して、
　要求されたデータが前記ミラー領域の前記ログキャッシュに存在するかどうかを判断して、前記ログキャッシュに存在する場合、前記ログキャッシュから前記ホストに、前記要求されたデータを与えるステップと、
　前記ログキャッシュに存在しない場合、前記要求されたデータが前記ストライプ領域の前記データセットに存在するかどうかを判断して、前記データセットに存在する場合、前記データセットから前記ホストに、前記要求されたデータを与えるステップとをさらに含む、請求項４に記載の方法。
【請求項６】
　前記ログキャッシュは、時間順次的な複数のエントリを有する書込ログを含み、各エントリは、データブロックと、前記データセット内のデータブロックアドレスと、データブロックタイムスタンプとを含み、
　前記ホストからの前記要求は、前記ホストデータと、前記ホストデータを格納するための、前記データセット内のブロックアドレスとを含み、
　前記ホストの要求に応答して前記ログキャッシュに前記ホストデータを格納する前記ステップは、前記ログキャッシュのエントリに、前記ホストデータと、前記ブロックアドレスと、タイムスタンプとを入力するステップをさらに含む、請求項４に記載の方法。
【請求項７】
　前記ミラー領域の前記ログキャッシュから、前記ストライプ領域の前記データセットに前記ホストデータを複写する前記ステップは、前記ミラー領域の前記ログキャッシュのエントリの前記ホストデータを、前記ストライプ領域の前記データセット内の前記ブロックアドレスに複写するステップをさらに含む、請求項６に記載の方法。
【請求項８】
　アーカイブに前記ログキャッシュのエントリを保管するステップと、
　前記キャッシュログから前記エントリを消去するステップとをさらに含む、請求項７に記載の方法。
【請求項９】
　選択された時間における前記データセットの状態を再形成するようにとの要求に応答して、
　前記選択された時間以前のバックアップ時間に形成された前記データセットのコピーを得るステップと、
　前記データセットのコピーに関連するキャッシュログを得るステップとをさらに含み、前記関連するキャッシュログは、前記バックアップ時間の直後に時間順次的に形成されたエントリを含み、さらに、
　選択されたタイムスタンプが、前記関連するキャッシュログのエントリに到達するまで、前記関連するキャッシュログの各エントリの各データブロックを、前記データセットのコピー内の対応するブロックアドレスに時間順次的に送信するステップを含む、請求項７に記載の方法。
【請求項１０】
　前記記憶サブシステムは、キャッシュメモリをさらに含み、前記方法は、
　前記データセットにデータを書込むようにとのホストからの要求に応答して、
　　前記キャッシュメモリにホストデータを格納するステップと、
　　前記ホストに書込の完了を通知するステップと、
　前記キャッシュメモリから、前記ミラー領域の前記ログキャッシュに前記ホストデータを複写するステップとをさらに含む、請求項２に記載の方法。
【請求項１１】
　前記ミラー領域内の前記ログキャッシュから、前記ストライプ領域の前記データセットに前記ホストデータを複写するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
　前記データセットからデータを読出すようにとのホストからの要求に応答して、
　要求されたデータが前記キャッシュメモリに存在するかどうかを判断して、前記キャッシュメモリに存在する場合、前記キャッシュメモリから前記ホストに、前記要求されたデータを与えるステップと、
　前記キャッシュメモリに存在しない場合、前記要求されたデータが前記ミラー領域の前記ログキャッシュに存在するかどうかを判断して、前記ログキャッシュに存在する場合、前記ログキャッシュから前記ホストに、前記要求されたデータを与えるステップと、
　前記ログキャッシュに存在しない場合、前記要求されたデータが前記ストライプ領域の前記データセットに存在するかどうかを判断して、前記データセットに存在する場合、前記データセットから前記ホストに、前記要求されたデータを与えるステップとをさらに含む、請求項１１に記載の方法。
【請求項１３】
　不揮発性メモリおよびバッテリを含むメモリバックアップモジュールを設けるステップをさらに含み、前記記憶サブシステムは、電源から通常は給電され、さらに、
　前記電源から電源障害を検出すると、代わりに前記バッテリから、前記キャッシュメモリおよび前記不揮発性メモリに給電するステップと、
　前記キャッシュメモリのデータの内容を前記不揮発性メモリに複写するステップと、
　前記電源から電力が復旧したことを検出すると、前記不揮発性メモリから前記キャッシュメモリに前記データの内容を再び複写するステップとをさらに含む、請求項１０に記載の方法。
【請求項１４】
　前記キャッシュメモリは、ランダムアクセスメモリ（ＲＡＭ）を含み、前記不揮発性メモリは、フラッシュメモリ（ＦＬＡＳＨ）を含む、請求項１３に記載の方法。
【請求項１５】
　前記バッテリは、前記電源によって通常は細流充電される再充電可能なバッテリを含む、請求項１３に記載の方法。
【請求項１６】
　前記データ記憶装置の１つは、他のデータ記憶装置の１つが故障した場合に用いるため
のスペアとして確保され、前記方法は、スペアのデータ記憶装置が使用されていない間は、
　前記ミラー領域に格納された前記ログキャッシュのデータを、そのデータの複数のコピーが前記スペアの記憶装置に格納されるように前記スペアの記憶装置に複製するステップと、
　前記データセットからデータを読出すようにとのホストからの要求を受取ると、要求されたデータが前記スペアの記憶装置内に存在するかどうかを判断して、前記スペアの記憶装置内に存在する場合、前記要求されたデータの他のコピーに比べて最小の読出待ち時間で前記ホストに与えられ得る、前記要求されたデータのコピーを、前記スペアの記憶装置において選択し、前記要求されたデータの前記選択されたコピーを前記ホストに与えるステップをさらに含む、請求項２に記載の方法。
【請求項１７】
　前記ミラー領域に格納された前記データを圧縮するステップをさらに含む、請求項２に記載の方法。
【請求項１８】
　前記ログキャッシュは、時間順次的な複数のエントリを有する書込ログを含み、各エントリは、データブロックと、前記データセット内のデータブロックアドレスと、タイムスタンプとを含む、請求項２に記載の方法。
【請求項１９】
　耐故障性の、遠隔のデータ記憶システムに、前記ログキャッシュのデータを送信するステップをさらに含み、
　前記遠隔のデータ記憶システムは、受取られたログキャッシュのデータに対するエラー訂正ブロックに関連するパリティを決定して、前記記憶サブシステムに前記エラー訂正ブロックを送信し、
　前記記憶サブシステムの前記ストライプ領域にデータを格納する前記ステップは、データブロックと、前記遠隔の記憶システムから受取られた、関連するエラー訂正ブロックとを含むブロックのストライプとしてデータを格納するステップを含む、請求項１に記載の方法。
【請求項２０】
　前記データ記憶装置は、データディスクドライブを含む、請求項１に記載の方法。
【請求項２１】
　障害と無関係のデータ記憶装置の配列と、
　前記データ記憶装置上のデータ記憶領域を、論理ミラー領域と論理ストライプ領域とに論理的に分割するコントローラとを含み、前記コントローラは、データを複製して一対の記憶装置に前記データの複製コピーを保持することによって、前記ミラー領域にデータを格納し、前記コントローラは、データブロックおよび関連するエラー訂正ブロックを含むブロックのストライプとして前記ストライプ領域にデータを格納する、耐故障性の記憶サブシステム。
【請求項２２】
　前記コントローラはさらに、前記ストライプ領域のデータセットと、前記ミラー領域の、関連するログキャッシュとを維持する、請求項２１に記載の記憶サブシステム。
【請求項２３】
　前記データセットにデータを書込むようにとのホストからの要求に応答して、前記コントローラはさらに、
　前記ミラー領域の前記ログキャッシュにホストデータを格納して、
　前記ホストに書込の完了を通知する、請求項２２に記載の記憶サブシステム。
【請求項２４】
　前記コントローラは、前記ミラー領域の前記ログキャッシュから、前記ストライプ領域の前記データセットに前記ホストデータを複写する、請求項２３に記載の記憶サブシステム。
【請求項２５】
　前記データセットからデータを読出すようにとの前記ホストからの要求に応答して、前記コントローラはさらに、
　要求されたデータが前記ミラー領域の前記ログキャッシュに存在するかどうかを判断して、前記ログキャッシュに存在する場合、前記ログキャッシュから前記ホストに、前記要求されたデータを与え、
　前記ログキャッシュに存在しない場合、前記コントローラは、前記要求されたデータが前記ストライプ領域の前記データセットに存在するかどうかを判断して、前記データセットに存在する場合、前記データセットから前記ホストに、前記要求されたデータを与える、請求項２４に記載の記憶サブシステム。
【請求項２６】
　前記ログキャッシュは、時間順次的な複数のエントリを有する書込ログを含み、各エントリは、データブロックと、前記データセット内のデータブロックアドレスと、タイムスタンプとを含み、
　前記ホストからの前記要求は、前記ホストデータと、前記ホストデータを格納するための、前記データセット内のブロックアドレスとを含み、
　前記コントローラは、前記ログキャッシュのエントリに、前記ホストデータと、前記ブロックアドレスと、タイムスタンプとを入力する、請求項２４に記載の記憶サブシステム。
【請求項２７】
　前記コントローラは、前記ミラー領域の前記ログキャッシュのエントリの前記ホストデータを、前記ストライプ領域の前記データセット内の前記ブロックアドレスに複写することによって、前記ミラー領域内の前記ログキャッシュから、前記ストライプ領域内の前記データセットに前記ホストデータを複写する、請求項２６に記載の記憶サブシステム。
【請求項２８】
　選択された時間における前記データセットの状態を再形成するようにとの要求に応答して、前記コントローラはさらに、
　前記選択された時間以前のバックアップ時間に形成された前記データセットのコピーを得て、
　前記データセットのコピーに関連するキャッシュログを得て、前記関連するキャッシュログは、前記バックアップ時間の直後に時間順次的に形成されたエントリを含み、前記コントローラはさらに、
　選択されたタイムスタンプが、前記関連するキャッシュログのエントリに到達するまで、前記関連するキャッシュログの各エントリの各データブロックを、前記データセットのコピー内の対応するブロックアドレスに時間順次的に転送する、請求項２７に記載の記憶サブシステム。
【請求項２９】
　前記記憶装置は、データディスクドライブを含む、請求項２１に記載の記憶サブシステム。
【請求項３０】
　キャッシュメモリをさらに含み、
　前記データセットにデータを書込むようにとのホストからの要求に応答して、前記コントローラは、前記キャッシュメモリにホストデータを格納して、前記ホストに書込の完了を通知し、
　前記コントローラはさらに、前記キャッシュメモリから、前記ミラー領域内の前記ログキャッシュに前記ホストデータを複写する、請求項２２に記載の記憶サブシステム。
【請求項３１】
　前記コントローラはさらに、前記ミラー領域の前記ログキャッシュから、前記ストライプ領域の前記データセットに、前記ホストデータを複写する、請求項３０に記載の記憶サブシステム。
【請求項３２】
　前記データセットからデータを読出すようにとの前記ホストからの要求に応答して、前記コントローラはさらに、
　要求されたデータが前記キャッシュメモリに存在するかどうかを判断して、前記キャッシュメモリに存在する場合、前記キャッシュメモリから前記ホストに、要求されたデータを与え、
　前記キャッシュメモリに存在しない場合、前記コントローラは、前記要求されたデータが前記ミラー領域の前記ログキャッシュに存在するかどうかを判断して、前記ログキャッシュに存在する場合、前記ログキャッシュから前記ホストに、前記要求されたデータを与え、
　前記ログキャッシュに存在しない場合、前記コントローラは、前記要求されたデータが前記ストライプ領域の前記データセットに存在するかどうかを判断して、前記データセットに存在する場合、前記データセットから前記ホストに、前記要求されたデータを与える、請求項３１に記載の記憶サブシステム。
【請求項３３】
　不揮発性メモリおよびバッテリを含むメモリバックアップモジュールをさらに含み、前記記憶サブシステムは、電源から通常は給電され、
　前記電源から電源障害を検出すると、前記コントローラは、代わりに前記バッテリから、前記キャッシュメモリおよび前記不揮発性メモリに給電して、前記キャッシュメモリのデータの内容を前記不揮発性メモリに複写し、前記電源から電力が復旧したことを検出すると、前記コントローラは、前記不揮発性メモリから前記キャッシュメモリに前記データの内容を再び複写する、請求項３０に記載の記憶サブシステム。
【請求項３４】
　前記キャッシュメモリは、ランダムアクセスメモリ（ＲＡＭ）を含み、前記不揮発性メモリは、フラッシュメモリ（ＦＬＡＳＨ）を含む、請求項３３に記載の記憶サブシステム。
【請求項３５】
　前記バッテリは、前記電源によって通常は細流充電される再充電可能なバッテリを含む、請求項３３に記載の記憶サブシステム。
【請求項３６】
　前記コントローラはさらに、他の記憶装置の１つが故障した場合に用いるためのスペアとして、前記記憶装置の１つを確保し、スペアの記憶装置が用いられていない間、前記コントローラはさらに、
　前記スペアの記憶装置に、前記ミラー領域に格納された前記ログキャッシュのデータを複製して、そのデータの複数のコピーが前記スペアの記憶装置に格納されるようにし、
　前記データセットからデータを読出すようにとのホストからの要求を受取ると、前記コントローラは、要求されたデータが前記スペアの記憶装置に存在するかどうかを判断して、前記スペアの記憶装置に存在する場合、前記コントローラは、選択されたデータの他のコピーに比べて最小の読出待ち時間で前記ホストに与えられ得る、前記要求されたデータのコピーを、前記スペアの記憶装置において選択し、前記要求されたデータの選択されたコピーを前記ホストに与えるようにする、請求項２２に記載の記憶サブシステム。
【請求項３７】
　前記コントローラはさらに、前記ミラー領域に格納された前記データを圧縮する、請求項２２に記載の記憶サブシステム。
【請求項３８】
　前記ログキャッシュは、時間順次的な複数のエントリを有する書込ログを含み、各エントリは、データブロックと、前記データセット内のデータブロックアドレスと、タイムスタンプとを含む、請求項２２に記載の記憶サブシステム。
【請求項３９】
　障害と無関係のデータ記憶装置の配列を有する、耐故障性の記憶サブシステムのための
データ編成管理プログラムであって、
　前記データ記憶装置上のデータ記憶領域を、論理ミラー領域および論理ストライプ領域からなるハイブリッドに論理的に分割するコントローラを含み、前記コントローラは、前記データを複製して一対の記憶装置に前記データの複製コピーを保持することによって、前記ミラー領域にデータを格納し、前記コントローラは、データブロックおよび関連するエラー訂正ブロックを含むブロックのストライプとして、前記ストライプ領域にデータを格納する、データ編成管理プログラム。
【請求項４０】
　前記コントローラはさらに、前記ストライプ領域のデータセットと、前記ミラー領域の、関連するログキャッシュとを維持する、請求項３９に記載のデータ編成管理プログラム。
【請求項４１】
　前記データセットにデータを書込むようにとのホストからの要求に応答して、前記コントローラはさらに、
　前記ミラー領域の前記ログキャッシュにホストデータを格納して、
　前記ホストに書込の完了を通知する、請求項４０に記載のデータ編成管理プログラム。
【請求項４２】
　前記コントローラは、前記ミラー領域の前記ログキャッシュから、前記ストライプ領域内の前記データセットに前記ホストデータを複写する、請求項４１に記載のデータ編成管理プログラム。
【請求項４３】
　前記データセットからデータを読出すようにとの前記ホストからの要求に応答して、前記コントローラはさらに、
　要求されたデータが前記ミラー領域の前記ログキャッシュに存在するかどうかを判断して、前記ログキャッシュに存在する場合、前記ログキャッシュから前記ホストに、前記要求されたデータを与え、
　前記ログキャッシュに存在しない場合、前記コントローラは、前記要求されたデータが前記ストライプ領域の前記データセットに存在するかどうかを判断して、前記データセットに存在する場合、前記データセットから前記ホストに、前記要求されたデータを与える、請求項４２に記載のデータ編成管理プログラム。
【請求項４４】
　前記ログキャッシュは、時間順次的な複数のエントリを有する書込ログを含み、各エントリは、データブロックと、前記データセット内のデータブロックアドレスと、タイムスタンプとを含み、
　前記ホストからの前記要求は、前記ホストデータと、前記ホストデータを格納するための、前記データセット内のブロックアドレスとを含み、
　前記コントローラは、前記ログキャッシュのエントリに、前記ホストデータと、前記ブロックアドレスと、タイムスタンプとを入力する、請求項４２に記載のデータ編成管理プログラム。
【請求項４５】
　前記コントローラは、前記ミラー領域の前記ログキャッシュのエントリの前記ホストデータを、前記ストライプ領域の前記データセット内の前記ブロックアドレスに複写することによって、前記ミラー領域の前記ログキャッシュから、前記ストライプ領域の前記データセットに前記ホストデータを複写する、請求項４４に記載のデータ編成管理プログラム。
【請求項４６】
　選択された時間における前記データセットの状態を再形成するようにとの要求に応答して、前記コントローラはさらに、
　前記選択された時間以前のバックアップ時間に形成された前記データセットのコピーを得て、
　前記データセットのコピーに関連するキャッシュログを得て、前記関連するキャッシュログは、前記バックアップ時間の直後に時間順次的に形成されたエントリを含み、前記コントローラはさらに、
　選択されたタイムスタンプが、前記関連するキャッシュログのエントリに到達するまで、前記関連するキャッシュログの各エントリの各データブロックを、前記データセットのコピー内の対応するブロックアドレスに時間順次的に転送する、請求項４５に記載のデータ編成管理プログラム。
【請求項４７】
　前記記憶装置は、データディスクドライブを含む、請求項３９に記載のデータ編成管理プログラム。
【請求項４８】
　キャッシュメモリをさらに含み、
　前記データセットにデータを書込むようにとのホストからの要求に応答して、前記コントローラは、前記キャッシュメモリにホストデータを格納して、前記ホストに書込の完了を通知し、
　前記コントローラはさらに、前記キャッシュメモリから、前記ミラー領域の前記ログキャッシュに前記ホストデータを複写する、請求項４０に記載のデータ編成管理プログラム。
【請求項４９】
　前記コントローラはさらに、前記ミラー領域の前記ログキャッシュから、前記ストライプ領域の前記データセットに、前記ホストデータを複写する、請求項４８に記載のデータ編成管理プログラム。
【請求項５０】
　前記データセットからデータを読出すようにとのホストからの要求に応答して、前記コントローラはさらに、
　要求されたデータが前記キャッシュメモリに存在するかどうかを判断して、前記キャッシュメモリに存在する場合、前記キャッシュメモリから前記ホストに、要求されたデータを与え、
　前記キャッシュメモリに存在しない場合、前記コントローラは、前記要求されたデータが前記ミラー領域の前記ログキャッシュに存在するかどうかを判断して、前記ログキャッシュに存在する場合、前記ログキャッシュから前記ホストに、前記要求されたデータを与え、
　前記ログキャッシュに存在しない場合、前記コントローラは、前記要求されたデータが前記ストライプ領域の前記データセットに存在するかどうかを判断して、前記データセットに存在する場合、前記データセットから前記ホストに、前記要求されたデータを与える、請求項４９に記載のデータ編成管理プログラム。
【請求項５１】
　不揮発性メモリおよびバッテリを含むメモリバックアップモジュールをさらに含み、前記記憶サブシステムは、電源から通常は給電され、
　前記電源から電源障害を検出すると、前記コントローラは、代わりに前記バッテリから、前記キャッシュメモリおよび前記不揮発性メモリに給電して、前記キャッシュメモリのデータの内容を前記不揮発性メモリに複写し、前記電源から電力が復旧したことを検出すると、前記コントローラは、前記不揮発性メモリから前記キャッシュメモリに、前記データの内容を再び複写する、請求項４８に記載のデータ編成管理プログラム。
【請求項５２】
　前記キャッシュメモリは、ランダムアクセスメモリ（ＲＡＭ）を含み、前記不揮発性メモリは、フラッシュメモリ（ＦＬＡＳＨ）を含む、請求項５１に記載のデータ編成管理プログラム。
【請求項５３】
　前記バッテリは、前記電源によって通常は細流充電される再充電可能なバッテリを含む
、請求項５１に記載のデータ編成管理プログラム。
【請求項５４】
　前記コントローラはさらに、他の記憶装置の１つが故障した場合に用いるためのスペアとして、前記記憶装置の１つを確保し、スペアの記憶装置が用いられていない間、前記コントローラはさらに、
　前記スペアの記憶装置に、前記ミラー領域に記憶された前記ログキャッシュのデータを複製して、そのデータの複数のコピーが前記スペアの記憶装置に格納されるようにし、
　前記データセットからデータを読出すようにとのホストからの要求を受取ると、前記コントローラは、要求されたデータが前記スペアの記憶装置に存在するかどうかを判断し、前記スペアの記憶装置に存在する場合、前記コントローラは、選択されたデータの他のコピーに比べて最小の読出待ち時間で前記ホストに与えられ得る、前記要求されたデータのコピーを、前記スペアの記憶装置において選択して、前記要求されたデータの選択されたコピーを前記ホストに与えるようにする、請求項４０に記載のデータ編成管理プログラム。
【請求項５５】
　前記コントローラはさらに、前記ミラー領域および前記キャッシュに格納されたデータを圧縮する、請求項４０に記載のデータ編成管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
　発明の分野
　この発明は、データ記憶装置におけるデータ保護に関し、特に、ディスクアレイにおけるデータ保護に関する。
【背景技術】
【０００２】
　発明の背景
　コンピュータシステム等に情報を格納するために、さまざまな種類の記憶装置が用いられる。従来のコンピュータシステムは、オペレーティングシステムファイルシステムによって管理される情報を格納するために、ディスクドライブ等の記憶装置を含む。記憶領域のコストが下がるにつれて、個々のディスクドライブに格納されるデータの量が増大している。しかしながら、ディスクドライブの故障の際に、重要なデータが失われるおそれがある。この問題を緩和するために、耐故障性の記憶装置の中には、冗長ディスクドライブ（ＲＡＩＤ）の配列を用いるものがある。
【０００３】
　主ディスクドライブ等の記憶装置を含む一般的なデータ記憶システムでは、主記憶装置に格納されたデータが、テープ等の補助記憶装置に時々バックアップされる。しかしながら、１つ以上の主記憶装置が故障した場合に、主記憶装置のデータに対する次のバックアップ以前のあらゆる変更が、失われるおそれがある。
【０００４】
　真のデータ保護は、記憶装置に対するすべての書込のログを、データブロックのレベルで記録することによって達成することができる。一例では、ユーザデータセットと書込ログとが維持され、データセットが完全にバックアップされた後に、すべての書込のログが維持される。バックアップされたデータセットと書込ログとにより、データセットの現在の状態以前のデータセットの状態に戻ることができ、このことは、バックアップされた（ベースラインの）データセットを復元してから、その時点までのそのログから、すべての書込を実行することによって行なわれる。
【０００５】
　ログファイル自体を保護するために、ＲＡＩＤに構成されたディスクアレイは、１つのディスクドライブの故障を防ぐことによって、データ損失に対する保護を行なう。ＲＡＩＤを用いた、ログファイルストリームの保護は、図１の例に示されるＲＡＩＤミラー（ＲＡＩＤ−１として公知）か、または、図２の例によって示されるＲＡＩＤストライプ（ＲＡＩＤ−５として公知）のいずれかによって達成されてきた。いくつかのディスクドライブ１２を含むＲＡＩＤミラー１０では、２つのディスクドライブが１つの独立したディスクドライブのデータを格納する。ＲＡＩＤストライプ１４では、ｎ個の独立したディスクドライブのデータを格納するために、ｎ＋１個のディスクドライブ１２が必要とされる（たとえば図２において、５つのディスクドライブからなるストライプが４つの独立したディスクドライブのデータを格納する）。図１の例示的なＲＡＩＤミラー１０は、８個のディスクドライブ１２（ドライブ０〜ドライブ７等）の配列を含み、各ディスクドライブ１２は、１００ＧＢ等の容量を有する。各ディスクドライブ１２において、容量の半分がユーザデータに用いられ、別の半分がミラーデータに用いられる。したがって、ディスクアレイ１０のユーザデータ容量は４００ＧＢであり、他の４００ＧＢがミラーデータに用いられる。この例示的なミラー構成では、ドライブ１がドライブ０のデータ（Ｍ０）を保護し、ドライブ２がドライブ１のデータ（Ｍ１）を保護し、以下同様となる。ドライブ０が故障すると、ドライブ１内のデータＭ０を用いてドライブ０内にデータＭ０を再形成することができ、ドライブ７内のデータＭ７を用いてドライブ０のデータＭ７を形成すること
ができる。このように、１つのディスクドライブが故障した場合も、データは失われない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
　図２を再び参照すると、ＲＡＩＤストライプ構成は、ディスクアレイ１４内のディスクドライブの１つを除くすべてのディスクドライブからの容量を効果的にグループ化して、残りのディスクドライブに（または図示されるように複数のドライブにわたって）その容量のパリティ（ＸＯＲ）を書込む。図２の例において、ディスクアレイ１４は５個のディスクドライブ１２（ドライブ０〜ドライブ４等）を含み、各ディスクドライブ１２は、５個のセクションに分割された、１００ＧＢ等の容量を有する。ドライブ０〜ドライブ３の上部のブロックＳ０〜Ｓ３は、ユーザデータ用であり、ドライブ４のブロックは、パリティデータ（すなわち、Ｓ０〜Ｓ３のＸＯＲ）用である。この例において、ＲＡＩＤのストライプの容量は、ユーザデータ用の４００ＧＢと、パリティデータ用の１００ＧＢとである。図示されるように、ディスクドライブ１２間に、パリティ領域が分配されている。ディスクドライブ１２の全体にパリティデータを分散させることにより、１つのディスクドライブへの場合とは対照的に、パリティデータを読出すタスクをいくつかのディスクドライブに分散させることができる。ストライプ構成のディスクドライブへの書込は、ディスクドライブの保持するパリティが読出されて、新規のパリティが計算され、さらに、新規のパリティで古いパリティを上書きすることが必要とされる。このことは、ディスクの大きな改良を必要とし、書込の待ち時間を増大させる。書込の待ち時間が増大することにより、記憶装置１４のスループットが減少する。
【０００７】
　その一方で、ＲＡＩＤミラー構成（「ミラー」）は、ＲＡＩＤストライプ構成（「ストライプ」）よりも高速で、ログファイルストリームをディスクに書込むことができる。ミラーがストライプよりも高速であるのは、ミラー化を行なっているディスクドライブに同じブロックを同時に書込むことができるという点において、ミラーでは、書込動作の各々が、他の書込動作から独立しているためである。しかしながら、ミラー構成は、保護されるべき容量が別のディスクドライブに合致することを必要とする。このことは、保護されるべき容量を複写しなければならず、かつ、ディスクドライブの数を２倍にすることを必要とするために、費用がかかる。ストライプは、ｎがディスクドライブアレイ内のディスクドライブの数を示す場合、このような容量を１／ｎまで減じる。このため、パリティを複数のディスクドライブに分散させてデータを保護することにより、ストライプはミラーよりも速度が遅くなるが、費用対効果が大きくなる。
【０００８】
　したがって、従来のＲＡＩＤシステムよりも改良されたデータ読出／書込性能を備えた、費用対効果の大きなデータ保護を提供する方法およびシステムが必要とされる。また、このようなシステムが、以前の所望されるデータ状態に戻る能力を提供することが必要とされる。
【課題を解決するための手段】
【０００９】
　発明の概要
　この発明は、これらの必要性を満たす。一実施例において、この発明は、記憶装置上の記憶領域を、論理ミラー領域（すなわちＲＡＩＤミラー）および論理ストライプ領域（すなわちＲＡＩＤストライプ）からなるハイブリッドに分割することによって、故障と無関係のデータ記憶装置の配列を有する耐故障性の記憶サブシステムに、データを格納するための方法を提供する。ミラー領域にデータを格納する場合は、一対の記憶装置に、そのデータの複製コピーを保持することによってデータが複製され、ストライプ領域にデータを格納する場合は、データブロックおよび関連するエラー訂正ブロックを含むブロックのストライプとして、そのデータが格納される。
【００１０】
　この発明の一形態において、ログファイルストリームは、ホストからのデータを記憶サブシステムに書込むために、ＲＡＩＤミラー領域のログキャッシュとして維持され、次に、データは、ＲＡＩＤミラー領域のログファイルから、ＲＡＩＤストライプ領域内の最終アドレスへと、好ましくはバックグラウンドタスクとして転送される。その際に、ＲＡＩＤストライプへの書込に関連する、上述の書込待ち時間という性能の不利益を、ホストから隠すことができる。
【００１１】
　この発明によると、性能をさらに高めるために、ログキャッシュの前にメモリキャッシュ（ＲＡＭキャッシュ）が加えられ、入来するホストブロックが、まず、迅速にＲＡＭキャッシュに書込まれて、ホストは通知を受ける。ホストは、ホストが通知を待っている間にそのデータがデータ記憶装置に書込まれていれば生じ得た書込サイクルよりも高速の書込サイクルを認識する。そのため、上述のハイブリッドＲＡＩＤサブシステムの性能がさらに高まる。
【００１２】
　データがＲＡＭキャッシュを介してデータ記憶装置に移行する途中で電源障害が生じると、データ損失を生じるおそれがある。そのため、この発明の別の局面に従い、ＲＡＭキャッシュデータを保護するために、サブシステムにフラッシュバックモジュール（バックアップモジュール）が加えられる。フラッシュバックモジュールは、フラッシュメモリ等の不揮発性メモリとバッテリとを含む。通常動作中に、バッテリは細流充電される。そこで万一、任意の電源障害が生じた場合は、ＲＡＭキャッシュの内容をフラッシュメモリに転送するために、バッテリは電力を供給する。電力が復旧すると、フラッシュメモリの内容は再びＲＡＭキャッシュに転送され、通常動作が再開される。
【００１３】
　読出性能は、アレイ内で予備のデータ記憶装置（「ホットスペア」）として通常用いられるデータ記憶装置（ディスクドライブ等）に対し、ハイブリッドＲＡＩＤシステム内の一時的なサービスを行なわせることによってさらに高められる。従来のＲＡＩＤサブシステムでは、あらゆるホットスペアが休止状態にあるものの、アレイ内のデータ記憶装置の１つが故障した場合は、引き継ぐ準備ができている。この発明によると、ホットスペアは休止状態になく、むしろ、ハイブリッドＲＡＩＤサブシステムのミラー化された領域のデータを複製するために用いられ得る。アレイ内の任意のデータ記憶装置が万一故障しても、このホットスペアが直ちに送られて、１つのデータ記憶装置の故障からのデータ損失以上の損失を被らずに、その故障したデータ記憶装置の代用を務めることができる。しかしながら、アレイのデータ記憶装置のすべてが適切に作動している間、ミラー領域の複製は、ホットスペアによるミラー領域の補助を可能にし、読出要求へのアレイの応答性を一層高める。
【００１４】
　ミラー領域は、書込データをストライプ領域内のその最終位置に格納する前に、ログに対する一時的な記憶装置として働く。この発明の別の形態では、ミラー領域からデータを消去する前に、テープ等の長期保管記憶媒体にログを順次書込むことができる。ログファイルが保管された直前にＲＡＩＤサブシステムのストライプ全体のベースラインバックアップが行なわれた場合に、ＲＡＩＤサブシステムの連続する状態の各々は、保管されたログファイル内の書込要求を再実行することによって再形成され得る。これにより、ＲＡＩＤサブシステムのストライプのどのような以前の状態も、再形成することができる（すなわち、無限のロールバックまたは巻戻し）。このことは、不注意によるファイル消去等のユーザのエラー、またはウイルス感染等からの回復を可能にするという点で、有利である。
【発明の効果】
【００１５】
　したがって、この発明は、従来のＲＡＩＤシステムよりも改良されたデータ読出／書込
性能を備えた、費用対効果の大きなデータ保護を提供する方法およびシステムを提供し、以前の所望されるデータ状態に戻る能力もまた提供する。
【００１６】
　この発明のこれらおよび他の特徴、局面、および利点は、以下の説明と、前掲の請求項と、添付の図面とを参照することによって理解されるであろう。
【発明を実施するための最良の形態】
【００１７】
　発明の詳細な説明
　図３Ａを参照すると、ディスクドライブ等の、故障と無関係のデータ記憶装置１８の配列を有し、かつ、この発明の一実施例に従ったハイブリッドＲＡＩＤデータ編成を用いた、例示的な耐故障性の記憶サブシステム１６が示される。データ記憶装置１８は、たとえば光学記憶装置、ＤＶＤ−ＲＡＭ等の他の記憶装置であってよい。上で論じたように、パリティを複数のディスクドライブに分散させてデータを保護することにより、ＲＡＩＤストライプの速度は遅くなるが、費用対効果が高まる。ＲＡＩＤミラーは、より優れたデータ転送性能を提供する。なぜなら、目標のセクタが２つのディスクドライブ上に同時に書込まれるためである。しかしながら、このことは、保護されるべき容量が別のディスクドライブと合致していることを必要とする。その一方で、ＲＡＩＤストライプは、ｎがディスクアレイ内のドライブの数である場合、このような容量を１／ｎまで減じる。しかしながら、ＲＡＩＤストライプでは、ターゲットとパリティセクタとの両方が読出されて、次に書込まれなければならないため、書込待ち時間を生じる。
【００１８】
　図３Ａの例において、６個のディスクドライブ１８（ドライブ０〜ドライブ５）のアレイ１７は、ホストシステムからデータを格納して、かつ、ホストシステムにデータをもう一度読出すために用いられ、この発明に従ったＲＡＩＤストライプデータ編成とＲＡＩＤミラーデータ編成との両方を含むように構成される。ディスクアレイ１７において、ＲＡＩＤミラー（「ミラー」）構成は、たとえばログファイルストリームのアプローチを用いてデータをディスクドライブ１８に転送する際に性能の利点を提供し、ＲＡＩＤストライプ（「ストライプ）構成は、ユーザデータセットの汎用記憶のためにストライプ編成を用いることにより、費用対効果を提供する。
【００１９】
　この発明の一実施例に従った、図３Ｂのフローチャートにおける例示的なステップを参照すると、このことは、図３Ａのディスクアレイ１７の容量を、ミラー領域２０およびストライプ領域２２を含む少なくとも２つの領域（セグメント）に分割すること（ステップ１００）によって達成される。データセット２４は、ストライプ領域２２に維持され（ステップ１０２）、関連するログファイル／ストリーム２６は、ミラー領域２０に維持される（ステップ１０４）。ログファイル２６は、ミラー領域２０の書込ログキャッシュとして維持されて、ホストから書込要求を受取ると、ホストデータがログファイル２６に書込まれて（ステップ１０６）、次に、ミラー領域２０のログファイル２６から、ストライプ領域２２のデータセット２４内の最終アドレスに、データが転送される（好ましくは、バックグラウンドタスクとして行なわれる）（ステップ１０８）ようにする。その際に、ＲＡＩＤストライプへの書込に関連する、上述の書込待ち時間という性能の不利益を、ホストから隠すことができる。好ましくは、ログは、継続的にまたは定期的に、テープにバックアップされる（ステップ１１０）。上述のステップは、書込要求がホストから到着すると繰返される。ディスクアレイ１７は、この発明に従った、追加のハイブリッドであるＲＡＩＤミラーおよびＲＡＩＤストライプに構成された領域を含むことができる。
【００２０】
　図３Ｃを参照すると、この発明に従った例示的なハイブリッドＲＡＩＤサブシステム１６は、ディスクアレイ１７（Ｎ個のディスクドライブ１８のアレイ等）に図３Ａのハイブリッドデータ編成を実現するＲＡＩＤコントローラ３０を有するデータ編成管理プログラム２８をさらに含む。図３Ｃの例において、Ｎ＝６個のディスクドライブ（各々が１００
ＧＢ等のドライブ０〜ドライブ５）のアレイ１７は、ディスクドライブ１８の容量の一部が書込ログキャッシュ２６および書込ログキャッシュのミラーデータ２７（すなわちＭ０〜Ｍ５）のためのＲＡＩＤミラーとして用いられるように構成される。また、ディスクドライブ１８の容量の残りの部分は、ユーザデータ（Ｓ０〜Ｓ２９等）およびパリティデータ（ＸＯＲ０〜ＸＯＲ２９等）のためのＲＡＩＤストライプとして用いられる。この例では、４００ＧＢのユーザデータがハイブリッドＲＡＩＤサブシステム１６に格納されており、図１のＲＡＩＤミラー１０および図２のＲＡＩＤストライプ１４における同じ容量に匹敵する。サブシステム１６は、ホストインターフェイス３１を介してホスト２９と通信する。この発明に従い、図３ＣのＲＡＩＤサブシステム１６において、他の数のディスクドライブおよび異なる記憶容量を用いることもできる。
【００２１】
　図４Ａは、例示的なユーザデータセット２４および書込ログ２６を示し、データセット２４がたとえば真夜中に完全にバックアップされた後に、すべての書込のログ２６が維持される（ｔ１〜ｔ６の時間等に）。この例において、各書込ログのエントリ２６ａは、更新されたデータ（udata）と、更新されたデータが格納されるべきデータセット内のアド
レス（addr）と、対応するタイムスタンプ（ｔｓ）とを含む。各時間ｔ１〜ｔ６におけるデータセットもまた図４Ａに示される。バックアップされたデータセット２４と書込ログ２６とにより、データセットの現在の状態（時間ｔ６等）より前のあらゆる時間におけるデータセット２４の状態に戻ることができ、これは、バックアップされた（ベースラインの）データセット２４を復元してから、その時点までのそのログ６２から、すべての書込を実行することによって行なわれる。たとえば、アドレスaddr＝０（論理ブロックアドレス０等）に対するデータが時間ｔ２において更新されたものの、時間ｔ５において破損した場合は、ベースラインバックアップを復元して、時間ｔ２を経た書込ログを実行することによって、時間ｔ２から、addr＝０からのデータを取り戻すことができる。この発明によると、ログファイル２６は、まず、ＲＡＩＤミラー領域２０に書込まれ、次に、データは、ＲＡＩＤミラー領域２０のログファイル２６から、ＲＡＩＤストライプ領域２２内の最終アドレスに、（好ましくはバックグラウンドタスクとして）転送される。
【００２２】
　書込ログ２６が大きくなることが考えられるため、書込ログ２６は、ディスク空間を空けて、データセット２４に対するより多くの変更を記録するために、好ましくはテープドライブ等の補助記憶装置にオフロードされる。このため、ディスクアレイ１７（図３Ｃ）は、３段階の処理において書込ログキャッシュとして用いられる。すなわち、（１）ホストがディスクドライブ内の最終宛先への書込よりも、ディスクにデータを書込むことを必要とする場合、そのデータはまず、ログ２６に書込まれて、ホストを満足させる。（２）次に、ディスクドライブが忙しくないときに、そのデータは、ログ２６からディスクドライブ上の最終宛先データセットに転送され、このことはホストに対して透過的である。（３）記憶領域を空けて、ホストからの新規のデータを記録するために、そのログデータがたとえばテープにバックアップされる。ログおよび最終宛先データは、上述のハイブリッドＲＡＩＤ構成内に維持される。
【００２３】
　図４Ｂのフローチャートにおける例示的なステップを参照すると、ホストの読出要求を受取ると（ステップ１２０）、要求されたデータが書込ログ２６内に存在して、ミラー領域２０においてキャッシュ（すなわちキャッシュヒット）として維持されているかどうかが判断される（ステップ１２２）。キャッシュとして維持されている場合、要求されたデータは、ログ２６からホスト２０に転送される（ステップ１２４）。統計上、最近書込まれたデータほど、以前に書込まれたデータよりも、もう一度読出される傾向が高いため、ログ領域が大きいほど、要求されたデータがログ２６内（ミラー領域２０内）にある確率が高くなるというトレードオフが生じる。ミラー領域２０から複数のブロックを読出す際に、異なるディスクドライブから異なるブロックを同時に読出すことができるため、読出性能が高まる。ステップ１２２において、ログのキャッシュヒットがない場合は、要求さ
れたデータを取出してホストに提供するために、ストライプ領域２２がアクセスされる（ステップ１２６）。ストライプの読出性能はミラーに劣るが、書込性能が劣っているほど顕著ではない。
【００２４】
　したがって、ストライプ領域２２は、書込ログデータをフラッシュすることによって、ストライプ領域２２にデータセットを永久に格納するために用いられ、また、ミラー領域２０の書込ログキャッシュ２６に存在しないデータブロックを読出すためにも用いられる。ハイブリッドＲＡＩＤシステム１６は、ＲＡＩＤミラーを有さない従来のＲＡＩＤストライプよりも改良されている。なぜなら、この発明によると、最も最近に書込まれたデータが、ミラー領域２０に格納されたログ２６内に存在する傾向が高く、これにより、ストライプよりも高速の読出が行なわれるためである。ハイブリッドＲＡＩＤシステムは、すべての書込およびほとんどの読出に対し、ＲＡＩＤミラー性能と等価の性能を提供する。なぜなら、最も最近に書込まれたデータほど、もう一度読出される傾向が最も高いためである。したがって、ＲＡＩＤストライプ２２は、ＲＡＩＤミラー２０に格納されたログキャッシュ２６で発見されなかったデータを取出すためにのみアクセスされ、それにより、ハイブリッドＲＡＩＤシステム１６は、ＲＡＩＤストライプの費用対効果において、本質的にＲＡＩＤミラーの性能を提供する。
【００２５】
　したがって、ストライプ２２が、フォアグラウンド処理（リアルタイム等）として書込まれる場合には、書込性能に不利益が生じる（すなわち、ホストは、書込が完了したという通知を待っている）。ログキャッシュ２６は、ストライプ２２に対するこのようなリアルタイムの書込を回避することを可能にする。ディスクアレイ１７が２つの論理データ領域（すなわち、ミラー化されたログ書込領域２０およびストライプ化された読出領域２２）に分割されているため、ログ書込にミラー構成を用いることにより、ストライプの書込性能における不利益を回避することができる。ピーク活動の期間中に生じるログ書込をすべて保持するほどミラー領域２０が十分に大きい場合、ストライプ領域２２への更新は、バックグラウンドで行われ得る。ミラー領域２０は本質的に書込キャッシュであり、ストライプ領域２２へのバックグラウンドの書込を伴った、ミラー領域２０へのログ２６の書込により、ハイブリッドサブシステム１６は、ストライプ様のコストでミラーの性能に匹敵することができる。
【００２６】
　図４Ｃのフローチャートにおける例示的なステップを参照すると、この発明に従い、さらに性能を高めるために、キャッシュメモリ（図５ＡのＲＡＭ書込キャッシュ３２等）がディスクアレイ１７内のログキャッシュ２６の前に加えられる（ステップ１３０）。上述のように、データセット２４およびログファイル２６は、それぞれストライプ領域２２およびミラー領域２０に維持される（ステップ１３２、１３４）。ホストの書込要求を受取ると（ステップ１３６）、入来するホストのブロックが、まずＲＡＭ書込キャッシュ３２に迅速に書込まれ、ホストは通知を受ける（ステップ１３８）。ホストは、ホストが通知を待っている間にそのデータがディスクに書込まれていれば生じ得た書込サイクルよりも高速の書込サイクルを認識する。このことは、従来のＲＡＩＤシステムの性能を高め、さらに、上述のハイブリッドＲＡＩＤサブシステム１６の性能を高める。ＲＡＭ書込キャッシュ３２内のホストデータは、ミラー領域２０内のログ２６（すなわち、ディスクミラーの書込キャッシュ）に順次複写されて（ステップ１４０）、そのログデータは後に、ストライプ領域２２内のデータセット２４（すなわちディスクストライプのデータセット）に、たとえばバックグラウンド処理として複写される（ステップ１４２）。ディスクミラーの書込キャッシュ２６への順次的な書込およびディスクストライプのデータセット２４へのランダムな書込は、順次的な高速の書込を提供する。
【００２７】
　しかしながら、データがＲＡＭ書込キャッシュ３２を介してディスク（ディスク上の書込ログキャッシュ等）に至る途中での電源障害は、ＲＡＭが揮発性であるために、データ
の損失を生じるおそれがある。したがって、図５ＡのハイブリッドＲＡＩＤサブシステム１６の別の実施例の例示的なブロック図に示されるように、この発明によると、ＲＡＭキャッシュデータを保護するために、ディスクアレイ１７にフラッシュバックモジュール３４（バックアップモジュール）を加えることができる。モジュール３４がない場合、書込データは、その宛先アドレスにおいてディスク上に格納されるまで、安全とはならないであろう。
【００２８】
　モジュール３４は、フラッシュメモリ等の不揮発性メモリ３６と、バッテリ３８とを含む。図５Ｂのフローチャートにおける例示的なステップを参照すると、通常動作中に、バッテリ３８は、外部電源４０から細流充電される（ステップ１５０）。万一、任意の電源障害が生じた場合、バッテリ３８は、ＲＡＩＤコントローラ３０に十分な電力を与えて（ステップ１５２）、ＲＡＭ書込キャッシュ３２の内容をフラッシュメモリ３６に転送する（ステップ１５４）。電力が復旧すると、フラッシュメモリ３６の内容は、再びＲＡＭ書込キャッシュ３２に転送され、通常動作が再開される（ステップ１５６）。このことにより、データが一旦ＲＡＭキャッシュ３２に書込まれると（これは、データをミラーディスクに書込むよりも高速である）、ホストの書込要求（コマンド）に対する応答が可能となる。ＲＡＩＤサブシステム１６の要素の故障が、万一、通常動作の再開を妨げる場合は、フラッシュバックモジュール３４を別のハイブリッドサブシステム１６に移動させて、フラッシュメモリ３６からデータを復元することができる。フラッシュバックモジュール３４が、電力の損失からＲＡＭ書込キャッシュ３２を保護しているために、書込は、ＲＡＭキャッシュ３２内に堆積され得、順次、ミラー化されたディスクログファイル２６に（たとえばバックグラウンドで）書込まれる。
【００２９】
　ＲＡＭ書込キャッシュ３２のサイズ（およびコスト）（ならびに、フラッシュバックモジュール３４内のフラッシュメモリ３６の、対応するサイズおよびコスト）を最小にするために、書込データは、できるだけ迅速にディスクに転送されなければならない。ハードディスクドライブの順次的なスループットが、ランダムな性能よりも実質的に優れているために、ＲＡＭ書込キャッシュ３２からディスクにデータを転送する最も速い方法とは、ミラー領域２０内のログファイル２６（すなわち、上述の、一連のアドレス／データ対）を経由することである。なぜなら、ミラー領域２０にデータブロックを書込む場合に、そのデータブロックが２つの異なるディスクドライブに書込まれるためである。ホストから入来する、書込まれるべきブロックの物理ディスクアドレスに依存して、ミラー２０のディスクドライブは、ランダムにアクセスされ得る。しかしながら、ログファイルは、時間順のエントリに基づいて逐次書込まれるために、ブロックは、ディスクドライブ上のデータセット２４内における、ブロックの実際の物理位置に関係なく、順次的にログファイルに書込まれる。
【００３０】
　この発明に従った上述のハイブリッドＲＡＩＤシステムアーキテクチャにおいて、ＲＡＩＤサブシステム１６からの、ホスト２９によって要求されたデータは、ＲＡＭ書込キャッシュ３２内、ミラー２０領域のログキャッシュ領域２６内、または汎用ストライプ領域２２内にあり得る。図５Ｃのフローチャートにおける例示的なステップを参照すると、ホストの読出要求を受取ると（ステップ１６０）、要求されたデータがＲＡＭキャッシュ３２に存在するかどうかが判断される（ステップ１６２）。ＲＡＭキャッシュ３２に存在する場合、要求されたデータは、ＲＡＭキャッシュ３２からホスト２９に転送される（ステップ１６４）。要求されたデータがＲＡＭキャッシュ３２に存在しない場合、要求されたデータがミラー領域２０の書込ログファイル２６内に存在するかどうかが判断される（ステップ１６６）。書込ログファイル２６内に存在する場合、要求されたデータは、ログ２６からホストに転送される（ステップ１６８）。要求されたデータがログ２６内に存在しない場合、要求されたデータを取出してホストに与えるために、ストライプ領域２２内のデータセット２４がアクセスされる（ステップ１６９）。
【００３１】
　ミラー領域２０内のデータが複製されているために、読出データの要求を遂行するために、２倍の数の駆動部を利用することができ、応答性を効果的に２倍にする。このミラーの利点は一般に認識されているが、ミラーがランダムなデータを保持せずに、最近書込まれたデータを保持しているために、この利点を高めることができる。上で論じたように、データが読出される確率は、データが書込まれてからの時間にほぼ正比例するため、ミラー領域２０が、所望のデータを保持している可能性が高いことが考えられる。最終データアドレスの潜在的なランダム性に関係なく、データが書込まれたのと同じ順序でデータがもう一度読出される場合は、加速をさらに実現することができる。なぜなら、ミラー領域２０が、書込まれた順序でデータを格納しており、その順序での読出が、順次的なストリームを形成するためである。
【００３２】
　この発明の別の局面によると、サブシステム１６の読出性能を、さらに高めることができる。従来のＲＡＩＤシステムでは、アレイ内のディスクドライブの１つを、スペアディスクドライブ（「ホットスペア」）として確保することができ、アレイ内の他のディスクドライブの１つが万一故障した場合に、その故障したドライブの代わりにホットスペアが用いられる。この発明によると、ディスクアレイ１７においてホットスペアとして通常用いられるディスクドライブに対し、ハイブリッドＲＡＩＤサブシステム１６の一時的なサービスを行なわせることにより、読出性能をさらに高めることができる。図６Ａは、この発明に従ったホットスペアディスクドライブ１８ａ（すなわちドライブ６）をさらに含む、図３ＡのハイブリッドＲＡＩＤサブシステム１６を示す。
【００３３】
　この発明に従った、図６Ｂのフローチャートにおける例示的なステップを参照すると、ホットスペア１８ａの状態が判定され（ステップ１７０）、ホットスペア１８ａが休止状態にある（すなわち、故障した装置の代替として用いられていない）ことが検出されると（ステップ１７２）、ホットスペア１８ａが、ハイブリッドＲＡＩＤサブシステム１６のミラー化された領域２０内のデータを複製するために用いられる（ステップ１７４）。次に、ホストから読出要求を受取ると（ステップ１７６）、要求されたデータがホットスペア１８ａおよびミラー領域２０に存在するかどうかが判断される（ステップ１７８）。ホットスペア１８ａおよびミラー領域２０に存在する場合、要求されたデータのコピーは、最小の待ち時間でホットスペア１８ａからホストに与えられ、または、より高速であれば、ミラー領域２０からホストに与えられる（ステップ１８０）。ホットスペア１８ａおよびミラー領域２０に存在しない場合、要求されたデータのコピーは、ミラー領域２０またはストライプ領域２２からホストに与えられる（ステップ１８２）。その後、ホットスペア１８ａが、故障したディスクドライブの代わりを務めるために必要とされるかどうかが判断される（ステップ１８４）。必要とされない場合、この処理はステップ１７６に戻り、必要とされる場合、ホットスペア１８ａは、故障したディスクドライブと置き換えられる（ステップ１８６）。
【００３４】
　したがって、図６Ａにおいて、アレイ１７内の任意のディスクドライブ１８が万一故障しても、ホットスペア１８ａが直ちに送られて、１つのディスクドライブの故障からのデータ損失以上の損失を被らずに、その故障したディスクドライブの代用を務めることができる。たとえば、ドライブ１が故障すると、ドライブ０およびドライブ２〜ドライブ５がスペアドライブ６の使用を開始して、故障前のドライブ１のデータを保持するように、ドライブ６を再構築することができる。しかしながら、アレイ１７のディスクドライブ１８がすべて適切に作動している場合、ミラー領域２０の複製は、ホットスペア１８ａによるミラー領域２０の補助を可能にして、サブシステム１６の読出要求に対する応答性をより高めることができる。
【００３５】
　ミラー化された領域２０のサイズに依存して、ホットスペア１８ａは、性能をさらに高
めるために、複数の冗長データのコピーを提供することができる。たとえば、ホットスペア１８ａがアレイ１７のミラー化された領域２０の容量に合致する場合、ホットスペア１８ａの上に、ミラー化された領域のデータを二度複製することができる。たとえば、ホットスペア１８ａにおいて、同心のディスクトラックの各々の上にデータが複製されるように、データを配置することができる（すなわち、トラックの一方の半分が、そのトラックの他方の半分上に存在するデータのコピーを保持する）。その場合、ランダムな要求に応答する際のホットスペア１８ａの回転待ち時間は、効果的に半分になる（すなわち、読出待ち時間が一層短くなる）。
【００３６】
　したがって、ハイブリッドＲＡＩＤサブシステム１６のミラー領域２０をより高速にするために、ホットスペア１８ａが用いられる。図６Ｃは、ドライブ６がホットスペア１８ａである、７個のディスクドライブ（ドライブ０〜ドライブ６）に対して、図６ＡのハイブリッドＲＡＩＤデータ編成を実現するＲＡＩＤコントローラ３０を含む、ハイブリッドＲＡＩＤサブシステム１６の例示的なブロック図を示す。たとえば図６Ｃのドライブ０〜ドライブ１について考えた場合、Ｍ０データはドライブ０内に存在し、ドライブ１に複製され、それによってドライブ１はドライブ０を保護する。加えて、Ｍ０データは、複製を用いてスペアドライブ６に書込まれて、要求されたＭ０データがミラー領域２０内の書込ログ２６内に存在する場合に、ドライブ０、ドライブ１、またはスペアドライブ６からもう一度読出され得るようにする。Ｍ０データはドライブ６に二度複製されているため、ドライブ６は高い毎分回転数を有しているように見える。なぜなら、上に述べたように、複製が読出待ち時間を短縮するためである。スペアドライブ６は、Ｍ０データに対する態様と同様の複製された態様で、ミラー化されたブロックのすべてを格納するように構成されて、ハイブリッドサブシステム１６の読出性能を高めることができる。
【００３７】
　ホットスペアディスクドライブが、ディスクアレイ（主アレイ）内の他のディスクドライブの容量と合致していなければならず、この例において、ミラー領域のデータ（Ｍ０〜Ｍ５）がディスクドライブ１８の容量の半分であるために、ホットスペア１８ａは、ミラー領域２０を二度複製することができる。ホットスペア１８ａがミラー領域の複製を含む場合、ホットスペア１８ａをサブシステム１６から取外して、バックアップすることができる。バックアップは、ネットワーク帯域幅を用いずにオフラインで行なうことができる。ホットスペア１８ａから新規のベースラインを形成することができる。
【００３８】
　たとえば、ディスクアレイの完全なバックアップが前もってテープに行なわれ、ホットスペア１８ａがそのバックアップ以降の書込のすべてを保持している場合、テープから補助ディスクアレイにバックアップを復元することができ、次に、補助ディスクアレイのストライプ２２に、ログファイル２６からのすべての書込を書込むことができる。この処理を速めるには、所与のブロックに対する最も最近の更新が書込まれるだけでよい。書込の順序は、一時的な順序に置換えられる必要はないが、ホットスペアの読出および／または補助アレイへの書込間の時間を最小にするために、最適化することができる。ホットスペアが主アレイから取外された時点で、補助アレイのストライプは、主アレイのストライプと同じ状態にある。この時点で補助アレイをテープにバックアップすることにより、より新規のホットスペアで徐々に更新されてより新規のベースラインを形成して非常時の高速な復元を容易にすることが可能な、新規のベースラインが形成される。新規のベースラインのこのような形成は、ディスクアレイおよびテープドライブを含む機器によって、ホストなしで行なうことができる。新規のベースラインのテープのバックアップが失敗した場合、ホットスペアの以前のベースラインおよびテープのバックアップに戻ることができる。
【００３９】
　図７Ａは、この発明に従った、上述のハイブリッドＲＡＩＤデータ編成を実現し、かつ、冗長ミラーとしてのホットスペア１８ａとフラッシュバックモジュール３４とを含む、
ハイブリッドＲＡＩＤサブシステム１６の一実施例のブロック図を示す。ミラー領域２０のログ２６およびフラッシュバックモジュール３４への書込により、ミラー上での複製に通常は関連する書込性能の不利益がなくなる。ミラー上での複製は、すべての書込に対して１／４回転を加えることを含む。目標のトラックが獲得されると、複製されたセクタのうちの１つに対する平均待ち時間は１／４回転であるが、他のセクタに書込むためには１／２回転が必要とされる。標準的なミラー上での平均待ち時間が１／２回転であるために、書込には追加の１／４回転が必要とされる。フラッシュバックモジュール３４により、ＲＡＩＤコントローラ３０内のＲＡＭ書込キャッシュ３２において書込を受取ると、ホストに対して書込不揮発性の通知が生じ得る。非ピーク活動の期間中に、ＲＡＭ書込キャッシュ３２からディスクのログファイルの書込キャッシュ２６への書込が、バックグラウンドで生じる。ログファイル２６に順次書込むことにより、このような非ピーク活動の確率が、大いに上昇する。図７Ｂは、フラッシュバックモジュール３４が、ＲＡＩＤコントローラ３０を含むデータ編成管理プログラム２８の一部である、図７ＡのハイブリッドＲＡＩＤサブシステム１６の別の実施例のブロック図を示す。
【００４０】
　この発明に従ったハイブリッドＲＡＩＤサブシステム１６の別の実施例は、データブロックサービスを提供し、任意のブロック装置（たとえば１つのディスクドライブ、ＲＡＩＤ等）として用いられ得る。このようなハイブリッドＲＡＩＤサブシステムは、或るデータブロックレベルで作動する装置が用いられ得る任意のシステムにおいて、用いることができる。図８Ａは、ストレージエリアネットワーク（ＳＡＮ）４２等の例示的なブロックデバイスにおいて、この発明に従ったハイブリッドＲＡＩＤサブシステム１６の一実施例を用いた一例を示す。ＳＡＮでは、接続された装置がデータブロックを交換する。
【００４１】
　図８Ｂは、ネットワーク４４内のネットワーク接続ストレージ（ＮＡＳ）として、この発明に従ったハイブリッドＲＡＩＤサブシステム１６の一実施例を用いた一例を示す。ＮＡＳでは、接続された装置がファイルを交換する。なぜなら、このようなファイルサーバ４６が、ハイブリッドＲＡＩＤサブシステム１６の前に位置付けられているためである。ＮＡＳ装置のファイルサーバの部分は、ファイルサービスに専ら焦点を合わせて単純化することができ、ハイブリッドＲＡＩＤサブシステム１６によってデータの保全性が提供される。
【００４２】
　この発明は、この明細書において以下に述べるように、ハイブリッドＲＡＩＤサブシステムに対し、さらに例示的な改良点を与える。上に述べたとおり、ミラー領域２０（図３Ａ）は、書込データをストライプ２２内のその最終位置に格納する前に、ログキャッシュ２６に対する一時的な記憶装置として働く。一時的なミラー２０からデータを消去する前に、テープ等の長期保管記憶媒体に、ログ２６を順次書込むことができる。次に、データセットの以前の状態に戻るために、ログファイルが保管された直前にＲＡＩＤサブシステムのストライプ２２全体のベースラインのバックアップが形成された場合には、保管されたログファイルシステム内の書込要求を再実行することによって、ＲＡＩＤサブシステム１６の、連続する状態の各々を、再形成することができる。これにより、ＲＡＩＤサブシステム１６のストライプ２２の、以前のあらゆる状態を再形成することができる（すなわち、無限のロールバックまたは巻戻し）。このことは、たとえば、不注意によるファイル消去等のユーザのエラーからの回復を可能にするという点と、ウイルス感染からの回復を可能にするという点とにおいて、有益である。図８Ｃのフローチャートにおける例示的なステップを参照すると、選択された時間における、ストライプ２２内のデータセット２４の状態を再形成するために、その選択された時間以前のバックアップ時間に形成されたデータセット２４のコピーが得られ（ステップ１９０）、上述のデータセットのコピーに関連するキャッシュログ２６のコピーが得られる（ステップ１９２）。上述の、関連するキャッシュログ２６は、上述のバックアップ時間の直後に時間順次的に形成されたエントリ２６ａ（図４Ａ）を含む。上述の選択された時間を示すタイムスタンプが、関連するキャ
ッシュログのエントリ２６ａに到達するまで、上述の関連するキャッシュログ２６の各エントリの各データブロックは、データセットのコピー内の対応するブロックアドレスまで時間順次的に転送される（ステップ１９４）。
【００４３】
　この発明は、費用対効果のため、ハイブリッドＲＡＩＤシステム１６のミラー領域２０に格納されたログ２６内のデータの圧縮をさらに提供する。圧縮は、データ冗長性が多様であるために、従来のＲＡＩＤサブシステムでは用いられていない。たとえば、所与のデータブロックは、読出され、変更され、再び書込まれ得る。読出されたデータがデータブロック全体を消費し、かつ、変更されたデータが元のデータと同じだけ冗長性を有している場合、圧縮されて変更されたデータは、ディスク上のデータブロックに適合しない。
【００４４】
　しかしながら、読出／変更／書込動作は、この発明のミラー領域２０における有効な動作ではない。なぜなら、ミラー領域２０が、書込の順次的なログファイルを含むためである。ミラー領域２０から所与のデータブロックを読出し得る間に、任意の変更の後、データブロックの書込は、その場で上書きされるのではなく、既存のログファイルストリーム２６に追加される。このため、ミラー領域２０では、圧縮の多様性が問題とならない。現在の圧縮技術は、一般的なデータのサイズをたとえば半分にすることができ、それによって、ミラー領域２０において圧縮を用いることにより、その領域のサイズをたとえば事実上２倍にする。これにより、圧縮されないミラー領域に対する容量を減じることなく、ミラー領域のサイズを２倍にするか、または、実際のミラー領域のサイズを半分に削減することができる。圧縮技術は、ＲＡＭ書込キャッシュ３２に対しても同様に行なうことができる。
【００４５】
　さらにデータ保護を行なうために、この発明の別の形態においては、ＲＡＩＤサブシステム１６内のデータを遠隔地でシステム１６ａ（図７Ｂ）に複製することができる。遠隔システム１６ａは、主ＲＡＩＤサブシステム１６がシャットダウンされる緊急時を除き、呼び出されなくてよい。しかしながら、遠隔システム１６ａは、この発明の場合、付加価値をさらに提供することができる。特に、主ＲＡＩＤサブシステム１６は、ミラー領域２０内のログファイル２６のデータを遠隔サブシステム１６ａに送り、この例の場合、遠隔サブシステム１６ａは、この発明に従ったハイブリッドＲＡＩＤサブシステムを含む。ログファイルのデータを圧縮すると、遠隔システム１６ａへの転送時間を短縮することができる。遠隔サブシステム１６ａの負荷が、主サブシステム１６の負荷よりも小さいため（すなわち、遠隔サブシステム１６ａが書込にのみ応答すればよいのに対し、主サブシステム１６は、読出および書込の両方の要求に応答しなければならない）、遠隔サブシステム１６ａは、主サブシステム１６に対するパリティ情報源となり得る。したがって、遠隔サブシステム１６ａ内において、データをミラー領域からサブシステム１６ａのストライプ上の、その最終アドレスに書込む処理の際に、関連するパリティデータが生成される。次に、遠隔サブシステム１６ａは、そのパリティデータ（好ましくは圧縮されている）を主サブシステム１６に送ることができ、主サブシステム１６は、それ自体によるパリティデータの生成を回避することができ、主サブシステム１６内のミラー領域とストライプ領域との間における、所与のデータブロックに対する転送処理を加速することができる。
【００４６】
　この発明は、単に装置の信頼性を提供するだけでなく、データの保全性を保護することによって、標準的なＲＡＩＤを超越する。無限のロールバックにより、バックアップ間の脆弱なウィンドウの期間に、保護が提供される。ハイブリッドのミラー／ストライプによるデータ編成は、結果的に改良された性能をもたらす。フラッシュバックモジュール３４を加えることにより、ストライプに迫るコストで従来のＲＡＩＤミラーの性能を凌ぐ。この発明以外の場合には休止状態であるホットスペア上に複製を行なうことによって、性能をさらに高めることができ、ホットスペアをホスト不要の機器によって用いて、新規のベースラインのバックアップを生成することができる。
【産業上の利用可能性】
【００４７】
　この発明は、エンタープライズ（Enterprise）システム、ネットワーク、ＳＡＮ、ＮＡＳ、媒体および小さなシステム等のさまざまなデータ処理システムで実現することができる（たとえば、パーソナルコンピュータにおいて書込ログが用いられ、バックグラウンドでユーザデータセットにデータが転送される）。したがって、この明細書の「ホスト」および「ホストシステム」という記述は、ハイブリッドＲＡＩＤサブシステムにデータを転送し、かつ、ハイブリッドＲＡＩＤサブシステムからデータを転送するために、ハイブリッドＲＡＩＤシステムと通信する任意の情報源を指す。
【００４８】
　この発明を、その特定の好ましい形態を参照してかなり詳細に説明してきたが、他の形態も可能である。したがって、前掲の請求項の精神および範囲は、この明細書に含まれる好ましい形態の説明に限定されるべきではない。
【図面の簡単な説明】
【００４９】
【図１】ＲＡＩＤミラーとして構成された例示的なディスクアレイのブロック図である。
【図２】ＲＡＩＤストライプとして構成された例示的なディスクアレイのブロック図である。
【図３Ａ】この発明の一実施例に従った、ディスクアレイにおける例示的なハイブリッドＲＡＩＤデータ編成のブロック図である。
【図３Ｂ】この発明に従ったデータ記憶のステップの、一実施例の例示的なフロー図である。
【図３Ｃ】図３ＡのハイブリッドＲＡＩＤデータ編成に従ったハイブリッドＲＡＩＤのストライプおよびミラーとして論理的に構成された、例示的なＲＡＩＤサブシステムのブロック図である。
【図４Ａ】例示的なデータセットと、バックアップ後のデータセットへの更新のログとを示す図である。
【図４Ｂ】この発明に従ったデータ記憶のステップの、別の実施例の例示的なフロー図である。
【図４Ｃ】この発明に従ったデータ記憶のステップの、別の実施例の例示的なフロー図である。
【図５Ａ】この発明に従ったフラッシュバックモジュールをさらに含む図３Ａおよび図３Ｂのディスクアレイの、別のブロック図である。
【図５Ｂ】この発明に従ったデータ記憶のステップの、別の実施例の例示的なフロー図である。
【図５Ｃ】この発明に従ったデータ記憶のステップの、別の実施例の例示的なフロー図である。
【図６Ａ】この発明に従った一時的なＲＡＩＤミラーとして用いられるホットスペアを含むディスクアレイにおける、別の例示的なハイブリッドＲＡＩＤのデータ編成のブロック図である。
【図６Ｂ】この発明に従ったデータ記憶のステップの、別の実施例の例示的なフロー図である。
【図６Ｃ】一時的なＲＡＩＤミラーとして用いられるホットスペアをさらに含む図６ＡのハイブリッドＲＡＩＤデータ編成として論理的に構成された、例示的なＲＡＩＤサブシステムのブロック図である。
【図７Ａ】この発明に従った、ストライプおよびミラー構成を用いたハイブリッドＲＡＩＤデータ編成を含み、さらに、冗長ミラーとしてのホットスペアとフラッシュバックモジュールとを含む、別のディスクアレイのブロック図である。
【図７Ｂ】この発明に従った、ストライプおよびミラー構成を用いたハイブリッドＲＡＩＤデータ編成を含み、さらに、冗長ミラーとしてのホットスペアとフラッシュバックモジュールとを含む、別のディスクアレイのブロック図である。
【図８Ａ】この発明に従った、ストレージエリアネットワーク（ＳＡＮ）内でハイブリッドＲＡＩＤサブシステムを用いた例の図である。
【図８Ｂ】この発明に従った、ネットワーク接続ストレージ（ＮＡＳ）としてハイブリッドＲＡＩＤを用いた例の図である。
【図８Ｃ】この発明に従ったデータ記憶のステップの、別の実施例の例示的なフロー図である。
【符号の説明】
【００５０】
　１６　耐故障性の記憶サブシステム、１７　ディスクアレイ、１８　ディスクドライブ、２４　データセット、２６　書込ログキャッシュ、２７　書込ログキャッシュのミラーデータ。
【図１】
2004118837.tif 000003
【図２】
2004118837.tif 000004
【図３Ａ】
2004118837.tif 000005
【図３Ｂ】
2004118837.tif 000006
【図３Ｃ】
2004118837.tif 000007
【図４Ａ】
2004118837.tif 000008
【図４Ｂ】
2004118837.tif 000009
【図４Ｃ】
2004118837.tif 000010
【図５Ａ】
2004118837.tif 000011
【図５Ｂ】
2004118837.tif 000012
【図５Ｃ】
2004118837.tif 000013
【図６Ａ】
2004118837.tif 000014
【図６Ｂ】
2004118837.tif 000015
【図６Ｃ】
2004118837.tif 000016
【図７Ａ】
2004118837.tif 000017
【図７Ｂ】
2004118837.tif 000018
【図８Ａ】
2004118837.tif 000019
【図８Ｂ】
2004118837.tif 000020
【図８Ｃ】
2004118837.tif 000021