(57)【要約】独立ディスク冗長アレイ（ＲＡＩＤ）構成のような、例えばデータの再構築を可能にする１つのデータ構成タイプにおいて構成されたデータを再構築することを含む、データを構築するための方法、システム、及びプログラムが提供される。一実施形態において、複数のデータブロックは、ＲＡＩＤアレイ内のディスクドライブのような複数のストレージユニットにわたって記憶された１つのデータストライプから、ストレージプロセッサのキャッシュメモリをバイパスして１つのストレージプロセッサの１つのロジックエンジンに伝送される。１つのストアキューは、ストライプからの１つのデータブロックを再構築すべく、複数のディスクドライブからデータが伝送されたときに排他的論理和のような１つの論理ファンクションをそれぞれのデータブロックについて実行する。ＲＡＩＤアレイにわたるデータストライプ内の失われたデータブロックを置き換えるべく、又は旧パリティデータブロックを置き換えるべく、構築されたデータブロックは、続いてＲＡＩＤアレイの１つのディスクドライブに伝送される。【特許請求の範囲】
【請求項１】
複数の不揮発性ストレージユニットのうちの１つの第１不揮発性ストレージユニットから、１つのキャッシュメモリを有する１つのストレージプロセッサの１つのロジックエンジンに、前記キャッシュメモリをバイパスする第１伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる１つのストライプ内に記憶された１つの第１データユニットを伝送する段階と、
前記キャッシュメモリをバイパスする第２伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの１つの第２不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの第２データユニットを伝送する段階と、
前記第１伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第１データユニット及び前記第２伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第２データユニットを用いて、前記ロジックエンジンにおいて１つの第３データユニットを構築する段階と
を備える方法。
【請求項２】
第３伝送オペレーションにおいて、前記構築された第３データユニットを、前記複数の不揮発性ストレージユニットのうちの１つの第３不揮発性ストレージユニットに伝送し、前記構築された第３データユニットを前記ストライプに記憶する段階
をさらに備える請求項１に記載の方法。
【請求項３】
前記第３伝送オペレーションは前記キャッシュメモリをバイパスする
請求項２に記載の方法。
【請求項４】
前記複数の不揮発性ストレージユニットは、１つの独立ディスク冗長アレイ（ＲＡＩＤ）構成で配置される
請求項２に記載の方法。
【請求項５】
前記第２データユニットはパリティデータである
請求項４に記載の方法。
【請求項６】
不揮発性ストレージユニットのそれぞれは１つのディスクドライブである
請求項５に記載の方法。
【請求項７】
前記ストライプは１つのパリティデータブロックを有する１つの独立ディスク冗長アレイ（ＲＡＩＤ）ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ（ＲＡＩＤ）ストライプの１つのデータブロックである
請求項６に記載の方法。
【請求項８】
前記ロジックエンジンは、前記独立ディスク冗長アレイ（ＲＡＩＤ）ストライプからの１つのデータブロックを記憶することができる１つのストアキューを有する
請求項７に記載の方法。
【請求項９】
前記ロジックエンジンの前記キャッシュメモリは１つのランダムアクセスメモリである
請求項１に記載の方法。
【請求項１０】
前記ロジックエンジンにおいて１つの第３データユニットを構築する前記段階は、
前記第１伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第１データユニットを前記ロジックエンジンの１つのストアキューに適用し、前記第１ストアキューの内容及び前記適用された第１データユニットに１つの排他的論理和論理ファンクションオペレーションを実行する段階と、
前記第２伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第２データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第２データユニットに１つの排他的論理和論理ファンクションオペレーションを実行する段階と
を有する請求項１に記載の方法。
【請求項１１】
前記キャッシュメモリをバイパスする第４伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの１つの第４不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの第４データユニットを伝送する段階と、
前記キャッシュメモリをバイパスする第５伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの１つの第５不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの第５データユニットを伝送する段階と
をさらに備え、
前記ロジックエンジンにおいて前記第３データユニットを構築する前記段階は、前記第４伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第４データユニットも使用し、前記第３伝送オペレーションにおいて前記第３不揮発性ストレージユニットに前記構築された第３データユニットを伝送する前記段階に先立って前記第５伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第５データユニットを使用する
請求項２に記載の方法。
【請求項１２】
前記複数のストレージユニットの追加の不揮発性ストレージユニットのそれぞれについて、
前記キャッシュメモリをバイパスする追加の伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの１つの追加の不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの追加のデータユニットを伝送する段階
をさらに備え、
前記ロジックエンジンにおいて前記第３データユニットを構築する前記段階は、前記第３伝送オペレーションにおいて前記第３不揮発性ストレージユニットに前記構築された第３データユニットを伝送する前記段階に先立って前記追加の伝送オペレーションにおいて前記ロジックエンジンに伝送された前記追加のデータユニットも使用する
請求項２に記載の方法。
【請求項１３】
前記ストライプ内に記憶される新データである１つの第４データユニットを前記ロジックエンジンに伝送する段階であって、前記第１データユニットは前記ストライプにおいて前記新データによって置き換えられる旧データであり、前記第２データユニットは前記ストライプにおいて置き換えられる旧パリティデータであり、前記ロジックエンジンにおいて前記第３データユニットを構築する前記段階は、前記ロジックエンジンに伝送された前記新データを用いてパリティデータの１つの置き換えユニットを構築する段階と、
新パリティデータである前記第３ユニットを前記第２不揮発性ストレージユニットに伝送して旧パリティデータである前記第２ユニットを置き換える段階と
をさらに備える請求項１に記載の方法。
【請求項１４】
前記構築された第３データユニットを、第３伝送オペレーションにおいて１つのホストに伝送する段階
をさらに備える請求項１に記載の方法。
【請求項１５】
前記ストレージプロセッサは、前記第１及び第２データユニットが前記第１及び第２不揮発性ストレージユニットから少なくとも部分的にパラレルにアクセスされるよう、前記第１及び第２不揮発性ストレージユニットに複数の読み込みコマンドを発行する
請求項１に記載の方法。
【請求項１６】
１つのストレージメディアを備える製品であって、前記ストレージメディアは、
複数の不揮発性ストレージユニットのうちの１つの第１不揮発性ストレージユニットから、１つのキャッシュメモリを有する１つのストレージプロセッサの１つのロジックエンジンに、前記キャッシュメモリをバイパスする第１伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる１つのストライプ内に記憶された１つの第１データユニットを伝送し、
前記キャッシュメモリをバイパスする第２伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの１つの第２不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの第２データユニットを伝送し、
前記第１伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第１データユニット及び前記第２伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第２データユニットを用いて、前記ロジックエンジンにおいて１つの第３データユニットを構築する
ための記憶された複数の機械可読命令を有する製品。
【請求項１７】
前記ストレージメディアは、
第３伝送オペレーションにおいて、前記構築された第３データユニットを、前記複数の不揮発性ストレージユニットのうちの１つの第３不揮発性ストレージユニットに伝送し、前記構築された第３データユニットを前記ストライプに記憶するための記憶された複数の機械可読命令をさらに有する
請求項１６に記載の製品。
【請求項１８】
前記第３伝送オペレーションは前記キャッシュメモリをバイパスする
請求項１７に記載の製品。
【請求項１９】
前記複数の不揮発性ストレージユニットは、１つの独立ディスク冗長アレイ（ＲＡＩＤ）構成で配置される
請求項１７に記載の製品。
【請求項２０】
前記第２データユニットはパリティデータである
請求項１９に記載の製品。
【請求項２１】
不揮発性ストレージユニットのそれぞれは１つのディスクドライブである
請求項２０に記載の製品。
【請求項２２】
前記ストライプは１つのパリティデータブロックを有する１つの独立ディスク冗長アレイ（ＲＡＩＤ）ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ（ＲＡＩＤ）ストライプの１つのデータブロックである
請求項２１に記載の製品。
【請求項２３】
前記ロジックエンジンは、前記独立ディスク冗長アレイ（ＲＡＩＤ）ストライプからの１つのデータブロックを記憶することができる１つのストアキューを有する
請求項２２に記載の製品。
【請求項２４】
前記ロジックエンジンの前記キャッシュメモリは１つのランダムアクセスメモリである
請求項１６に記載の製品。
【請求項２５】
前記ロジックエンジンにおいて１つの第３データユニットを構築するための前記複数の機械可読命令は、
前記第１伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第１データユニットを前記ロジックエンジンの１つのストアキューに適用し、前記第１ストアキューの内容及び前記適用された第１データユニットに１つの排他的論理和論理ファンクションオペレーションを実行し、
前記第２伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第２データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第２データユニットに１つの排他的論理和論理ファンクションオペレーションを実行する
ための記憶された複数の機械可読命令を有する請求項１６に記載の製品。
【請求項２６】
前記ストレージメディアは、
前記キャッシュメモリをバイパスする第４伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの１つの第４不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの第４データユニットを伝送し、
前記キャッシュメモリをバイパスする第５伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの１つの第５不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの第５データユニットを伝送する
ための記憶された複数の機械可読命令をさらに有し、
前記ロジックエンジンにおいて前記第３データユニットを構築するための前記複数の機械可読命令は、
前記第４伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第４データユニットも使用し、前記第３伝送オペレーションにおいて前記第３不揮発性ストレージユニットに前記構築された第３データユニットを前記伝送することに先立って前記第５伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第５データユニットを使用するための記憶された複数の機械可読命令
を含む請求項１７に記載の製品。
【請求項２７】
前記ストレージメディアは、
前記ストライプ内に記憶される新データである１つの第４データユニットを、前記ロジックエンジンに伝送するための記憶された複数の機械可読命令
をさらに有し、
前記第１データユニットは前記ストライプにおいて前記新データによって置き換えられる旧データであり、前記第２データユニットは前記ストライプにおいて置き換えられる旧パリティデータであり、
前記ロジックエンジンにおいて前記第３データユニットを構築するための前記複数の機械可読命令は、前記ロジックエンジンに伝送された前記新データを用いてパリティデータの１つの置き換えユニットを構築するための、前記ストレージメディアに記憶された複数の機械可読命令を含み、
前記ストレージメディアは、
新パリティデータである前記第３ユニットを前記第２不揮発性ストレージユニットに伝送して旧パリティデータである前記第２ユニットを置き換えるための記憶された複数の機械可読命令
をさらに含む請求項１６に記載の製品。
【請求項２８】
前記ストレージメディアは、
前記構築された第３データユニットを、第３伝送オペレーションにおいて１つのホストに伝送するための記憶された複数の機械可読命令
をさらに有する請求項１６に記載の製品。
【請求項２９】
前記ストレージメディアは、
前記第１及び第２データユニットが前記第１及び第２不揮発性ストレージユニットから、少なくとも部分的にパラレルにアクセスされるよう、前記第１及び第２不揮発性ストレージユニットに複数の読み込みコマンドを発行するための記憶された複数の機械可読命令
をさらに有する請求項１６に記載の製品。
【請求項３０】
１つのオペレーティングシステム及び１つのアプリケーションを有する少なくとも１つのメモリと、
前記メモリに結合された１つのプロセッサと、
複数の不揮発性ストレージユニットを有するデータストレージと、
前記データストレージへの入力／出力（Ｉ／Ｏ）アクセスを管理するべく構成され、１つのキャッシュメモリ及び１つのロジックエンジンを有する１つのデータストレージプロセッサと、
前記メモリ内で前記プロセッサによって実行可能な１つのデバイスドライバと
を備え、
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも１つは、
１つの第１不揮発性ストレージユニットから、前記ストレージプロセッサの前記ロジックエンジンに、前記キャッシュメモリをバイパスする第１伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる１つのストライプ内に記憶された１つの第１データユニットを伝送し、
前記キャッシュメモリをバイパスする第２伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの１つの第２不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの第２データユニットを伝送し、
前記第１伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第１データユニット及び前記第２伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第２データユニットを用いて、前記ロジックエンジンにおいて１つの第３データユニットを構築すべく構成される
システム。
【請求項３１】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも１つは、さらに、
第３伝送オペレーションにおいて、前記構築された第３データユニットを、前記複数の不揮発性ストレージユニットのうちの１つの第３不揮発性ストレージユニットに伝送し、前記構築された第３データユニットを前記ストライプに記憶すべく構成される
請求項３０に記載のシステム。
【請求項３２】
前記第３伝送オペレーションは前記キャッシュメモリをバイパスする
請求項３１に記載のシステム。
【請求項３３】
前記複数の不揮発性ストレージユニットは、１つの独立ディスク冗長アレイ（ＲＡＩＤ）構成で配置される
請求項３１に記載のシステム。
【請求項３４】
前記第２データユニットはパリティデータである
請求項３３に記載のシステム。
【請求項３５】
不揮発性ストレージユニットのそれぞれは１つのディスクドライブである
請求項３４に記載のシステム。
【請求項３６】
前記ストライプは１つのパリティデータブロックを有する１つの独立ディスク冗長アレイ（ＲＡＩＤ）ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ（ＲＡＩＤ）ストライプの１つのデータブロックである
請求項３５に記載のシステム。
【請求項３７】
前記ロジックエンジンは、前記独立ディスク冗長アレイ（ＲＡＩＤ）ストライプからの１つのデータブロックを記憶することができる１つのストアキューを有する
請求項３６に記載のシステム。
【請求項３８】
前記ロジックエンジンの前記キャッシュメモリは１つのランダムアクセスメモリである
請求項３０に記載のシステム。
【請求項３９】
前記ロジックエンジンにおいて１つの第３データユニットを構築すべく、前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも１つは、
前記第１伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第１データユニットを前記ロジックエンジンの１つのストアキューに適用し、前記第１ストアキューの内容及び前記適用された第１データユニットに１つの排他的論理和論理ファンクションオペレーションを実行し、前記第２伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第２データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第２データユニットに１つの排他的論理和論理ファンクションオペレーションを実行すべく構成される
請求項３０に記載のシステム。
【請求項４０】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも１つは、さらに、
前記キャッシュメモリをバイパスする第４伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの１つの第４不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの第４データユニットを伝送し、
前記キャッシュメモリをバイパスする第５伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの１つの第５不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの第５データユニットを伝送すべく構成され、
前記ロジックエンジンにおいて前記第３データユニットを構築すべく、前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも１つは、さらに、前記第４伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第４データユニットも使用し、前記第３伝送オペレーションにおいて前記第３不揮発性ストレージユニットに前記構築された第３データユニットを伝送することに先立って前記第５伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第５データユニットを使用すべく構成される
請求項３１に記載のシステム。
【請求項４１】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも１つは、さらに、
前記ストライプ内に記憶される新データである１つの第４データユニットを、前記ロジックエンジンに伝送すべく構成され、前記第１データユニットは前記ストライプにおいて前記新データによって置き換えられる旧データであり、前記第２データユニットは前記ストライプにおいて置き換えられる旧パリティデータであり、
前記ロジックエンジンにおいて前記第３データユニットを構築するための前記複数の機械可読命令は、前記ロジックエンジンに伝送された前記新データを用いてパリティデータの１つの置き換えユニットを構築するための、前記ストレージメディアに記憶された複数の機械可読命令を持ち、
前記ストレージメディアは、
新パリティデータである前記第３ユニットを前記第２不揮発性ストレージユニットに伝送して旧パリティデータである前記第２ユニットを置き換えるための記憶された複数の機械可読命令をさらに含む
請求項３０に記載のシステム。
【請求項４２】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも１つは、さらに、前記構築された第３データユニットを、第３伝送オペレーションにおいて１つのホストに伝送すべく構成される
請求項３０に記載のシステム。
【請求項４３】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも１つは、さらに、前記第１及び第２データユニットが前記第１及び第２不揮発性ストレージユニットから、少なくとも部分的にパラレルにアクセスされるよう、前記第１及び第２不揮発性ストレージユニットに複数の読み込みコマンドを発行すべく構成される
請求項３０に記載のシステム。
【請求項４４】
複数の不揮発性ストレージユニットを備える１つのデータストレージとともに使用される１つのデバイスであって、
前記データストレージへの入力／出力（Ｉ／Ｏ）アクセスを管理するべく構成され、１つのキャッシュメモリ及び１つのロジックエンジンを有する１つのデータストレージプロセッサ
を備え、
前記ストレージプロセッサはさらに、
１つの第１不揮発性ストレージユニットから、前記ストレージプロセッサの前記ロジックエンジンに、前記キャッシュメモリをバイパスする第１伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる１つのストライプ内に記憶された１つの第１データユニットを伝送し、
前記キャッシュメモリをバイパスする第２伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの１つの第２不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された１つの第２データユニットを伝送し、
前記第１伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第１データユニット及び前記第２伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第２データユニットを用いて、前記ロジックエンジンにおいて１つの第３データユニットを構築すべく構成される
デバイス。
【請求項４５】
前記デバイスは、第３伝送オペレーションにおいて、前記構築された第３データユニットを、前記複数の不揮発性ストレージユニットのうちの１つの第３不揮発性ストレージユニットに伝送し、前記構築された第３データユニットを前記ストライプに記憶すべく構成される
請求項４４に記載のデバイス。
【請求項４６】
前記第３伝送オペレーションは前記キャッシュメモリをバイパスする
請求項４５に記載のデバイス。
【請求項４７】
それぞれの不揮発性ストレージユニットは１つのディスクドライブであり、
前記複数の不揮発性ストレージユニットは、１つの独立ディスク冗長アレイ（ＲＡＩＤ）構成で配置され、
前記ストライプは、１つのパリティデータブロックを有する１つの独立ディスク冗長アレイ（ＲＡＩＤ）ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ（ＲＡＩＤ）ストライプの１つのデータブロックである
請求項４５に記載のデバイス。
【請求項４８】
前記ロジックエンジンは、前記独立ディスク冗長アレイ（ＲＡＩＤ）ストライプからの１つのデータブロックを記憶することができる１つのストアキューを有し、
前記ロジックエンジンの前記キャッシュメモリは１つのランダムアクセスメモリであり、
前記ロジックエンジンにおいて１つの第３データユニットを構築すべく、前記ストレージプロセッサは、前記第１伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第１データユニットを前記ロジックエンジンの１つのストアキューに適用し、前記第１ストアキューの内容及び前記適用された第１データユニットに１つの排他的論理和論理ファンクションオペレーションを実行し、前記第２伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第２データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第２データユニットに１つの排他的論理和論理ファンクションオペレーションを実行すべく構成される
請求項４７に記載のデバイス。
【請求項４９】
前記構築された第３データユニットを、第３伝送オペレーションにおいて１つのホストに伝送すべく構成される
請求項４４に記載のデバイス。
【請求項５０】
前記ストレージプロセッサは、さらに、前記ストレージプロセッサは、前記第１及び第２データユニットが前記第１及び第２不揮発性ストレージユニットから、少なくとも部分的にパラレルにアクセスされるよう、前記第１及び第２不揮発性ストレージユニットに複数の読み込みコマンドを発行すべく構成される
請求項４４に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、ＲＡＩＤシステムのような、データ組織化の１つのシステムにおいてデータを管理するための方法、システム、及びプログラムに関する。
【背景技術】
【０００２】
ディスクドライブのようなデータ記憶デバイスに記憶されるデータを組織化するために様々な技術が提案されている。そのようなデータ記憶構成の１つは、独立（又は廉価）ディスク冗長アレイすなわち（ＲＡＩＤ）と呼ばれる。ＲＡＩＤ組織化においては、２以上のディスクドライブが、耐障害性又はパフォーマンス、或いはその両方を向上させるべく組み合わせて使用される。異なる複数のタイプのＲＡＩＤデータストレージ構成が存在しており、これらの異なる複数のタイプはしばしばＲＡＩＤレベル０、１、２、・・・と呼ばれる。
【０００３】
ＲＡＩＤレベル０のデータ構成においては、例えば、１つのユーザファイルのデータは"ストライプ"すなわちユーザデータの複数のブロックがパフォーマンスを向上させるべく複数のディスクにわたって分散される。しかしながら、ＲＡＩＤレベル０のデータ構成においては、一般的に、もしドライブのうちの１つが機能しなくなった場合にデータのリカバリのために提供される冗長性は存在しない。ＲＡＩＤレベル３のデータ構成は、ＲＡＩＤレベル０に似ているが、１つのディスクは典型的にはエラー訂正データを記憶するためにリザーブされ、エラー訂正データはしばしば"パリティデータと呼ばれる。このパリティデータは、もしドライブのうちの１つが機能しなくなった場合に失われたデータ再構築するために使用され得る。ＲＡＩＤレベル５のデータ構成においては、ディスクドライブアレイにわたるデータストライプのそれぞれについてパリティデータが提供され、パリティデータを記憶することに個別のディスクドライブは供されない。代わりに、パフォーマンスを向上させるべく、ユーザデータの複数のストライプのためのパリティデータの複数のブロックが、全てのディスクアレイにわたって分散される。
【０００４】
１つのＲＡＩＤ５構成において、ディスクドライブアレイにわたるデータストライプのそれぞれについてパリティデータの１つのブロックが存在する。そのような配置は、１つのドライブが機能しなくなった場合にデータの容易な再構築を提供する。例えば、１つのデータストライプが４個のデータブロック及び１つのパリティデータブロックを含んでいる場合、ストライプの複数のブロックのうちの１つが、ドライブ傷害、データ破壊、またはほかのタイプの障害により失われた場合には、失われたブロックはストライプの残存している４個のブロックを用いて再構築される。
【０００５】
図１は、失われたデータを再構築すべく実行され得る論理オペレーションの従来技術の一例を示す。データの１つのストライプｎが４個のデータブロック及び１つのパリティデータブロックを持ち、ストライプｎからの１つのブロックのデータが失われた場合に、失われたデータは、３つの正常なデータブロックからの正常なデータの１つのサブブロック及びストライプｎの正常なパリティブロックからの正常なパリティデータの１つのサブブロックを用いて、再構築され得る。したがって、図１の例において、ストライプｎからの１つの正常なデータブロックからの正常なデータの１つの第１サブブロック３０、及び、ストライプｎからの１つの正常な第２のデータブロックからの正常なデータの１つの第２サブブロック３２について、排他的論理和ファンクションが実行される。排他的論理和論理オペレーションの結果は、ストライプｎからの正常な１つの第３データブロックからの正常なデータの他の１つのサブブロック３３と排他的論理和がとられる。失われたデータのサブブロックを置き換えるためのデータの１つのサブブロック３６を再構築すべく、その排他的論理和論理オペレーションの結果が、ストライプｎからの正常なパリティブロックからの正常なパリティデータの１つのサブブロック３４と排他的論理和がとられる。１つのストライプからデータブロック全体が失われた場合、ブロックの全体は、ブロックのそれぞれのサブブロックについて図１のオペレーションを繰り返して再構築され得る。
【０００６】
図２は、図１の論理ファンクションに従う、複数のＲＡＩＤストレージユニットの失われたデータを再構築するための、１つのＲＡＩＤストレージプロセッサのロジックエンジン５０の従来技術の一例を示す。ロジックエンジン５０は、矢印５４によって表されるようなストアキュー５２の内容及び矢印５６によって表されるような入力に存在するデータについて排他的論理和論理ファンクションを実行することができる１つのストアキュー５２を有する。Ｉｎｔｅｌ８０３０３集積回路チップは、アプリケーションアクセラレータユニット（ＡＡＵ）と呼ばれる１つの類似のロジックエンジンを持つ。
【０００７】
データの再構築におけるロジックエンジン５０を使用したデータの読み込み及び読み込まれたデータの処理のオペレーションが図３に表される。  ストアキュー５２をリセット（ブロック６０）すると、第１読み込みオペレーション６３（図２）において１つのＲＡＩＤアレイ６６の１つのディスクドライブ６４ａの１つのストライプｎから正常なデータの１つのブロックが、１つのストレージプロセッサ又はコントローラの１つのローカルメモリ６８に読み込まれる（プロセスブロック６２）。第２読み込みオペレーション７０において、ＲＡＩＤアレイ６６の１つのディスクドライブ６４ｂのストライプｎから正常なデータの他の１つのブロックが、１つのストレージプロセッサ又はコントローラのローカルメモリ６８に読み込まれる（プロセスブロック６２）。第３読み込みオペレーション７２において、ＲＡＩＤアレイ６６の１つのディスクドライブ６４ｃのストライプｎから正常なデータの１つの第３ブロックが、ローカルメモリ６８に読み込まれる（プロセスブロック６２）。第４読み込みオペレーション７４において、ＲＡＩＤアレイ６６の１つのディスクドライブ６４ｅのストライプｎから正常なパリティデータの１つのブロックが、ローカルメモリ６８に読み込まれる（プロセスブロック６２）。
【０００８】
全ての正常な複数のデータブロック及びパリティデータがストライプからひとたび読み込まれると（プロセスブロック８０）、第５読み込みオペレーション８４の一部において、ディスクドライブ６４ａから読み込まれたデータの１つのサブブロックが、ローカルメモリ６８から読み込まれ（プロセスブロック８２）、ストアキュー５２内に記憶される。このデータは、例えば図１のデータ３０のサブブロックであってよい。ストアキュー５２は予めリセットされたので、ドライブ６４ａに由来するデータ３０が、ローカルメモリ６８から読み込まれたデータ３０とストアキュー５２のリセット内容との排他的論理和ファンクションを実行することによってストアキュー５２内に記憶され得る。ローカルメモリ６８からロジックエンジン５０への読み込みオペレーションのサイズは、典型的にはストアキュー５２の容量に依存する。したがって、例えばストアキュー５２の容量が１Ｋバイトである場合、読み込みオペレーションはストアキュー５２が１Ｋバイトのデータ３０で満たされるまで継続する。
【０００９】
ストライプｎからの次のデータブロックの１つのサブブロック、すなわち、ディスクドライブ６４ｂから読み込まれたデータブロックの１つのサブブロックが、第６読み込みオペレーション９０の一部において、ローカルメモリ６８から読み込まれる（プロセスブロック８６）。このデータは、例えば図１のデータのサブブロック３２であってよい。ドライブ６４ｂから読み込まれたデータブロックからのデータのサブブロック３２は、ストアキュー５２内に予め記憶されたデータのサブブロック３０と排他的論理和がとられ、１つの中間結果としてストアキュー５２内に記憶される。
【００１０】
ストライプｎからの次のデータブロックの１つのサブブロック３３（図１）、すなわち、ディスクドライブ６４ｃから読み込まれたデータブロックの１つのサブブロックが、第７読み込みオペレーション９２の一部として、ローカルメモリ６８から読み込まれる（プロセスブロック８６）。ドライブ６４ｃから読み込まれたデータブロックからのデータのサブブロック３３は、ストアキュー５２の内容と排他的論理和がとられ（プロセスブロック８８）、ストアキュー５２内に１つの中間結果として記憶される。
【００１１】
ストライプｎからの次のデータブロックの１つのサブブロック３３（図１）、すなわち、ディスクドライブ６４ｅから読み込まれたデータブロックの１つのサブブロックが、第８読み込みオペレーション９４の一部として、ローカルメモリ６８から読み込まれる（プロセスブロック８６）。ドライブ６４ｅから読み込まれたパリティブロックからのパリティデータのサブブロック３４は、ストアキュー５２の内容と排他的論理和がとられ（プロセスブロック８８）、ストアキュー５２内に１つの中間結果として記憶される。
【００１２】
ストライプｎのデータ及びパリティの正常な複数のブロックの、対応する複数のサブブロックの全てがひとたび受け取られて処理されると（プロセスブロック９５）、ストアキュー５２内に記憶された中間結果は、ストライプｎの再構築されたサブブロック３６であり、書き込みオペレーション９６の一部においてローカルメモリ６８に書き込まれ（プロセスブロック９６）、失われたサブブロックを置き換えるために続く書き込みオペレーション９７においてディスクドライブ６４ｄに書き込まれる。
【００１３】
図３のプロセスは、全てのサブブロックが受け取られ（プロセスブロック９８）、必要であればストライプｎのブロック全体が再構築されるロジックエンジン５０によって処理されるまで、ストライプｎの複数のブロックのサブブロックのそれぞれについて反復される。さらに、例えばドライブ６４ｄの全データが失われた場合、損害を受けたディスクドライブ６４ｄの全てのブロックが再構築されるまで、ディスクドライブアレイ６６のストライプのそれぞれについてこのプロセスが繰り返される。ＲＡＩＤタイプのデータ構成において旧データを新データで更新するときに新パリティデータを構築するプロセスは似ている。
【００１４】
それにもかかわらず、データストレージ組織化におけるプロセッサのパフォーマンスを向上させるために、継続的な技術的必要性が存在する。
【図面の簡単な説明】
【００１５】
同様の参照番号が全体にわたって対応する構成要素を表す図面を参照する。
【図１】ＲＡＩＤデータの再構築の従来技術を示す。
【図２】ＲＡＩＤデータの再構築のためのロジックエンジンの従来技術を示す。
【図３】図２のロジックエンジンの従来技術を用いてデータを再構築するオペレーションの従来技術を示す。
【図４】データ構成の複数の態様が実装されたコンピューティング環境の一実施形態を示す。
【図５】データ構成の複数の態様が実装されたストレージプロセッサ環境の一実施形態を示す。
【図６】データ構成の複数の態様に従う、図５のストレージプロセッサのためのロジックエンジンの一実施形態を示す。
【図７】データを再構築すべく実行されるオペレーションの一実施形態を示す。
【図８】１つのデータブロックを再構築するために使用される複数のデータブロックを示す。
【図９】データを再構築するために実行される複数のオペレーションの他の実施形態を示す。
【図１０】パリティデータを構築するために実行されるオペレーションの他の実施形態を示す。
【図１１】説明された実施形態で使用され得る一アーキテクチャを示す。
【発明を実施するための最良の形態】
【００１６】
以下の説明において、この文書の一部を形成し、いくつかの実施形態を示す添付の図面に対して参照がなされる。他の実施形態が利用されてよく、構造的又は機能的変更がなされてよいことが理解される。
【００１７】
図４は、データ構成の複数の態様が実装された１つのコンピューティング環境を示す。  １つのコンピュータ１０２は、１以上の中央処理装置（ＣＰＵ１０４（１つだけ図示される）、１つのメモリ１０６、不揮発性ストレージ１０８、１つのストレージプロセッサ１０９、１つのオペレーティングシステム１１０、及び１つのネットワークアダプタ１１２を備える。さらに、アプリケーションプログラム１１４は、メモリ内で実行され、ストレージ１０８からデータを読み込み、ストレージ１０８にデータを書き込むことができる。  コンピュータ１０２は、メインフレーム、サーバ、パーソナルコンピュータ、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、テレフォニーデバイス、ネットワークアプライアンス、仮想化デバイス、ストレージプロセッサ、ストレージコントローラ等のような、技術的に知られた任意のコンピューティングデバイスを含んでよい。技術的に知られた任意のＣＰＵ１０４及びオペレーティングシステム１１０が使用されてよい。メモリ管理オペレーションの一環として、メモリ１０６内の複数のプログラム及びデータはストレージ１０８にスワップされてよい。コンピュータ１０２は、ネットワークアダプタ１１２を介してネットワーク１１８と通信することができる。
【００１８】
デバイスドライバ１２０は、メモリ１０６内で実行され、ストレージプロセッサ１０９と通信し、オペレーティングシステム１１０とストレージデバイス１０９との間を仲介するためのストレージプロセッサ特有の複数のコマンドを有する。ストレージ１０８は、例えばディスクドライブ１５０ａ、１５０ｂ、・・・、１５０ｎである、データの再構築を可能にする１つの組織化タイプでデータが記録される複数のストレージユニットを有する。図示された実施形態において、ディスクドライブ１５０ａ、１５０ｂ、・・・、１５０ｎは、１つのＲＡＩＤアレイ１５１に組織化される。
【００１９】
いくつかの実施形態において、ストレージプロセッサ１０９は、ストレージ１０８からのデータの読み込み又はストレージ１０８へのデータの書き込みにおいてコンピュータ１０２をアシストするためのいくつかの機能を実行する。例えば、ストレージプロセッサ１０９は、コンピュータ１０２からのＬＢＡアドレスを、ディスクドライブ１５０ａ、１５０ｂ、・・・、１５０ｎのシリンダ、ヘッド、及びセクタ指定に変換するための、ソフトウェア、ファームウェア、又はハードウェア、或いはこれらの組合せを有してよい。さらに、ストレージプロセッサ１０９は、ドライブ障害又は他のデータロスが発生した場合のデータの再構築を管理するデータコンストラクションマネージャ１３０を有してよい。さらに、データコンストラクションマネージャ１３０は、旧データが新データに更新された場合の新パリティデータの構築を管理することができる。
【００２０】
適切なストレージプロセッサ１０９の一例が図５に示される。ストレージプロセッサ１０９は、ホストコンピュータ１０２とストレージ１０８との間での大量のデータの高速移動を促進する。ストレージプロセッサ１０９は、ホストコンピュータ１０２の１つのプライマリバス１６２とストレージ１０８の１つのストレージコントローラ１６６に結合された１つのセカンダリバス１６４との間の１つのブリッジ１６０を有する。ブリッジ１６０は、例えばシリアルアドバンスドテクノロジアタッチメント（ＳＡＴＡ）コントローラであり得るストレージコントローラ１６６が、プライマリバス１６２から物理的に分離されることを可能にする。コントローラ１６６は、ストレージプロセッサ１０９をストレージ１０８に接続するストレージインタフェースに、コンピュータ情報をコンバートしてもよい。ストレージコントローラ１６６がストレージプロセッサ１０９の一部として示されているが、ストレージコントローラ１６６はストレージ１０８の一部又は別個の１つのユニットであってよい。
【００２１】
プライマリアドレス変換ユニット１６８は、プライマリバス１６２から１つのプロセッサユニット１７０及び１つのローカルメモリ１７２への１つのローカルバス１７４を介した１つの高スループットデータパスを提供する。複数のパリティブロックを生成するための排他的論理和演算を提供する１つのロジックエンジン１７６も、ローカルバス１７４に結合されている。セカンダリアドレス変換ユニット１７８は、プロセッサユニット１７０及びローカルメモリ１７２からセカンダリバス１６４への高スループットデータパスを提供する。図示された実施形態において、バス１６２、１６４はＰＣＩバスであるが、他のタイプの周辺バスも使用され得る。
【００２２】
ローカルメモリ１７２は、１つのメモリコントローラ１８０を有する。図示された実施形態において、ローカルメモリ１７２は揮発性のＲＡＭタイプのメモリであり、ディスクドライブ１５０ａ、１５０ｂ、・・・、１５０ｅに転送されている又は受信しているデータをキャッシュするために使用される。他の複数のタイプのメモリも使用され得る。例えば、データ転送の間にストレージプロセッサ１０９又はストレージ１０８の予期しないシャットダウンが生じた場合に不完全な複数のストライプを特定するリカバリ情報をストアするために、不揮発性のフラッシュメモリが使用され得る。ダイレクトメモリアクセス（ＤＭＡ）コントローラ１８２、１８４は、ホストコンピュータ１０２からローカルメモリ１７２及びローカルメモリ１７２からドライブ１５０ａ・・・１５０ｎへの複数のダイレクトメモリ転送を可能にする。
【００２３】
先に説明されたように、いくつかのＲＡＩＤデータ再構築プロセスは、１個のパリティブロックを含む５個のデータブロックを持つ１つのストライプに対して、１つのデータブロックを再構築するために少なくとも８個の読み込みオペレーションを利用する。示された実施形態の一態様に従って、コンストラクショマネージャ１３０は、いくつかの用途において、失われたデータの効率的な再構築又は１つのデータ更新において新パリティデータの効率的な構築を極めて促進する、１つのストレージプロセッサ１０９の１つのロジックエンジン１７６を有する。例えば、１つの用途において、１個のパリティブロックを含む５個のデータブロックを持つ１つのストライプに対して１つのデータブロックを再構築するための読み込みオペレーションの数は、４個の読み込みオペレーションに低減され得る。またさらに、再構築されたブロックを記憶するための書き込みオペレーションの数は、２個の書き込みオペレーションから１つの書き込みオペレーションに低減され得る。
【００２４】
図６は、ストアキュー２００を含むロジックエンジン１７６の一例を概略形式で示す。ストアキュー２００は、矢印２０２によって表されるようなストアキュー２００の内容及び矢印２０４によって表されるような入力に存在しているデータについて排他的論理和論理ファンクションを実行することができる。示された実施形態の一態様に従って、最初にローカルメモリ１７２内にキャッシュされることなく、１つの読み込みオペレーションにおいて、データがディスクドライブ１５０ａ、１５０ｂ・・・１５０ｎのうちの１つから直接読み込まれ、ロジックエンジン１７６において処理される。示された実施形態の他の１つの態様に従って、ストアキュー２００は、一度に全データブロックを受け入れることができる。より詳細に説明されたように、これら及び他の機能の１つ以上は、データ再構築を含むデータ構築を促進することができる。
【００２５】
示された実施形態において、ロジックエンジン１７６は１つのストアキューを含むことが示された。複数のレジスタ並びに他のタイプの論理回路及びメモリを含む他のタイプの回路が使用され得る。
【００２６】
図７は、プロセッサユニット１７０及びロジックエンジン１７６を含むデータコンストラクションマネージャ１３０の、データ再構築におけるオペレーションの一例を示す。本例において、１個のパリティブロックを含む５個のデータブロックを持つデータの１つのストライプｎ（図８）は、５個のディスクドライブ１５０ａ、１５０ｂ、１５０ｃ、１５０ｄ、及び１５０ｅにわたってそれぞれ記憶される。ストライプのデータブロックのそれぞれはディスクドライブ１５０ａ、１５０ｂ・・・１５０ｅのうちの１つに記憶される。また、ディスクドライブ１５０ａ、１５０ｂ・・・１５０ｅのうちの１つ、本例においてディスクドライブ１５０ｄが故障し、それぞれのストライプの複数のデータブロックが失われたか他の場合には損なわれて、再構築される必要がある。
【００２７】
ストアキュー２００をリセットすると（プロセスブロック２６０）、特定のストライプの全ブロックについて読み込みオペレーションが開始される（プロセスブロック２８６）。一態様に従って、全ブロック又はサブブロックは、ストレージ１０８から読み込まれ、以下に説明されるようにパラレルに処理される。したがって、１つのストライプの対応する複数のブロックを読み込むべく、複数の読み込みコマンドがストレージプロセッサ１０９によって全てのディスクドライブ１５０ａ、１５０ｂ・・・１５０ｅに同時に発行される。複数のディスクドライブに発行された複数の読み込みコマンドに応答してディスクドライブ１５０ａ、１５０ｂ・・・１５０ｅのうちの１つから１つのブロック（又はサブブロック）がひとたび一度受け取られると（プロセスブロック２９２）、そのブロックはストアキュー２００（図６）内に記憶され得る。ブロック１を持つディスクドライブが最初に発行された読み込みコマンドに応答した場合、このデータは、例えば図８に示されるようなデータの１つのストライプｎのブロック１であってよい。ストアキュー２００は予めリセットされているので、ドライブ１５０ａから読み込まれたデータのブロック１は、例えば、ドライブ１５０ａから読み込まれたブロック１データ及びストアキュー２００のリセット内容で排他的論理和ファンクション（ブロック２９６）が実行されることによって、ストアキュー２００内に記憶され得る。示された実施形態において、ストアキュー２００の容量は、１つのディスクドライブストライプからのデータブロック全体を収容するのに十分である。したがって、例えば、ストアキュー２００の容量が６４Ｋバイトである場合、それぞれのブロックについての読み込みオペレーションは、ストアキュー２００がブロック１データの全６４Ｋバイトで満たされるまで続けることができる。ストアキュー２００のサイズは、用途に応じて変えられ得ることが理解される。
【００２８】
先に発行された複数の読み込みコマンド（プロセスブロック２８６）に応答して、ブロック２（図８）のようなストライプｎからの他の１つのデータブロックが受信され得る（プロセスブロック２９２）。ドライブ１５０ｂからのデータブロック２は、ストアキュー２００内に予め記憶されたデータブロック１と排他的論理和がとられ（プロセスブロック２９６）、ストアキュー２００内に１つの中間結果として記憶される。
【００２９】
先に発行された複数の読み込みコマンド（プロセスブロック２８６）に応答して、ブロック３（図８）のような、ストライプｎからの他の１つのデータブロックが受信され得る（プロセスブロック２９２）。ドライブ１５０ｃからのデータブロック３は、ストアキュー２００の内容と排他的論理和がとられ（プロセスブロック２９６）、ストアキュー２００内に１つの中間結果として記憶される。
【００３０】
先に発行された複数の読み込みコマンド（プロセスブロック２８６）に応答して、ブロック５（図８）のような、ストライプｎからの他の１つのデータブロックが受信され得る（プロセスブロック２９２）。ドライブ１５０ｄからの（パリティ）データブロック５は、ストアキュー２００の内容と排他的論理和がとられ（プロセスブロック２９６）、ストアキュー２００内に１つの中間結果として記憶される。
【００３１】
ストライプｎの全ての正常な複数のデータブロックが、ディスクドライブ１５０ａ、１５０ｂ・・・１５０ｅからひとたび受信されると（プロセスブロック３０２）、ストアキュー２００内に記憶される中間結果が、ストライプｎの再構築されたブロック４（図８）であり、ストライプｎの失われたブロック４を置き換える第１書き込みオペレーション３０６においてディスクドライブ１５０ｄに書き込まれる（プロセスブロック３０４）。図７のプロセスは、損害を受けた全てのブロック（プロセスブロック３１０）が再構築されるまで、ディスクドライブ１５０ａ、１５０ｂ・・・１５０ｅのアレイ１５１のそれぞれのストライプについて反復される。
【００３２】
図７のプロセスブロック２９２は１つの"ブロック"の受け入れを示すが、ストライプｎの１つのブロックの複数のサブブロックが同時に受信されそして処理される必要がないことが理解されるべきである。代わりに、複数のサブブロックが異なる時刻に受信され、受信したときにストアキュー２００の内容と排他的論理和がとられてよい。したがって、ストライプｎのそれぞれのブロックの複数のサブブロックは、ストアキュー２００によって受け取られて処理されたときに、ストライプＮの他の複数のブロックのサブブロックと混交される。このように、ストレージプロセッサ１０９は、複数の読み込みコマンドをディスクドライブ１５０ａ、１５０ｂ・・・１５０ｅのそれぞれに同時に発行することができ、複数のディスクドライブは要求されたデータに同時に応答することができる。ストライプｎのいくつかのブロックの複数のサブブロックが、それらが複数のディスクドライブからストレージプロセッサ１０９及びストアキュー２００にバス１６４を通じて移動するにつれて共に混ざり合わされることができる。
【００３３】
図９は、デグレードされたデータ読み込みオペレーションにおいて、ストアキュー２００からホストメモリ１０６のようなホスト１０２に再構築されたデータが直接書き込まれる、コンストラクションマネージャ１３０のオペレーションの他の１つの実施形態を示す。本実施形態において、コンストラクションマネージャ１３０は、例えば１つのＤＭＡ書き込みオペレーション３５０においてストアキュー２００からホストメモリ１０６への再構築されたデータのダイレクトメモリ転送を可能にする、ストレージプロセッサ１０９における１つのＤＭＡファンクションを含む。ＤＭＡコントローラは例えば、図５のＤＭＡコントローラ１８２であってよく、用途に応じてロジックエンジン１７６又はその他の回路内に実装されてよい。
【００３４】
図１０は、旧データを新データで更新するときに旧パリティデータを置き換えるべく新パリティデータが構築される、コンストラクションマネージャ１３０のオペレーションの他の１つの実施形態を示す。ストアキュー２００をリセットすると、第１読み込みオペレーションにおいて、１つのストライプｎについての新データの１つのブロックがホスト１０２から読み込まれ、ストアキュー２００内に記憶される。前述のように一実施形態において、このデータ伝送は１つのＤＭＡ転送として達成されてよい。第１書き込みオペレーション４０２において、新データはストアキュー２００からローカルメモリ１７２に伝送されてもよい。旧データは、第２読み込みオペレーション４０４において、ディスクドライブ１５０ａのような１つのディスクドライブから伝送されてよい。ドライブ１５０ａからの旧データのブロックは、ストアキュー２００内に予め記憶された新データのブロックと排他的論理和がとられ、１つの中間結果としてストアキュー２００内に記憶される。
【００３５】
次のブロック、すなわちストライプｎの旧パリティデータのブロックは、第３読み込みオペレーション４０６において、ディスクドライブ１５０ｂのような１つのディスクドライブから読み込まれる。ドライブ１５０ｂからの旧パリティデータのブロックは、ストアキュー２００の内容と排他的論理和がとられ、１つの中間結果としてストアキュー２００内に記憶される。
【００３６】
ストライプｎの旧データ及び旧パリティデータの複数のブロック及びストライプｎについての新データが、それぞれディスクドライブ１５０ａ、１５０ｂ、及びホスト１０２からひとたび受信されると、ストアキュー２００内に記憶された中間結果がストライプｎについての新パリティデータのブロックであり、ストライプｎについての旧パリティデータを置き換えるべく第２書き込みオペレーション４０８においてディスクドライブ１５０ｂに書き込まれる。加えて、新データが、第３書き込みオペレーション４１０において旧データを置き換えるべく、ローカルメモリ１７２からディスクドライブ１５０ａに書き込まれる。前述のように１つのデータ更新オペレーションにおいて読み込み及び書き込みオペレーションの数が著しく削減され得ることが理解される。
【００３７】
繰り返すと、他の態様に従って、全てのブロック又はサブブロックは、ストレージ１０８及びホストメモリ１０６から読み込まれ、パラレルに処理されてよい。したがって、１つのストライプの対応する複数のブロックを読み込むことを目的として、複数の読み込みコマンドがストレージプロセッサ１０９によってホストメモリ及び全てのディスクドライブ１５０ａ、１５０ｂ・・・１５０ｅに同時に発行されることができる。
追加の実施形態の詳細
【００３８】
データ構築を管理するための説明された技術は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせを作り出す広く使われているプログラムミング及び／又はエンジニアリング技術を用いて、１つの方法、装置、又は製品として実装され得る。ここで使用される"製品"という用語は、ハードウェアロジック（集積回路チップ、プログラママブルゲートアレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）等）或いは磁気ストレージ媒体（例えば、複数のハードディスクドライブ、複数のフレキシブルディスク、テープ等）、光学ストレージ（複数のＣＤ−ＲＯＭ、複数の光ディスク等）、揮発性及び不揮発性メモリデバイス（例えば、複数のＥＥＰＲＯＭ、複数のＲＯＭ、複数のＰＲＯＭ、複数のＲＡＭ、複数のＤＲＡＭ、複数のＳＲＡＭ、ファームウェア、プログラマブルロジック等）のような１つのコンピュータ可読メディアに実装されたコード又は論理を意味する。コンピュータ可読メディア内のコードは、１つのプロセッサによってアクセスされて実行される。好ましい実施形態が実装されたコードはさらに、１つの伝送メディアを通じて又は１つのネットワークをわたって１つのファイルサーバからアクセス可能であってよい。そのようなケースにおいて、コードが実装された製品は、１つのネットワーク伝送線、ワイヤレス伝送媒体、空間を伝搬する信号、無線波、赤外線信号等のような伝送メディアを備えてよい。したがって、"製品"は、コードが組み込まれたメディアを備えてよい。さらに、"製品"は、コードが組み込まれ、処理され、実行される、ハードウェア及びソフトウェアコンポーネントの１つの組み合わせを備えてよい。勿論、当業者は、多くの変形が本構成になされてよく、製品は、当業者に知られた情報を持つ任意の媒体を備えるということを理解するだろう。
【００３９】
ロジックエンジンが排他的論理和オペレーションを実行するための１つのストアキュー又はレジスタを持つとして説明された。しかし、本出願の代理人にアサインされ、２００３年１２月２９日に出願された、代理人番号Ｐ１７７２９の" METHOD, SYSTEM, AND PROGRAM FOR GENERATING PARITY DATA"というタイトルの同時継続中の出願に記載されるように、特に複数のパリティブロックを有するデータ構成のために、ロジックエンジンは複数のストアキュー又はレジスタを持ってよいことが理解される。
【００４０】
いくつかの実施形態において、ストレージプロセッサ１０９は、データの構築及び再構築を管理するデータコンストラクションマネージャ１３０を有してよい。ストレージプロセッサ１０９は、これら及び他の機能を実行するための、ソフトウェア、ファームウェア、又はハードウェア、或いはそれらの組合せを有してよい。例えば、一実施形態において、プロセッサ１７０及びロジックエンジン１７６は、ホストプロセッサから独立した１つのストレージプロセッサ１０９内のハードウェアに実装されてよい。他の実施形態において、データコンストラクションマネージャは、ド複数のライバ、１つのオペレーティングシステム又は１つのアプリケーション、或いはこれらの組み合わせを含むホストソフトウェアに実装されてよい。
【００４１】
いくつかの実施形態において、１つのコンピュータシステムは、１つのドライバ、及び、シリアルアドバンスドテクノロジアタッチメント（ＳＡＴＡ）、シリアルアタッチドＳＣＳＩ（ＳＡＳ）、独立ディスク冗長アレイ（ＲＡＩＤ）等、１つの磁気ディスクドライブ、テープ媒体、光ディスク等のような１つの不揮発ストレージデバイスへのアクセスを管理するコントローラのような、１つのストレージコントローラを備えてよい。他の実装において、ストレージコントローラの実施形態は、１つのドライバを含まない１つのシステム内に含まれてよい。デバイス及びエキスパンダのためのＳＡＳアーキテクチャについてのさらなる詳細は、参照番号ＩＳＯ／ＩＥＣ  １４７７６−１５０：２００ｘの技術規格書" Information Technology - Serial Attached SCSI (SAS)"及びＡＮＳＩによって発表されたＡＮＳＩ  ＩＮＣＩＴＳ．＊＊＊：２００ｘ  ＰＨＹレイヤ（２００３年７月９日）に記載されている。ＳＡＴＡアーキテクチャについての詳細は、技術規格書"Serial ATA: High Speed Serialized AT Attachment"リビジョン１．０Ａ（２００３年１月）に記載されている。
【００４２】
ロジックエンジンが全データブロックを受信して処理するとして説明されたが、一度に１つのブロックの一部又は複数のブロックが受信して処理され得る。さらに、ロジックエンジンが１つのディスクドライブのような１つの不揮発性ストレージユニットから直接データを受信するとして説明されたが、いくつかの実施形態においてデータはＲＡＭメモリのような揮発性メモリからロジックエンジンに伝送され得る。
【００４３】
いくつかの実施形態において、デバイスドライバ及びストレージプロセッサの実施形態は、デスクトップ、ワークステーション、サーバ、メインフレーム、ラップトップ、ハンドヘルドコンピュータ等のような、デバイスドライバ及びネットワークアダプタを含むコンピュータシステムに結合された１つのモニタ上に表示する情報をレンダリングする１つのビデオコントローラを含む１つのコンピュータシステム内に実装されてよい。他にも、ストレージプロセッサ及びデバイスドライバの実施形態は、ビデオコントローラを含まない１つのコンピューティングデバイスに実装されてよい。
【００４４】
いくつかの実施形態において、ネットワークアダプタは、ネットワークアダプタ上の１つのポートに接続された１つのケーブルをわたってデータを伝送すべく構成されてよい。他にも、ネットワークアダプタの実施形態は、ワイヤレスＬＡＮ、ブルートゥース等のような１つのワイヤレスネットワーク又は接続をわたってデータを伝送すべく構成されてよい。
【００４５】
図７の図示されたロジックは、ある順番で発生するいくつかのイベントを示す。他の実施形態において、いくつかのオペレーションは、異なる順番で、変更又は削除されて、実行されてよい。さらに、複数のオペレーションが前述のロジックに追加されてよく、依然として説明された実施形態に従う。さらに、ここに説明されたオペレーションはシーケンシャルに発生してよいし、いくつかのオペレーションはパラレルに処理されてよい。またさらに、オペレーションは１つのプロセッシングユニット又は分散された複数のプロセッシングユニットによって実行されてよい。
【００４６】
図１１は、図４に示された複数のホスト及び複数のストレージデバイスのような、ネットワークコンポーネントの１つのコンピュータアーキテクチャ５００の１つの実装を示す。アーキテクチャ５００は、１つのプロセッサ５０２（例えば１つのマイクロプロセッサ）、１つのメモリ５０４（例えば１つの揮発性メモリデバイス）、及びストレージ５０６（例えば、複数の磁気ディスクドライブ、複数の光ディスクドライブ、１つのテープドライブ等のような１つの不揮発性ストレージ）を備える。ストレージ５０６は、１つの内部ストレージデバイス又は１つのアタッチされた又はネットワークアクセス可能なストレージを有する。ストレージ５０６内の複数のプログラムは、当業者に知られた方法で、メモリ５０４にロードされてプロセッサ５０２によって実行される。１つのストレージプロセッサ５０７はストレージ５０６をコントロールすることができる。アーキテクチャはさらに、イーサネット（登録商標）、ファイバチャネルアービトレイテッドループ等のような１つのネットワークとの通信を可能にする１つのネットワークアダプタ５０８を備える。ファイバチャネルアーキテクチャの詳細は、ドキュメント番号ＩＳＯ／ＩＥＣ  ＡＷＩ  １４１６５−２５の技術規格書" Fibre Channel Framing and Signaling Interface"に記載されている。
【００４７】
さらに、アーキテクチャは、いくつかの実施形態において、ディスプレイモニタ上に情報をレンダリングする１つのビデオコントローラ５０９を備えてよい。ビデオコントローラ５０９は１つのビデオカード上に実装されてよく、或いはマザーボード上に実装された集積回路部品に集積されてよい。議論されたように、ネットワークデバイスのいくつかは、複数のストレージカード又は複数のコントローラを有してよい。１つの入力デバイス５１０は、ユーザ入力をプロセッサ５０２に供給するために使用され、１つのキーボード、マウス、ペンスタイラス、マイクロホン、タッチディスプレイスクリーン、或いは当業者に知られた任意のアクチベーション又は入力メカニズムを有してよい。出力デバイス５１２は、ディスプレイモニタ、プリンタ、ストレージ等のような、プロセッサ５０２から伝送される情報をレンダリングすることができ、又は他のコンポーネントである。
【００４８】
ストレージプロセッサ５０６及びネットワークアダプタ５０８は、１つのペリフェラルコンポーネントインターコネクト（ＰＣＩ）カード又はいくつかの他のＩ／Ｏカードのようなカード上、或いはマザーボード上に実装された集積回路コンポーネント上に、それぞれ実装されてよい。ＰＣＩアーキテクチャについての詳細は、ＰＣＩ−ＳＩＧによって発表された" PCI Local Bus, Rev. 2.3"に記載されている。
【００４９】
前述の様々な実施形態が、実例及び説明を目的として提示された。上の仕様、例及びデータは、構成の製作及び使用の１つの包括的な説明を提供する。完全であること又は開示された厳密な形に限定することが意図されていない。多くの変更及び変形が上の教示を考慮に入れると可能である。
【図１】
2007513435.tif 000002
【図２】
2007513435.tif 000003
【図３】
2007513435.tif 000004
【図４】
2007513435.tif 000005
【図５】
2007513435.tif 000006
【図６】
2007513435.tif 000007
【図７】
2007513435.tif 000008
【図８】
2007513435.tif 000009
【図９】
2007513435.tif 000010
【図１０】
2007513435.tif 000011
【図１１】
2007513435.tif 000012
【国際調査報告】
2007513435.tif 000013
2007513435.tif 000014
2007513435.tif 000015