(57)【要約】【課題】  ＲＡＩＤ技術は、データがブロックベースの代わりにオブジェクトベースでストレージ装置（例えば磁気ディスク）に格納されるケースに有効には適用されていなかった。【解決手段】  オブジェクトベースでデータを格納するストレージシステムに対する装置と方法であり、ここでオブジェクトは属性情報とデータを有する。ストレージシステムは複数（Ｎ個）のデータストレージ装置と少なくとも一つの冗長データストレージ装置を有する。ストレージシステムがオブジェクトを有する書き込み要求を受信すると、オブジェクトはＮ個の同じサイズのサブオブジェクトに分割される。その後で、Ｎ個のサブオブジェクトのそれぞれはデータストレージ装置に書き込まれる。さらに、パリティはサブオブジェクトのそれぞれから計算される。一つの実施例において、パリティは冗長データストレージ装置に格納される。【選択図】  図１
2006178926.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理装置と、
各々が、前記複数の物理装置の一つ以上の少なくとも一部分に対応する複数の論理装置と、
を備え、
オブジェクトが、論理オブジェクトとしてオブジェクトベースの形式で前記一つの論理装置に格納される時に、前記のオブジェクトがサブオブジェクトに分割され、各サブオブジェクトが前記の複数の物理装置に格納され、
パリティビットが前記のサブオブジェクトに対して計算される、
ことを特徴とするストレージシステム。
【請求項２】
前記の論理オブジェクトがオブジェクトＩＤを有する属性情報とデータを含み、
前記の論理オブジェクトの前記のオブジェクトＩＤが、前記の論理装置の対応する物理的部分に対する前記のオブジェクトＩＤと同じである、
ことを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記のストレージシステムが分割され、
論理装置のパーティションＩＤを示す第一のテーブルが備えられ、前記の論理装置の前記のパーティションＩＤとオブジェクトＩＤに対応する前記の物理装置を示す第二のテーブルが備えられる、
ことを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記の複数の物理装置に格納される前記のデータのストライプサイズが前記のオブジェクトのサイズで決定されることを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記のデータの前記のストライプサイズが、前記のオブジェクトを前記の各物理装置に対して等しい部分に分割することによって決定されることを特徴とする請求項４に記載のストレージシステム。
【請求項６】
データが前記のサブオブジェクトのいずれかの中で更新される時には、対応するパリティビットも更新されなければならないことを特徴とする請求項１に記載のストレージシステム。
【請求項７】
データが前記のサブオブジェクトに付加される時には、新しいパリティビットが排他的オア（ＸＯＲ）機能を使用して計算されなければならないことを特徴とする請求項１に記載のストレージシステム。
【請求項８】
付加されるデータの量が、前記の複数の物理装置の一つが付加データをなにも有してないような場合に、前記の新しいパリティビットが、前記の複数の物理装置の前記の一つの未使用部分を考慮しないで、前記のパリティビットに対応する付加データに対して計算されることを特徴とする請求項７に記載のストレージシステム。
【請求項９】
データが前記の複数の物理装置の前記の一つの前記の未使用部分に付加される時に、新しいパリティビットが、以前のパリティビットを以前には未使用だった部分に付加されるデータと排他的オア（ＸＯＲ）することによって計算されることを特徴とする請求項８に記載のストレージシステム。
【請求項１０】
前記の属性情報は鎖状データを形成するために書き込みデータと鎖状に繋がれ、前記のストライプサイズは、前記の物理ストレージ装置の数で鎖状データを割ることによって決定されることを特徴とする請求項１に記載のストレージシステム。
【請求項１１】
属性情報とデータを有するオブジェクトを特定するステップと、
前記のオブジェクトを複数のサブオブジェクトに分割するステップと、
論理ストレージ装置に対応する複数の物理ストレージ装置に前記の複数のサブオブジェクトを格納するステップと、
前記のサブオブジェクトに対して対応するパリティビットを計算するステップと、
から成ることを特徴とする、ＲＡＩＤ構成を有するストレージシステムにオブジェクトベースのデータを格納する方法。
【請求項１２】
前記の複数の物理ストレージ装置を分割するステップと、
テーブル内の前記の論理ストレージ装置に対してパーティションＩＤを格納することによって、前記の論理ストレージ装置に対応する前記の物理ストレージ装置を特定するテーブルを備えるステップと、
をさらに有することを特徴とする請求項１１に記載の方法。
【請求項１３】
データが前記のサブオブジェクトのいずれかの中で更新される時には、対応するパリティビットを更新するステップをさらに有することを特徴とする請求項１１に記載の方法。
【請求項１４】
データが前記のサブオブジェクトに付加される時には、排他的オア（ＸＯＲ）機能を使用して新しいパリティビットを計算するステップをさらに有することを特徴とする請求項１１に記載の方法。
【請求項１５】
付加されるデータの量が、前記の複数の物理装置の一つが付加データをなにも有しないような場合に、前記の複数の物理装置の前記の一つの未使用部分を考慮しないで、新しいパリティビットに対応する前記の付加データに対して新しいパリティビットを計算するステップをさらに有することを特徴とする請求項１４に記載の方法。
【請求項１６】
前記の属性情報と前記のデータの両方が、パリティビットが計算される前に、分割され前記の複数の物理ストレージ装置に格納されることを特徴とする請求項１１に記載の方法。
【請求項１７】
前記の属性情報が鎖状データを形成するために前記のデータに鎖状に繋がれ、この鎖状データがストライプサイズを決定するために前記の物理ストレージ装置の数で割られることを特徴とする請求項１１に記載の方法。
【請求項１８】
データおよび対応する属性情報が分散形式で格納される複数のオブジェクトベースのストレージ装置（ＯＳＤ）を有するシステムにおいて、
ストレージに対するオブジェクトを特定するステップと、
前記のオブジェクトをサブオブジェクトに分割し、前記のサブオブジェクトを前記のＯＳＤに格納するステップと、
前記のサブオブジェクトの各グループに対してパリティビットを決定するステップと、
から成ることを特徴とする、データと属性情報に対するパリティ情報を計算する方法。
【請求項１９】
データを格納する手段と、
オブジェクトベースの形式でデータを格納するためにデータを格納する前記の手段を制御し、格納する前記の手段を通してデータとその対応する属性情報を分割し分散する手段と、
パリティ情報を格納する手段と、
を備えることを特徴とする、ＲＡＩＤ構成を有するストレージシステム。
【請求項２０】
複数の論理装置としてホストによってアクセス可能な複数の物理装置と、
前記の複数の物理装置へのデータの転送を制御するディスクコントローラと
を備え、
オブジェクトが論理オブジェクトとしてオブジェクトベースの形式で論理装置に格納される時に、前記のオブジェクトがサブオブジェクトに分割され、各サブオブジェクトが前記の複数の物理装置に格納され、
パリティビットが前記のサブオブジェクトに対して計算される、
ことを特徴とするストレージシステム。
【請求項２１】
前記の論理オブジェクトがオブジェクトＩＤを含む属性情報とデータを含み、
前記の論理オブジェクトの前記のオブジェクトＩＤが、前記の論理装置の対応する物理的部分に対する前記のオブジェクトＩＤと同じである、
ことを特徴とする請求項２０に記載のストレージシステム。
【請求項２２】
前記のストレージシステムが分割され、
論理装置のパーティションＩＤを示す第一のテーブルが備えられ、前記の論理装置の前記のパーティションＩＤとオブジェクトＩＤに対応する前記の物理装置を示す第二のテーブルが備えられる、
ことを特徴とする請求項２０に記載のストレージシステム
【請求項２３】
前記の複数の物理装置に格納される前記のデータのストライプサイズが前記のオブジェクトのサイズで決定されることを特徴とする請求項２０に記載のストレージシステム。
【請求項２４】
前記のデータの前記のストライプサイズが、前記のオブジェクトを前記の各物理装置に対して等しい部分に分割することによって決定されることを特徴とする請求項２３に記載のストレージシステム。
【請求項２５】
データが前記のサブオブジェクトのいずれかの中で更新される時には、対応するパリティビットも更新されなければならないことを特徴とする請求項２０に記載のストレージシステム。
【請求項２６】
データが前記のサブオブジェクトに付加される時には、新しいパリティビットが排他的オア（ＸＯＲ）機能を使用して計算されることを特徴とする請求項２０に記載のストレージシステム。
【請求項２７】
付加されるデータの量が、前記の複数の物理装置の一つが付加データをなにも有してないような場合に、前記の新しいパリティビットが、前記の複数の物理装置の前記の一つの未使用部分を考慮しないで、前記のパリティビットに対応する付加データに対して計算されることを特徴とする請求項２６に記載のストレージシステム。
【請求項２８】
データが前記の複数の物理装置の前記の一つの前記の未使用部分に付加される時に、新しいパリティビットが、以前のパリティビットを以前には未使用だった部分に付加されるデータと排他的オア（ＸＯＲ）することによって計算されることを特徴とする請求項２７に記載のストレージシステム。
【請求項２９】
前記の属性情報は鎖状データを形成するために書き込みデータと鎖状に繋がれ、前記のストライプサイズは、前記の物理ストレージ装置の数で鎖状データを割ることによって決定されることを特徴とする請求項２０に記載のストレージシステム。
【請求項３０】
メモリ、ＣＰＵ、およびディスクインタフェースを含むディスクコントローラと、
前記のディスクインタフェースを経由して前記のディスクコントローラとコミュニケーションをとる（Ｎ＋Ｍ）（ＮとＭは両方とも≧１）個のストレージ装置と
を備え、
コンピュータプログラムは前記のメモリに存在し、前記のコンピュータプログラムは、前記のディスクコントローラに、格納されるオブジェクトを受信させ、前記のオブジェクトをＮ個の物理オブジェクトに分割させるために前記のＣＰＵによって実行可能であり、各物理オブジェクトはそれ自身の物理属性とデータを含み、前記の物理オブジェクトはＮ個のストレージ装置に格納され、前記のコンピュータプログラムは前記の物理オブジェクトからＭ個のパリティオブジェクトを生成する、
ことを特徴とする、データとデータの属性を有するオブジェクトを格納するためのストレージシステム。
【請求項３１】
前記のディスクコントローラをホストコンピュータとコミュニケーションをとらせるホストインタフェースをさらに有することを特徴とする請求項３０に記載のストレージシステム。
【請求項３２】
前記のディスクコントローラを前記のストレージシステムの構成を設定するためにコンソールとコミュニケーションをとらせるコンソールインタフェースをさらに有することを特徴とする請求項３０に記載のストレージシステム。
【請求項３３】
前記のメモリはコントローラメモリとキャッシュメモリを備え、前記のキャッシュメモリは、前記のストレージ装置の前記のオブジェクトの格納の前にホストコンピュータからオブジェクトを受信可能であることを特徴とする請求項３０に記載のストレージシステム。
【請求項３４】
データとデータの属性を含むオブジェクトを格納し、メモリ、ＣＰＵ、およびディスクインタフェースを含むディスクコントローラを有し、前記のディスクインタフェースを経由して前記のディスクコントローラとコミュニケーションをとる少なくともＮ個のストレージ装置を有するストレージシステムにおいて、
格納されるオブジェクトを受信するステップと、
それ自身の物理属性とデータを有するＮ個の物理オブジェクトに前記のオブジェクトを分割するステップと
前記の物理オブジェクトを前記のＮ個のストレージ装置に格納するステップと、
前記の物理オブジェクトから少なくとも一つのパリティオブジェクトを生成するステップと、
を前記のディスクコントローラに実行させることを特徴とする、前記のメモリに存在し、前記のＣＰＵによって実行可能なコンピュータプログラム。
【請求項３５】
前記のパリティビットを決定するステップが排他的オア機能の使用を含むことを特徴とする請求項１８に記載の方法。
【請求項３６】
前記の決定されたパリティビットをパリティストレージ装置に格納するステップをさらに有することを特徴とする請求項１８に記載の方法。
【請求項３７】
前記のＭ個のストレージ装置はパリティストレージ装置であり、前記のＭ個のパリティオブジェクトは前記のＭ個のパリティストレージ装置に格納されることを特徴とする請求項３０に記載のストレージシステム。
【請求項３８】
前記の少なくとも一つのパリティビットを生成した後に、前記の少なくとも一つのパリティビットを少なくとも一つのパリティストレージ装置に格納するステップを、前記のディスクコントローラにさらに実行させることを特徴とする請求項３４に記載のコンピュータプログラム。
【請求項３９】
複数の物理装置と、
それぞれが、前記の複数の物理装置の一つ以上の少なくとも一部分に対応する、複数の論理装置と、
を備え、
オブジェクトが論理オブジェクトとしてオブジェクトベースの形式で論理装置に格納される時に、前記のオブジェクトがサブオブジェクトに分割され、各サブオブジェクトが前記の複数の物理装置に格納され、
パリティビットが、排他的オア（ＸＯＲ）機能を使用して前記のサブオブジェクトに対して計算される
ことを特徴とするストレージシステム。
【請求項４０】
前記の論理オブジェクトがオブジェクトＩＤを有する属性情報とデータを含み、
前記の論理オブジェクトの前記のオブジェクトＩＤが、前記の論理装置の対応する物理的部分に対する前記のオブジェクトＩＤと同じである、
ことを特徴とする請求項３９に記載のストレージシステム。
【請求項４１】
前記のストレージシステムが分割され、
論理装置のパーティションＩＤを示す第一のテーブルが備えられ、前記の論理装置の前記のパーティションＩＤとオブジェクトＩＤに対応する前記の物理装置を示す第二のテーブルが備えられる、
ことを特徴とする請求項３９に記載のストレージシステム。
【請求項４２】
前記の複数の物理装置に格納される前記のデータのストライプサイズが前記のオブジェクトのサイズで決定されることを特徴とする請求項３９に記載のストレージシステム。
【請求項４３】
前記のデータの前記のストライプサイズが、前記のオブジェクトを前記の各物理装置に対して等しい部分に分割することによって決定されることを特徴とする請求項４２に記載のストレージシステム。
【請求項４４】
データが前記のサブオブジェクトのいずれかの中で更新される時には、対応するパリティビットも更新されなければならないことを特徴とする請求項３９に記載のストレージシステム。
【請求項４５】
データが前記のサブオブジェクトに付加される時には、新しいパリティビットが排他的オア（ＸＯＲ）機能を使用して計算されなければならないことを特徴とする請求項３９に記載のストレージシステム。
【請求項４６】
付加されるデータの量が、前記の複数の物理装置の一つが付加データをなにも有してないような場合に、前記の新しいパリティビットが、前記の複数の物理装置の前記の一つの未使用部分を考慮しないで、前記のパリティビットに対応する付加データに対して計算されることを特徴とする請求項４５に記載のストレージシステム。
【請求項４７】
データが前記の複数の物理装置の前記の一つの前記の未使用部分に付加される時に、新しいパリティビットが、以前のパリティビットを以前には未使用だった部分に付加されるデータと排他的オア（ＸＯＲ）することによって計算されることを特徴とする請求項４６に記載のストレージシステム。
【請求項４８】
前記の属性情報は鎖状データを形成するために書き込みデータと鎖状に繋がれ、前記のストライプサイズは、前記の物理ストレージ装置の数で鎖状データを割ることによって決定されることを特徴とする請求項３９に記載のストレージシステム。
【請求項４９】
前記のパリティビットはパリティストレージ装置に格納されることを特徴とする請求項３９に記載のストレージシステム。
【請求項５０】
前記のパリティビットは前記の排他的オア（ＸＯＲ）機能を使用して計算されることを特徴とする請求項２０に記載のストレージシステム。
【請求項５１】
前記のパリティビットはパリティストレージ装置に格納されることを特徴とする請求項５０に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
0001  本発明はディスクアレイ装置、システム、およびストレージ方法、またより詳細にはRAIDタイプシステムを構成するために使用される複数のオブジェクトベースのストレージ装置（OSD）を有する装置、システム、および方法に関係する。
【背景技術】
【０００２】
0002  ハイエンドまたはミッドレンジのコンピュータシステムに使用される最近のストレージシステムは、ＲＡＩＤ構成として知られるＲｅｄｕｎｄａｎｔ Ａｒｒａｙ ｏｆ Ｉｎｅｘｐｅｎｓｉｖｅ（Ｉｎｄｅｐｅｎｄｅｎｔとしても知られる） Ｄｉｓｋｓを通常採用する。数多くの異なったＲＡＩＤ構成があり、もっとも一般的なものはＲＡＩＤ１からＲＡＩＤ６と呼ばれる。
【０００３】
0003  ＲＡＩＤ１：ＲＡＩＤ１構成は、“ミラー” ストレージユニットの複製セットを提供すること、およびストレージユニットの各ペア上に全データの複製コピーを保持することを含む。この様な解決方法は信頼性の問題を解決するが、ストレージのコストを二倍にする。
【０００４】
0004  ＲＡＩＤ２：ＲＡＩＤ２構成は、データの各ワードの各ビット、およびハミングコードの様なエラー検出訂正（ＥＤＣ：Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）ビットを別々のディスクドライブ上に格納する（これは“ビットストライプ”としても知られている）。
【０００５】
0005  ＲＡＩＤ３：ＲＡＩＤ３構成は各ディスクドライブストレージユニットが障害またはデータエラーを検出する内部手段を有するとの概念をベースにしている。従って、エラーの箇所を検出するために特別の情報を格納する必要はない。代わりに、パリティベースエラー訂正のより単純なフォームが使用される。この方法では、障害にさらされる全ストレージユニットの内容はパリティ情報を生成するために“排他的オア”（ＸＯＲ）される。結果のパリティ情報は単一の冗長ストレージユニットに格納される。もしもストレージユニットが障害になると、そのユニットのデータは、残りのストレージユニットからのデータをパリティ情報と排他的オア（ＸＯＲ）をすることによって、置き換えストレージユニット上で再構成することができる。しかし、ＲＡＩＤ３システムは、個々のディスクアクチュエータが連結されて一斉に動作する点で、ＲＡＩＤ２システムと同じ性能限界がある。これは、データファイルが小さい場合に、ドライブアレイのランダムアクセス性能に不利に影響する。なぜならば、一度には一つのデータファイルだけしか“単一”アクチュエータではアクセスできないからである。従って、ＲＡＩＤ３システムはオンライントランザクションプロセッシング（ＯＬＴＰ：Ｏｎ−Ｌｉｎｅ  Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ）目的で設計されたコンピュータシステムに適しているとは一般的には考えられていない。このコンピュータシステムでは、バッチ処理とは違って、コンピュータはユーザ要求に直ちに応答する。バッチ要求は格納されてその後で一度に全部が実行される。
【０００６】
0006  ＲＡＩＤ４：ＲＡＩＤ４構成はＲＡＩＤ３構成の同じパリティエラー訂正概念を使用する。しかし個々のディスクドライブアクチュエータの動作を非連結すること、およびより大きな最小値のデータ（典型的には、ディスクセクタ）を各ディスクに対して読み書きすること（これはブロックストライプとしても知られている）によって小さいファイルのランダム読み出しに関してＲＡＩＤ３システムの性能に対して改善をする。ＲＡＩＤ４のさらなる特徴は単一のストレージユニットがパリティユニットとして指定されることである。
【０００７】
0007  ＲＡＩＤ５：ＲＡＩＤ５構成はＲＡＩＤ４構成の同じパリティエラー訂正概念および独立のアクチュエータを使用する。しかし全部の使用可能なディスクドライブに対してデータとパリティ情報を分布させることによってＲＡＩＤ４システムの書き込み性能に対して改善をする。典型的には、“Ｎ＋１”個のストレージユニットのセット（“冗長グループ”としても知られている）はブロックと呼ばれる複数の等しいサイズのアドレス領域に分割される。各ストレージユニットは一般的に同じ数のブロックを有する。冗長グループの各ストレージユニットからの同じユニットアドレス範囲を有するブロックは“ストライプ”と呼ばれる。各ストライプはＮブロックのデータとストライプの残りに対するパリティを有する一つのストレージユニットに一つのパリティブロックを有する。さらに各ストライプはパリティブロックを有し、パリティブロックは異なったストレージユニットに分布される。従って、冗長グループのデータの修正毎に関連するパリティ更新動作は異なったストレージユニットに分布される。単一のユニットだけが全部のパリティ更新活動の負荷を負うことはない。
【０００８】
0008  ＲＡＩＤ６：ＲＡＩＤ６構成はフォールトトレラントを改善するために一つではなく二組のパリティ情報を計算する。言い換えれば、もしもアレイの二つのドライブに同時に障害があっても、ＲＡＩＤ６は両方の障害を処理できる、一方ＲＡＩＤレベル１、３、４、または５はできない。言い換えれば、ＲＡＩＤ６は、二つの同時のディスク障害がある場合にアレイの仮想ディスクの全部に読み書き要求を実行することを継続できるどんなフォームのＲＡＩＤも含む。デュアルチェックデータ計算（パリティおよびリードソロモン）と直交デュアルパリティチェックデータ計算の両方がＲＡＩＤレベル６に提案された。
【０００９】
0012  ストレージシステムと方法に関係する従来技術は以下のようである。全部で四つのこれらのドキュメントの完全な開示を参考としてここに含める。
【００１０】
【非特許文献１】Patterson, D. A.他”A Case for Redundant Arrays of Inexpensive Disks(RAID)”, Proceedings ACM SIGMOD International conference on Management of Data,1988,109-116
【特許文献１】米国特許第 5,675,726 号  ; Flexible Parity Generation Circuit
【特許文献２】米国特許第 5,148,432 号  : Arrayed Disk Drive System and Method
【非特許文献２】ANSI T-10 Working Draft:Information Technology-SCSI Object-Based Storage Device Commands(OSD):http://www.t10.org/ftp/t10/drafts/osd/osd-09.pdf
【発明の開示】
【発明が解決しようとする課題】
【００１１】
0009  上記に記述されている様に、現在のＲＡＩＤ技術はビット、バイト、ブロックをベースに冗長情報を生成する。しかし、ＲＡＩＤ技術は、データがブロックベースの代わりにオブジェクトベースでストレージ装置（例えば磁気ディスク）に格納されるケースに有効には適用されていなかった。データをオブジェクトとして格納するストレージ装置はオブジェクトベースのストレージ装置（ＯＳＤ：Ｏｂｊｅｃｔ−Ｂａｓｅｄ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ）と呼ばれる。
【００１２】
0010  ＯＳＤ技術のもとでは、各オブジェクトはデータとメタデータまたは属性を含む。属性はデータのサイズ、ユーザＩＤ情報などを含む。属性はオブジェクトの中にデータのサイズを保持するので、オブジェクトのサイズは可変であり、これはＨＤＤ（ハードディスクドライブ）のような現在のストレージ装置とは異なる。
【００１３】
0011  ＲＡＩＤ構成が複数のＯＳＤを使用して組み立てられると、パリティ生成の単位を決める方法について問題が発生する。パリティ（現在のＲＡＩＤ構成において）は、ビット、バイト、ブロックなどの同じサイズを有する複数のデータ単位から生成されるので、パリティを生成するデータブロックを用意する方法を考慮しなければならない。
【課題を解決するための手段】
【００１４】
0013  本発明はオブジェクトベースのストレージ装置のコマンドに従うストレージシステムと方法に対して使用される。本発明のストレージシステムと方法はディスクコントローラと複数のストレージ装置を含み、このそれぞれはオブジェクトベースのストレージ装置（ＯＳＤ）である。また、本発明のストレージシステムはＯＳＤコマンドに従ってホストコンピュータからのＩ／Ｏ要求を処理する。
【００１５】
0014  一つの実施例では、本発明のストレージシステムは複数（例えば、Ｎ）のデータストレージ装置と少なくとも一つの冗長データ（例えば、パリティ）ストレージ装置を含み、これらのそれぞれはオブジェクトベースのストレージ装置（ＯＳＤ）である。ストレージシステムは複数のデータと冗長データのストレージ装置から論理ＯＳＤを組み立てる。ストレージシステムがオブジェクトを有する書き込み要求を受信すると、オブジェクトはＮ個のサブオブジェクトに分割される。その後、Ｎ個のサブオブジェクトのそれぞれはデータストレージ装置に書かれる。各Ｎ個のサブオブジェクトのＩＤはオブジェクトのＩＤと同じである。さらに、パリティはサブオブジェクトのそれぞれから計算され、冗長データのストレージ装置に書かれる。
【００１６】
0015  他の実施例では、ストレージシステムは、オブジェクトを有する書き込み要求を受信するＮ個のデータストレージ装置と少なくとも一つのパリティストレージ装置を含む。また、論理オブジェクトと物理オブジェクト間のマッピングテーブルが含まれる。物理オブジェクトのそれぞれは同じサイズを有する。ストレージシステムがオブジェクトを有する書き込み要求を受信すると、オブジェクトは複数の物理オブジェクトに変換され複数のデータストレージ装置に格納される。パリティは変換された物理オブジェクトから計算されパリティストレージ装置に格納される。
【００１７】
0016  本発明のこれらおよび他の特徴と利点は、本発明の以下の詳細説明によって、この技術分野の通常の熟練した人達には明確になるだろう。
【発明の効果】
【００１８】
本発明はオブジェクトベースのストレージ装置のコマンドに従うストレージシステムと方法に対して使用される。本発明のストレージシステムと方法はディスクコントローラと複数のストレージ装置を含み、このそれぞれはオブジェクトベースのストレージ装置（ＯＳＤ）である。また、本発明のストレージシステムはＯＳＤコマンドに従ってホストコンピュータからのＩ／Ｏ要求を処理する。
【００１９】
本発明のストレージシステムは複数（例えば、Ｎ）のデータストレージ装置と少なくとも一つの冗長データ（例えば、パリティ）ストレージ装置を含み、これらのそれぞれはオブジェクトベースのストレージ装置（ＯＳＤ）である。ストレージシステムは複数のデータと冗長データのストレージ装置から論理ＯＳＤを組み立てる。ストレージシステムがオブジェクトを有する書き込み要求を受信すると、オブジェクトはＮ個のサブオブジェクトに分割される。その後、Ｎ個のサブオブジェクトのそれぞれはデータストレージ装置に書かれる。
【発明を実施するための最良の形態】
【００２０】
0017  添付の図面は、上記の一般的な記述と下記の好適な実施例の詳細記述と共に、現在考えられている本発明の最善の好適な実施例の原理を例示し説明するのに役にたつ。
【００２１】
0038  本発明の以下の詳細な説明において、添付の図面は、参考され、開示の一部であり、例示のために示され、これに限定されることはなく、本発明が実施される特定の実施例である。図面の中で、同じ番号は、いくつかの図を通して、実質的に同様な部分を意味する。
【００２２】
第一実施例
システム構成
0039  図１は、本発明のシステム、方法、装置が適用されるストレージシステム２の代表的な第一の実施例を示す。ストレージシステム２は、コントローラＣＰＵ２１、コントローラメモリ２２、キャッシュメモリ２３、ホストインタフェース２４、ディスクインタフェース２５、およびネットワークインタフェース２６を含むディスクコントローラ２０を含む。ディスクコントローラ２０はホストコンピュータ１からのＩ／Ｏ要求を処理する。Ｉ／Ｏ要求はオブジェクトベースのストレージ装置コマンドをベースにしている。
【００２３】
コントローラＣＰＵ２１とコントローラメモリ２２はＩ／Ｏ要求または他のオペレーションを処理するためにコントローラメモリ２２に格納されているプログラムと共に機能し、コントローラＣＰＵ２１はプログラムを実行する。キャッシュメモリ２３は、データがストレージ装置３１に格納される前に、ホストコンピュータ１からの書き込みデータを一時的に格納する、またはキャッシュメモリ２３はホストコンピュータ１から要求された読み出しデータを格納する。キャッシュメモリ２３はバッテリバックアップで、不揮発メモリである。他の実現方法では、コントローラメモリ２２とキャッシュメモリ２３は共通の連結メモリである。ホストインタフェース２４はホストバスアダプタ１４を経由してホストコンピュータ１とストレージシステム２の間を接続するのに使用される。ディスクインタフェース２５はストレージ装置３１とディスクコントローラ２０を接続するのに使用される。ネットワークインタフェース２６はコンソール５をストレージシステム２とインタフェースをとる。コンソール５はストレージシステム２の構成を設定／変更するために使用される。
【００２４】
0040  ストレージシステム２は複数のストレージ装置３１を含む。各ストレージ装置３１はオブジェクトベースのストレージ装置コマンドに従ってＩ／Ｏ要求を処理する。
【００２５】
0041  図２は本発明の“オブジェクト”１０５の例を示す。上記に述べたように、ストレージシステム２はオブジェクトベースのストレージ装置コマンド（これ以後では“ＯＳＤコマンド”とする）に従ってホストコンピュータ１からのＩ／Ｏ要求を処理する。ＯＳＤコマンドシステムでは、ホストコンピュータ１は“オブジェクト”としてストレージシステム２からのデータ読み出し／ストレージシステム２へのデータ書き込みをする。オブジェクト１０５は、図２に示される様に“データ”１００と“属性”（またはメタデータ'）１１０を含む。属性１１０はオブジェクト１０５のＩＤ情報を含む。属性１１０の例は以下により詳細に記述される。
【００２６】
0042  オブジェクト１０５のサイズは可変なので、属性１１０はオブジェクトのサイズを含む。図３は、本発明のストレージシステム２が保持する属性情報１１０の例を示す。属性１１０のいくつかは既に標準フォームに定義されている（例えば上記のANSI T-10 Working Draftに）。しかし、ベンダはそれらのＯＳＤに追加の属性１１０を定義できる。
【００２７】
0043  図３に示される様に、属性１１０は主に三つの要素、属性ページ１１１、属性番号１１２、および属性値１１３から成る。属性１１０はＩＤと参照のためにページ１１１に構成される。ページ１１１の属性は同じような特徴を有する。各属性値１１３は属性ページ１１１と属性番号１１２によって特定される。
【００２８】
0044  パーティション＿ＩＤ１３１とユーザ＿オブジェクト＿ＩＤ１３２は各オブジェクトのＩＤ番号である。この後、ユーザ＿オブジェクト＿ＩＤ１３２はまた“オブジェクトＩＤ”１３２と呼ばれる。ユーザ名１３３はホストコンピュータ１によって特定されるオブジェクトに対するユーザのＩＤを含む。使用容量１３４はオブジェクトのサイズ（属性を含む）を示す。生成時刻１３５はオブジェクトが生成された時刻である。属性アクセス時刻１３６は属性がアクセスされた最新の時刻である。属性変更時刻１３７は属性が変更された最新の時刻である。データアクセス時刻１３８はデータがＲＥＡＤコマンドによってアクセスされた最新の時刻であり、これは以下に、より詳細に記述される。データ変更時刻１３９はデータがＷＲＩＴＥ、ＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥ、またはＡＰＰＥＮＤコマンドによって変更された最新の時刻であり、これは以下に、より詳細に記述される。従来のオブジェクトの追加の詳細は“ANSI T-10 Working Draft: Information Technology-SCSI Object-Based Storage Device Commands(OSD)”にあり、上記を参照し、参考としてこれをここに含める。
【００２９】
複数のＯＳＤで構成される冗長アレイ
0045  図４は図１のストレージシステム２内の冗長アレイ構成の概観を示す。また、上記に述べられたように、ストレージシステム２のストレージ装置３１はＯＳＤコマンドに従ってディスクコントローラ２０から要求を受信する。すなわち、ストレージ装置３１は、属性情報とデータを含めて、オブジェクト１０５を格納する。
【００３０】
0046  図４はホストコンピュータ１から書かれるオブジェクトがストレージ装置３１に格納される方法を示す。ストレージシステム２は、それぞれが複数のストレージ装置３１を含む一つ以上の論理オブジェクトベースのストレージ装置（論理ＯＳＤ）１５１を生成する。本実施例において、各論理ＯＳＤ１５１はＮ個のデータストレージ装置３１と一つのパリティストレージ装置３１ｐを有する。ホストコンピュータ１がストレージシステム２にオブジェクト１０５（例えば、オブジェクト１）を書き込む時に、ストレージシステム２はオブジェクトをＮ個の部分（例えば、ｏｂｊ１−０、ｏｂｊ１−１、ｏｂｊ１−２、..ｏｂｊ１−（Ｎ−１））に分割し、Ｎ個の分割オブジェクトから排他的オア（ＸＯＲ）値（パリティ：Ｐ−ｏｂｊ１）を計算する。分割データオブジェクトはＮ個のデータストレージ装置３１に書き込まれ、計算されたパリティはパリティストレージ装置３１ｐに書き込まれる。
【００３１】
0047  本実施例のここより後、ホストコンピュータ１とストレージシステム２間で転送されるオブジェクトは“論理オブジェクト”と呼ばれ、ディスクコントローラ２０がデータストレージ装置３１に書き込み／から読み出しするオブジェクトは“物理オブジェクト”と呼ばれ、パリティストレージ装置３１ｐに書き込み／から読み出しするオブジェクトは“パリティオブジェクト”と呼ばれる。また、本実施例において、オブジェクトＩＤ＝ｘを有する論理オブジェクトがストレージシステム２に書き込まれる時に、論理オブジェクトと同じオブジェクトＩＤ（オブジェクトＩＤ＝ｘ）を有するオブジェクトは物理オブジェクトのそれぞれに割り当てられる。
【００３２】
論理ＯＳＤ管理
0048  図５は論理ＯＳＤ管理テーブル１５０を示す。論理ＯＳＤ管理テーブル１５０をベースに、ストレージシステム２は各論理ＯＳＤのＲＡＩＤ構成を作成する。論理ＯＳＤ管理テーブル１５０はメモリ２２に格納される。物理ＯＳＤ１５２は、どのストレージ装置が“論理ＯＳＤ１５１”の列に示される対応する論理ＯＳＤを構成するために使用されるかを示す。ＲＡＩＤレベル１５３は論理ＯＳＤのＲＡＩＤレベルを示す。上記に記述されるように、ホストコンピュータ１から書かれるオブジェクトは複数の物理オブジェクトに分割される。ストライプサイズ１５４は各物理オブジェクトのサイズを示す。しかし各物理オブジェクトの物理属性のサイズは含まない。物理属性の詳細は後で述べられる。
【００３３】
0049  属性サイズ１５５は論理ＯＳＤの各オブジェクトの属性のサイズを示す。本実施例において、属性のサイズは各論理ＯＳＤ内で固定値である。しかし、ユーザは各論理ＯＳＤの属性のフォーマットを定義または変更できる。もしもユーザがフォーマットを変更すると、サイズはディスクコントローラ２０によって自動的に計算される。（他の実施例では、属性サイズは可変長である。しかし説明を簡単にするため、属性サイズは本実施例では固定値であると仮定する。）ストレージシステム２のユーザは、コンソール５から上記の情報を入力することによって論理ＯＳＤを生成できる。また、ユーザはコンソール５から属性のフォーマットを定義できる。
【００３４】
0050  すべての実施例と同じく、本実施例において、ストレージシステム２はＲＡＩＤ１−６をサポートできる。しかし、示される本実施例において、ＲＡＩＤ１、３、４、および５はサポートされることを示される。ＲＡＩＤ３とＲＡＩＤ４との間の相違はＲＡＩＤ３のストライプサイズは１バイトであり、ＲＡＩＤ４のストライプサイズは１バイトより大きいことなので、ユーザがＲＡＩＤレベル１５３をＲＡＩＤ３と特定する場合には、論理ＯＳＤのストライプサイズ１５４は１バイトであると決定される。
【００３５】
属性の配置
0051  各論理オブジェクトはデータに加えてそれ自身の属性（メタデータ）を有し、その両方はストレージ装置に格納される。本実施例において、データと同様な方法で、属性はストライプサイズで複数の部分に分割され、分割された部分のそれぞれは物理オブジェクトの部分としてデータストレージ装置に格納される。
【００３６】
0052  図６Ａ−６Ｃはオブジェクトがストレージ装置３１に格納される方法を示す。また、パリティは計算されて、結果のパリティデータはパリティストレージ装置３１ｐに格納される。もしも属性がストライプサイズの倍数に合致しなければ、ＲＡＩＤ１構成の場合を除いて、ヌルデータが最終データブロックに挿入される。例えば、図５の論理ＯＳＤ管理テーブル１５０において、論理ＯＳＤ番号１のストライプサイズは２５６ＫＢであり、属性サイズは１０ＫＢである。この場合に、属性は物理データブロックの領域の１０ＫＢだけを占めているので、２４６ＫＢのヌルデータがブロックの属性の後に追加される。
【００３７】
物理属性
0053  物理オブジェクト１６０がデータストレージ装置内に生成される時に、その属性も生成される。本実施例において、それは“物理属性”１６１と呼ばれる。物理属性１６１は論理オブジェクト１７０の属性１７１と同様な属性値を含む。しかしすべての属性に同じ属性値を含む必要はない。物理オブジェクト１６０が生成される時に、物理属性１６１の少なくともユーザオブジェクトＩＤ１６２とパーティションＩＤ１６３は論理オブジェクト１７０と同じＩＤ番号に設定される。これを行うことによって、ディスクコントローラ２０は、論理オブジェクト１７０と同じオブジェクトＩＤ１６２を有する物理オブジェクト１６０にだけアクセスできる。他の属性に関しては、同じ値が設定されるかもしれないし、異なった値が設定されるかもしれない。
【００３８】
パリティ生成
0054  図７は、パリティオブジェクトが、本実施例において複数の物理オブジェクトから生成される方法を示す。図７において、データストレージ装置の数は３である（すなわち、Ｎ＝３）、そしてストライプサイズは１ＫＢである。ホストコンピュータ１はオブジェクトサイズが６ＫＢのオブジェクト１０５（ＯＢＪ１）を有する書き込み要求を発行する時に（容易に理解するために、ボックス1、2、3、...および６のそれぞれは１ＫＢサイズのデータブロックを表し、オブジェクトは６個のブロックで構成されると仮定する）、ディスクコントローラ２０は最初６個の固定長のブロックにオブジェクト１０５を等しく分割し（各ブロックを１ＫＢ）、データストレージ装置３１（ＯＳＤ＿０，ＯＳＤ＿１，およびＯＳＤ＿２）それぞれに各ブロックを格納する。この例では、３個のデータストレージ装置３１があり、ブロックの数は３より大きいので、第４とその後のデータブロックはＯＳＤ＿０で始まるデータストレージ装置３１に格納される。すなわち、１と４は第一のオブジェクト１８０としてＯＳＤ＿０に格納され、２と５は第二のオブジェクト１８１としてＯＳＤ＿１に格納され、３と６は第三のオブジェクト１８２としてＯＳＤ＿２に格納される。また、パリティオブジェクトは下記で計算される。
パリティ（ｐ１）＝“ブロック１”ＸＯＲ“ブロック２”ＸＯＲ“ブロック３”
パリティ（ｐ２）＝“ブロック４”ＸＯＲ“ブロック５”ＸＯＲ“ブロック６”
0055  第二に、オブジェクト１０５のデータ１がデータ１'に更新される時に、パリティｐ１は再計算されなければならない。この場合は、パリティｐ１'は次の式で計算される。
パリティ（ｐ１’）＝“ブロック１”ＸＯＲ“ブロック１’”ＸＯＲ“ブロックｐ１”
これはブロックアクセスベースのストレージ装置（例えばＳＣＳＩ  ＨＤＤ）を使用する従来のＲＡＩＤと同様な方法である。パリティオブジェクトはパリティストレージ装置３１ｐに格納される。
【００３９】
0056  ここより後、図８において、もしもデータ７と８がオブジェクト１に付加されると、データ７と８は各データストレージ装置３１にそれぞれ付加され、データ７と８に対応するパリティｐ３がデータ７と８を排他的オア（ＸＯＲ）して計算される。ブロックアクセスベースのストレージ装置（例えばＳＣＳＩ  ＨＤＤ）を使用する従来のＲＡＩＤ技術では、パリティを計算する時に、データが書かれていない未使用領域３１a（点線で書かれたボックス）を読み出し、データ７と８と未使用領域３１aを排他的オア（ＸＯＲ）することによって計算する必要があった。ＯＳＤを使用する本実施例では、未使用領域３１aを読み出す必要はない。
【００４０】
0057  さらに、もしもデータ９がオブジェクト１に付加されると、データ９はＯＳＤ＿２に付加され、パリティｐ３は次の計算でパリティｐ３'に再計算される。
パリティ（ｐ３’）＝“パリティｐ３”ＸＯＲ“ブロック９”
0058  上記の実施例では、パリティ生成は１ＫＢの倍数のデータが更新／付加される仮定をベースに説明されている。しかし、１ＫＢより小さいデータが更新／付加される時もこの方法は適用できる。例えば、データ１がデータ１'に更新される時に、データの最初の１００バイトだけが更新されると仮定する。この場合に、ディスクコントローラ２０はパリティｐ１からパリティデータの最初の１００バイトを読み出し、データ１の１００バイトとパリティｐ１の１００バイトを排他的オア（ＸＯＲ）することによって新しいパリティを計算し、新しいデータ１'の１００バイトと新しいパリティｐ１'の１００バイトをデータストレージ装置３１とパリティストレージ装置３１ｐにそれぞれ格納する。
【００４１】
Ｉ／Ｏオペレーションの処理フロー
0059  ＯＳＤの主なオペレーション／コマンドは下記のようである。ＣＲＥＡＴＥコマンドはＯＳＤに一つ以上のオブジェクトを配置するのに使用される。ＷＲＩＴＥコマンドは、オブジェクトＩＤで特定されるオブジェクトの指定された開始バイトアドレスから、ある長さのデータを書き込むのに使用される。ＷＲＩＴＥコマンドのキーパラメータはオブジェクトＩＤ、開始バイトアドレス、長さである。また、属性はコマンドを実行すると同時に変更できる。ＲＥＡＤコマンドは、オブジェクトＩＤで特定されるオブジェクトの指定された開始バイトアドレスから、ある長さのデータを読み出すのに使用される。ＲＥＡＤコマンドのキーパラメータはオブジェクトＩＤ、開始バイトアドレス、長さである。また、属性はコマンドを実行すると同時に変更できる。ＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥコマンドは、単一コマンドでＣＲＥＡＴＥオペレーションとＷＲＩＴＥオペレーションを実行するのに使用される。最後に、ＡＰＰＥＮＤコマンドは現在のオブジェクトの後ろに指定長のデータを付加するのに使用される。
【００４２】
0060  図９はストレージシステム２がホストコンピュータ１からＣＲＥＡＴＥ（またはＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥ）コマンドを受信する時の処理フローを示す。処理はＣＰＵ２１で実行される。
【００４３】
0061  ステップ１００１：属性情報はＣＲＥＡＴＥコマンドに含まれるパラメータをベースに生成される。属性情報はストライプサイズで分割される。もし属性のサイズが１０ＫＢでありストライプサイズが１ＫＢであるなら、属性情報は１０個の部分に分割される。
【００４４】
0062  ステップ１００２：物理オブジェクトは分割部分から生成される。物理属性情報は各分割部分に追加される。ここより後では、物理属性情報が追加される部分は“物理属性オブジェクト”と呼ばれる。
【００４５】
0063  ステップ１００３：各物理属性オブジェクトはＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥコマンドを各ストレージ装置に発行することによって各ストレージ装置に格納される。
【００４６】
0064  ステップ１００４：パリティ情報はステップ１００２で生成される分割部分から計算される。次いで、オブジェクトはパリティ情報に物理属性情報を追加することによって生成される。パリティ情報に付加される物理属性情報はステップ１００２で分割部分に追加されるのと同じである。生成されたオブジェクトは“物理パリティ属性オブジェクト”と呼ばれる。
【００４７】
0065  ステップ１００５：物理パリティ属性オブジェクトはストレージ装置に格納される。
【００４８】
0066  ステップ１００６：ホストコンピュータ１から受信されたコマンドがＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥコマンドか、またはＣＲＥＡＴＥコマンドかを決定する。もしもそれがＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥコマンドならば、処理はステップ１００７に進む。もしもそうでなければ、処理は終了する。
【００４９】
0067  ステップ１００７：ＷＲＩＴＥオペレーションが実行される。
【００５０】
0068  ＷＲＩＴＥオペレーションの説明は以下で行われる。
【００５１】
0069  図１０と図１１は、ストレージシステム２がホストコンピュータ１からＷＲＩＴＥ、ＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥ、またはＡＰＰＥＮＤコマンドを受信した時のＷＲＩＴＥオペレーションの処理フローを示す。この処理はまた図９のステップ１００７で使用される。この処理はＣＰＵ２１で実行される。
【００５２】
0070  ステップ１１０１：論理ＯＳＤがＲＡＩＤ１かどうかを決定する。もしもＲＡＩＤ１ならば、処理はステップ１１０２に進む。もしもそうでなければ（論理ＯＳＤがＲＡＩＤ３、４、５、また６を意味する）、処理はステップ１１１１に進む。
【００５３】
0071  ステップ１１０２：論理ＯＳＤ管理テーブルをベースに、データが書かれるストレージ装置が、データが書かれるロケーションと同様に特定される。ＲＡＩＤ１構成において、データ領域の最初のバイトアドレスは論理オブジェクトの属性のすぐ後に配置される。したがって、オフセットは次の計算で決められる。
オフセット＝ＷＲＩＴＥコマンドの開始バイトアドレス＋属性サイズ
0072  ステップ１１０３：計算されたストレージ装置のロケーション（ステップ１１０２）をベースに、オブジェクトは二つのストレージ装置に格納される（論理ＯＳＤはＲＡＩＤ１なので、データは二つのストレージ装置にミラーリングされる）。
【００５４】
0073  ステップ１１０４：二つのストレージ装置の物理属性が更新される。例えば、オブジェクトサイズまたはデータ変更時間属性が更新される。
【００５５】
0074  ステップ１１１１：コマンドがデータを付加することを命令するかまたはデータを更新することを命令するかを決める（“付加：ＡＰＰＥＮＤ”はオブジェクトサイズが拡張されること、および新しいデータが現在のオブジェクトの後に追加され、ＡＰＰＥＮＤコマンドまたはＷＲＩＴＥコマンドを発行して実現されることを意味する）。もしも付加オペレーションが命令されると、処理はステップ１１２１に進み、もしも更新オペレーションが命令されると、処理はステップ１１１２に進む。
【００５６】
0075  ステップ１１１２：ホストコンピュータ１からの書き込みデータはストライプサイズで複数の部分に分割される。
【００５７】
0076  ステップ１１１３：論理ＯＳＤ管理テーブルをベースに、データが書かれるストレージ装置が、データが書かれるローケーションと同様に特定される。ロケーションはオブジェクトのバイトオフセットで特定される。例えば、データストレージ装置がＯＳＤ＿０、ＯＳＤ＿１、ＯＳＤ＿２であるＲＡＩＤ４構成の場合に、データが書かれるデータストレージ装置（ＯＳＤ＿Ｘ）と物理オブジェクトのオフセットアドレス（オフセット）は次の計算で決定される。
【００５８】
【数１】
2006178926.tif 000003
0077  ホストコンピュータ１が、論理ＯＳＤ管理テーブル１５０で定義される論理ＯＳＤＩＤ＝０にデータを書き込むことを命令するＷＲＩＴＥコマンドを発行し（ＲＡＩＤ４構成を組立てる一組のストレージ装置を含む）、開始バイトアドレス＝３ＫＢ、およびデータ長＝１ＫＢと仮定する。論理ＯＳＤ管理テーブル１５０により、属性サイズは１０ＫＢ、ストライプサイズは１ＫＢ、およびデータストレージ装置の数は３である（なぜならば、論理ＯＳＤ０は４つの物理ＯＳＤで構成され、一つの物理ＯＳＤはパリティを格納するために使用される（ＲＡＩＤ４であるから））。上記の式をベースに、ターゲットのデータストレージ装置はＯＳＤ＿１であり、オフセットは４ＫＢであると決定される。（図１２を参照）また、パリティのオフセットは同様な計算を使用して特定できる。
他のＲＡＩＤレベルでは、データストレージ装置とオフセットはまた同様に計算される。
【００５９】
0078  ステップ１１１４：古いデータはステップ１１０１で指定されるデータストレージ装置のオフセットアドレスから読まれる。また、古いパリティ情報はデータストレージ装置に関連するパリティストレージ装置から読まれる。
【００６０】
0079  ステップ１１１５：ステップ１１１２の分割データ、古いデータ、および古いパリティをベースに、新しいパリティ値が計算される。
【００６１】
0080  ステップ１１１６：分割書き込みデータと新しいパリティ値はストレージ装置に格納される。
【００６２】
0081  ステップ１１１７：論理属性が更新される。論理属性を更新する詳細は後で記述される。
【００６３】
0082  ステップ１１１８：ステップ１１０４と同様に、ストレージ装置の物理属性が更新される。物理オブジェクト（物理パリティオブジェクトを含む）のサイズは更新オペレーションで変更されないので、オブジェクトサイズ属性は変更されない。他の実施例では、更新情報は論理属性であるから、物理属性は必ずしも更新されない。
【００６４】
0083  図１１は図１０のステップ１１１１に続いて記述され、ここでは付加（ＡＰＰＥＮＤ）オペレーションが実行されることを決定する。
【００６５】
0084  ステップ１１２１：ステップ１１１２と同じ。
【００６６】
0085  ステップ１１２２：ステップ１１１３と同じ。
【００６７】
0086  ステップ１１２３：パリティが、書き込みデータに関連するパリティストレージ装置に存在するかを決定する。もしもパリティが存在するなら、処理はステップ１１２４に進む。そうでなければ、ステップ１１３０に進む。
【００６８】
0087  ステップ１１２４：古いパリティが読まれる。
【００６９】
0088  ステップ１１２５：新しいパリティが、分割データとステップ１１２４で読まれた古いパリティを排他的オア（ＸＯＲ）することによって計算される。
【００７０】
0089  ステップ１１２６：物理オブジェクト（分割データと計算されたパリティ）はデータとパリティのストレージ装置に格納される。
【００７１】
0090  ステップ１１２７：ステップ１１１７と同じで、論理属性が更新される。
【００７２】
0091  ステップ１１２８：ステップ１１１８と同じ。
【００７３】
0092  ステップ１１３０：この場合は、パリティは以前に計算されていないので、パリティは分割データだけで計算される。パリティは分割データを排他的オア（ＸＯＲ）することによって計算される。
【００７４】
0093  図１３は論理オブジェクトの属性を更新する処理フローを示す。この処理は図１０のステップ１１１７または図１１のステップ１１２７に対応する。属性は物理オブジェクトの部分としてデータストレージ装置に格納されるので、処理は図１０とほとんど同じである。
【００７５】
0094  ステップ１１５１：ステップ１１１３と同じである。
【００７６】
0095  ステップ１１５２：更新される属性値はデータストレージ装置から読み出され、対応するパリティデータはパリティストレージ装置から読み出される。例えば、データが更新される時、データ変更時刻属性値は変更されなければならない。したがって、データ変更時刻属性と対応するパリティデータが読み出される。
【００７７】
0096  ステップ１１５３：新しいパリティは新しい属性値とステップ１１５２で読み出された古いデータとパリティから計算される。
【００７８】
0097  ステップ１１５４：新しい属性値と対応する新しいパリティはデータストレージ装置とパリティストレージ装置にそれぞれ格納される。
【００７９】
0098  図１４はホストコンピュータ１がＲＥＡＤまたはＧＥＴ ＡＴＴＲＩＢＵＴＥコマンドをストレージシステム２に発行する時の処理フローを示す。
【００８０】
0099  ステップ２１０１：論理ＯＳＤ管理テーブルをベースに、データがどのストレージ装置のどの箇所に書き込まれるかを計算する。これはステップ１１１３と同じである。
【００８１】
0100  ステップ２１０２：ステップ２１０１で決定された計算した箇所からのデータが読み出される。もしも読み出されるデータが複数のストレージ装置に広がっているなら、全部のストレージ装置からのデータが読み出される。読み出しデータはキャッシュメモリに格納されて適切な順で鎖状に繋がれる。
【００８２】
0101  ステップ２１０３：鎖状に繋がれたデータはホストコンピュータ１に戻される。
【００８３】
0102  ステップ２１０４：論理属性が更新される。これはステップ１１１７と同じである。
【００８４】
0103  ステップ２１０５：ステップ１１１８と同様である。ステップ２１０５で、アクセス時刻属性が変更される。
【００８５】
0104  さらに、論理オブジェクトが削除される時には、例えば、ストレージシステム２はＲＥＭＯＶＥコマンドを受信し、論理オブジェクトと同じパーティションＩＤとオブジェクトＩＤを有する物理オブジェクトが次いで物理ＯＳＤから削除される。
【００８６】
第二の実施例
0105  第二の実施例のストレージシステム２’の構成は第一の実施例のそれと同じである。図１５は第二の実施例の冗長アレイの構成の概観を示す。図１５で、ＯＳＤ＿０、ＯＳＤ＿１、ＯＳＤ＿２、およびＯＳＤ＿３（たとえば、物理ＯＳＤ）は、ＲＡＩＤ４構成を組み立てる。一組の物理ＯＳＤは“ＲＡＩＤグループ”と呼ばれる。本実施例において、一つ以上のＯＳＤ１５１’はＲＡＩＤグループで定義される。各物理ＯＳＤ３１’は一つ以上のパーティションを含み、論理ＯＳＤ３１’は同じパーティションＩＤを有する複数のパーティションから組み立てられる。各物理ＯＳＤにおいて、複数のオブジェクト（例えば、物理オブジェクト）が生成され、論理オブジェクトは複数の物理オブジェクトから組み立てられる。
【００８７】
0106  図１６は論理ＯＳＤ管理テーブル１５０'を示す。このテーブル１５０'は各論理ＯＳＤ１５１'の構造を保持する。物理ＯＳＤ１５２'は第一の実施例の物理ＯＳＤ１５２と同じである。ＲＡＩＤレベル１５３'はＲＡＩＤレベル１５３と同じである。ストライプサイズ１５４'はストライプサイズ１５４と同様である。ストレージシステム２'は物理ＯＳＤ１５２'で定義される各物理ＯＳＤにオブジェクトを生成し、各物理オブジェクトサイズはストライプサイズ１５４'に従って決定される。これは、各物理オブジェクトサイズがストライプサイズ１５４'に等しいことを意味する。属性サイズ１５５'は属性サイズ１５５と同じである。パーティションＩＤ１５６'は論理ＯＳＤ１５１'を組み立てるのに使用される物理ＯＳＤ１５２'（物理パーティション）のパーティションＩＤを示す。ＯＳＤサイズ１５７'は論理ＯＳＤ１５１'のサイズを示す。さらに、各物理ＯＳＤの物理パーティションのサイズが計算できる。論理ＯＳＤ０のサイズは３００ＧＢであり、論理ＯＳＤは４つの物理ＯＳＤ（および一つのＯＳＤはパリティ装置）から組み立てられるので、各物理パーティションのサイズは１００ＧＢである。
【００８８】
0107  図１７は論理オブジェクト管理テーブル５００を示す。これは論理オブジェクトと物理オブジェクトの間の関係を保持する。これはメモリ２２に格納される。または他の実施例では、これはストレージ装置３１に格納される。パーティションＩＤ５０１は論理オブジェクトのパーティションＩＤである。オブジェクトＩＤ５０２は論理オブジェクトのユーザオブジェクトＩＤである。（物理ＯＳＤ、物理オブジェクト）５０３は各論理オブジェクトがどの物理オブジェクトから組み立てられるかを示す。
【００８９】
Ｉ／Ｏオペレーションの処理フロー
0108  読み出し／書き込みオペレーションの処理フローは第一の実施例と殆ど同じである。第一の実施例と異なるポイントを以下に説明する。
【００９０】
0109  第二の実施例において、付加（ＡＰＰＥＮＤ）オペレーションが実行される時に、図１１のステップ１１２５で、データを格納する前に、新しいオブジェクトがデータストレージ装置において生成される。もしもパリティを格納するためのオブジェクトが存在しないなら、新しいオブジェクトがパリティストレージ装置においても生成される。物理オブジェクトが生成されるのと同時に、物理オブジェクトに関する情報は論理オブジェクト管理テーブル５００に格納される。さらに、論理オブジェクトがＲＥＭＯＶＥコマンドによって論理ＯＳＤにおいて削除される時に、論理オブジェクトに関連する物理オブジェクトは削除されて、論理オブジェクト管理テーブル５００のエントリも削除される。
【００９１】
第三の実施例
0110  上記の実施例においては、ストライプサイズは各論理ＯＳＤ内で等しいが、実施例の代わりの方法では、ストライプサイズは各論理オブジェクトで異なるかもしれない。論理オブジェクトが読まれ、または書かれる時に、全てのデータストレージ装置が性能の観点から動作するのが望ましい。したがって、第三の実施例において、ディスクコントローラ２０は論理オブジェクトサイズに従ってストライプサイズを変更できる。
【００９２】
0111  例えば、論理ＯＳＤは３個のデータストレージ装置（および一つのパリティストレージ装置）を含むように定義され、またホストコンピュータ１は３００ＫＢの論理オブジェクトを書くことを試みる。全てのストレージ装置を動作させるために、オブジェクトは３個の物理オブジェクトに分割されなければならない。
【００９３】
0112  第三の実施例において、論理ＯＳＤ管理テーブル１５０'の代わりに、論理ＯＳＤ管理テーブル１５０''が使用される（図１８）。論理ＯＳＤ管理テーブル１５０''はストライプサイズ１５４'列を含まない。対応するストライプサイズ情報はデータストレージ装置とパリティストレージ装置の各物理オブジェクトに保たれる。
【００９４】
Ｉ／Ｏオペレーションの処理フロー
0113  図１９はストレージシステム２’がＣＲＥＡＴＥ（またはＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥ）コマンドをホストコンピュータ１から受信した時の処理フローを示す。第一または第二の実施例との相違はステップ１００１がステップ１００１’で置き換えられることである。
【００９５】
0114  ステップ１００１'において、論理オブジェクトの属性が生成されるが、データストライプに分割されない。次いで、属性はデータストレージ装置の中の一つに最初に書き込まれる（通常、これは論理ＯＳＤ管理テーブル１５０''の列１５２'にある第一のデータストレージ装置である）。
【００９６】
0115  図２０はデータがホストコンピュータ１からターゲットのオブジェクトに最初に書き込まれる時の処理フローを示す（これはＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥコマンドが発行されるか、最初のＷＲＩＴＥコマンドが発行される時である）。第三の実施例において、オブジェクトのストライプサイズは、ＷＲＩＴＥ（またはＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥ）コマンドのデータサイズをベースにして、データがターゲットのオブジェクトに最初に書かれる時に決定される。
【００９７】
0116  ステップ５００１：属性は一度読まれる。
【００９８】
0117  ステップ５００２：属性は書き込みデータと鎖状に繋がれる。このステップで生成されるデータは“鎖状データ”と呼ばれる。
【００９９】
0118  ステップ５００３：ステップ５００２の鎖状データをベースに、ストライプサイズが決定され、データはストライプサイズで分割される。ストライプサイズは以下で計算される。
【０１００】
鎖状データサイズ／データストレージ装置の数
例えば、もしも鎖状データサイズが９０ＫＢでデータストレージ装置の数が３ならば、ストライプサイズは３０ＫＢに決定される。
【０１０１】
0119  ステップ５００４：パリティは全ての分割データを排他的オア（ＸＯＲ）することによって計算される。
【０１０２】
0120  ステップ５００４：物理オブジェクトは全てのデータとパリティストレージ装置において生成され、全てのデータとパリティはＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥコマンドを使用して格納される。オブジェクトサイズはステップ５００３で計算されたサイズに決定される。同時に、物理属性が格納される。物理オブジェクトの主な属性は使用容量属性である。
【０１０３】
0121  特定の実施例が、この技術に精通した人が本発明を実施することを可能にするために充分な詳細内容で、この明細書において説明され記述されたが、この技術に普通に精通した人は、同じ目的を達成するために計算されるいかなる配置も、開示された特定の実施例に対して代えられることができることを理解する。他の実施例は、構造的および論理的置き換えと変更が本発明の範囲から離れることなく実施されるところから利用されまたは引き出される。この開示は本発明のすべてのいかなる適応と変化もカバーすることが意図され、また上記の記述が限定でなく説明の形でなされたことを理解すべきである。上記の実施例およびここで明確には記述されてない他の実施例の組み合わせは、上記の開示を見直せば、この技術に精通した人達には明かであろう。従って、本発明の範囲は添付の特許請求の範囲に関して、この特許請求項に与えられると同等な全範囲と共に、適切に決定されるべきである。
【図面の簡単な説明】
【０１０４】
【図１】0018  図１は本発明のストレージシステムを示す。
【図２】0019  図２は本発明のオブジェクトを示す。
【図３】0020  図３は本発明の属性構成を示す。
【図４】0021  図４は図１のストレージシステムの冗長アレイ構成の概観を示す。
【図５】0022  図５は本発明の論理ＯＳＤ管理テーブルを示す。
【図６】0023  図６はデータと属性を有するオブジェクトが本発明のストレージ装置に格納される方法を示す。
【図７】0024  図７はパリティオブジェクトが本発明において複数の物理オブジェクトから生成される方法を示す。
【図８】0025  図８は本発明のストレージ装置においてデータの更新に対するパリティオブジェクトの更新を示す。
【図９】0026  図９はストレージシステムがホストコンピュータからＣＲＥＡＴＥ（またはＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥ）コマンドを受信する時の処理フローを示す。
【図１０】0027  図１０はストレージシステムがホストコンピュータからＷＲＩＴＥ，ＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥ、またはＡＰＰＥＮＤコマンドを受信する時の処理フローを示す。
【図１１】0028  図１１はＡＰＰＥＮＤコマンドを受信した時の図１０の処理フローの続きを示す。
【図１２】0029  図１２はＩＤ＝０の論理ＯＳＤにデータを書き込むＷＲＩＴＥコマンドを示す。ここではターゲットデータストレージ装置がＯＳＤ＿１でありオフセットが４ＫＢであると決められる。
【図１３】0030  図１３は論理オブジェクトの属性を更新する処理フローを示す。
【図１４】0031  図１４はホストコンピュータがＲＥＡＤまたはＧＥＴ  ＡＴＴＲＩＢＵＴＥコマンドを本発明のストレージシステムに発行する時の処理フローを示す。
【図１５】0032  図１５は本発明の第二の実施例の冗長アレイ構成の概観を示す。
【図１６】0033  図１６は本発明の第二の実施例の論理ＯＳＤ管理テーブルを示す。
【図１７】0034  図１７は本発明の第二の実施例の論理オブジェクト管理テーブルを示す。
【図１８】0035  図１８は本発明の第三の実施例の論理ＯＳＤ管理テーブルを示す。
【図１９】0036  図１９はストレージシステムが本発明の第三の実施例の元でホストコンピュータからＣＲＥＡＴＥ（またはＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥ）コマンドを受信する時の処理フローを示す。
【図２０】0037  図２０はデータがホストコンピュータからターゲットオブジェクトに最初に書かれる時の処理フローを示す。（例えば、ＣＲＥＡＴＥ−ＡＮＤ−ＷＲＩＴＥコマンドが発行される、または最初のＷＲＩＴＥコマンドが発行される時）
【符号の説明】
【０１０５】
１      ホスト
２      ストレージシステム
５      コンソール
１１    ＣＰＵ
１３    メモリ
１４    ＨＢＡ
２０    コントローラ
２１    ＣＰＵ
２２    メモリ
２３    キャッシュメモリ
２４    インタフェース
２５    インタフェース
２６    ネットワークインタフェース
３１    ストレージ
【図１】
2006178926.tif 000004
【図２】
2006178926.tif 000005
【図３】
2006178926.tif 000006
【図４】
2006178926.tif 000007
【図５】
2006178926.tif 000008
【図６】
2006178926.tif 000009
【図７】
2006178926.tif 000010
【図８】
2006178926.tif 000011
【図９】
2006178926.tif 000012
【図１０】
2006178926.tif 000013
【図１１】
2006178926.tif 000014
【図１２】
2006178926.tif 000015
【図１３】
2006178926.tif 000016
【図１４】
2006178926.tif 000017
【図１５】
2006178926.tif 000018
【図１６】
2006178926.tif 000019
【図１７】
2006178926.tif 000020
【図１８】
2006178926.tif 000021
【図１９】
2006178926.tif 000022
【図２０】
2006178926.tif 000023
【外国語明細書】
2006178926.tif 000024
2006178926.tif 000025
2006178926.tif 000026
2006178926.tif 000027
2006178926.tif 000028
2006178926.tif 000029
2006178926.tif 000030
2006178926.tif 000031
2006178926.tif 000032
2006178926.tif 000033
2006178926.tif 000034
2006178926.tif 000035
2006178926.tif 000036
2006178926.tif 000037
2006178926.tif 000038
2006178926.tif 000039
2006178926.tif 000040
2006178926.tif 000041
2006178926.tif 000042
2006178926.tif 000043
2006178926.tif 000044
2006178926.tif 000045
2006178926.tif 000046
2006178926.tif 000047
2006178926.tif 000048
2006178926.tif 000049
2006178926.tif 000050
2006178926.tif 000051
2006178926.tif 000052
2006178926.tif 000053
2006178926.tif 000054
2006178926.tif 000055
2006178926.tif 000056
2006178926.tif 000057
2006178926.tif 000058
2006178926.tif 000059
2006178926.tif 000060
2006178926.tif 000061
2006178926.tif 000062
2006178926.tif 000063
2006178926.tif 000064
2006178926.tif 000065
2006178926.tif 000066
2006178926.tif 000067
【図１】
2006178926.tif 000068
【図２】
2006178926.tif 000069
【図３】
2006178926.tif 000070
【図４】
2006178926.tif 000071
【図５】
2006178926.tif 000072
【図６】
2006178926.tif 000073
【図７】
2006178926.tif 000074
【図８】
2006178926.tif 000075
【図９】
2006178926.tif 000076
【図１０】
2006178926.tif 000077
【図１１】
2006178926.tif 000078
【図１２】
2006178926.tif 000079
【図１３】
2006178926.tif 000080
【図１４】
2006178926.tif 000081
【図１５】
2006178926.tif 000082
【図１６】
2006178926.tif 000083
【図１７】
2006178926.tif 000084
【図１８】
2006178926.tif 000085
【図１９】
2006178926.tif 000086
【図２０】
2006178926.tif 000087