(57)【要約】【課題】データ量およびディスクの容量に応じてデータの多重度を柔軟に変更することができ、ディスクの信頼度とデータ転送速度を最大にすることができるデータ格納装置を得る。【解決手段】格納するブロック番号を最終ブロック番号＋１とし、現多重度３３に等しい数のボリュームに空き領域が存在するか否かを調べ、空き領域が存在する場合はファイルブロックの多重度が現多重度に等しくなるように複製して格納する。空き領域が存在しない場合は現多重度を１減らして、既にデータが格納されている領域に上書き格納する。書き込まれたボリュームについて現ブロック数２５を更新し、ファイルブロック情報３５を追加し、最終ブロック番号３４を更新する。【選択図】　　　　図１
2004046352.tif 000002
【特許請求の範囲】
【請求項１】
転送経路を介して接続する記憶デバイスに、データをファイルブロックごとに分割して格納するデータ格納装置において、
前記記憶デバイスから構成される各ボリュームを識別するための第１の識別子と前記各ボリュームの容量情報とを記憶するボリューム管理テーブルと、
前記ボリュームに格納するファイルブロックの複製数の最小値である現多重度、前記各ファイルブロックを格納すべきボリュームを識別するための第２の識別子および前記各ファイルブロックの読み出しの優先度を記憶するファイルブロック管理テーブルと、
前記第１の識別子、前記容量情報、前記現多重度および前記第２の識別子に基づいて各ボリュームへのファイルブロックの書き込み制御を行うとともに、前記優先度に従って各ボリュームからのファイルブロックの読み出し制御を行うファイルブロック管理手段と
を備えたことを特徴とするデータ格納装置。
【請求項２】
ファイルブロック管理手段は、現多重度に等しい数のボリュームに空き領域が存在するか否か判定し、存在する場合はファイルブロックの多重度が現多重度と等しくなるようにファイルブロックを複製して格納することを特徴とする請求項１記載のデータ格納装置。
【請求項３】
ファイルブロック管理手段は、すべてのボリュームに空き領域が存在しない場合、格納すべきファイルブロックを現多重度より多重度の高いファイルブロックが格納されている領域に上書きすることを特徴とする請求項１記載のデータ格納装置。
【請求項４】
ファイルブロック管理手段は、各ボリュームからデータを読み出すにあたり、ファイルブロック管理テーブルの優先度を参照し、優先度が最も高いファイルブロックから読み出すことを特徴とする請求項１記載のデータ格納装置。
【請求項５】
ファイルブロック管理手段は、一または二以上のボリュームがアクセス不能となった場合、アクセス不能となったボリュームに格納されていたファイルブロックと同じ番号のファイルブロックが格納されているアクセス可能なボリュームから当該ファイルブロックの複製を読み出すことを特徴とする請求項１記載のデータ格納装置。
【請求項６】
ファイルブロック管理手段は、新たに追加されたボリュームに現多重度よりも低い多重度のファイルブロックを格納することを特徴とする請求項１記載のデータ格納装置。
【請求項７】
ファイルブロック管理手段は、現多重度が変更された場合にユーザに対して警告を発することを特徴とする請求項２記載のデータ格納装置。
【請求項８】
ファイルブロック管理手段は、現多重度が変更された場合にエラーとすることを特徴とする請求項２記載のデータ格納装置。
【請求項９】
転送経路を介して接続する記憶デバイスに、データをファイルブロックごとに分割して格納する装置であって、
前記記憶デバイスから構成される各ボリュームを識別するための第１の識別子と前記各ボリュームの容量情報とを記憶するボリューム管理テーブルと、
前記ボリュームに格納するファイルブロックの複製数の最小値である現多重度、前記各ファイルブロックを格納すべきボリュームを識別するための第２の識別子および前記各ファイルブロックの読み出しの優先度を記憶するファイルブロック管理テーブルとを備えたデータ格納装置のデータ格納方法において、
前記第１の識別子、前記容量情報、前記現多重度および前記第２の識別子に基づいて各ボリュームへのファイルブロックの書き込み制御を行うと共に、前記優先度に従って各ボリュームからのファイルブロックの読み出し制御を行うことを特徴とするデータ格納方法。
【請求項１０】
転送経路を介して接続する記憶デバイスに、データをファイルブロックごとに分割して格納するにあたり、
記憶デバイスから構成される各ボリュームを識別するための第１の識別子と前記各ボリュームの容量情報とを記憶するボリューム管理テーブル、
前記ボリュームに格納するファイルブロックの複製数の最小値である現多重度、前記各ファイルブロックを格納すべきボリュームを識別するための第２の識別子および前記各ファイルブロックの読み出しの優先度を記憶するファイルブロック管理テーブル、
前記第１の識別子、前記容量情報、前記現多重度および前記第２の識別子に基づいて各ボリュームへのファイルブロックの書き込み制御を行うとともに、前記優先度に従って各ボリュームからのファイルブロックの読み出し制御を行うファイルブロック管理手段
としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データを複製して複数の二次記憶装置に書き込むデータ格納装置およびデータ格納方法に関するものである。
【０００２】
【従来の技術】
近年、二次記憶装置（以下、ディスクと称する）の大容量化が進み、それに伴いディスクからの高速なデータ転送や、ディスクの高信頼性が求められてきた。
これらの対応手段としてディスクアレイ装置があり、ディスクアレイ装置には以下に示すようないくつかのデータ格納法が提案されている。
【０００３】
ディスクアレイ装置のデータ格納法の一つにミラーリングがある。ミラーリングとは、２つのディスクに同一データを書き込むことによりディスクの信頼性を向上させる方法である。ミラーディスクはＲＡＩＤ１（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ　Ａｒｒａｙｓ　ｏｆ　Ｉｎｅｘｐｅｎｓｉｖｅ　Ｄｉｓｋｓ）とも呼ばれる。
【０００４】
図１５は、ミラーリングによるデータ格納例を示す図である。図において、＃Ｄ１〜＃Ｄ４は物理ディスク、Ｂ１〜Ｂ２４はファイルブロック番号を示す。物理ディスク＃Ｄ１と物理ディスク＃Ｄ２が対、物理ディスク＃Ｄ３と物理ディスク＃Ｄ４が対となり、それぞれの対が一つの論理ディスクを構成する。対となる物理ディスクには同一のデータが書込まれており、オペレーティングシステムは例えば＃Ｄ１に障害が発生した時には＃Ｄ２にアクセスするように動作し、＃Ｄ２に障害が発生した時には＃Ｄ１にアクセスするように動作する。そのため、対となる２つの物理ディスクが同時に故障しない限りデータへのアクセスは可能である。
【０００５】
ミラーリングには、データ転送時に各物理ディスクへの負荷が均等になるようにデータを転送するディスクを選択し、ディスクの全体的なデータ転送効率を向上させる負荷分散機能を有するものもある。これはミラーリング構成をとる論理ディスクに対してデータ転送要求が発行された場合に、要求されたデータが物理ディスクから転送されてくる待ち時間の間に、次のデータ転送要求をその対となる物理ディスクに対して発行するものである。これにより、データ転送が同時並列に行われるため、データの転送効率が向上する。
【０００６】
以上のように、同一データを２つのディスクに格納するミラーリング構成をとることにより、ディスクの高信頼性と高速転送を実現することができる。
【０００７】
また、特開平６−１８７２２号公報には、データの複製を複数のディスクに格納する方法が開示されている。図１６、図１７はその格納例を示す図である。それぞれの図において、図１５と共通する要素には同一符号を付し、その説明を省略する。図１６の格納例は、各ディスク上のデータの複製を他の全てのディスクに分散させて格納する方法によるものである。また、図１７のデータ格納例は、複製を他の２台以上の複製用ディスクに分けて格納する方法によるものである。
【０００８】
図１６、図１７に示すデータ格納法において、格納されたデータを転送する時は各ディスクから並列にデータを転送するため、高速転送が実現できる。また、特定のディスクにデータ転送要求が集中した場合には同一データを他のディスクから転送することにより、負荷を分散させることが可能である。さらに、ディスク故障後の障害復旧の際には、複数のディスクから並列にデータを転送してスペアディスクに書き込むことができるため、一台のディスクのみに複製を格納するミラーリングシステムよりも障害復旧が早いという利点もある。
【０００９】
【発明が解決しようとする課題】
従来のデータ格納装置は以上のように構成されているので、ディスク接続時にデータの多重度、すなわちデータを複製する数が決定されるため、格納するデータ量の増減やディスクの接続台数の増減に応じて多重度を柔軟に変更することができないという課題があった。
【００１０】
この発明は上記のような課題を解決するためになされたもので、データ量およびディスクの容量に応じてデータの多重度を柔軟に変更することができ、かつディスクの信頼度とデータ転送効率を最大にすることができるデータ格納装置およびデータ格納方法を得ることを目的とする。
【００１１】
【課題を解決するための手段】
この発明に係るデータ格納装置は、記憶デバイスから構成される各ボリュームを識別するための第１の識別子と各ボリュームの容量情報とを記憶するボリューム管理テーブルと、ボリュームに格納するファイルブロックの複製数の最小値である現多重度、各ファイルブロックを格納すべきボリュームを識別するための第２の識別子および各ファイルブロックの読み出しの優先度を記憶するファイルブロック管理テーブルと、第１の識別子、容量情報、現多重度および第２の識別子に基づいて各ボリュームへのファイルブロックの書き込み制御を行うとともに、優先度に従って各ボリュームからのファイルブロックの読み出し制御を行うファイルブロック管理手段とを備えたものである。
【００１２】
この発明に係るデータ格納装置は、ファイルブロック管理手段が、現多重度に等しい数のボリュームに空き領域が存在するか否か判定し、存在する場合はファイルブロックの多重度が現多重度と等しくなるようにファイルブロックを複製して格納するものである。
【００１３】
この発明に係るデータ格納装置は、ファイルブロック管理手段が、すべてのボリュームに空き領域が存在しない場合、格納すべきファイルブロックを現多重度より多重度の高いファイルブロックが格納されている領域に上書きするものである。
【００１４】
この発明に係るデータ格納装置は、ファイルブロック管理手段が、各ボリュームからデータを読み出すにあたり、ファイルブロック管理テーブルの優先度を参照し、優先度が最も高いファイルブロックから読み出すものである。
【００１５】
この発明に係るデータ格納装置は、ファイルブロック管理手段が、あるボリュームがアクセス不能となった場合、アクセス可能なボリュームに格納されたファイルブロックの複製を読み出すものである。
【００１６】
この発明に係るデータ格納装置は、ファイルブロック管理手段が、新たに追加されたボリュームに現多重度よりも低い多重度のファイルブロックを格納するものである。
【００１７】
この発明に係るデータ格納装置は、ファイルブロック管理手段が、現多重度が変更された場合にユーザに対して警告を発するものである。
【００１８】
この発明に係るデータ格納装置は、ファイルブロック管理手段が、現多重度が変更された場合にエラーとするものである。
【００１９】
この発明に係るデータ格納方法は、記憶デバイスから構成される各ボリュームを識別するための第１の識別子と各ボリュームの容量情報とを記憶するボリューム管理テーブルと、ボリュームに格納するファイルブロックの複製数の最小値である現多重度、各ファイルブロックを格納すべきボリュームを識別するための第２の識別子および各ファイルブロックの読み出しの優先度を記憶するファイルブロック管理テーブルとを備えたデータ格納装置のデータ格納方法であって、第１の識別子、容量情報、現多重度および第２の識別子に基づいて各ボリュームへのファイルブロックの書き込み制御を行うと共に、優先度に従って各ボリュームからのファイルブロックの読み出し制御を行うものである。
【００２０】
この発明に係るデータ格納プログラムは、記憶デバイスから構成される各ボリュームを識別するための第１の識別子と各ボリュームの容量情報とを記憶するボリューム管理テーブル、ボリュームに格納するファイルブロックの複製数の最小値である現多重度、各ファイルブロックを格納すべきボリュームを識別するための第２の識別子および各ファイルブロックの読み出しの優先度を記憶するファイルブロック管理テーブル、第１の識別子、容量情報、現多重度および第２の識別子に基づいて各ボリュームへのファイルブロックの書き込み制御を行うとともに、優先度に従って各ボリュームからのファイルブロックの読み出し制御を行うファイルブロック管理手段としてコンピュータを機能させるものである。
【００２１】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１によるデータ格納装置を含むシステムの構成を示す図である。図において、１はネットワーク結合装置３ａ，３ｂによってバス（転送経路）２，２ａに接続されるネットワーク（転送経路）である。２は中央処理装置１５と主記憶装置１０を接続しているバス（転送経路）であり、複数のバスを接続するためのバス結合装置３ｃを介してバス（転送経路）２ｂに接続されている。バス結合装置３ｃは、例えば異なるバスやネットワーク間を中継するブリッジである。６ａ，７ａは磁気ディスク装置（記憶デバイス）であり、ディスクコントローラ４ａによってバス２ａに接続され、一つのボリューム８ａを構成する。同様に、６ｂ，７ｂも磁気ディスク装置であり、ディスクコントローラ４ｂによってバス２ｂに接続され、一つのボリューム８ｂを構成する。５ａはバス２ａに接続されるＩ／Ｏプロセッサである。ボリューム８ａはネットワークドライブに相当し、Ｉ／Ｏプロセッサ５ａにより制御される。ボリューム８ｂはローカルドライブに相当する。ここで、ボリュームとは、オペレーティングシステムを介して管理される１台以上の磁気ディスク装置から構成される記憶単位を表す。
【００２２】
１０は主記憶装置であり、ボリューム管理部１１、ファイル制御部１２、システム全体の制御を行うオペレーティングシステム１３およびファイルブロック管理部（ファイルブロック管理手段）１４などを格納する。１５は中央処理装置（ＣＰＵ）であって、オペレーティングシステム１３などを実行してシステム全体の各装置を制御する。
【００２３】
この実施の形態では、この発明によるデータ格納処理を主記憶装置１０に格納されるファイルブロック管理部１４により実現している。このファイルブロック管理部１４は、オペレーティングシステム１３とは分離してプログラムされたソフトウエアとして主記憶装置１０上に実装されて、オペレーティングシステム１３に対してファイル制御の要求を行ってもよいし、オペレーティングシステム１３と一体となってファイル制御を行ってもよい。
【００２４】
図２はこの発明の実施の形態１によるデータ格納装置の構成要素の相互関係を示す図である。図において、８は磁気ディスク装置からなる複数のボリューム、１２はボリューム８へのデータ書き込みおよび読み出しの制御をオぺレーティングシステムを介して行うファイル制御部、１６はボリューム８とオペレーティングシステム１３とのデータ送受を中継するデバイスドライバ、２０はボリューム管理部１１がオペレーティングシステムに対して各ボリュームのボリューム名（第１の識別子）、ネットワークドライブ／ローカルドライブの区別を示すボリューム種別等の情報の取得要求を出し、これらの情報に基づいて生成するボリューム管理テーブル、３０はファイルブロック管理部１４がオペレーティングシステム１３に対して各ファイルブロックが格納されるボリューム名（第２の識別子）、各ファイルブロックの多重度等の取得要求を出し、この情報に基づいて生成するファイルブロック管理テーブルを示す。
【００２５】
図３は、図２中のボリューム管理テーブル２０の構成を示す図である。図において、２１はボリューム情報であり、ボリューム名（第１の識別子）２２、種別２３、最大ブロック数（容量情報）２４、現ブロック数２５、アクティブフラグ２６から構成される。ボリューム情報２１は、ボリューム管理テーブル２０内にボリュームの数だけ格納される。ボリューム名２２は、オペレーティングシステム１３により識別されるボリュームの識別子である。種別２３は、ボリュームの種別であり、ネットワークドライブ、ローカルドライブ等の区別を示す。最大ブロック数２４は、ボリュームに格納可能なファイルブロックの最大数を表し、ボリュームの容量を１ファイルブロックサイズで割ったものである。現ブロック数２５は、各ボリュームに格納されているファイルブロックの数であり、初期状態では０である。アクティブフラグ２６は、ドライブを冗長構成の一部として利用するか否か、またはエラー等によりオフライン状態であるか等の状態を示すものである。
【００２６】
図４は、図２中のファイルブロック管理テーブル３０の構成を示す図である。
図において、３１はファイルブロック管理情報であり、最大多重度３２、現多重度３３、最終ブロック番号３４から構成される。３５はファイルブロック情報であり、ボリューム名（第２の識別子）３６、ブロック番号３７、タイムスタンプ３８、ランク（優先度）３９から構成される。ファイルブロック管理テーブル３０は、ファイルブロック管理情報３１とファイルブロック情報３５とから成り、ファイルブロック管理テーブル３０内にファイルブロック管理情報３１は１つ格納、ファイルブロック情報３５はファイルブロックの数だけ格納される。ここで、ファイルブロックとは、記憶デバイスに格納すべきデータを同一容量単位で分割した数値列で、例えば記憶デバイスに格納すべきデータの最小単位となる数値列を示す。
【００２７】
図４において、最大多重度３２は格納されたファイルブロックの複製数の最大値、現多重度３３は格納されたファイルブロックの複製数の最小値、最終ブロック番号３４は全ボリュームにおけるブロック番号のうち最終番号を示す。ボリューム名３６はファイルブロックが格納されているボリュームの識別子を示す。ブロック番号３７は、各ボリュームに格納されたファイルブロックに付された通し番号を示し、同一ブロック番号３７のファイルブロックはデータの内容が同一であることを意味する。タイムスタンプ３８は、ファイルブロックがボリュームに格納された日時、ランク３９は、同一ブロック番号のファイルブロックをリードする（読み込む）際の優先度を示す。
【００２８】
次にボリューム８へのデータの書き込み動作について説明する。
図５はこの実施の形態におけるファイルブロックの格納手順を示すフローチャート、図６は図５の手順によるファイルブロックの格納例であり、図６において、＃Ｖ１〜＃Ｖ４はボリューム名、Ｂ１〜Ｂ８はブロック番号を示し、以降の図においても共通の要素を示すとしてその説明を省略する。図６は最大ボリューム数２４＝８である４つのボリュームの全領域にデータが格納された状態を示す。
図６のボリュームがすべて空き領域である初期状態からデータを格納する手順について図５を参照して説明する。
【００２９】
図６の初期状態では、ブロック管理部１４は最終ブロック番号３４を０、最大多重度３２と現多重度３３をボリューム数に等しい４に設定する。まず、ファイルブロック管理部１４は、ファイルブロック管理テーブル３０から最終ブロック番号３４＝０を取得し（ステップＳＴ１）、取得した（最終ブロック番号３４）＋１＝Ｂ１を格納するブロック番号とする（ステップＳＴ２）。続いて、ファイルブロック管理部１４は現多重度３３に等しい数のボリュームに空き領域が存在するか否かを判定する（ステップＳＴ３）。例えば、ファイルブロック管理部１４がボリューム管理部１１を介してボリューム管理テーブル２０から最大ブロック数２４を取得し、これとステップＳＴ２で求めた格納するブロック番号とを比較することにより判定できる。格納するブロック番号がすべての最大ブロック数２４より小さい場合は、現多重度３３に等しい数のボリュームに空き領域が存在する。この場合はすべての最大ブロック数２４＝８、格納するブロック番号＝１であるため、空き領域は存在すると判定できる。
【００３０】
空き領域が存在しない場合はブロックの上書き更新処理へ移る（ステップＳＴ４）。空き領域が存在する場合、ファイルブロック管理部１４はボリューム管理部１１を介して空き領域の存在するボリューム名を取得し、これらのボリュームに書き込みデータの多重度が現多重度３３と等しくなるようにデータを複製して書き込む要求をオペレーティングシステム１３に対して行う（ステップＳＴ５）。ボリューム管理部１１は、現ブロック数２５が最大ブロック数２４より小さいボリュームを空き領域が存在するボリュームとして取得してもよい。オペレーティングシステム１３はファイルブロック管理部１４の要求に従ってボリュームの空き領域にデータを格納する。図６では、１つのデータを多重度が４となるようにボリューム＃Ｖ１〜＃Ｖ４それぞれに格納する。
【００３１】
続いて、ボリューム管理部１１はボリューム管理テーブル２０上のボリューム情報２１のボリューム名＃Ｖ１〜＃Ｖ４の各現ブロック数２５を１に更新する（ステップＳＴ６）。ファイルブロック管理部１４は、ブロック番号Ｂ１のファイルブロック情報３５を追加し（ステップＳＴ７）、ファイルブロック管理情報３１の最終ブロック番号３４をＢ１に更新する（ステップＳＴ８）。続いて、次のデータを格納する場合、再びこのフローチャートのステップＳＴ１から開始して次のデータを格納する。図６は上記手順を繰り返してデータを格納し、すべてのファイルブロックの多重度＝４、最終ブロック番号＝Ｂ８となった状態を示す。
【００３２】
次にファイルブロック読み出し動作について説明する。
まず、ファイル制御部１２が、読み出し対象ブロック番号をファイルブロック管理部１４に渡す。ファイルブロック管理部１４はファイルブロック管理テーブル３０から取得した番号のランク３９を参照し、最も優先度の高いファイルブロック情報３５のボリューム名を取得してファイル制御部１２に返す。続いて、ファイル制御部１２は取得したボリューム名のボリュームに格納される読み出し対象ブロックを読み出すようにオペレーティングシステム１３に対して要求する。
オペレーティングシステム１３は、ファイル制御部１２の要求に従いデバイスドライバにファイル読み出しの要求を行う。デバイスドライバはボリュームから読み出しデータを取得しオペレーティングシステム１３に返す。
【００３３】
ここで、上記ランク３９を更新する動作について説明する。
図７はファイルブロック管理テーブル３０上のファイルブロック情報３５のランク３９を更新する手順を示すフローチャート、図８（ａ）は上記ランク３９に従って選択された読み出しファイルブロックを楕円で示した図であり、これらの図を参照して説明する。
【００３４】
ファイルブロック管理部１４は、ファイルブロック管理テーブル３０上のファイルブロック情報３５の全てのランク３９を初期化し（ステップＳＴ１１）、ランク更新対象のファイルブロックとして、まずブロック番号Ｂ１のファイルブロック情報３５を取得する（ステップＳＴ１２）。続いて、ファイルブロック管理部１４は取得したファイルブロック情報３５のボリューム名を参照し、同一ボリューム名を持つファイルブロック情報３５のランク３９の合計値を計算する（ステップＳＴ１３）。図８（ａ）では、ブロック番号Ｂ１のファイルブロック情報３５のボリューム名は＃Ｖ１〜＃Ｖ４であり、全てのボリューム名に対応するランク３９は全て初期化されているため各ボリュームのランク３９の合計値は全て０となる。
【００３５】
続いて、ファイルブロック管理部１４は各ボリュームのランク３９の合計値を比較し、その合計値が最も小さいボリュームに対応するランク更新対象ブロック番号３７のランク３９を、例えば１に更新する（ステップＳＴ１４）。ランク３９の合計値が最も小さいものが複数存在する場合は、ボリューム管理テーブル２０上のボリューム情報２１の順番に従ってランク３９を更新してもよい。図８（ａ）では、ランク３９の合計値が最小の＃Ｖ１〜＃Ｖ４のうちボリューム情報２１の順番に従ってボリューム＃Ｖ１を選択し、ボリューム＃Ｖ１に格納されるブロック番号Ｂ１のファイルブロック情報３５のランク３９を１に更新する。
【００３６】
続いて、ファイルブロック管理部１４はブロック番号Ｂ２のファイルブロック情報３５についても同様にランク３９の更新処理を行う。ボリューム＃Ｖ１のブロック番号Ｂ１のランク３９が１に更新されたため、ボリューム＃Ｖ１のランク合計値は１、ボリューム＃Ｖ２〜＃Ｖ４の各ランク合計値は０となる。よって、ファイルブロック管理部１４は、ランク合計値が最小のボリューム＃Ｖ２〜＃Ｖ４のうちボリューム情報２１の順番に従ってボリューム＃Ｖ２を選択し、ボリューム＃Ｖ２のブロック番号Ｂ２のランク３９を１に更新する。ブロック番号Ｂ３〜Ｂ８のファイルブロックについても同様に、上記ステップＳＴ１２からステップＳＴ１４までを繰り返す（ステップＳＴ１５）。
【００３７】
上記のように、ランク３９に従って読み出し優先度を決定することにより、異なるボリュームからファイルブロックを並列にリードでき、全体としてのデータ転送速度と信頼度が向上する。
【００３８】
図８（ｂ）は、ファイル制御部１２からファイルブロック管理部１４に対してブロック番号Ｂ３のリード要求が４つ行われた場合に読み出されるリードファイルブロックを楕円により示す図である。図８（ａ）の場合と同様に、ファイルブロック管理部１４が各ファイルブロックのランク３９を更新し、ランク３９に従ってファイルブロックの読み出し優先度を決定してもよい。ランク３９が同一である場合は、ボリューム管理テーブル２０上のボリューム情報２１の順番に従って優先度を決定してもよい。ファイルブロック管理部１４が優先度に従ってリードファイルブロックを選択することにより、同一ファイルブロックのリード要求が発生した場合に、異なるボリュームの同一ブロック番号のファイルブロックを同時に読み出すことができる。これにより、データ転送の待ち時間をなくしスループットを向上させることができる。
【００３９】
ファイルブロック管理部１４は、上記ランク更新処理をファイルブロックを読み出す直前に行ってもよいし、書き込み終了後に行ってもよい。また、ファイルブロック管理部１４は、Ｂ１〜Ｂ８のブロック番号３７について上記手順によりランク３９を設定した後、未設定のランク３９に対応するブロック番号３７を対象に、再度図７のフローチャートのステップＳＴ１２からステップＳＴ１４を繰り返し、ランク３９を設定してもよい。この場合、初期値を４とし以後繰り返し設定を行う毎に値をデクリメントする。これにより、同一ブロック番号を持つ異なるファイルブロック情報３５には、異なるランク３９が設定される。
【００４０】
次に、上書き処理を含むデータ書き込み動作について説明する。
図９は上書き処理を含むデータ書き込み手順を示すフローチャート、図１０（ａ）は図６のように格納されたファイルブロックに上書き更新処理を行った図であり、図９に従って図６の構成を上書きする手順を説明する。
【００４１】
ファイルブロック管理部１４は、ファイルブロック管理テーブル３０上の格納されるファイルブロック管理情報３１から最終ブロック番号３４＝Ｂ８を取得し（ステップＳＴ１６）、取得した（最終ブロック番号３４）＋１＝Ｂ９を格納するブロック番号とする（ステップＳＴ１７）。続いて、ボリューム管理部１１が空き領域の存在するボリューム名を取得し、ファイルブロック管理部１４に渡す。図６の場合、すべてのボリュームにおいて現ブロック数２５＝８、最大ブロック数２４＝８であるため、空き領域が存在しないことがわかる。
【００４２】
ここで、空き領域が存在する場合、ファイルブロック管理部１４はオペレーティングシステム１３に対して空き領域にデータの書き込みを行う要求を行い、オペレーティングシステム１３はファイルブロック管理部１４の要求に従いデータを現多重度３３分複製して格納する（ステップＳＴ１８）。ボリューム管理部１１はデータが書き込まれたボリュームのボリューム情報２１の現ブロック数２５に１を加えて更新する（ステップＳＴ１９）。
【００４３】
続いて、ファイルブロック管理部１４は書き残りのブロックが存在するか否か、すなわち現多重度３３から書き込まれたボリューム数を引いた数が０か否か判定する（ステップＳＴ２０）と、空き領域が存在しないため、Ｂ９の書き残りは４つとなる。続いて、ファイルブロック管理部１４は格納するファイルブロック＝Ｂ９が書き込まれていないボリューム、すなわちボリューム名＃Ｖ１〜＃Ｖ４のファイルブロック情報３５のブロック番号３７を取得し（ステップＳＴ２１）、取得したブロック番号のファイルブロック情報３５の数をブロック番号毎にカウントする（ステップＳＴ２２）。ボリューム名＃Ｖ１〜＃Ｖ４のファイルブロック情報３５のブロック番号はＢ１〜Ｂ８であり、すべての番号のファイルブロック情報３５の数は４である。ここで、ファイルブロックが書き込まれていないボリュームが持つブロック番号３７を取得するのは、同一ブロックが複数のボリュームに分散されて書き込まれるようにするためである。
【００４４】
ファイルブロック管理部１４は、ファイルブロック情報３５の数と現多重度３３とを比較し、ファイルブロック情報３５の数の方が大きいブロックを上書きされるブロックとして選択する（ステップＳＴ２３）が、現多重度３３＝４であるため、上書きされるブロックが存在しない。この場合、現多重度を１減らす（ステップＳＴ２３）。このとき、ファイルブロック管理部１４はオペレーティングシステム１３に対してユーザへの警告を発するように要求してもよいし、エラーとするように要求してもよい。
【００４５】
これにより、番号Ｂ１〜Ｂ８のファイルブロックが上書きされるブロックの候補となる。このように、ファイルブロック情報３５の数が現多重度３３より多いブロックが複数存在する場合、ブロック番号３７が最も小さいブロックを上書きされるブロックとして選択してもよい。また、格納されるボリュームはボリューム管理テーブル２０上のボリューム情報２１の順番に従って決めてもよい。よって、ファイルブロック管理部１４は、ボリューム＃Ｖ１のブロック番号Ｂ１のブロックを上書きされるブロックとして選択する。上書きされるブロックの数が現多重度３３に達するまで、すなわち、現多重度３３がステップＳＴ１８で既に書き込まれたボリューム数を引いた数だけステップＳＴ２３の処理を繰り返す（ステップＳＴ２４）。ブロックＢ１が上書きされるブロックとして選択されたため、ファイルブロック情報３５の数が現多重度よりも大きいブロックはＢ２〜Ｂ８となり、次に上書きされるブロックとしてはボリューム＃Ｖ２のブロックＢ２が選択される。同様に、上書きされるブロックとしてボリューム＃Ｖ３のブロックＢ３が選択される。
【００４６】
続いて、ファイルブロック管理部１４は上書きされるブロックが選択されたか否かを判定し（ステップＳＴ２５）、オペレーティングシステム１３に対してそれぞれのボリュームに書き込みを行う要求を出す（ステップＳＴ２６）。オペレーティングシステム１３は格納対象ブロックを上書きする。続いて、ファイルブロック管理部１４は上書きされたブロックのファイルブロック情報３５のブロック番号３７＝Ｂ１，Ｂ２，Ｂ３を、上書き格納したブロック番号＝Ｂ９にしてファイルブロック管理テーブルを更新し（ステップＳＴ２７）、最終ブロック番号３４をＢ９に更新する（ステップＳＴ２８）。ステップＳＴ２０で書き残りのブロックが存在しない場合、および、ステップＳＴ２５で上書きされるブロックが選択されたかった場合、ステップＳＴ２７とステップＳＴ２８を行う。
【００４７】
図１０（ａ）には上記手順により上書きしたブロックを丸で示す。上記手順により、それぞれのファイルブロックの多重度が最大で、かつ同一ブロックが各ボリュームに均等に分散するように上書きされる。また、図１０（ｂ）は上記手順によりファイルブロックが上書きされ、すべてのファイルブロックの多重度が１となった場合を示す図である。この例では、これ以上ファイルブロックを格納することはできない。
【００４８】
図１１（ａ）は図１０（ａ）に示すファイルブロックから読み出されるファイルブロックを楕円で示す図である。読み出しの優先度はファイルブロック管理テーブル３０のファイルブロック情報３５のランク３９に従って決定され、ランク３９は図７に示す手順により設定される。ランク３９の設定手順について図７と図１１（ａ）を参照して説明する。
【００４９】
ファイルブロック管理部１４は、ファイルブロック管理テーブル３０のファイルブロック情報３５の全てのランク３９を初期化し（ステップＳＴ１１）、ランク更新対象のブロック番号Ｂ１のファイルブロック情報３５を取得する（ステップＳＴ１２）。続いて、取得したファイルブロック情報３５のボリューム名を参照し、同一ボリューム名を持つファイルブロック情報３５のランク３９の合計を計算する（ステップＳＴ１３）。この場合、取得したファイルブロック情報３５のボリューム名は＃Ｖ２〜＃Ｖ４であり、それぞれのボリューム名に対応するランク３９の合計値は全て０となる。
【００５０】
続いて、ファイルブロック管理部１４は各ボリュームのランク３９の合計値を比較し、その合計値が最も小さいボリューム名に対応するランク更新対象ブロック番号３７のランク３９を、例えば１に更新する（ステップＳＴ１４）。ランク３９の合計値が最も小さいものが複数存在する場合は、ボリューム管理テーブル２０上のボリューム情報２１の順番に従ってランク３９を更新してもよい。この場合、ランク３９の合計値が最小の＃Ｖ２〜＃Ｖ４のうちボリューム情報２１の順番に従ってボリューム＃Ｖ２を選択し、ボリューム＃Ｖ２に格納されるブロック番号Ｂ１のファイルブロック情報３５のランク３９を１に更新する。
【００５１】
続いて、ファイルブロック管理部１４はブロック番号Ｂ２のファイルブロック情報３５についても同様にランク３９の更新処理を行う。ボリューム＃Ｖ２のブロック番号Ｂ１のランク３９が１に更新されたため、ボリューム＃Ｖ２のランク合計値は１、ボリューム＃Ｖ１，＃Ｖ３，＃Ｖ４の各ランク合計値は０となる。
よって、ランク合計値が最小のボリューム＃Ｖ１，＃Ｖ３，＃Ｖ４のうちボリューム情報２１の順番に従ってボリューム＃Ｖ３を選択し、ボリューム＃Ｖ３のブロック番号Ｂ２のランク３９を１に更新する。ブロック番号Ｂ３〜Ｂ８のファイルブロックについても同様に、上記ステップＳＴ１２からステップＳＴ１４までを繰り返す（ステップＳＴ１５）。
【００５２】
上記手順により更新されたランク３９に従って読み出し優先度を決定することにより、異なるボリュームからファイルブロックを並列にリードでき、全体としてのデータ転送速度と信頼度が向上する。
【００５３】
図１１（ｂ）は、ブロック番号Ｂ３のリード要求が３つ行われた場合に読み出されるファイルブロックを楕円により示す図である。図１１（ａ）に示す場合と同様に、ファイルブロック管理部１４が各ファイルブロックのランク３９を更新し、ランク３９に従ってファイルブロックの読み出し優先度を決定してもよい。
ランク３９が同一である場合は、ボリューム管理テーブル２０上のボリューム情報２１の順番に従って優先度を決定してもよい。優先度に従ってリードファイルブロックが選択されることにより、ファイル制御部１２から同一ファイルブロックのリード要求が発生した場合に異なるボリュームの同一ブロック番号のファイルブロックを同時に読み出すことができる。これにより、データ転送の待ち時間をなくしスループットを向上させることができる。
【００５４】
図１１（ｃ）は、ファイルブロックが上書きされ現多重度が２となった状態でのリードファイルブロックを楕円により示す図であり、図１１（ｄ）はファイルブロックが上書きされ全てのファイルブロックの多重度が２となった状態でのリードファイルブロックを楕円により示す図である。それぞれの図において、図１１（ａ）に示す場合と同様に、ファイルブロック管理部１４が各ファイルブロックのランク３９を更新し、ランク３９に従ってファイルブロックの読み出し優先度を決定してもよい。ランク３９が同一である場合は、ボリューム管理テーブル２０上のボリューム情報２１の順番に従って優先度を決定してもよい。
【００５５】
以上のように、この実施の形態１によれば、ファイルブロック管理部１４が、現多重度３３に等しい数のボリュームに空き領域が存在するか否か判定し、存在する場合はファイルブロックの多重度が現多重度３３と等しくなるようにファイルブロックを複製して格納されるようにしたので、ボリュームの数に応じてすべてのファイルブロックの多重度が最大となるように格納できるため、接続するディスクの数を柔軟に決定でき、またボリュームの信頼度を最大にすることができる効果が得られる。
【００５６】
また、空き領域にファイルブロックを格納し、全領域に格納したときに書き残りのブロックが存在する場合、ファイルブロック管理手段１４は、現多重度３３を減らして既にデータが格納されている領域にデータを上書きするようにしたので、ボリュームの空き領域不足によりデータを格納できないということを回避でき、データ規模に応じてボリュームの容量を変更できる効果が得られる。
【００５７】
また、ファイルブロック管理手段１４は、現多重度３３が変更された場合にユーザに対して警告を発するようにしたので、必要な場合はユーザによりボリュームを増設することで、必要な多重度の信頼性を維持することができる効果が得られる。
【００５８】
また、ファイルブロック管理手段１４は、現多重度３３が変更された場合にエラーとするようにしたので、システムとして必要最低限の多重度を下回る多重度でデータが格納されることを防ぐことができ、最低限の多重度の信頼性を保証することができる効果が得られる。
【００５９】
また、ファイルブロック管理手段１４は、各ボリュームからデータを読み出すにあたり、ファイルブロック管理テーブル３０のランク３９を参照して優先度が最も高いファイルブロックが読み出されるようにしたので、異なるボリュームから並列に読み出すことができ、全体のデータ転送効率を最大にすることができる効果が得られる。
【００６０】
実施の形態２．
この発明の実施の形態２では、ディスクの故障やネットワークの障害などにより、あるボリュームへのアクセスが不可能となった場合におけるファイルブロック読み出しについて示す。また、アクセス不能となったボリュームの復旧または新しいボリュームの追加に対するファイルブロックの複製について示す。
【００６１】
図１２（ａ）はこの実施の形態で、ブロック番号Ｂ１〜Ｂ１０のファイルブロックが書き込まれた状態でボリューム＃Ｖ２が故障してアクセス不能となった場合に、ボリューム＃Ｖ２以外のボリュームから読み出されるファイルブロックを楕円により示す図である。オペレーションシステム１３がデバイスドライバのエラーやユーザの指定を検出すると、ボリューム管理部１１がボリューム情報２１のアクティブフラグ２６に設定し、これを参照することによりボリュームがアクセス不能か否かが判断できる。アクセス不能となったボリュームに格納されているファイルブロックにはアクセスできないため、ファイルブロック管理部１４により再度リードファイルブロックの選択を行う。
【００６２】
リードファイルブロックの選択のためのランク更新処理は、図７に示すフローチャートによる手順で行われ、図７に従って図１２（ａ）のランクを決定する手順を説明する。ファイルブロック管理部１４は、ファイルブロック情報３５の全てのランク３９を初期化し、ブロック番号Ｂ１のファイルブロック情報３５を取得する。続いてファイルブロック管理部１４は、取得したファイルブロック情報３５のボリューム名＃Ｖ３，＃Ｖ４と同一ボリューム名を持つファイルブロック情報３５のランク３９の合計値を計算すると、ともに０となる。よって、ファイルブロック管理部１４はボリューム＃Ｖ３に格納されるブロック番号Ｂ１のファイルブロック情報３５のランク３９を１に更新する。
【００６３】
続いて、ファイルブロック管理部１４はブロック番号Ｂ２のファイルブロック情報３５を取得する。ファイルブロック管理部１４は、取得したファイルブロック情報３５のボリューム名＃Ｖ１，＃Ｖ３，＃Ｖ４と同一ボリューム名を持つファイルブロック情報３５のランク３９の合計値を計算すると、それぞれ０，１，０となる。よって、ファイルブロック管理部１４はランクの合計値が最小で、かつボリューム管理テーブル２０上のボリューム情報２１に従ってボリューム＃Ｖ１を選択し、ボリューム＃Ｖ１のブロック番号Ｂ２を読み出しブロックとして選択する。同様に、ブロック番号Ｂ３〜Ｂ１０のファイルブロックについてランク３９を更新する。
【００６４】
図１２（ｂ）は、ファイルブロック番号Ｂ１〜Ｂ１６まで書き込まれた状態でボリューム＃Ｖ２が故障したときに、リードファイルブロックを楕円により示す図である。図において、読み出しファイルブロックはファイルブロック管理テーブル３０上のランク３９に従って選択され、ランク３９は図１２（ａ）の場合と同様、図７に示す手順でファイルブロック管理部１４により更新される。
【００６５】
次に追加されたボリュームにデータを格納する動作について説明する。
図１３は、追加されたボリュームへのデータ格納手順を示すフローチャート、図１４は最終ブロック番号＝Ｂ１２、現多重度＝２の状態でデータが格納されたボリューム＃Ｖ１〜＃Ｖ４にボリューム＃Ｖ５が追加され、図１３の手順に従ってボリューム＃Ｖ５にファイルブロックが格納された例を示す図である。ボリューム＃Ｖ５がすべて空き領域の状態からファイルブロックを格納する手順を、図１３、図１４を参照して説明する。
【００６６】
ボリューム管理部１１は、追加されたボリューム＃Ｖ５のボリューム情報２１をボリューム管理テーブル２０に追加する（ステップＳＴ２７）。続いてファイルブロック管理部１４はファイルブロック管理テーブル３０からファイルブロック情報３５を取得し（ステップＳＴ２８）、同一ブロック番号のファイルブロック情報３５の数をカウントする（ステップＳＴ２９）と、ブロック番号Ｂ１，Ｂ２，Ｂ１１，Ｂ１２のファイルブロック情報３５の数が２であり、ブロック番号Ｂ３〜Ｂ１０のファイルブロック情報３５の数が３である。
【００６７】
続いて、ファイルブロック管理部１４はファイルブロック情報３５の数が現多重度３３より大きいか否かを、ブロック番号Ｂ１２から降順に判定する（ステップＳＴ３０）。ファイルブロック情報３５の数が現多重度３３以下のブロックを、＃Ｖ５に格納するものとする。ブロック番号Ｂ１２のファイルブロック情報３５の数は２であり現多重度以下であるため、ファイルブロック管理部１４はブロック番号Ｂ１２のデータを複製して書き込むようにオペレーティングシステム１３に要求する。オペレーティングシステム１３はファイルブロック管理部１４の要求に従ってボリューム＃Ｖ５にブロック番号Ｂ１２のデータを格納する（ステップＳＴ３１）。
【００６８】
続いて、ファイルブロック管理部１４はブロック番号Ｂ１２のファイルブロック情報３５をファイルブロック管理テーブル３０に追加する（ステップＳＴ３２）。ファイルブロック管理部１４はすべてのブロック番号３７について上記ステップＳＴ２８〜ステップＳＴ３２の処理を行う（ステップＳＴ３３）。ステップＳＴ３０でカウントしたファイルブロック情報３５の数が現多重度３３より大きい場合は、次のブロック番号について上記ステップＳＴ２８〜ステップＳＴ３２の処理を行う。ファイルブロック管理部１４は、上記ステップＳＴ２８〜ステップＳＴ３２の処理をブロック番号の昇順で行ってもよいし、降順で行ってもよい。降順で行った場合、新しいファイルブロックの複製が優先的に格納されることになる。
【００６９】
追加されたボリュームにファイルブロックの複製が格納され、全てのファイルブロックの多重度が同一となった後に空き領域が残っている場合、ファイルブロック管理部１４は、現多重度を一つ上げて複製を格納していないファイルブロックの複製を作成して格納してもよい。また、空き領域のままにしておき将来追加される新たなファイルブロックを格納するようにしてもよい。上記の手順により、全てのファイルブロックの多重度を同一、かつ最大とすることができる。
【００７０】
図１４は、ボリューム＃Ｖ５にブロック番号Ｂ１２，Ｂ１１，Ｂ２，Ｂ１のファイルブロックが順に格納され全てのファイルブロックの多重度が３となった後、さらにブロック番号が大きいブロック、すなわちブロック番号Ｂ１０，Ｂ９，Ｂ８，Ｂ７のブロックが格納された状態を示す。また、図１４にブロック番号Ｂ１〜Ｂ１２のファイルブロックのリード要求が発生した場合に読み出されるリードファイルブロックを楕円により示す。リードファイルブロックは、ボリューム管理テーブル２０上のボリューム情報２１のランク３９に従って選択してもよい。また、ランク３９が同一である場合は、ボリューム管理テーブル２０上のボリューム情報２１の順番に従って優先度を決定してもよい。ランク更新処理は、ファイルブロックの読み出し時に行ってもよいし、ボリューム追加時のファイルブロック複製格納終了後に行ってもよい。
【００７１】
故障したボリュームが復旧した場合についても、上記ボリューム追加手順と同様の手順でファイルブロックを複製して格納する。
【００７２】
以上のように、この実施の形態２によれば、物理ディスクの故障やネットワークの障害などによりあるボリュームがアクセス不能となった場合、ファイルブロック管理手段１４は、アクセス可能なボリュームに格納されたファイルブロックの複製が読み出されるようにしたので、読み出しエラーを防ぐことができる効果が得られる。
【００７３】
また、ファイルブロック管理手段１４は、ファイルブロック管理テーブル３０のランク３９を参照して優先度が最も高いボリュームに格納されるファイルブロックが読み出すようにしたので、アクセス可能なボリュームから読み出す場合も異なるボリュームから並列に読み出すことができ、全体のデータ転送効率を最大にすることができる効果が得られる。
【００７４】
また、ファイルブロック管理手段は、新たに追加されたボリュームに、現多重度よりも小さい多重度のファイルブロックの複製が格納されるようにしたので、新しいボリュームを追加した場合にも柔軟に対応できる効果が得られる。
【００７５】
【発明の効果】
以上のように、この発明によれば、記憶デバイスから構成される各ボリュームを識別するための第１の識別子と各ボリュームの容量情報とを記憶するボリューム管理テーブルと、すべてのボリュームに格納されたファイルブロックの複製数の最小値である現多重度、各ファイルブロックが格納されるボリュームを識別するための第２の識別子および各ファイルブロックの読み出しの優先度を記憶するファイルブロック管理テーブルと、第１の識別子、容量情報、現多重度および第２の識別子に基づいて各ボリュームへのファイルブロックの書き込み制御を行うとともに、優先度に従って各ボリュームからのファイルブロックの読み出し制御を行うファイルブロック管理手段とを備えるように構成したので、ボリュームの数に応じてすべてのファイルブロックの多重度が最大となるように格納できるため、接続するディスクの数を柔軟に決定でき、またボリュームの信頼度を最大にすることができる効果がある。
【００７６】
この発明によれば、上記の構成により、異なるボリュームから並列に読み出すことができ、全体のデータ転送効率を最大にすることができる効果が得られる。
【図面の簡単な説明】
【図１】この発明の実施の形態１によるデータ格納装置を含むシステムの構成を示す図である。
【図２】実施の形態１によるデータ格納装置の構成要素の相互関係を示す図である。
【図３】図２中のボリューム管理テーブルの内部構成を示す図である。
【図４】図２中のファイルブロック管理テーブルの内部構成を示す図である。
【図５】実施の形態１に係るファイルブロックの格納手順を示すフローチャートである。
【図６】実施の形態１に係るファイルブロックの格納図である。
【図７】実施の形態１に係るリードファイルブロック選択のためのランク更新手順を示すフローチャートである。
【図８】実施の形態１に係る複数ファイルブロックの読み出しについて示す図である。
【図９】実施の形態１に係る上書き処理を含むファイルブロック格納手順を示すフローチャートである。
【図１０】実施の形態１に係るファイルブロックの上書き格納図である。
【図１１】実施の形態１に係るファイルブロックが上書きされた状態での複数ブロック読み出しについて示した図である。
【図１２】この発明の実施の形態２において、あるボリュームがアクセス不能となった場合の複数ブロック読み出しについて示す図である。
【図１３】実施の形態２において、ボリュームが追加された時のファイルブロックの複製格納手順を示すフローチャートである。
【図１４】実施の形態２において、ボリュームが追加された時のファイルブロックの複製を示す図である。
【図１５】ミラーリングシステムで適用されるファイルブロック格納図である。
【図１６】ミラーリングシステムで適用されるファイルブロック格納図である。
【図１７】ミラーリングシステムで適用されるファイルブロック格納図である。
【符号の説明】
１　ネットワーク、２，２ａ，２ｂ　バス、３ａ，３ｂ　ネットワーク結合装置、３ｃ　バス結合装置、４ａ，４ｂ　ディスクコントローラ、５ａ　Ｉ／Ｏプロセッサ、６ａ，７ａ，６ｂ，７ｂ　磁気ディスク装置、８，８ａ，８ｂ　ボリューム、１０　主記憶装置、１１　ボリューム管理部、１２　ファイル制御部、１３　オペレーションシステム、１４　ファイルブロック管理部、１５　中央処理装置、１６　デバイスドライバ、２０　ボリューム管理テーブル、２１　ボリューム情報、２２　ボリューム名、２３　種別、２４　最大ブロック数、２５　現ブロック数、２６　アクティブフラグ、３０　ファイルブロック管理テーブル、３１ファイルブロック管理情報、３２　最大多重度、３３　現多重度、３４　最終ブロック番号、３５　ファイルブロック情報、３６　ボリューム名、３７　ブロック番号、３８　タイムスタンプ、３９　ランク、＃Ｄ１，＃Ｄ２，＃Ｄ３，＃Ｄ４　物理ディスク、＃Ｖ１，＃Ｖ２，＃Ｖ３，＃Ｖ４，＃Ｖ５　ボリューム、Ｂ１〜Ｂ１２　ファイルブロック。
【図１】
2004046352.tif 000003
【図２】
2004046352.tif 000004
【図３】
2004046352.tif 000005
【図４】
2004046352.tif 000006
【図５】
2004046352.tif 000007
【図６】
2004046352.tif 000008
【図７】
2004046352.tif 000009
【図８】
2004046352.tif 000010
【図９】
2004046352.tif 000011
【図１０】
2004046352.tif 000012
【図１１】
2004046352.tif 000013
【図１２】
2004046352.tif 000014
【図１３】
2004046352.tif 000015
【図１４】
2004046352.tif 000016
【図１５】
2004046352.tif 000017
【図１６】
2004046352.tif 000018
【図１７】
2004046352.tif 000019