(57)【特許請求の範囲】
【請求項１】
複数の記憶装置と、前記複数の記憶装置の記憶領域に形成される論理ユニットであって、アクセス要求元のアクセス対象となる１又は複数のアクセス対象用論理ユニットと、前記複数の記憶装置の記憶領域に形成される論理ユニットであって、前記アクセス対象用論理ユニットがフォーマット済みか否かを管理するためのフォーマット管理情報を格納する領域が、前方ページ領域と後方ページ領域に分割された管理情報用論理ユニットと、前記各論理ユニットに対するデータ入出力を制御すると共に、前記アクセス対象用論理ユニットに対するフォーマット処理を実行する１又は複数のコントローラと、を備え、
前記コントローラは、
前記アクセス対象用論理ユニットに対する前記フォーマット処理の実行時に、前記アクセス対象用論理ユニットの容量を基に前記フォーマット管理情報の容量を算出し、前記算出したフォーマット管理情報の容量と特定容量のページの管理単位との比から、前記フォーマット管理情報を前記ページの管理単位で管理するのに必要な管理情報用ページのページ数を算出し、
前記算出した管理情報用ページのページ数が１である場合、前記フォーマット管理情報を前記前方ページ領域に割り当て、
前記算出した管理情報用ページのページ数が２以上である場合、１ページに対応する前記フォーマット管理情報を前記前方ページ領域に割り当て、２ページ以降に対応する前記フォーマット管理情報を前記後方ページ領域に割り当て、前記フォーマット処理の実行結果を前記フォーマット管理情報として、前記前方ページ領域又は前記後方ページ領域に格納するストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記コントローラは、
前記算出したページ数が１である場合、１ページの管理情報用ページに対応する前記フォーマット管理情報の格納先を前記前方ページ領域に割り当てると共に、当該フォーマット管理情報の格納先を前方ページ領域アドレスで管理し、前記算出したページ数が２以上である場合、２ページ以降の管理情報用ページに対応する前記フォーマット管理情報の格納先を前記後方ページ領域に割り当てると共に、当該フォーマット管理情報の格納先を、後方ページ領域アドレスと前記２ページ以降の管理情報用ページのページ長で管理することを特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
前記前方ページ領域又は前記後方ページ領域に割り当てられる前記管理情報ページは、前記コントローラによる、リードアクセス又はライトアクセスの最小単位であって、前記記憶装置の論理的記憶領域に形成されるストライプ列の整数倍の容量で構成されることを特徴とするストレージシステム。
【請求項４】
請求項１に記載のストレージシステムであって、
前記管理情報用ページには、前記管理情報用ページに対するアクセスを占有することを示すオーナー権の情報が、前記いずれかのコントローラに対応づけて格納されることを特徴とするストレージシステム。
【請求項５】
請求項１に記載のストレージシステムであって、
前記コントローラは、
前記アクセス要求元からリードコマンド又はライトコマンドを受信した場合、前記リードコマンド又はライトコマンドを基にアクセス先を特定し、前記管理情報用論理ユニットに格納された前記フォーマット管理情報のうち前記アクセス先に対応するフォーマット管理情報を参照し、前記アクセス先に対応するフォーマット管理情報にフォーマット済みの情報が登録されていることを条件に、前記アクセス先に対してリードアクセス又はライトアクセスを実行することを特徴とするストレージシステム。
【請求項６】
請求項２に記載のストレージシステムであって、
前記コントローラは、
前記アクセス要求元からリードコマンド又はライトコマンドを受信した場合、前記リードコマンド又はライトコマンドを基に前記フォーマット管理情報上のアドレスを示す仮想メモリアドレスを算出し、前記算出した仮想メモリアドレスと前記ページの管理単位との比から、アクセス先に対応する管理情報用ページのページ数を算出し、前記算出したページ数が１である場合、前記１ページの管理情報用ページに対応する前記前方ページ領域アドレスから前記アクセス先の物理アドレスを算出し、前記１ページの管理情報用ページに対応する前記前方ページ領域アドレスで特定される前記前方ページ領域に格納された前記フォーマット管理情報にフォーマット済みの情報が登録されていることを条件に、前記算出した物理アドレスのアクセス先に対してリードアクセス又はライトアクセスを実行し、前記算出したページ数が２以上である場合、前記２ページ以降の管理情報用ページに対応する前記後方ページ領域アドレスと前記ページ長から前記アクセス先の物理アドレスを算出し、前記２ページ以降の管理情報用ページに対応する前記後方ページ領域アドレスと前記ページ長で特定される前記後方ページ領域に格納された前記フォーマット管理情報にフォーマット済みの情報が登録されていることを条件に、前記算出した物理アドレスのアクセス先に対してリードアクセス又はライトアクセスを実行することを特徴とするストレージシステム。
【請求項７】
複数の記憶装置と、前記複数の記憶装置の記憶領域に形成される論理ユニットであって、アクセス要求元のアクセス対象となる１又は複数のアクセス対象用論理ユニットと、前記複数の記憶装置の記憶領域に形成される論理ユニットであって、前記アクセス対象用論理ユニットがフォーマット済みか否かを管理するためのフォーマット管理情報を格納する領域が、前方ページ領域と後方ページ領域に分割された管理情報用論理ユニットと、前記各論理ユニットに対するデータ入出力を制御すると共に、前記アクセス対象用論理ユニットに対するフォーマット処理を実行する１又は複数のコントローラと、を備えたストレージシステムの論理ユニット管理方法であって、
前記コントローラが、前記アクセス対象用論理ユニットに対する前記フォーマット処理を実行する場合のステップとして、
前記コントローラが、前記アクセス対象用論理ユニットの容量を基に前記フォーマット管理情報の容量を算出するステップと、
前記コントローラが、前記算出したフォーマット管理情報の容量と特定容量のページの管理単位との比から、前記フォーマット管理情報を前記ページの管理単位で管理するのに必要な管理情報用ページのページ数を算出するステップと、
前記コントローラが、前記算出した管理情報用ページのページ数が１である場合、前記フォーマット管理情報を前記前方ページ領域に割り当てるステップと、
前記コントローラが、前記算出した管理情報用ページのページ数が２以上である場合、１ページに対応する前記フォーマット管理情報を前記前方ページ領域に割り当て、２ページ以降に対応する前記フォーマット管理情報を前記後方ページ領域に割り当てるステップと、
前記コントローラが、前記フォーマット処理の実行結果を前記フォーマット管理情報として、前記前方ページ領域又は前記後方ページ領域に格納するステップと、を含むことを特徴とするストレージシステムの論理ユニット管理方法。
【請求項８】
請求項７に記載のストレージシステムの論理ユニット管理方法であって、
前記コントローラが、前記算出したページ数が１である場合、１ページの管理情報用ページに対応する前記フォーマット管理情報の格納先を前記前方ページ領域に割り当てると共に、当該フォーマット管理情報の格納先を前方ページ領域アドレスで管理し、
前記コントローラが、前記算出したページ数が２以上である場合、２ページ以降の管理情報用ページに対応する前記フォーマット管理情報の格納先を前記後方ページ領域に割り当てると共に、当該フォーマット管理情報の格納先を、後方ページ領域アドレスと前記２ページ以降の管理情報用ページのページ長で管理することを特徴とするストレージシステムの論理ユニット管理方法。
【請求項９】
請求項７に記載のストレージシステムの論理ユニット管理方法であって、
前記前方ページ領域又は前記後方ページ領域に割り当てられる前記管理情報ページは、前記コントローラによる、リードアクセス又はライトアクセスの最小単位であって、前記記憶装置の論理的記憶領域に形成されるストライプ列の整数倍の容量で構成されることを特徴とするストレージシステムの論理ユニット管理方法。
【請求項１０】
請求項７に記載のストレージシステムの論理ユニット管理方法であって、
前記管理情報用ページには、前記管理情報用ページに対するアクセスを占有することを示すオーナー権の情報が、前記いずれかのコントローラに対応づけて格納されることを特徴とするストレージシステムの論理ユニット管理方法。
【請求項１１】
請求項７に記載のストレージシステムの論理ユニット管理方法であって、
前記コントローラが、前記アクセス要求元からリードコマンド又はライトコマンドを受信した場合に処理するステップとして、
前記コントローラが、前記リードコマンド又はライトコマンドを基にアクセス先を特定するステップと、
前記コントローラが、前記管理情報用論理ユニットに格納された前記フォーマット管理情報のうち前記アクセス先に対応するフォーマット管理情報を参照するステップと、
前記コントローラが、前記アクセス先に対応するフォーマット管理情報にフォーマット済みの情報が登録されていることを条件に、前記アクセス先に対してリードアクセス又はライトアクセスを実行するステップと、を含むことを特徴とするストレージシステムの論理ユニット管理方法。
【請求項１２】
請求項８に記載のストレージシステムの論理ユニット管理方法であって、
前記コントローラが、前記アクセス要求元からリードコマンド又はライトコマンドを受信した場合に処理するステップとして、
前記コントローラが、前記リードコマンド又はライトコマンドを基に前記フォーマット管理情報上のアドレスを示す仮想メモリアドレスを算出するステップと、
前記コントローラが、前記算出した仮想メモリアドレスと前記ページの管理単位との比から、アクセス先に対応する管理情報用ページのページ数を算出するステップと、
前記コントローラが、前記算出したページ数が１である場合、前記１ページの管理情報用ページに対応する前記前方ページ領域アドレスから前記アクセス先の物理アドレスを算出するステップと、
前記コントローラが、前記１ページの管理情報用ページに対応する前記前方ページ領域アドレスで特定される前記前方ページ領域に格納された前記フォーマット管理情報にフォーマット済みの情報が登録されていることを条件に、前記算出した物理アドレスのアクセス先に対してリードアクセス又はライトアクセスを実行するステップと、
前記コントローラが、前記算出したページ数が２以上である場合、前記２ページ以降の管理情報用ページに対応する前記後方ページ領域アドレスと前記ページ長から前記アクセス先の物理アドレスを算出するステップと、
前記コントローラが、前記２ページ以降の管理情報用ページに対応する前記後方ページ領域アドレスと前記ページ長で特定される前記後方ページ領域に格納された前記フォーマット管理情報にフォーマット済みの情報が登録されていることを条件に、前記算出した物理アドレスのアクセス先に対してリードアクセス又はライトアクセスを実行するステップと、を含むことを特徴とするストレージシステムの論理ユニット管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の記憶装置の記憶領域上に形成される論理ユニットを管理するためのストレージシステム及びその論理ユニット管理方法に関する。
【背景技術】
【０００２】
近年、大規模なデータを取り扱うストレージシステムにおいて、日々増加する大容量のデータを多数のハードディスクドライブ（HDD）に格納するために、ストレージシステム自体の機能を拡張することが行われている。このため。多数のハードディスクドライブの物理的な記憶領域上に形成される論理ボリュームの数を増やすことも行われている。論理ボリュームの数が増加すると、論理ボリュームを管理するための管理情報も増やす必要がある。論理ボリュームの管理情報は、通常、半導体メモリに保存されるが、半導体メモリは容量が小さく高価である。
【０００３】
そこで、論理ボリュームの管理情報を低価格なハードディスクドライブで構成されるRAID（Redundant  Array  of  Inexpensive  Disks）に保存し、低価格でストレージシステムの規模の拡大を達成することが行われている（特許文献１参照）。
【０００４】
一方、複数の記憶制御装置を有するストレージシステムの場合、ハードディスクドライブは、各記憶制御装置からアクセスされるため、アクセスの排他が必要となる。コントローラ間の排他制御に関する方法としは、例えば、各コントローラにキャッシュメモリの一部及び論理ボリュームを割り当て、キャッシュメモリに対するコントローラ間の排他制御を無くすようにする方法が提案されている（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−０６５７０６号公報
【特許文献２】特開２００６−１１４０６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献２では、キャッシュメモリの記憶領域をセグメントに分割して管理する方法を採用しているが、この方法を、RAIDを構成するハードディスクドライブ（HDD）等の記憶デバイスの記憶領域を管理する方法に適用しても、RAIDを構成するハードディスクドライブ（HDD）等の記憶デバイスの記憶領域を特定の管理単位（ページ）で分割して管理する場合、以下の課題が生じる。
【０００７】
例えば、ページ単位で論理ボリュームの管理情報を保存する場合、管理情報がどんなに小さくても、管理情報を保存する記憶領域として、必ず１ページ分の記憶領域の割り当てが管理情報には必要となる。そのため、ページのサイズが大きいときに、小さな管理情報をページ単位の記憶領域に保存すると、無駄な記憶領域が発生する。逆に、管理情報が大きく、ページのサイズが小さいときには、管理情報を保存するためのページの数が増大することになる。
【０００８】
本発明は、前記従来技術の課題に鑑みて為されたものであり、その目的は、フォーマット管理情報を保存する管理情報用ページのサイズを最小にするとともに、管理情報用ページの管理サイズを低減することができるストレージシステム及びその論理ユニット管理方法を提供することにある。
【課題を解決するための手段】
【０００９】
前記目的を達成するために、本発明は、複数の記憶装置の記憶領域に形成される論理ユニットであって、アクセス要求元のアクセス対象となる１又は複数のアクセス対象用論理ユニットがフォーマット済みか否かを管理するためのフォーマット管理情報を格納する管理情報用論理ユニットの領域を、前方ページ領域と後方ページ領域に分けて管理する１又は複数のコントローラを有し、前記コントローラは、前記アクセス対象用論理ユニットに対する前記フォーマット処理の実行時に、前記アクセス対象用論理ユニットの容量を基に前記フォーマット管理情報の容量を算出し、前記算出したフォーマット管理情報の容量と特定容量のページの管理単位との比から、前記フォーマット管理情報を前記管理単位で管理するのに必要な管理情報用ページのページ数を算出し、前記算出した管理情報用ページのページ数に対応する前記フォーマット管理情報のうち一部のフォーマット管理情報を前記前方ページ領域に割り当て、前記算出した管理情報用ページのページ数に対応する前記フォーマット管理情報のうち残りのフォーマット管理情報を前記後方ページ領域に割り当て、前記フォーマット処理の実行結果を前記フォーマット管理情報として、前記前方ページ領域又は前記後方ページ領域に格納することを特徴とする。この際、前記コントローラは、前記前方ページ領域に割り当てられた前記フォーマット管理情報の格納先を前方ページ領域アドレスで管理し、前記後方ページ領域に割り当てられた前記フォーマット管理情報の格納先を後方ページ領域アドレスとページ長で管理することができる。
【発明の効果】
【００１０】
本発明によれば、フォーマット管理情報を保存する管理情報用ページのサイズを最小にするとともに、管理情報用ページの管理サイズを低減することができる。
【図面の簡単な説明】
【００１１】
【図１】通常LUと差分ビットマップテーブルとの関係を説明するための構成図である。
【図２】管理情報用LUの構成図である。
【図３】コントローラ間でアクセスが競合する処理を説明するための構成図である。
【図４】管理単位毎にストライプ列を割り当てた管理情報用LUの構成図である。
【図５】計算機システムの全体構成を示す構成図である。
【図６】ディスクアレイ装置の内部構成図である。
【図７】ローカルメモリの構成図である。
【図８】ドライブ管理テーブルの構成図である。
【図９】RG管理テーブルの構成図である。
【図１０】LU管理テーブルの構成図である。
【図１１】QF管理テーブルの構成図である。
【図１２】管理情報用仮想メモリ管理テーブルの構成図である。
【図１３】管理情報用ページ管理テーブルの構成図である。
【図１４】クイックフォーマット指示を受領したコントローラの処理を説明するためのフローチャートである。
【図１５】差分ビットマップテーブルを確保するときの処理を説明するためのフローチャートである。
【図１６】管理情報用仮想メモリ割当処理を説明するためのフローチャートである。
【図１７】前方ページ領域割当処理を説明するためのフローチャートである。
【図１８】後方ページ領域割当処理を説明するためのフローチャートである。
【図１９】RAIDグループ上に配置されたLUに後方ページ領域を割り当てるための処理を説明するための図である。
【図２０】ポーリングを契機で実行されるQF登録処理を説明するためのフローチャートである。
【図２１】ジョブ起動処理を説明するためのフローチャートである。
【図２２】差分ビットマップ更新処理を説明するためのフローチャートである。
【図２３】次フォーマット領域検索処理を説明するためのフローチャートである。
【図２４】管理情報用仮想メモリアクセス処理を説明するためのフローチャートである。
【図２５】仮想メモリアドレスから物理アドレスを算出する処理を説明するためのフローチャートである。
【図２６】第１の担当コア判定処理を説明するためのフローチャートである。
【図２７】第２の担当コア判定処理を説明するためのフローチャートである。
【図２８】リードコマンド処理を説明するためのフローチャートである。
【図２９】通常リード処理を説明するためのフローチャートである。
【図３０】クロスコールリード処理を説明するためのフローチャートである。
【図３１】第２実施例の構成図であって、差分ビットマップテーブルをシンプロビジョニングプールに保存する場合の構成図である。
【発明を実施するための形態】
【００１２】
（発明の概要）
複数の記憶デバイスで構成されたRAID上に、例えば、ユーザボリュームを構築する場合、各記憶デバイスの記憶領域に対してフォーマット処理、例えば、クイックフォーマット処理が、例えば、コントローラによって実行される。
【００１３】
この際、図１に示すように、クイックフォーマット処理の対象となるLUであって、RAID上に構成された通常LU１０のうち、フォーマット対象領域１２を、１MBのクイックフォーマット管理単位で複数のクイックフォーマット対象領域１４に分割し、各クイックフォーマット対象領域１４が、フォーマット済か否かを差分ビットマップテーブル１６（以下、アクセス対象用論理ユニットを示す通常LU１０がフォーマット済みか否かを管理するためのフォーマット管理情報を差分ビットで登録するテーブルを差分ビットマップテーブルと称する。）で管理する。
【００１４】
この場合、クイックフォーマット対象領域１４が、フォーマット済であれば、このクイックフォーマット対象領域１４に対応した差分ビットマップテーブル１６に「０」を格納し、クイックフォーマット対象領域１４が、未フォーマット状態にある場合には、このクイックフォーマット対象領域１４に対応した差分ビットマップテーブル１６に「１」を格納する。
【００１５】
即ち、各クイックフォーマット対象領域１４が、フォーマット済か否かを１ビットの差分ビットを用いて差分ビットマップテーブル１６で管理する。
【００１６】
通常LU１０のサイズが７６８０TBであった場合、差分ビットマップテーブル１６の容量は約１GBとなる。
【００１７】
１GBのデータを半導体メモリに保存するのでは、多くの半導体メモリを必要とする。
【００１８】
具体的には、記憶デバイスをフォーマット処理する場合、フォーマットの有無を論理ユニット（以下、LU（Logical  Unit）と称することがある）毎に管理するための管理情報が登録される差分ビットマップテーブルの容量としては、LU１MB（メガバイト）当たり１ビットとなる。このため、クイックフォーマット対象の全LUの合計容量が７６８０TB（テラバイト）であった場合、差分ビットマップテーブルの容量は、全LUでは、約１GB（ギガバイト）となる。
【００１９】
ここで、１GB/（ページの管理単位）＝管理情報用ページ数として、各LUのフォーマット処理の実行の有無を差分ビットマップテーブルで管理する場合、ページの管理単位が小さくなればなる程、管理情報用ページの数が増大することになる。
【００２０】
例えば、１LU当たり最大１２８TBの容量であって、LUとしては、最大４０９６個のLUが存在することを前提とし、最も単純な管理方式を考える。１LU当たりに割り当てられた管理情報用ページを全て管理するという管理方式を採用した場合、差分ビットマップテーブルのサイズは、１管理情報用ページの管理情報（アドレス情報）を４Byteとすると、以下の通りとなる。
【００２１】
まず最大１２８TB分の差分ビットマップテーブルのサイズは、１６MBとなる。即ち、１２８TBをビットマップの管理単位の１MBで割り算し、割り算で得られた値を、１MB当たり１ビットで管理すると共に、バイトに変換して管理する場合、１２８TB分の差分ビットマップテーブルのサイズは１６MBとなる。
【００２２】
ここで、管理単位が小さい場合であって、ページの管理単位が４MBの場合、１６MBの差分ビットマップテーブルを保存可能な管理情報用ページの数は、４管理情報ページとなる。
【００２３】
１管理情報用ページの管理情報は４Byteであるので、４管理情報用ページを管理するために必要な情報量は、１６Byteとなる。
【００２４】
１６Byteの情報量を４０９６LU分管理するために必要なメモリサイズは、６４KBとなる。
【００２５】
次に、ページの管理単位を１MBとした場合、１６MBの差分ビットマップテーブルを保存可能な管理情報用ページ数は、１６管理情報用ページとなる。
【００２６】
１６管理情報用ページを管理するために必要な情報量は、１６×４Byte＝６４Byteとなる。
【００２７】
６４Byteの情報量を４０９６LU分管理するために必要なメモリサイズは、２５６KBとなる。
【００２８】
即ち、管理単位が小さくなればなる程、管理情報用ページの数が増大し、その分、管理情報を保存するためのメモリのサイズが増大することになる。
【００２９】
一方、ページの管理単位が大きい場合、例えば、ページの管理単位が１０MBであって、クイックフォーマット対象のLUの容量を１２８TBとした場合、１６MBの差分ビットマップテーブルを保存するために必要な管理情報用ページの数は、１６MB/１０MB＝１．６となる。端数を切り上げると、２管理情報用ページとなる。
【００３０】
即ち、差分ビットマップテーブルのサイズが、１６MBである場合、この容量を保存するために必要な管理情報用ページの数は、計算上は１．６ページである。しかし、管理情報用ページは、管理情報用ページ毎に管理されるので、差分ビットマップテーブルを保存するために必要なページ数は、２管理情報用ページとなる。このため、２管理情報用ページのうち最後の管理情報用ページには、使用されない記憶領域が生じることになる。このように、ページの管理単位が大きければ大きい程、実際に使用されない無駄な記憶領域が発生することになる。
【００３１】
そこで、差分ビットマップテーブル１６のデータを保存するためのLUとして、図２に示すように、複数の記憶デバイスで構成されたRAIDグループ上に、管理情報用LU１８を形成し、管理情報用LU１８に差分ビットマップテーブル１６のデータを格納する。
【００３２】
この際、管理情報用LU１８の領域を、前方ページ領域２０と、後方ページ領域２２に分割する。
【００３３】
また、差分ビットマップテーブル１６のデータを管理情報用LU１８に格納するに際しては、差分ビットマップテーブル１６のデータはLU毎の情報であって、LUの構成によっては、各LUに対応した差分ビットマップテーブル１６のサイズが変化する。このため、差分ビットマップテーブル１６のデータを管理情報用LU１８に保存するには、LU毎に分割して管理する必要がある。
【００３４】
そこで、差分ビットマップテーブル１６の容量を特定の容量、例えば、１MBのページの管理単位で分割して得られた管理情報用ページを用いて管理する。この際、管理情報用ページは、リードアクセス又はライトアクセスの最小単位であるストライプ列のサイズの整数倍に設定される。
【００３５】
そして、管理情報用LU１８のうち、前方ページ領域２０には、RAID内のユーザボリュームの最大数×ページサイズ（管理情報用ページのサイズ）の容量により算出される領域を割り当てる。
【００３６】
また、後方ページ領域２２には、RAIDグループ全体のサイズから算出される管理情報として必要とされる領域を割り当てる。
【００３７】
この後、通常LU１０を複数のLUに分割して使用する過程で、分割されたLUの容量を基に、差分ビットマップテーブル１６のデータを格納するのに必要なページ数をLU毎に算出する。算出されたページ数が２以上である場合、１ページに対応する差分ビットマップテーブル１６のデータを前方ページ領域２０に割り当て、２ページ以降の差分ビットマップテーブル１６のデータを後方ページ領域２２に割り当てる。
【００３８】
この際、前方ページ領域２０に割り当てられたデータの格納先を前方ページ領域アドレスで管理し、後方ページ領域２２に割り当てられたデータの格納先を、後方ページ領域アドレスと、後方ページ領域２２に割り当てられたページのページ長で管理する。
【００３９】
また、図３に示すように、管理情報用LU１８に形成される複数のストライプ列２４の中に、異なるページのデータ２６、２８が存在する場合、ページ毎に担当コントローラを１つに定めるという方式を採用した場合、同一のストライプ列２４に対して、２つのコントローラ（記憶制御装置）がアクセスすると、アクセスの競合が発生することになる。
【００４０】
そこで、図４に示すように、管理情報用LU１８に構築されるストライプ列２４の整数倍を管理情報用ページ３０とし、管理情報用LU１８に構築されるストライプ列２４を管理情報用ページ３０毎にまとめて管理すると共に、管理情報ページ３０毎に担当コントローラを設定する。例えば、管理情報用ページ３０には、管理情報用ページ３０に対するアクセスを占有することを示すオーナー権の情報を、いずれかのコントローラに対応づけて格納される。これにより、コントローラ間でアクセスの競合が発生するのを防止することができる。
【００４１】
（第１実施例）
本実施例は、アクセス対象用論理ユニットがフォーマット済みかを管理するフォーマット管理情報を格納する管理情報用論理ユニットの領域を前方ページ領域と後方ページ領域で管理するコントローラを有し、このコントローラは、アクセス対象用論理ユニットをフォーマットする場合、アクセス対象用論理ユニットの容量を基にフォーマット管理情報の容量を算出し、算出したフォーマット管理情報の容量とページの管理単位との比から管理情報用ページのページ数を算出し、１ページのフォーマット管理情報を前方ページ領域に割り当て、その格納先を前方ページ領域アドレスで管理し、２ページ以上のフォーマット管理情報を後方ページ領域に割り当て、その格納先を、後方ページ領域アドレスとページ長で管理する。
【００４２】
以下、本発明の第１実施例を図面に基づいて説明する。
【００４３】
図５は、計算機システムの全体構成を示すブロック図である。図５において、計算機システムは、管理サーバ５０と、ディスクアレイ装置５２と、ネットワーク５４と、複数のホスト計算機（以下、ホストと称することがある。）５６から構成される。
【００４４】
各ホスト５６は、CPU（Central  Processing  Unit）やメモリなどの情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。各ホスト５６は、ディスクアレイ装置（ストレージサブシステム）５２から提供されるLU又は論理ボリュームを指定したアクセス要求、例えば、書き込み要求あるいは読み出し要求をディスクアレイ装置（ストレージサブシステム）５２に発行することで、そのLU又は論理ボリュームにアクセスすることができる。
【００４５】
また、各ホスト５６は、キーボード、スイッチやポインティングデバイス、マイクロフォンなどの情報入力装置（図示せず）と、モニタディスプレイやスピーカなどの情報出力装置（図示せず）とを備える。
【００４６】
ネットワーク５４は、例えば、SAN（Storage  Area  Network）、LAN（Local  Area  Network）、インターネット、公衆回線または専用回線まどから構成される。このネットワーク５４を介して各ホスト５６とディスクアレイ装置５２との間の通信は、例えば、ネットワーク５４がSANである場合には、ファイバチャネルプロトコルに従って行われ、ネットワーク５４がLANである場合には、TCP/IP（Transmission  Control  Protocol/Internet  Protocol）プロトコルに従って行われる。
【００４７】
ディスクアレイ装置５２は、記憶制御装置５８と、複数の増設筺体（拡張筐体）６０とを有するストレージシステムとして構成される。
【００４８】
次に、図６に、ディスクアレイ装置の内部構成図を示す。
【００４９】
図６において、ディスクアレイ装置５２は、複数のコントローラ７０、７２と、基本筺体７４とを有する記憶制御装置５８を備え、基本筺体７４には、複数の記憶装置７６が収納される。なお、各増設筺体６０にも、それぞれ複数の記憶装置７６が収納される。
【００５０】
記憶装置７６としては、例えば、ハードディスクデバイス、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等の記憶デバイスが挙がられ、これらの記憶デバイスは、データを読み書き可能なデバイスである。
【００５１】
記憶デバイスとしてハードディスクデバイスを用いる場合、例えば、FC（Fibre  Channel）ディスク、SCSI（Small  Computer  System  Interface）ディスク、SATA（Serial  ATA）ディスク、ATA（AT  Attachment）ディスク、SAS（Serial  Attached  SCSI）ディスク等を用いることができる。
【００５２】
記憶デバイスとして半導体メモリデバイスを用いる場合、SSD（Solid  State  Drive）（フラッシュメモリ）、FeRAM（Ferroelectric  Random  Access  Memory）、MRAM（Magnetoresistive   Random  Access  Memory）、相変化メモリ（Ovonic  Unified  Memory）、RRAM（登録商標）（Resistance   Random  Access  Memory）等を用いることができる。
【００５３】
また、各記憶装置７６でRAIDグループ、例えば、RAID４、RAID５、RAID６等を構成したり、各記憶装置７６を複数のRAIDグループに分割したりすることもできる。この際、各記憶装置７６の物理的記憶領域上に複数の論理ユニット（LU）や複数の論理ボリュームを形成することもできる。
【００５４】
LUは、ホスト５６に、ホスト５６のアクセス対象として提供される論理ユニットであって、通常LUと仮想LUとに分けられる。
【００５５】
通常LUは、記憶装置７６上に形成された論理的記憶領域から構成される。それに対して、仮想LUは、Thin Provisioning機能により提供され、ページと呼ばれる記憶領域の単位から構成される。仮想LU作成当初のデータが書き込まれる前の段階では、ページには物理的記憶領域から形成される論理的記憶領域は、対応付けられていない。その後、ページに新規のデータの書込みが行われると、当該書込みが行われたページに、記憶装置７６上に形成された論理的記憶領域の一部の記憶領域が割り当てられ、この割当てられた記憶領域にデータが格納される。
【００５６】
通常LUと仮想LUには、識別子として、LUN（Logical  Unit  Number）が割り当てられ、各セグメントには、論理ブロックアドレスLBA（Logical  Block  Address）が割り当てられる。この際、各ホスト５６は、識別子LUNと論理ブロックアドレスLBAからなる論理アドレスを含むコマンドを、ディスクアレイ装置５２のコントローラ７０又はコントローラ７２に送信することにより、通常LUまたは仮想LUに対応した記憶領域に記憶されたデータにアクセスすることができる。
【００５７】
コントローラ７０は、MPU８０と、メモリコントローラ（MC）８２と、ローカルメモリ（LM）８４と、キャッシュメモリ（CM）８６と、ホストインタフェース８８、データ転送制御回路（DCTL）９０と、ディスクインタフェース９２と、エキスパンダ（EXP）９４とを有する＃０のコントローラとして構成される。
【００５８】
MPU８０は、コントローラ７０全体を統括制御するマイクロプロセッサで構成されており、このマイクロプロセッサは、例えば、多重コアで構成されている。
【００５９】
メモリコントローラ８２は、MPU８０からの指令を基にローカルメモリ８４に対するマッピング処理などを行う。
【００６０】
ローカルメモリ８４は、システム構成情報や管理情報、各種制御プログラムなどを記憶する記憶装置として構成される。
【００６１】
キャッシュメモリ８６は、ディスクアレイ装置５２に入出力されるユーザデータなどを一時的に記憶する記憶装置として構成される。
【００６２】
ホストインタフェース８８は、ディスクアレイ装置５２をネットワーク５４に接続するためのポート（図示せず）を備え、各ホスト５６から送信される各種コマンドを解釈し、コマンドに従って処理を実行するとともに、各ホスト５６とデータの授受を行う。
【００６３】
データ転送制御回路９０は、メモリコントローラ８２、キャッシュメモリ８６、ホストインタフェース８８、ディスクインタフェース９２と、データ転送制御回路１１０に接続され、これら接続された部位に対するデータ転送を制御する。
【００６４】
ディスクインタフェース９２は、増設筺体７６に収納された記憶装置７６またはエキスパンダ９４とデータの授受を行うとともに、通信時におけるプロトコル制御を行うインタフェースとして機能する。
【００６５】
この際、ディスクインタフェース９２は、MPU８０からのリードアクセスを基に、エキスパンダ９４を介して、基本筺体７４内の記憶装置７６からデータを読み出し、あるいは増設筺体６０内の記憶装置７６からデータを読み出し、各読み出したデータをデータ転送制御回路９０に転送する。さらに、ディスクインタフェース９２は、MPU８０からのライトアクセスを基に、エキスパンダ９４を介して、基本筺体７４内の記憶装置７６、あるいは増設筺体６０内の記憶装置７６にライトデータを格納する。
【００６６】
エキスパンダ９４は、ディスクインタフェース９２に接続されているとともに、基本筺体７４内の記憶装置７６と増設筺体７６内の記憶装置６０に接続され、ディスクインタフェース９２からのデータを基本筺体７４または増設筺体６０に分岐させる分岐回路と構成される。
【００６７】
コントローラ７２は、MPU１００と、メモリコントローラ（MC）１０２と、ローカルメモリ（LM）１０４と、キャッシュメモリ（CM）１０６と、ホストインタフェース１０８と、データ転送制御回路（DCTL）１１０と、ディスクインタフェース１１２と、エキスパンダ（EXP）１１４とを有する＃１のコントローラとして構成される。
【００６８】
MPU１００は、コントローラ７２全体を統括制御するマイクロプロセッサで構成されており、このマイクロプロセッサは、例えば、多重コアで構成されている。
【００６９】
メモリコントローラ（ＭC）８２は、MPU１００からの指令を基にローカルメモリ１０４に対するマッピング処理などを行う。
【００７０】
ローカルメモリ１０４は、システム構成情報や管理情報、各種制御プログラムなどを記憶する記憶装置として構成される。
【００７１】
キャッシュメモリ１０６は、ディスクアレイ装置５２に入出力されるユーザデータなどを一時的に記憶する記憶装置として構成される。
【００７２】
ホストインタフェース１０８は、ディスクアレイ装置５２をネットワーク５４に接続するためのポート（図示せず）を備え、各ホスト５６から送信される各種コマンドを解釈し、コマンドに従って処理を実行するとともに、各ホスト５６とデータの授受を行う。
【００７３】
データ転送制御回路１１０は、メモリコントローラ１０２、キャッシュメモリ１０６、ホストインタフェース１０８、ディスクインタフェース１１２と、データ転送制御回路９０に接続され、これら接続された部位に対するデータ転送を制御する。
【００７４】
ディスクインタフェース１１２は、増設筺体６０に収納された記憶装置７６またはエキスパンダ１１４とデータの授受を行うとともに、通信時におけるプロトコル制御を行うインタフェースとして機能する。
【００７５】
この際、ディスクインタフェース１１２は、MPU１００からのリードアクセスを基に、エキスパンダ１１４を介して、基本筺体７４内の記憶装置７６からデータを読み出し、あるいは増設筺体６０内の記憶装置７６からデータを読み出し、各読み出したデータをデータ転送制御回路１１０に転送する。さらに、ディスクインタフェース１１２は、MPU１１０からのライトアクセスを基に、エキスパンダ１１４を介して、基本筺体７４内の記憶装置７６、あるいは増設筺体６０内の記憶装置７６にライトデータを格納する。
【００７６】
エキスパンダ１１４は、ディスクインタフェース１１２に接続されているとともに、基本筺体７４内の記憶装置７６と増設筺体６０内の記憶装置７６に接続され、ディスクインタフェース１１２からのデータを基本筺体７４または増設筺体６０に分岐させる分岐回路と構成される。
【００７７】
次に、図７に、ローカルメモリの構成図を示す。
【００７８】
図７において、ローカルメモリ８４、１０４には、ドライブ管理テーブル１２０と、RG（RAIDグループ）管理テーブル１２２と、LU管理テーブル１２４と、QF（クイックフォーマット）管理テーブル１２６と、管理情報用仮想メモリ管理テーブル１２８と、管理情報用ページ管理テーブル１３０が格納される。
【００７９】
次に、図８に、ドライブ管理テーブルの構成図を示す。
【００８０】
図８において、ドライブ管理テーブル２０は、基本筺体７４または増設筺体７６に収納された記憶装置７６を管理するためのテーブルであって、複数のHDU（Hard  Disk  Unit）用エントリ１４０を備えている。各HDU用エントリ１４０には、増設筺体番号（拡張筐体番号）１４２と、HDU番号１４４と、容量１４６と、種別１４８と、状態１５０に関する情報が格納される。
【００８１】
例えば、増設筺体番号（拡張筐体番号）１４２には、増設筺体７６の番号として、例えば、「０」が格納される。HDU番号１４４には、HDUの番号として、例えば「０」が格納される。容量１４６には、HDUの容量として、例えば、「３００GB」が格納される。種別１４８には、記憶装置７６の種別として、例えば、「SAS」が格納される。
【００８２】
状態１５０には、記憶装置７６が正常である場合には、「Normal」が格納される。
【００８３】
次に、図９に、RG管理テーブルの構成図を示す。
【００８４】
図９において、RG管理テーブル１２２は、RAIDグループを構成する記憶装置７６を管理するためのテーブルであって、複数のRG用エントリ１６０を備えている。各エントリ１６０には、RG番号１６２と、RAIDレベル１６４と、種別１６６と、容量１６８と、空き容量１７０と、状態１７２に関する情報が格納される。
【００８５】
例えば、RG番号１６２には、RAIDグループの番号として、「００」が格納され、RAIDレベル１６４には、「RAID」５（４D＋１P）が格納される。
【００８６】
種別１６６には、記憶装置７６の種別として、「SAS」が格納される。容量１６８には、RAIDグループの容量として、「１．２TB」が格納される。空き容量１７０には、未使用の容量として、「９００GB」が格納される。状態１７２には、正常であって、フォーマット済のときには、「Normal」が格納される。
【００８７】
次に、図１０に、LU管理テーブル１２４の構成図を示す。
【００８８】
図１０において、LU管理テーブル１２４は、クイックフォーマットの対象となる対象LUを管理するためのテーブルであって、複数のLU用エントリ１８０を備えている。
【００８９】
各LU用エントリ１８０には、LU番号１８２と、所属RG番号１８４と、容量１８６と、ストライプサイズ１８８と、状態１９０と、オーナー権１９２に関する情報が格納される。
【００９０】
例えば、LU番号１８２には、クイックフォーマットの対象となる対象LU を特定する番号として、「００００」が格納される。所属RG番号１８４には、対象LUが所属するRGの番号として、「００」が格納される。容量１８６には、対象LUの容量として、「２００GB」が格納される。ストライプサイズ１８８には、対象LUに割り当てられるストライプ列のサイズとして、「６４KB」が格納される。
【００９１】
状態１９０には、対象LUが正常である場合には、「Normal」が格納される。オーナー権１９２には、対象LUに対するアクセス権を占有するコントローラ又はコア（MPU８０又はMPU１００を構成するコア）に関する情報が格納される。例えば、オーナー権１９２には、コントローラ７２の場合には、「制御装置＃１」が格納され、コントローラ７０の場合には、「制御装置＃０」が格納される。
【００９２】
次に、図１１に、QF管理テーブル１２６の構成図を示す。
【００９３】
図１１において、QF管理テーブル１２６は、クイックフォーマットの状態やクイックフォーマットの進捗状態を管理するためのテーブルであって、複数のLU用エントリ２００を備えている。各LU用エントリ２００には、クイックフォーマットの対象となる対象LUのLU番号２０２と、対象LUのQF進捗率２０４と、仮想メモリ番号２０６に関する情報が格納される。
【００９４】
例えば、LU番号２０２には、クイックフォーマットの対象となる対象LUの番号として、「００００」が格納される。QF進捗率２０４には、クイックフォーマットの対象となる対象LUのクイックフォーマットの進捗率として、クイックフォーマットが完了した場合には、「１００％」が格納される。
【００９５】
仮想メモリ番号２０６には、管理情報用仮想メモリ管理テーブル１２８をアクセスするための番号として、例えば、「００００」が格納される。
【００９６】
次に、図１２に、管理情報用仮想メモリ管理テーブル１２８の構成図を示す。
【００９７】
図１２において、管理情報用仮想メモリ管理テーブル１２８は、管理情報用LU１８に保存された差分ビットマップテーブル１６を管理するためのテーブルであって、複数の仮想メモリ用エントリ２１０から構成される。各仮想メモリ用エントリ２１０には、対象LU２１２と、保存先LU２１４と、前方ページ領域アドレス２１６と、後方ページ領域アドレス２１８と、ページ長２２０に関する情報が格納される。
【００９８】
例えば、対象LU２１２には、クイックフォーマットの対象となる対象LUを特定する情報として、「LU００００」が格納される。
【００９９】
保存先LU２１４には、差分ビットマップテーブル１６を保存する管理情報用LU１８を特定する情報として「LU４０９６」が格納される。
【０１００】
前方ページ領域アドレス２１６には、前方ページ領域２０に割り当てられたアドレスとして、例えば、「０x００００１０００」が格納される。
【０１０１】
後方ページ領域アドレス２１８には、後方ページ領域２２に割り当てられたアドレスとして、例えば、「０x０００１１０００」が格納される。
【０１０２】
ページ長２２０には、後方ページ領域２２に割り当てられたページの長さに関する情報として、例えば、後方ページ領域２２に割り当てられたページの長さが３ページ分であるある場合、「３」が格納される。
【０１０３】
次に、図１３に、管理情報用ページ管理テーブル１３０の構成図を示す。
【０１０４】
図１３において、管理情報用ページ管理テーブル１３０は、管理情報用LU１８の領域を管理情報用ページ３０の単位（管理情報用ページ単位）で管理するためのテーブルであって、複数のLU４０９６アドレス２３０から構成される。LU４０９６アドレス２３０としては、「０x００００００００」〜「０x００FFF０００」が割り当てられている。
【０１０５】
各LU４０９６アドレス２３０には、保存先LU２３２と、保存先アドレス２３４と、割当仮想メモリ２３６と、オーナー権２３８に関する情報が格納される。
【０１０６】
保存先LU２３２には、差分ビットマップテーブル１６を保存するための保存先LUの番号として、例えば、「４０９６」が格納される。
【０１０７】
保存先アドレス２３４には、LU４０９６アドレス２３０に対応したアドレスとして、例えば、「０x００００００００」が格納される。
【０１０８】
割当仮想メモリ２３６には、管理情報用仮想メモリ管理テーブル１２８の仮想メモリ用エントリ２１０を特定するための情報として、例えば、「００００」が格納される。
【０１０９】
オーナー権２３８には、保存先LUを占有するコントローラ又はコア（MPU８０又はMPU１００を構成するコア）に関する情報が格納される。例えば、オーナー権２３８には、コントローラ７２の場合には、「制御装置＃１」が格納され、コントローラ７０の場合には、「制御装置＃０」が格納される。
【０１１０】
次に、クイックフォーマット処理を図１４のフローチャートに従って説明する。
【０１１１】
この処理は、管理サーバ５０からコントローラ７０またはコントローラ７２に対して、クイックフォーマット処理が指示された場合に開始される。
【０１１２】
例えば、管理サーバ５０が、コントローラ７０に対してクイックフォーマット処理を指示した場合、コントローラ７０のMPU８０は、コントローラ間の排他処理として、構成変更などの処理の実行を禁止する要求を、データ転送制御回路９０を介してコントローラ７２に転送する（S１１）。
【０１１３】
この後、MPU８０は、QF管理テーブル１２６の情報を更新する処理を実行する（S１２）。
【０１１４】
例えば、MPU８０は、QF管理テーブル１２６のQF進捗率２０４などを初期化する処理を実行する。
【０１１５】
次に、MPU８０は、差分ビットマップテーブル１１６を保存する領域を確保するための処理を実行する（S１３）。
【０１１６】
次に、MPU８０は、クイックフォーマットの処理結果をキャッシュメモリ８６、１０６に登録するための処理を実行する（S１４）。
【０１１７】
この後、MPU８０は、コントロール間の排他処理を終了するための処理を実行し（S１５）、処理結果を管理サーバ５０に応答し、このルーチンでの処理を終了する。
【０１１８】
次に、差分ビットマップテーブルを保存する領域を確保するための処理を図１５のフローチャートに従って説明する。
【０１１９】
この処理は、図１４のステップS１３で行われる処理である。
【０１２０】
MPU８０は、管理情報用仮想メモリを割り当てるための処理を実行し（S２１）、このルーチンでの処理を終了する。
【０１２１】
次に、管理情報用仮想メモリ割当処理を図１６のフローチャートに従って説明する。
【０１２２】
この処理は、図１５のステップS２１で実施される処理である。
【０１２３】
MPU８０は、LU容量から必要容量を計算する（S３１）。
【０１２４】
例えば、クイックフォーマットの対象となる対象LUが、通常LU１０であって、通常LU１０の容量が１２８TBであった場合、MPU８０は、差分ビットマップテーブル１６を保存するのに必要な容量（必要容量）を、１６MBとして計算する。
【０１２５】
次に、MPU８０は、必要容量から必要ページ数を計算する（S３２）。例えば、必要容量が１６MBであって、ページの管理単位が１MBである場合には、必要容量/ページの管理単位＝ページ数を計算し、必要ページ数＝１６管理情報用ページとして算出する。
【０１２６】
次に、MPU８０は、前方ページ領域２０への割り当てを実施する（S３３）。例えば、ページ数が１６管理情報用ページであった場合、１管理情報用ページに相当する差分ビットマップテーブル１６のデータを、前方ページ領域２０に割り当てるための処理を実施する。
【０１２７】
次に、MPU８０は、必要ページ数が２以上か否かを判定する（S３４）。ステップS３４で必要ページ数が１管理情報用ページであると判定した場合には、MPU８０は、必要ページ数が、１管理情報用ページである旨を管理サーバ５０に応答し、このルーチンでの処理を終了する。
【０１２８】
一方、ステップS３４で、必要ページ数が２管理情報用ページ以上であると判定した場合、MPU８０は、２管理情報用ページ以降の差分ビットマップテーブル１６のデータを後方ページ領域２２に割り当てるための処理を実施し（S３５）、処理結果を管理サーバ５０に応答し、このルーチンでの処理を終了する。
【０１２９】
次に、前方ページ領域の割当処理を図１７のフローチャートに従って説明する。
【０１３０】
この処理は、図１６のステップS３３で実施される処理である。
【０１３１】
MPU８０は、管理情報用LU１８の前方ページ領域２０を参照し、前方ページ領域２０の中から未使用の管理情報用ページ（空き領域）を検索し（S４１）、検索した未使用の管理情報用ページを、差分ビットマップテーブル１６のデータを格納するための領域として割り当てる（S４２）。
【０１３２】
次に、MPU８０は、割り当てられた未使用の管理情報用ページに、差分ビットマップテーブル１６のデータのうち、１管理情報用ページのデータを書き込むとともに、データが書き込まれた管理情報用ページのアドレスを、前方ページ領域アドレス２１６として管理情報用仮想メモリ管理テーブル１２８に登録し（S４３）、処理結果を管理サーバ５０に応答し、このルーチンでの処理を終了する。
【０１３３】
この際、MPU８０は、管理情報用仮想メモリ管理テーブル１２８の仮想メモリ用エントリ２１０に、割り当て済みを示す使用フラグを登録することもできる。
【０１３４】
次に、後方ページ領域の割当処理を図１８のフローチャートに従って説明する。
【０１３５】
この処理は、図１６のステップS３５で実施される処理である。
【０１３６】
MPU８０は、RAIDグループ上のLUの配置を参照し、クイックフォーマットの対象となる対象LUが所属する後方ページ領域２２を仮割り当てする（S５１）。
【０１３７】
例えば、図１９に示すように、RAIDグループ上にLUとして、００００番のLUと、０００１番のLUと、０００２番のLUが配置されている場合であって、クイックフォーマットの対象となる対象LUが、０００１番のLUである場合、後方ページ領域２２に仮に割り当てるページとして、０００２番のLUには、ページ２２Aと、ページ２２Bの一部を仮割り当てし、０００１番のLUには、ページ２２Bの一部と、ページ２２Cと、ページ２２Dの一部を仮割り当てし、００００番のLUには、ページ２２Dの一部を仮割り当てする。
【０１３８】
この後、MPU８０は、各LUの容量を基に各LUの差分ビットマップテーブル１６のデータを格納するのに必要な管理情報用ページ３０のページ数を算出する。このページ数として、例えば、００００番のLUが、１ページ、０００１番のLUが、３ページ、０００２番のLUが、２ページであった場合、各LUの１ページ目は、前方ページ領域２０に既に割り当て済みであるため、後方ページ領域２２のページのうち、００００番のLUには、０ページを割り当て、０００１番のLUには、２ページを割り当て、０００２番のLUには、１ページを割り当てる。
【０１３９】
即ち、MPU８０は、算出したページ数を基に、仮割り当てした各LUを、前詰めで後方ページ領域２２に割り当てる（S５２）。
【０１４０】
この場合、図１９に示すように、MPU８０は、後方ページ領域２２に割り当てる管理情報用ページ３０として、０００２番のLUには、ページ２２Aを割り当て、０００１番のLUには、ページ２２Bとページ２２Cを割り当てる。なお、ページ２２Dは使用しない領域とする。
【０１４１】
この後、MPU８０は、各LUの管理情報用ページ３０として、後方ページ領域２２に割り当てたページ２２A、２２B、２２Cのアドレスを、後方ページ領域アドレス２１８として、管理情報用仮想メモリ管理テーブル１２８に登録するとともに、各ページ２２A、２２B、２２Cのページ長２２０を登録し（S５３）、処理結果を管理サーバ５０に応答し、このルーチンでの処理を終了する。
【０１４２】
次に、クイックフォーマット登録の具体的な処理内容を図２０のフローチャートに従って説明する。
【０１４３】
この処理は、図１４のステップS１４で実施される処理である。
【０１４４】
まず、コントローラ７０とコントローラ７２間でポーリングを実施し、コントローラ７０、７２のうち一方のコントローラでクイックフォーマット登録を実施するための排他処理を実行する（S６１）。
【０１４５】
ここで、コントローラ７０でクイックフォーマット登録を実施する場合、MPU８０は、クイックフォーマット（QF）登録されたLU、即ち、クイックフォーマットの処理の対象となるLUが存在するか否かを判定する（S６２）。
【０１４６】
ステップS６２で、クイックフォーマットの処理の対象となるLUが、存在しないと判定した場合、MPU８０は、ステップS６５の処理に移行する。一方、ステップS６２で、クイックフォーマットの処理の対象となるLUが、存在すると判定した場合、MPU８０は、LU管理テーブル１２４を参照し、クイックフォーマットの処理を担当するコントローラが、コントローラ７０であるか否かを判定する（S６３）。
【０１４７】
MPU８０は、ステップS６３で、他のコントローラ、即ち、コントローラ７２が、クイックフォーマットの処理を担当するコントローラであると判定した場合、ステップS６５の処理に移行し、ステップS６３で、コントローラ７０が、クイックフォーマットの処理を担当するコントローラであると判定した場合には、クイックフォーマットジョブを起動するための処理を実行する（S６４）。
【０１４８】
なお、MPU８０が多重コアで構成されていた場合、多重コアのうちいずれか１つのコアが、ステップS６１〜ステップS６３の処理を実行し、ステップS６３では、ステップS６１〜ステップS６３の処理を実行したコアが、クイックフォーマットの処理を担当するコアが、他のコアか、あるいは自コア（ステップS６１〜ステップS６３の処理を実行したコア）であるか否かを判定することになる。
【０１４９】
この後、MPU８０は、コントローラ間の排他処理を完了し（S６５）、このルーチンでの処理を終了する。
【０１５０】
次に、ジョブ起動処理を図２１のフローチャートに従って説明する。
【０１５１】
この処理は、図２０のステップS６４で実施される処理である。
【０１５２】
MPU８０は、ローカルメモリ８４に格納された変数などを初期化するための初期化設定処理を実行し（S７１）、その後、エクステントロック確保処理を実行する（S７２）。
【０１５３】
例えば、MPU８０は、ジョブとして、クイックフォーマット処理のみを実行するための排他処理を実行する。
【０１５４】
次に、MPU８０は、１差分フォーマット処理を実行する（S７３）。
【０１５５】
例えば、MPU８０は、通常LU１０を、クイックフォーマット処理の対象とする場合、１つのクイックフォーマット対象領域１４に対するフォーマット処理として、１つのクイックフォーマット対象領域１４の登録されたデータを、「１」から「０」に変更する処理を実行する。
【０１５６】
次に、MPU８０は、１差分のフォーマット処理が完了したか否かを判定し（S７４）、ステップS７４で、１差分のフォーマット処理が未完了であると判定した場合には、ステップS７３の処理に戻り、１差分のフォーマット処理が完了として判定した場合には、差分ビットマップ更新処理を実施する（S７５）。
【０１５７】
この際、MPU８０は、差分ビットマップ更新処理を行う過程で、管理情報用仮想メモリに対するライト処理も実施する。
【０１５８】
次に、MPU８０は、エクステントロックを解放する処理を実行し（S７６）、次フォーマット領域検索処理を実施し（S７７）、ステップS７７で次フォーマット領域有と判定した場合には、次フォーマット領域を設定する処理を実行し（S７８）、その後、ステップS７２の処理に戻り、ステップS７２〜S７７の処理を繰り返す。
【０１５９】
一方、ステップS７７で、全ての領域に対するフォーマット処理が完了したと判定した場合、MPU８０は、通常LU１０に対するフォーマット処理を完了し（S７９）、このルーチンでの処理を終了する。
【０１６０】
次に、差分ビットマップ更新処理の内容を図２２のフローチャートに従って説明する。
【０１６１】
この処理は、図２１のステップS７５で実施される処理である。
【０１６２】
MPU８０は、管理情報用仮想メモリに対する更新を指示し、例えば、通常LU１０のクイックフォーマット対象領域１４に対するクイックフォーマット処理が完了した場合には、このクイックフォーマット対象領域１４に対応した差分ビットマップテーブル１６の差分ビットを「１」から「０」にする処理を実施し（S８１）、このルーチンでの処理を終了する。
【０１６３】
次に、次フォーマット領域検索処理を図２３のフローチャートに従って説明する。
【０１６４】
この処理は、図２１のステップS７７で実施される処理である。
【０１６５】
MPU８０は、管理情報用仮想メモリ参照指示の処理として、差分ビットマップテーブル１６を参照し、差分ビットを判定するための処理を実施する（S９１）。
【０１６６】
次に、MPU８０は、次フォーマット領域におけるフォーマットの実施の有無を判定する（S９２）。
【０１６７】
この際、MPU８０は、差分ビットマップテーブル１６を参照し、次フォーマット領域が、フォーマット済であると判定した場合には、ステップS９１の処理に戻り、次フォーマット領域が、未フォーマットであると判定した場合、又は、全てのフォーマット領域が、フォーマット済であると判定した場合には、このルーチンでの処理を終了する。
【０１６８】
次に、管理情報用仮想メモリアクセス処理を図２４のフローチャートに従って説明する。
【０１６９】
この処理は、図２２のステップS８１または図２３のステップS９１で実施される処理である。
【０１７０】
MPU８０は、面番号（クイックフォーマットの対象となるLUであって、仮想メモリ用エントリ２１０を特定する番号）を基に差分ビットマップテーブル１６を特定し、仮想メモリアドレスから物理アドレスを算出する処理を実施する（S１０２）。
【０１７１】
次に、MPU８０は、算出された物理アドレスを基にキャッシュメモリ８６を参照し、差分ビットマップテーブル１６に登録されたデータが、キャッシュメモリ８６上に存在するか否かを判定する（S１０３）。
【０１７２】
MPU８０は、ステップS１０３で、差分ビットマップテーブル１６に登録されたデータが、キャッシュメモリ８６上に存在すると判定した場合、ステップS１０５の処理に移行し、ステップS１０３で、差分ビットマップテーブル１６に登録されたデータが、キャッシュメモリ８６上に存在しないと判定した場合には、記憶装置７６から、差分ビットマップテーブル１６に登録されたデータをキャッシュメモリ８６上にリードする（S１０４）。
【０１７３】
この後、MPU８０は、キャッシュメモリ８６上で、差分ビットマップテーブル１６に登録されたデータに対する参照処理または更新処理を実施し（S１０５）、処理結果を管理サーバ５０に応答し、このルーチンでの処理を終了する。
【０１７４】
次に、仮想メモリアドレスから物理アドレスを算出する処理を図２５のフローチャートに従って説明する。
【０１７５】
この処理は、図２４のステップS１０２で実施される処理である。
【０１７６】
MPU８０は、コマンドから得られた管理情報用仮想メモリアドレスを基に、何番目の管理情報用ページの情報が要求されているかを判定するために、管理情報用仮想メモリアドレス/ページの管理単位（１MB）の計算を行い、この計算によって得られた管理情報用ページ３０のページ数を基に１ページ目の管理情報用ページ上であるか否かを判定する（S１１１）。
【０１７７】
ステップS１１１で、管理情報用ページ３０が１ページ目であると判定した場合、MPU８０は、前方ページ領域アドレス２１６を基にオフセット計算で、管理情報用ページ３０の物理アドレスを算出する（S１１２）。
【０１７８】
一方、ステップS１１１で、管理情報用ページ３０が２ページ目以降であると判定した場合、MPU８０は、２ページ目以降の管理情報用ページ３０について、後方ページ領域アドレス２１８を基にオフセット計算で物理アドレスを算出する（S１１３）。
【０１７９】
MPU８０は、ステップS１１２またはステップS１１３の処理の後、各処理結果を管理サーバ５０に応答し、このルーチンでの処理を終了する。
【０１８０】
次に、管理情報用ページのオーナー権を決定するときの処理について説明する。
【０１８１】
通常、管理情報用ページ３０をアクセスするためのオーナー権は、管理情報用ページ３０が割り当てられたLUを管理するコントローラまたはコントローラに属するコアが有する。このため、管理情報用ページ３０をアクセスするコアまたはコントローラは、管理情報用ページ３０をアクセスするコアまたはコントローラに制限されるので、通常の管理情報用仮想メモリへのアクセスの処理では、管理情報用ページ３０のオーナー権を判定することはない。
【０１８２】
これに対して、記憶装置７６の復旧処理などを行う場合には、管理情報用ページ３０のオーナー権を判定することが行われる。この管理情報用ページ３０のオーナー権を決定するための処理としては、以下の２通りの方法がある。
【０１８３】
次に、管理情報用ページのオーナー権を決定するための第１の担当コア判定処理を図２６のフローチャートに従って説明する。
【０１８４】
例えば、コントローラ７０のMPU８０は、管理サーバ５０からの復旧指示を基に、管理情報用仮想メモリ管理テーブル１２８を参照し、復旧対象となる管理情報用ページ３０に割り当てられた物理アドレスから仮想メモリアドレスを算出し（S１２１）、算出された仮想メモリアドレスを基に復旧対象となる対象LU２１２を算出する（S１２２）。
【０１８５】
次に、MPU８０は、算出された対象LU２１２を基にLU管理テーブル１２４を参照し、LU管理テーブル１２４のオーナー権１９２から担当コアを特定し（S１２３）、処理結果を管理サーバ５０に応答し、このルーチンでの処理を終了する。
【０１８６】
次に、管理情報用ページのオーナー権を決定するための第２の担当コア判定処理を図２７のフローチャートに従って説明する。
【０１８７】
まず、コントローラ７０が、管理サーバ５０から復旧処理を指示された場合、コントローラ７０のMPU８０は、復旧対象となるLUを探索するために、管理情報用ページ管理テーブル１３０を参照し、復旧対象となるLUが、保存先LU２３２として存在する場合、LU４０９６アドレス２３０に登録されたオーナー権２３８を基に担当コアを決定し(S１３１)、処理結果を管理サーバ５０に応答し、このルーチンでの処理を終了する。
【０１８８】
この場合、管理情報用ページ管理テーブル１３０を参照するだけで、直接担当コアを特定することができので、第１の担当コア判定処理よりも、管理情報用ページのオーナー権を決定するための処理時間が短くなる。
【０１８９】
次に、通常LUに対するリード処理を図２８のフローチャートに従って説明する。
【０１９０】
コントローラ７０が、ホスト５６からリードコマンドを受信した場合、コントローラ７０のMPU８０は、リードコマンドを基にLU管理テーブル１２４のオーナー権１９２を参照し、リードコマンドによる処理を担当するコントローラか否かを判定する（S１４１）。
【０１９１】
ステップS１４１において、リードコマンドの処理を担当すべきコントローラであると判定した場合、MPU８０は、通常のリード処理を実行し（S１４１）、このルーチンでの処理を終了する。
【０１９２】
一方、ステップS１４１で、リードコマンドの処理を担当すべきコントローラが、他のコントローラであると判定した場合、MPU８０は、データ転送制御回路９０を介して、コントローラ７２にリードコマンドを転送するクロスコールリード処理を実行し（S１４３）、このルーチンでの処理を終了する。
【０１９３】
次に、通常のリード処理を図２９のフローチャートに従って説明する。
【０１９４】
この処理は、図２８のステップS１４２で実施される処理である。
【０１９５】
まずは、MPU８０は、通常LU１０に存在する複数のLUのうち、リードコマンドで指定されたリード先のLUは、フォーマット済であるか否かを判定する（S１５１）。
【０１９６】
この際、MPU８０は、リード先のLUに対応した差分ビットマップテーブル１６を参照し、リード先のクイックフォーマット対象領域１４がフォーマット済であるか否かを判定し、未フォーマットである場合には、フォーマット起動処理を開始し（S１５２）、ステップS１５３の処理に移行し、ステップS１５１で、フォーマット済であると判定した場合には、ステップS１５３の処理に移行する。
【０１９７】
ステップS１５３において、MPU８０は、リード先のLUに対してのみリード処理を実行する排他処理として、エクテントロックを実行し、この後、キャッシュメモリ８６上に、読み出し先の領域を確保するためのセグメント確保処理を実行する（S１５４）。
【０１９８】
次に、MPU８０は、キャッシュヒットであるか、あるいはキャッシュミスであるかを判定する（S１５５）。
【０１９９】
即ち、MPU８０は、リードデータが、キャッシュメモリ８６上に存在するか否かを判定し、キャッシュミスであると判定した場合には、記憶装置７６からリードデータをキャッシュメモリ８６上に読み出すステージング処理を実行し（S１５６）、ステップS１５７の処理に移行する。
【０２００】
一方、MPU８０は、ステップS１５５でキャッシュヒットであると判定した場合、キャッシュメモリ８６上に存在するリードデータまたは記憶装置からステージングされたリードデータをホスト５６へ転送するためのデータ転送処理を実行する（S１５７）。
【０２０１】
この後、MPU８０は、セグメントを解放する処理を行い（S１５８)、続いてエクステントロックを解放する処理を実行し（S１５９）、このルーチンでの処理を終了する。
【０２０２】
次に、クロスコールリード処理を図３０のフローチャートに従って説明する。
【０２０３】
この処理は、図２８のステップS１４３で実施される処理である。
【０２０４】
コントローラ７２のMPU１００は、コントローラ７０から転送されたリードコマンドを受信した場合、受信したリードコマンドを基にリード先のLUがフォーマット済か否かを判定する（S１６１）。
【０２０５】
この際、MPU１００は、リード先のLUに対応した差分ビットマップテーブル１６を参照し、リード先のクイックフォーマット対象領域１４がフォーマット済であるか否かを判定し、未フォーマットである場合には、フォーマット起動処理を開始し（S１６２）、ステップS１６３の処理に移行し、ステップS１６１で、フォーマット済であると判定した場合には、ステップS１６３の処理に移行する。
【０２０６】
ステップS１６３において、MPU１００は、リード先のLUに対してのみリード処理を実行する排他処理として、エクテントロックを実行し、この後、キャッシュメモリ１０６上に、読み出し先の領域を確保するためのセグメント確保処理を実行する（S１６４）。
【０２０７】
次に、MPU１００は、キャッシュヒットであるか、あるいはキャッシュミスであるかを判定する（S１６５）。
【０２０８】
即ち、MPU１００は、リードデータが、キャッシュメモリ１０６上に存在するか否かを判定し、キャッシュミスであると判定した場合には、記憶装置７６からリードデータを、キャッシュメモリ１０６とキャッシュメモリ８４上にそれぞれ読み出す二重書きステージング処理を実行し（S１６６）、ステップS１６８の処理に移行する。
【０２０９】
一方、MPU１００は、ステップS１６５でキャッシュヒットであると判定した場合、キャッシュメモリ１０６上に存在するリードデータをコントローラ７０のキャッシュメモリ８４にコピーするコントロール間キャッシュコピー処理を実行しステップＳ１６８の処理に移行する。
【０２１０】
この後、MPU１００は、キャッシュメモリ１０６上に存在するリードデータまたは記憶装置７６からステージングされたリードデータをホスト５６へ転送するためのデータ転送処理を実行する（S１６８）。
【０２１１】
次に、MPU１００は、セグメントを解放する処理を行い（S１６９)、続いてエクステントロックを解放する処理を実行し（S１７０）、このルーチンでの処理を終了する。
【０２１２】
以上のように、フォーマット済か否かの判定は、クイックフォーマットの対象となるLUの処理を担当するコントローラ側で実行される。また差分ビットマップテーブル１６の情報を参照する処理もクイックフォーマットの処理を担当するコントローラ側で実行されるため、通常のクイックフォーマット処理やホスト５６からのリードアクセスでは、管理情報用ページ３０を担当するコントローラまたはコアを判定する必要はなく、コントローラ間またはコア間でアクセスが排他されることになる。
【０２１３】
また、コントローラ７０が、ホスト５６からリードコマンドを受信した場合について述べたが、コントローラ７０またはコントローラ７２がホスト５６からライトコマンドを受信した場合も、通常リード処理の代わりに、通常ライト処理を実行し、また、クロスコールリード処理の代わりに、クロスコールライト処理を実行することで、ライト先のLUに対して、ライトデータを書き込むための処理を実行することができる。
【０２１４】
この際、コントローラ７０は、アクセス要求元のホスト５６からリードコマンド又はライトコマンドを受信した場合、リードコマンド又はライトコマンドを基に差分ビットマップテーブル（フォーマット管理情報）１６上のアドレスを示す仮想メモリアドレスを算出し、算出した仮想メモリアドレスとページの管理単位（１MB）との比から、アクセス先に対応する管理情報用ページ３０のページ数を算出し、算出したページ数に１ページの管理情報用ページ３０が存在する場合、１ページの管理情報用ページ３０に対応する前方ページ領域アドレスから、アクセス先の物理アドレスを算出し、１ページの管理情報用ページ３０に対応する前方ページ領域アドレスで特定される前方ページ領域２０に格納された差分ビットマップテーブル１６にフォーマット済みの情報が登録されていることを条件に、算出した物理アドレスのアクセス先に対してリードアクセス又はライトアクセスを実行する。
【０２１５】
また、コントローラ７０は、アクセス先に対応する管理情報用ページ３０のページ数を算出した際に、算出したページ数に２ページ以上の前記管理情報用ページ３０が存在する場合、２ページ以上の管理情報用ページ３０に対応する後方ページ領域アドレスとページ長から、アクセス先の物理アドレスを算出し、２ページ以上の前記管理情報用ページ３０に対応する後方ページ領域アドレスとページ長で特定される後方ページ領域２２に格納された差分ビットマップテーブル１６にフォーマット済みの情報が登録されていることを条件に、算出した物理アドレスのアクセス先に対してリードアクセス又はライトアクセスを実行することになる。
【０２１６】
また、ステップS１５２におけるフォーマット処理の起動やステップS１６２におけるフォーマット起動処理では、図２１におけるジョブ起動処理が行われることになる。
【０２１７】
本実施例によれば、差分ビットマップテーブル（フォーマット管理情報）１６を保存する管理情報用ページ３０のサイズを最小にするとともに、管理情報用ページ３０の管理サイズを低減することができる。
【０２１８】
本実施例によれば、管理情報用LU１８を管理するためのフォーマット管理情報（差分ビットマップテーブル１６）は、ページの管理単位に関係なく、前方ページ領域アドレス２１６と、後方ページ領域アドレス２１８と、後方ページ領域２２に割り当てられた管理情報用ページ３０のページ長２２０の情報で管理することができる。このため、RAIDグループのアクセス単位として、最小であるストライプ列サイズ単位で、フォーマット管理情報を管理することができ、排他制御のために発生する無駄な領域を最小にすることができる。
【０２１９】
また、管理情報用LU１８を管理するためのフォーマット管理情報は、フォーマット対象のLUのサイズに関わらず、一定のため、ディスクアレイ装置のさらなる容量拡張にも対応できる。
【０２２０】
（第２実施例）
【０２２１】
図３１に、本発明の第２実施例として、差分ビットマップテーブル１６の保存先を、シンプロビジョニングプールとした場合の構成図を示す。
【０２２２】
図３１において、複数の記憶装置７６の論理的記憶領域上にシンプロビジョニングプール５００を形成した場合、シンプロビジョニングプール５００に複数のチャンク５０２を形成し、いずれかのチャンク５０２に仮想ボリューム５０４を割り当てることができる。
【０２２３】
仮想ボリューム５０４は、ホスト５６からアクセスされない初期には、その仮想記憶領域には論理ボリュームやページが割り当てられない状態にある。一方、ホスト５６から仮想ボリューム５０４に対して、アクセス要求として、例えば、ライトアクセスが入力されたときには、ライトアクセスのタイミングで容量仮想化制御機能（容量仮想化制御プログラムの起動による処理機能）により、各仮想ボリューム５０４の仮想記憶領域は、複数のブロックに分割され、各ブロックには、シンプロビジョニングプール５００に登録された論理ボリュームが割り当てられる。
【０２２４】
この際、いずれかのチャンク５０２に仮想ボリューム５０４を割り当てた場合、仮想ボリューム５０４のページ５０６は、例えば、３２MBで構成されるので、チャンク５０２に空き領域５０８が形成され、チャンク５２の領域を有効に活用することができない。
【０２２５】
それに対して、チャンク５０２に割り当てるページ５１０を、管理情報用ページサイズ＝ストライプ列サイズとして、シンプロビジョニングプール５００をストライプ列サイズ単位で複数のチャンク５０２に分割すると、各チャンク５０２内には、複数のページ５１０を、空き領域を形成させることなく割り当てることができる。これにより、シンプロビジョニングプール５００をユーザの仮想LUと共有することができる。なお、チャンク５０２の容量としては、例えば、１GBを用いることができる。
【０２２６】
本実施例によれば、シンプロビジョニングプール５００をストライプ列サイズ単位で複数のチャンク５０２に分割することで、各チャンク５０２内に、複数のページ５１０を、空き領域を形成させることなく割り当てることができる。
【０２２７】
なお、差分ビットマップテーブル１６の保存先である管理情報用LU１８を、RAIDを構成するSSDに形成することもできる。この場合、管理情報用LU１８をHDDに形成するよりも、よりアクセス速度を高めることができる。
【０２２８】
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０２２９】
また、上記の各構成、機能等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid  State  Drive）等の記録装置、または、ＩＣ（Integrated  Circuit）カード、ＳＤ（Secure  Digital）メモリカード、ＤＶＤ（Digital  Versatile  Disc）等の記録媒体に記録して置くことができる。
【符号の説明】
【０２３０】
１０  通常LU、１４  クイックフォーマット対象領域、１６  差分ビットマップテーブル、ｌ８  管理情報用LU、２０  前方ページ領域、２２  後方ページ領域、２４  ストライプ列、３０  管理単位、５０  管理サーバ、５２  ディスクアレイ装置、５４  ネットワーク、５６  ホスト、５８  記憶制御装置、６０  増設筺体、７０、７２  コントローラ、７４  基本筺体、７６  記憶装置、８０、１００  MPU、８４、１０４  ローカルメモリ、８６、１０６  キャッシュメモリ、８８、１０８  ホストインタフェース、９０、１１０  データ転送制御回路、９２、１１２  ディスクインタフェース、１２０  ドライブ管理テーブル、１２２  RG管理テーブル、１２４  LU管理テーブル、１２６  QF管理テーブル、１２８  管理情報用仮想メモリ管理テーブル、１３０  管理情報用ページ管理テーブル。
【図１】
0005802283.tif 000002
【図２】
0005802283.tif 000003
【図３】
0005802283.tif 000004
【図４】
0005802283.tif 000005
【図５】
0005802283.tif 000006
【図６】
0005802283.tif 000007
【図７】
0005802283.tif 000008
【図８】
0005802283.tif 000009
【図９】
0005802283.tif 000010
【図１０】
0005802283.tif 000011
【図１１】
0005802283.tif 000012
【図１２】
0005802283.tif 000013
【図１３】
0005802283.tif 000014
【図１４】
0005802283.tif 000015
【図１５】
0005802283.tif 000016
【図１６】
0005802283.tif 000017
【図１７】
0005802283.tif 000018
【図１８】
0005802283.tif 000019
【図１９】
0005802283.tif 000020
【図２０】
0005802283.tif 000021
【図２１】
0005802283.tif 000022
【図２２】
0005802283.tif 000023
【図２３】
0005802283.tif 000024
【図２４】
0005802283.tif 000025
【図２５】
0005802283.tif 000026
【図２６】
0005802283.tif 000027
【図２７】
0005802283.tif 000028
【図２８】
0005802283.tif 000029
【図２９】
0005802283.tif 000030
【図３０】
0005802283.tif 000031
【図３１】
0005802283.tif 000032