(57)【要約】【課題】ファイルシステムがデータを処理する単位と、データを処理する単位とが異なる場合に、データ処理の性能及び信頼性をともに向上させる。【解決手段】キャッシュ制御部１３０は、ホストからライトデータを受信した場合、論理ディスク装置によって５１２バイトでライトデータを管理するとともに、このライトデータのパリティをパリティ領域１１４に保存する。また、ディスク入出力制御部１５０は、論理ディスク装置で管理されるライトデータをＲＡＩＤ部１６０に保存する場合、ライトデータのパリティをパリティ計算部１８０に計算させ、当該計算させたパリティと、パリティ領域に保存されたパリティとが一致するか否かを判断し、一致すると判断した場合、ライトデータ及びパリティを合わせた５２０バイトのデータをＲＡＩＤ部１６０に保存する。【選択図】図１
2011237999.tif 000002
【特許請求の範囲】
【請求項１】
１以上の物理ディスクからなり、第１のアクセス単位でデータを冗長的に保存する物理ディスク装置と、
前記１以上の物理ディスクから構成されるとともに第２のアクセス単位でデータにアクセスする論理ディスク装置を、ファイルとして管理するファイルシステムと、
データのパリティを計算するパリティ計算部と、
前記パリティ計算部で計算したパリティを保存するメモリと、
上位装置からライトデータを受信した場合、前記論理ディスク装置を用いて前記第２のアクセス単位でライトデータを管理するとともに、前記ライトデータのパリティを前記パリティ計算部に計算させ、当該計算させたパリティを前記メモリに保存する第１の制御部と、
前記第２のアクセス単位で管理されるライトデータを前記物理ディスク装置に保存する場合、当該ライトデータのパリティを前記パリティ計算部に計算させ、当該計算させたパリティと、前記メモリに保存されたパリティとが一致するか否かを判断し、一致すると判断した場合、前記管理されるライトデータ及びパリティを前記第１のアクセス単位で前記物理ディスク装置に保存する第２の制御部と、
を備える、ストレージ装置。
【請求項２】
前記第２の制御部は、前記上位装置からの指示に基づいて前記物理ディスク装置からデータをリードする場合、当該リードデータ及びパリティを前記第１のアクセス単位で読み出し、前記論理ディスク装置を用いて前記第２のアクセス単位で前記リードデータを管理するとともに、前記読み出したパリティを前記メモリに保存し、
前記第１の制御部は、前記論理ディスク装置で管理されるリードデータのパリティを前記パリティ計算部で計算させ、当該計算させたパリティと、前記メモリに保存したパリティとが一致するか否かを判断し、一致すると判断した場合、前記論理ディスク装置により前記第２のアクセス単位で管理されるリードデータを前記上位装置へ送信する、請求項１記載のストレージ装置。
【請求項３】
１以上の物理ディスクからなり、第１のアクセス単位でデータを冗長的に保存する物理ディスク装置と、前記１以上の物理ディスクから構成されるとともに第２のアクセス単位でデータにアクセスする論理ディスク装置を、ファイルとして管理するファイルシステムと、を備えるストレージ装置のデータ処理方法であって、
上位装置からライトデータを受信した場合、前記論理ディスク装置を用いて前記第２のアクセス単位でライトデータを管理するとともに、前記ライトデータのパリティを計算し、当該計算したパリティをメモリに保存するステップと、
前記第２のアクセス単位で管理されるライトデータを前記物理ディスク装置に保存する場合、当該ライトデータのパリティを計算させ、当該計算させたパリティと、前記メモリに保存されたパリティとが一致するか否かを判断するステップと、
前記判断するステップで一致すると判断した場合、前記管理されるライトデータ及びパリティを前記第１のアクセス単位で前記物理ディスク装置に保存するステップと、
を有する、ストレージ装置のデータ処理方法。
【請求項４】
前記上位装置からの指示に基づいて前記物理ディスク装置からデータをリードする場合、当該リードデータ及びパリティを前記第１のアクセス単位で読み出し、前記論理ディスク装置を用いて前記第２のアクセス単位で前記リードデータを管理するとともに、前記読み出したパリティを前記メモリに保存するステップと、
前記論理ディスク装置で管理されるリードデータのパリティを計算し、当該計算したパリティと、前記メモリに保存したパリティとが一致するか否かを判断するステップと、
前記判断するステップで一致すると判断した場合、前記論理ディスク装置により前記第２のアクセス単位で管理されるリードデータを前記上位装置へ送信するステップと、
を有する、請求項３記載のストレージ装置のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを冗長的に保存するストレージ装置及びストレージ装置のデータ処理方法に関する。
【背景技術】
【０００２】
従来の技術として、ストレージ装置、例えば、ディスクアレイ装置の信頼性を高める技術が知られている。この技術は、ディスクアレイ装置がホストから受け取ったデータのパリティを計算し、この計算したパリティと受け取ったデータとを合わせて保持し、これらデータをディスク装置に書き込むものである。
【０００３】
また、ホストコンピュータに複数のディスク装置が接続されている場合は、これらのディスク装置でＲＡＩＤを構成し、このＲＡＩＤ上に論理ディスク装置を作成し、この論理ディスク装置をファイルシステムのファイルとして管理する技術も知られている。
【０００４】
さらに、ホストからのライト要求のデータ同士の排他的論理和を算出してパリティデータを求め、第１，第２のまとめ書きバッファ内にストライプを構成する全てのデータが書き込まれるまで当該パリティデータを保持し、まとめ書きバッファ内のデータ及びパリティデータを物理アドレスに基づいて書き込むディスクアレイ装置が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−０５１８０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ファイルシステムにより、論理ディスク装置をファイルとして管理する場合、論理ディスク装置にアクセスする単位であるブロックサイズは、５１２バイトまたは４０９６バイトといった２のべき乗で固定されている。一方、冗長的にデータを記憶するディスク装置のアクセス単位であるブロックサイズは、例えば、５１２バイトのデータに８バイトのパリティを付与した５２０バイトである。このため、ディスクアレイ装置は、ファイルシステムの論理ディスク装置を介してディスク装置にデータとパリティとを合わせて保存する場合、論理ディスク装置に対して１ブロック分のデータにつき複数回のアクセスが必要になり処理性能が低下する。
【０００７】
すなわち、ディスクアレイ装置は、パリティを利用してデータの信頼性を高めようとすると、論理ディスク装置に１ブロック分のデータにつき複数回のアクセスが必要となり処理性能の低下を招く。一方、ディスクアレイ装置は、パリティを利用しないと論理ディスク装置に５１２バイト単位でアクセスするとともに１度のアクセスでディスク装置への処理が可能となるため処理性能の低下は防止できるが、データの信頼性を高めることができない。したがって、論理ディスク装置をファイルシステム上のファイルとして管理するファイルシステムでは、高性能と高信頼性とを両立することが困難であった。
【０００８】
また、上記特許文献１は、論理ディスク装置をファイルシステム上のファイルとして管理するディスクアレイ装置ではないため、当該文献の技術では、上記問題を解決することができない。
【０００９】
本発明は、上記事情に鑑みてなされたものであり、その目的は、ファイルシステムがデータを処理する単位と、ディスク装置がデータを処理する単位とが異なる場合に、データ処理の性能及び信頼性をともに向上させたストレージ装置及びストレージ装置のデータ処理方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、１以上の物理ディスクからなり、第１のアクセス単位でデータを冗長的に保存する物理ディスク装置と、前記１以上の物理ディスクから構成されるとともに第２のアクセス単位でデータにアクセスする論理ディスク装置を、ファイルとして管理するファイルシステムと、データのパリティを計算するパリティ計算部と、前記パリティ計算部で計算したパリティを保存するメモリと、上位装置からライトデータを受信した場合、前記論理ディスク装置を用いて前記第２のアクセス単位でライトデータを管理するとともに、前記ライトデータのパリティを前記パリティ計算部に計算させ、当該計算させたパリティを前記メモリに保存する第１の制御部と、前記第２のアクセス単位で管理されるライトデータを前記物理ディスク装置に保存する場合、当該ライトデータのパリティを前記パリティ計算部に計算させ、当該計算させたパリティと、前記メモリに保存されたパリティとが一致するか否かを判断し、一致すると判断した場合、前記管理されるライトデータ及びパリティを前記第１のアクセス単位で前記物理ディスク装置に保存する第２の制御部と、を備える、ストレージ装置である。
【発明の効果】
【００１１】
本発明によると、ファイルシステムがデータを処理する単位と、ディスク装置がデータを処理する単位とが異なる場合に、データ処理の性能及び信頼性をともに向上させたストレージ装置及びストレージ装置のデータ処理方法を提供できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施の形態に係るディスクアレイ装置の構成を示す図である。
【図２】同第１の実施の形態に係るＲＡＩＤ部上に構築されるファイルシステムを説明するための図である
【図３】同第１の実施の形態に係るキャッシュ管理テーブルの一例を示す図である。
【図４】同第１の実施の形態に係る空き領域管理テーブルの一例を示す図である。
【図５】同第１の実施の形態に係るキャッシュ領域を説明するための図である。
【図６】同第１の実施の形態に係るパリティ領域を説明するための図である。
【図７】同第１の実施の形態に係る書込み処理を示すフローチャートである。
【図８】同第１の実施の形態に係る読込み処理を示すフローチャートである。
【図９】本発明の第２の実施の形態に係るバッファリング機能を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、本発明の各実施の形態について図面を参照しながら説明する。
【００１４】
（第１の実施の形態）
図１は、ストレージ装置であるディスクアレイ装置１００の構成を示す図である。図１に示すように、ディスクアレイ装置１００は、メモリ１１０と、ホスト入出力制御部１２０と、第１の制御部であるキャッシュ制御部１３０と、ファイルシステム処理部１４０と、第２の制御部であるディスク入出力制御部１５０と、物理ディスク装置であるＲＡＩＤ部１６０と、パリティ計算部１８０とから構成されている。
【００１５】
図１に示すように、ホスト入出力制御部１２０と、キャッシュ制御部１３０とが接続されている。さらに、キャッシュ制御部１３０は、メモリ１１０、ファイルシステム処理部１４０、パリティ計算部１８０と接続されている。さらに、ファイルシステム処理部１４０は、ディスク入出力制御部１５０と接続されている。さらに、ディスク入出力制御部１５０は、メモリ１１０と、ＲＡＩＤ部１６０、パリティ計算部１８０と接続されている。
【００１６】
メモリ１１０は、キャッシュ管理テーブル１１１（図３を参照して後述する。）と、空き領域管理テーブル１１２（図４を参照して後述する。）と、キャッシュ領域１１３（図５を参照して後述する。）と、パリティ領域１１４（図６を参照して後述する。）とを格納する領域を有している。
【００１７】
ホスト入出力制御部１２０は、上位装置であるホスト（図示を省略する。）とのデータの入出力を制御する。
【００１８】
キャッシュ制御部１３０は、メモリ１１０、ホスト入出力制御部１２０、ファイルシステム部１４０、パリティ計算部１８０それぞれとのデータの入出力等を制御する。
【００１９】
例えば、キャッシュ制御部１３０は、ホスト（図示しない。）からライトデータを受信した場合、論理ディスク装置１７１を用いて５１２バイト単位（第２のアクセス単位）でライトデータを管理するとともに、当該ライトデータのパリティをパリティ計算部１８０に計算させ、この計算させたパリティをパリティ領域１１４に保存する。また、キャッシュ制御部１３０は、論理ディスク装置１７１で管理されるリードデータのパリティをパリティ計算部１８０で計算させ、この計算させたパリティと、パリティ領域１１４に保存したパリティとが一致するか否かを判断し、一致すると判断した場合、論理ディスク装置１７１により５１２バイト単位で管理されるリードデータをホスト（図示しない。）へ送信する。なお、キャッシュ制御部１３０のより詳細な制御については後述する。
【００２０】
ファイルシステム処理部１４０は、ホスト（図示しない。）からホスト入出力制御部１２０、キャッシュ制御部１３０を介して、書き込み要求として、対象のファイルと、ファイルのオフセットと、書き込むデータが格納されているメモリアドレスと、書き込むデータのサイズとを受け取ると、データをＲＡＩＤ部１６０内のいずれのアドレスに書き込むべきなのかを判断する。この判断に基づいて、ファイルシステム処理部１４０は、ディスク入出力制御部１５０に対して、書き込み対象となるＲＡＩＤ部１６０のディスク装置と、ＲＡＩＤのオフセットと、書き込むデータが格納されているメモリアドレスと、書き込むデータのサイズとを指示する。
【００２１】
同様に、ファイルシステム処理部１４０は、ホスト（図示しない。）からホスト入出力制御部１２０、キャッシュ制御部１３０を介して、読み込み要求として、対象のファイルと、ファイルのオフセットと、読み込んだデータを格納すべきメモリアドレスと、読み込むデータのサイズとを受け取ると、データをＲＡＩＤ部１６０内のいずれのアドレスから読み込むべきなのかを判断する。この判断に基づいて、ファイルシステム処理部１４０は、ディスク入出力制御部１５０に対して、読み込み対象となるＲＡＩＤ部１６０のディスク装置と、ＲＡＩＤのオフセットと、読み込んだデータを格納すべきメモリアドレスと、読み込むデータのサイズとを指示する。
【００２２】
このとき、ファイルシステム処理部１４０が入出力を要求されるファイルのオフセットとデータのサイズは５１２の倍数になっている。また、ファイルシステム処理部１４０がディスク入出力制御部１５０に対して入出力を要求するＲＡＩＤのオフセットとデータのサイズも５１２の倍数になっている。
【００２３】
さらに、ファイルシステム処理部１４０は、一般にゼロコピーＩ／Ｏ又はＤｉｒｅｃｔＩ／Ｏと呼ばれる機能を有している。ファイルシステム処理部１４０は、当該機能により、データのバッファリングやキャッシングを行わず、入力として与えられたメモリアドレスの範囲に対する入出力を、ディスク入出力制御部１５０に指示することができる。なお、一般にゼロコピーＩ／Ｏ又はＤｉｒｅｃｔＩ／Ｏと呼ばれる機能についての詳細な説明は、従来よりある技術であるため省略する。
【００２４】
ディスク入出力制御部１５０は、メモリ１１０、ファイルシステム部１４０、ＲＡＩＤ部１６０、パリティ計算部１８０それぞれとのデータの入出力を制御する。
【００２５】
例えば、ディスク入出力制御部１５０は、５１２バイト単位で管理されるライトデータをＲＡＩＤ部１６０に保存する場合、ライトデータのパリティをパリティ計算部１８０に計算させ、この計算させたパリティと、パリティ領域１１４に保存されたパリティとが一致するか否かを判断し、一致すると判断した場合、ライトデータ及びパリティを合わせた５２０バイトのデータを５２０バイト単位（第１のアクセス単位）でＲＡＩＤ部１６０に保存する。また、ディスク入出力制御部１５０は、ホスト（図示しない。）からの指示に基づいてＲＡＩＤ部１６０からデータをリードする場合、当該リードデータ及びパリティを合わせた５２０バイトのデータを５２０バイト単位で読み出し、論理ディスク装置１７１を用いて５１２バイト単位でリードデータを管理するとともに、読み出したパリティをパリティ領域１１４に保存する。なお、ディスク入出力制御部１５０のより詳細な制御については後述する。
【００２６】
さらに、ディスク入出力制御部１５０は、一般にＳｃａｔｔｅｒ  Ｇａｔｈｅｒと呼ばれる機能を有している。ディスク入出力制御部１５０は、当該機能により、ファイルシステム処理部１４０から５１２バイト単位の入出力要求を受け取ると、後述の手順によりパリティのメモリアドレスを取得し、メモリ上は不連続である５１２バイトのデータと８バイトのパリティの入出力を、５２０バイトセクタのディスク装置に対して、１セクタに対する一回の入出力として行うことが可能となる。なお、一般にＳｃａｔｔｅｒ  Ｇａｔｈｅｒと呼ばれる機能についての詳細な説明は、従来よりある技術であるため省略する。
【００２７】
パリティ計算部１８０は、データのパリティを計算する。より詳細には、キャッシュ制御部１３０又はディスク入出力制御部１５０からパリティ計算要求として、パリティを計算すべきメモリアドレスを受け取ると、指定されたメモリアドレスから５１２バイト分のデータについて、８バイトのパリティを計算し、パリティ計算を要求したキャッシュ制御部１３０又はディスク入出力制御部１５０に返却する。
【００２８】
ＲＡＩＤ部１６０は、ディスク装置１６１と、ディスク装置１６２とを有しており、ディスク装置１６１及びディスク装置１６２により、ＲＡＩＤが構成されている。本実施の形態では、ディスク装置１６１とディスク装置１６２とがストライピングディスクとして構成されている。
【００２９】
図２は、ＲＡＩＤ部１６０上に構築されるファイルシステム１７０を説明するための図である。ファイルシステム１７０は、１以上のディスク装置１６１，１６２から構成されるとともに５１２バイト単位でデータにアクセスする論理ディスク装置をファイルとして管理するシステムである。
【００３０】
図２に示すように、ＲＡＩＤ部１６０上にファイルシステム１７０が構築されており、ファイルシステム１７０上のファイルとして論理ディスク装置１７１が設けられている。
【００３１】
ディスク装置１６１とディスク装置１６２とはセクタサイズはそれぞれ５２０バイトであり、ＲＡＩＤ部１６０のストライピングサイズは５２０バイトである。また、ファイルシステム１７０のブロックサイズは５１２バイトであり、論理ディスク装置１７１のセクタサイズは５１２バイトである。
【００３２】
図３は、キャッシュ管理テーブル１１１の一例を示す図である。キャッシュ管理テーブル１１１は、キャッシュ領域１１３にキャッシュされているデータを５１２バイト毎に管理するテーブルである。
【００３３】
図３に示すように、キャッシュ管理テーブル１１１は、論理ディスク装置を識別する識別情報を格納するフィールド１１１ａと、論理ディスク装置の論理ブロックアドレスを格納するフィールド１１１ｂと、キャッシュ領域１１３上の位置を特定するための情報であるインデックス番号を格納するフィールド１１１ｃとを有している。
【００３４】
図４は、空き領域管理テーブル１１２の一例を示す図である。空き領域管理テーブル１１２はキャッシュ領域１１３の使用状態を管理するためのテーブルである。
【００３５】
図４に示すように、空き領域管理テーブル１１２は、キャッシュ領域１１３の５１２バイト毎、言い換えれば、キャッシュデータインデックス番号毎に、「使用中」または「未使用」の状態を示す情報を格納する。
【００３６】
図５は、キャッシュ領域１１３を説明するための図である。キャッシュ領域１１３は、論理ディスク装置のキャッシュデータを保存する領域である。
【００３７】
キャッシュ領域１１３は、５１２バイト毎に区切られている。また、キャッシュ領域１１３のメモリアドレスは連続している。さらに、図５に示すように、５１２バイト毎に区切られた各ブロックには、先頭から順に０，１，２，…，といったインデックス番号が付けられている。なお、図５に示すアドレス１０００ｈ等は、５１２バイト毎に区切られたアドレスと対応している。
【００３８】
図６は、パリティ領域１１４を説明するための図である。パリティ領域１１４は論理ディスク装置のキャッシュデータのパリティを保存する領域である。
【００３９】
パリティ領域１１４は、８バイト毎に区切られている。また、パリティ領域１１４のメモリアドレスは連続している。さらに、図６に示すように、８バイト毎に区切られた各ブロックには、先頭から順に０，１，２，…，といったインデックス番号が付けられている。なお、図６に示すアドレス２０００ｈ等は、８バイト毎に区切られたアドレスと対応している。
【００４０】
さらに、パリティ領域１１４の各ブロックには、同じインデックス番号を持つキャッシュ領域１１３のパリティが保存される。例えば、パリティ領域１１４のインデックス番号０にはキャッシュ領域１１３のインデックス番号０の内容から計算されたパリティが保存され、パリティ領域１１４のインデックス番号１にはキャッシュ領域１１３のインデックス番号１の内容から計算されたパリティが保存され、パリティ領域１１４のインデックス番号２にはキャッシュ領域１１３のインデックス番号２の内容から計算されたパリティが保存される。
【００４１】
次に、ディスクアレイ装置１００の書き込み処理について詳細に説明する。図７は、ディスクアレイ装置１００の書き込み処理を示すフローチャートである。
【００４２】
以下では、キャッシュ領域１１３にデータは無く、キャッシュ管理テーブル１１１は空であり、空き領域管理テーブル１１２の全てのエントリは「未使用」という状態で、論理ディスク装置１７１の論理ブロックアドレス０から３セクタ分の書き込み命令を、ディスクアレイ装置１００がホストから受信したときの処理について説明する。なお、最初のセクタに対するデータをデータ２３１、二番目のセクタに対するデータをデータ２３２、最後のセクタに対するデータをデータ２３３と称して説明する。
【００４３】
ステップＳ１０１において、キャッシュ制御部１３０は、キャッシュ管理テーブル１１１を参照し、論理ディスク装置が論理ディスク装置１７１、論理ブロックアドレスが０〜２であるエントリの検索を行う。
【００４４】
次に、ステップＳ１０２において、キャッシュ制御部１３０は、書き込み対象の論理ブロックアドレスが存在するか否かを判断する。本実施の形態では、キャッシュ管理テーブル１１１には該当するエントリが存在しないため、処理はステップＳ１０３の処理へ進む。なお、該当するエントリが存在する場合、処理はステップＳ１０３の処理を行わずステップＳ１０４の処理へ進む。
【００４５】
次に、ステップＳ１０３において、キャッシュ制御部１３０は、空き領域管理テーブル１１２から状態が「未使用」となっているキャッシュを検索し、これを取得する。この結果、キャッシュ領域１１３のインデックス番号０〜２のキャッシュが割り当てられ、空き領域管理テーブル１１２は図４のように更新され、キャッシュ管理テーブル１１１は図３のように更新される。
【００４６】
次に、ステップＳ１０４において、キャッシュ制御部１３０は、データ２３１〜２３３を、キャッシュ領域１１３のインデックス番号０〜２のキャッシュ領域に保存する。その結果、キャッシュ領域１１３は図５のように更新される。
【００４７】
次に、ステップＳ１０５において、キャッシュ制御部１３０は、パリティ計算部１８０に対して、データ２３１〜２３３のパリティ計算を要求し、その結果パリティ２４１〜２４３を得る。キャッシュ制御部１３０は、これらのパリティ２４１〜２４３をパリティ領域１１４のインデックス番号０〜２のパリティ領域に保存する。その結果、パリティ領域１１４は図６のように更新される。
【００４８】
次に、ステップＳ１０６において、キャッシュ制御部１３０は、データ２３１〜２３３をファイルシステム１７０上のファイルである論理ディスク装置１７１に書き込むため、書き込み対象のファイルとして論理ディスク装置１７１、オフセットとして０、メモリアドレスとして１０００ｈ、サイズとして１５３６とを入力としてファイルシステム処理部１４０に与える。
【００４９】
次に、ステップＳ１０７において、ファイルシステム処理部１４０は、キャッシュ制御部１３０から与えられた入力に基づいて書き込みを行うＲＡＩＤ部１６０内のディスク装置を判断し、ディスク入出力制御部１５０に対して、データ２３１〜２３３の書き込み要求として、メモリアドレス１０００ｈと、サイズ１５３６とを入力として与える。
【００５０】
ここで、図２のように、データ２３１とデータ２３３、及びそれらデータのパリティであるパリティ２４１とパリティ２４３は、ディスク装置１６１に書き込まれるものとし、データ２３２とそのパリティであるパリティ２４２は、ディスク装置１６２に書き込まれるものとする。
【００５１】
次に、ステップＳ１０８において、ディスク入出力制御部１５０は、パリティのメモリアドレスを算出し、パリティの内容を取得する。
【００５２】
より詳細には、ディスク入出力制御部１５０は、データ２３１のメモリアドレスである１０００ｈとキャッシュ領域１１３の先頭位置である１０００ｈとの減算を行い、その結果として、オフセット値０ｈを得る。ディスク入出力制御部１５０は、このオフセット値０を論理ディスク装置１７１のセクタサイズ５１２で除算し、データ２３１のインデックス番号０を得る。
【００５３】
同様に、ディスク入出力制御部１５０は、データ２３２について、データ２３２のメモリアドレス１２００ｈとキャッシュ領域１１３の先頭位置１０００ｈとの減算を行い、その結果としてオフセット値５１２を得る。ディスク入出力制御部１５０は、このオフセット値５１２を論理ディスク装置１７１のセクタサイズ５１２で除算し、データ２３２のインデックス番号１を得る。
【００５４】
同様に、ディスク入出力制御部１５０は、データ２３３のメモリアドレスである１４００ｈとキャッシュ領域１１３の先頭である１０００ｎとの減算を行い、その結果としてオフセット値１０２４を得る。ディスク入出力制御部１５０は、このオフセット値１０２４を論理ディスク装置１７１のセクタサイズ５１２で除算し、データ２３３のインデックス番号２を得る。
【００５５】
このようにデータ２３１〜２３３のインデックス番号を得ると、ディスク入出力制御部１５０は、インデックス番号０〜２を元に、データ２３１〜２３３のパリティをパリティ領域１１４から取得する。
【００５６】
より詳細には、ディスク入出力制御部１５０は、データ２３１について、インデックス番号０とパリティサイズの８バイトを乗算し、オフセット値０を得る。ディスク入出力制御部１５０は、このオフセット値０とパリティ領域１１４の先頭位置である２０００ｈとの加算を行い、パリティ２４１のメモリアドレス２０００ｈを得る。ディスク入出力制御部１５０は、このメモリアドレス２０００ｈを用いてパリティ２４１を取得する。
【００５７】
同様に、ディスク入出力制御部１５０は、データ２３２について、インデックス番号１とパリティサイズの８バイトを乗算し、オフセット値８を得る。ディスク入出力制御部１５０は、このオフセット値８とパリティ領域１１４の先頭位置である２０００ｈとの加算を行い、パリティ２４２のメモリアドレス２００８ｈを得る。ディスク入出力制御部１５０は、このメモリアドレス２００８ｈを用いてパリティ２４２を取得する。
【００５８】
同様に、ディスク入出力制御部１５０は、データ２３３について、インデックス番号１とパリティサイズ８バイトを乗算し、オフセット値１６得る。ディスク入出力制御部１５０は、このオフセット値０とパリティ領域の先頭位置である２０００ｈとの加算を行い、パリティ２４３のメモリアドレス２０１０ｈを得る。ディスク入出力制御部１５０は、このメモリアドレス２０１０ｈを用いてパリティ２４３を取得する。
【００５９】
次に、ステップＳ１０９において、ディスク入出力制御部１５０は、パリティ計算部１８０に対して、データ２３１〜２３３のパリティ計算を要求し、その結果得られたパリティの内容と、ステップＳ１０８の処理で取得したパリティ２４１〜２４３の内容とを比較し、両パリティが一致するか否かを判断する。
【００６０】
両パリティの内容が一致すると判断した場合（Ｓ１０９：ＹＥＳ）、ディスク入出力制御部１５０は、ステップＳ１１０において、データ２３１〜２３３とパリティ２４１〜２４３をディスク装置１６１とディスク装置１６２に書き込む。
【００６１】
一方、パリティの内容が一致しないと判断した場合（Ｓ１０９：ＮＯ）、ディスク入出力制御部１５０は、ステップＳ１１１において、書き込み処理を中断し、エラーをホストに報告する。
【００６２】
次に、ディスクアレイ装置１００の読み込み処理について詳細に説明する。図８は、ディスクアレイ装置１００の実行する読み込み処理を示すフローチャートである。
【００６３】
以下では、キャッシュ領域１１３にデータは無く、キャッシュ管理テーブル１１１は空であり、空き領域管理テーブル１１２の全てのエントリは「未使用」という状態であり、また、論理ディスク装置１７１とディスク装置１６１、ディスク装置１６２には図２を参照して既述したデータが保存されている状態で、論理ディスク装置１７１の論理ブロックアドレス０から３セクタ分の読み込み要求を、ディスクアレイ装置１００がホストから受信したときの処理について説明する。なお、最初のセクタに対するデータをデータ２３１、二番目のセクタに対するデータをデータ２３２、最後のセクタに対するデータをデータ２３３と称して説明する。
【００６４】
ステップＳ２０１において、キャッシュ制御部１３０は、キャッシュ管理テーブル１１１を参照し、論理ディスク装置が論理ディスク装置１７１であり、論理ブロックアドレスが０〜２であるエントリの検索を行う。
【００６５】
次に、ステップＳ２０２において、キャッシュ制御部１３０は、読み込み対象の論理ブロックアドレスが存在するか否かを判断する。本実施の形態では、キャッシュ管理テーブル１１１には該当するエントリが存在しないため、処理はステップ２０３の処理へ進む。なお、該当するエントリが存在する場合、処理はステップＳ２０８の処理へ進む。
【００６６】
次に、ステップＳ２０３において、キャッシュ制御部１３０は、空き領域管理テーブル１１２から状態が「未使用」となっているキャッシュを検索し、これを取得する。この結果、キャッシュ領域１１３のインデックス番号０〜２のキャッシュが割り当てられ、空き領域管理テーブル１１２は図４のように更新され、キャッシュ管理テーブル１１１は図３のように更新される。
【００６７】
次に、ステップＳ２０４において、キャッシュ制御部１３０は、ファイルシステム１７０上のファイルである論理ディスク装置１７１に対して、データ２３１〜２３３の読み込みを行うため、読み込み対象のファイルとして論理ディスク装置１７１、オフセットとして０、メモリアドレスとして１０００ｈ、サイズとして１５３６をファイルシステム処理部１４０に入力として与える。ファイルシステム処理部１４０は、キャッシュ制御部１３０から与えられた入力に基づいて読み込みを行うＲＡＩＤ部１６０内のディスク装置を判断し、ディスク入出力制御部１５０に対して、データ２３１〜２３３の読み込み要求として、メモリアドレス１０００ｈ、サイズ１５３６を入力として与える。
【００６８】
次に、ステップＳ２０５において、ディスク入出力制御部１５０は、ディスク装置１６１からデータ２３１と、パリティ２４１と、データ２３３と、パリティ２４３とを読み込み、ディスク装置１６２からデータ２３２とパリティ２４２とを読み込む。
【００６９】
次に、ステップＳ２０６において、ディスク入出力制御部１５０は、データ２３１、データ２３２、データ２３３を、キャッシュ領域１１３のメモリアドレス１０００ｈ、１２００ｈ、１４００ｈに保存する。この結果、キャッシュ領域１１３は図５のように更新される。
【００７０】
次に、ステップＳ２０７において、ディスク入出力制御部１５０は、パリティのメモリアドレスを算出し、そのアドレスにパリティの内容を保存する。
【００７１】
より詳細には、ディスク入出力制御部１５０は、データ２３１のメモリアドレス１０００ｈとキャッシュ領域１１３の先頭位置１０００ｈとの減算を行い、その結果オフセット値０を得る。ディスク入出力制御部１５０は、このオフセット値０を論理ディスク装置１７１のセクタサイズ５１２で除算し、データ２３１のインデックス番号０を得る。
【００７２】
同様に、ディスク入出力制御部１５０は、データ２３２について、メモリアドレス１２００ｈとキャッシュ領域１１３の先頭位置１０００ｈとの減算を行い、その結果オフセット値５１２を得る。ディスク入出力制御部１５０は、このオフセット値５１２を論理ディスク装置１７１のセクタサイズ５１２で除算し、データ２３２のインデックス番号１を得る。
【００７３】
同様に、ディスク入出力制御部１５０は、データ２３３について、メモリアドレス１４００ｈとキャッシュ領域１１３の先頭位置１０００ｈとの減算を行い、その結果オフセット値１０２４を得る。ディスク入出力制御部１５０は、このオフセット値１０２４を論理ディスク装置１７１のセクタサイズ５１２で除算し、データ２３３のインデックス番号２を得る。
【００７４】
このようにデータ２３１〜２３３のインデックス番号を得ると、ディスク入出力制御部１５０は、インデックス番号０〜２を元に、データ２３１〜２３３のパリティをＲＡＩＤ部１６０から取得する。
【００７５】
より詳細には、ディスク入出力制御部１５０は、データ２３１について、インデックス番号０とパリティサイズの８バイトを乗算し、オフセット値０を得る。ディスク入出力制御部１５０は、このオフセット値０とパリティ領域１１４の先頭位置２０００ｈとの加算を行い、パリティ２４１を保存すべきメモリアドレス２０００ｈを得て、そこにパリティ２４１を保存する。
【００７６】
同様に、ディスク入出力制御部１５０は、データ２３２について、インデックス番号１とパリティサイズの８バイトを乗算し、オフセット値８を得る。ディスク入出力制御部１５０は、このオフセット値８とパリティ領域１１４の先頭位置２０００ｈとの加算を行い、パリティ２４２を保存すべきメモリアドレス２００８ｈを得て、そこにパリティ２４２を保存する。
【００７７】
同様に、ディスク入出力制御部１５０は、データ２３３について、インデックス番号２とパリティサイズの８バイトを乗算し、オフセット値１６を得る。ディスク入出力制御部１５０は、このオフセット値１６とパリティ領域１１４の先頭位置２０００ｈとの加算を行い、パリティ２４３を保存すべきメモリアドレス２０１６を得て、そこにパリティ２４３を保存する。
【００７８】
次に、ステップＳ２０８において、キャッシュ制御部１３０は、パリティ計算部１８０に対して、データ２３１〜２３３のパリティ計算を要求し、その結果得られたパリティの内容と、ステップＳ２０７の処理で取得したパリティ２４１〜２４３の内容と比較して、両パリティが一致するか否かを判断する。
【００７９】
両パリティの内容が一致すると判断した場合（Ｓ２０８：ＹＥＳ）、ステップＳ２０９において、キャッシュ制御部１３０は、ホスト入出力制御部１２０を介して、データ２３１〜２３３を、読み込み要求を行ったホストに転送する。
【００８０】
一方、両パリティの内容が一致しなかったと判断した場合（Ｓ２０８：ＮＯ）、ステップＳ２１０において、キャッシュ制御部１３０は、読み込み処理を中断し、エラーをホストに報告する。
【００８１】
この第１の実施の形態のディスクアレイ装置１００は、ファイルシステム処理部１４０がデータを処理する単位が５１２バイト、ディスク入出力制御部１５０がデータを処理する単位が５２０バイトのように異なっているが、高性能と高信頼性とを両立させてデータの書き込み、及びデータの読み込みを行うことができる。
【００８２】
より詳細には、ファイルシステム上のファイルとして論理ディスク装置１７１が構成されたディスクアレイ装置１００は、パリティをファイルデータの一部として記録せず、ディスク入出力制御部１５０が直接パリティ領域１１４から取得することにより、ファイルへの入出力を１ブロック分のデータにつき１アクセスで行うことができるようになっている。また、ディスクアレイ装置１００は、論理ディスク装置１７１のキャッシュ領域１１３にキャッシュされたデータに基づくパリティと、パリティ領域１１４に保存されたパリティとによる検証を可能としている。したがって、ディスクアレイ装置１００は、高性能かつ高信頼性をともに両立させることができる。
【００８３】
また、上記第１の実施の形態では、ＲＡＩＤ部１６０のＲＡＩＤの構成がディスク装置１６１とディスク装置１６２から構成されるストライピングである場合について説明したがこれに限られるものではない。例えば、ストライピングではなく、ミラーリングやＲＡＩＤ５、ＲＡＩＤ６が構成されていても本発明を適用可能である。
【００８４】
さらに、上記第１の実施の形態では、キャッシュ制御部１３０は、パリティが一致しないと判断した場合、エラーのみを図示しないホストに報告する場合で説明したが、これに限られるものではない。例えば、キャッシュ制御部１３０は、ディスク装置からデータの再読み込みを行い、再度パリティの検証を行うことにより、ホストにエラーを報告する可能性を低減することも可能である。また、例えば、ＲＡＩＤ部１６０がミラーリング等の冗長構成となっている場合、キャッシュ制御部１３０は、他のディスク装置から読み込んだデータの結果を元にエラーを訂正することも可能である。
【００８５】
（第２の実施の形態）
上記第１の実施の形態では、ファイルシステム処理部１４０はバッファリングやキャッシングを行わない場合で説明しているが、ファイルシステム処理部１４０がバッファリングやキャッシングを行う場合でも、ファイルシステム処理部１４０にバッファのメモリアドレスからファイルとオフセットを取得する機能を追加することにより、本発明を適用可能である。
【００８６】
以下では、ファイルシステム処理部１４０にバッファリング機能を持たせた場合について図９を参照しながら説明する。
【００８７】
図９は、ファイルシステム処理部１４０のバッファリング機能を説明するための図である。図９には、ファイルシステム処理部１４０、ディスク入出力制御部１５０、及びメモリ１１０が図示されている。なお、ファイルシステム処理部１４０にバッファリング機能を説明するのに必要な構成については図示を省略している。
【００８８】
また、図９のメモリ１１０には、キャッシュ管理テーブル１１１、バッファ領域１１５、バッファ管理テーブル１１６を図示している。
【００８９】
バッファ領域１１５は、バッファリングしたデータを保持する領域である。
【００９０】
バッファ管理テーブル１１６は、バッファ領域１１５に格納されるデータを管理するテーブルである。より詳細には、バッファ管理テーブル１１６は、どのファイルのどのオフセットがバッファ領域１１５のどこに保持されているのかを示す情報を格納する。
【００９１】
ファイルシステム処理部１４０は、バッファ情報取得部１４１を有している。バッファ情報取得部１４１は、入力としてバッファのアドレスが与えられると、バッファ管理テーブル１１６の検索を行い、そのバッファがどのファイルのどのオフセットのものであるかを返却する機能を実現する。ファイルシステム処理部１４０は、バッファ情報取得部１４１の機能をディスク入出力制御部１５０に対して提供する。
【００９２】
次に、本第２の実施の形態における書き込み処理について説明する。なお、本第２の実施の形態の書き込み処理は、既述の第１の実施の形態と同じ状態から行われるものとする。
【００９３】
図９を参照しながら、本第２実施の形態の書き込み処理が上記第１の実施の形態と異なる点を説明する。
【００９４】
キャッシュ制御部１３０（図９では図示を省略している。）が図示しないホストから受信したデータ２３１、データ２３２、データ２３３をバッファ領域１１５にコピーする。このときのバッファ領域１１５のメモリアドレスをアドレス２５１、アドレス２５２、アドレス２５３とする。
【００９５】
このとき、ディスク入出力制御部１５０は、入力としてアドレス２５１、アドレス２５２、アドレス２５３をファイルシステム処理部１４０から受け取る。
【００９６】
次に、ディスク入出力制御部１５０は、バッファ情報取得部１４１の機能を使用し、アドレス２５１〜２５３がどのファイルのどのオフセットのデータであるかを取得する。
【００９７】
次に、ディスク入出力制御部１５０は、バッファ情報取得部１４１の機能によって取得したファイルとオフセットの情報とを元にキャッシュ管理テーブル１１１を検索し、キャッシュデータのインデックス番号を取得する。
【００９８】
したがって、本第２の実施の形態によると、ファイルシステム処理部１４０がバッファリングやキャッシングの機能を有する場合でも、上記第１の実施の形態と同様な効果を奏するディスクアレイ装置を提供できる。
【００９９】
なお、本発明は上述の実施の形態に限定されるものではなく、その実施に際して様々な変形が可能である。
【０１００】
上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１０１】
（付記１）
１以上の物理ディスクからなり、第１のアクセス単位でデータを冗長的に保存する物理ディスク装置と、
前記１以上の物理ディスクから構成されるとともに第２のアクセス単位でデータにアクセスする論理ディスク装置を、ファイルとして管理するファイルシステムと、
データのパリティを計算するパリティ計算部と、
前記パリティ計算部で計算したパリティを保存するメモリと、
上位装置からライトデータを受信した場合、前記論理ディスク装置を用いて前記第２のアクセス単位でライトデータを管理するとともに、前記ライトデータのパリティを前記パリティ計算部に計算させ、当該計算させたパリティを前記メモリに保存する第１の制御部と、
前記第２のアクセス単位で管理されるライトデータを前記物理ディスク装置に保存する場合、当該ライトデータのパリティを前記パリティ計算部に計算させ、当該計算させたパリティと、前記メモリに保存されたパリティとが一致するか否かを判断し、一致すると判断した場合、前記管理されるライトデータ及びパリティを前記第１のアクセス単位で前記物理ディスク装置に保存する第２の制御部と、
を備える、ストレージ装置。
【０１０２】
（付記２）
前記第２の制御部は、前記上位装置からの指示に基づいて前記物理ディスク装置からデータをリードする場合、当該リードデータ及びパリティを前記第１のアクセス単位で読み出し、前記論理ディスク装置を用いて前記第２のアクセス単位で前記リードデータを管理するとともに、前記読み出したパリティを前記メモリに保存し、
前記第１の制御部は、前記論理ディスク装置で管理されるリードデータのパリティを前記パリティ計算部で計算させ、当該計算させたパリティと、前記メモリに保存したパリティとが一致するか否かを判断し、一致すると判断した場合、前記論理ディスク装置により前記第２のアクセス単位で管理されるリードデータを前記上位装置へ送信する、付記１記載のストレージ装置。
【０１０３】
（付記３）
１以上の物理ディスクからなり、第１のアクセス単位でデータを冗長的に保存する物理ディスク装置と、前記１以上の物理ディスクから構成されるとともに第２のアクセス単位でデータにアクセスする論理ディスク装置を、ファイルとして管理するファイルシステムと、を備えるストレージ装置のデータ処理方法であって、
上位装置からライトデータを受信した場合、前記論理ディスク装置を用いて前記第２のアクセス単位でライトデータを管理するとともに、前記ライトデータのパリティを計算し、当該計算したパリティをメモリに保存するステップと、
前記第２のアクセス単位で管理されるライトデータを前記物理ディスク装置に保存する場合、当該ライトデータのパリティを計算させ、当該計算させたパリティと、前記メモリに保存されたパリティとが一致するか否かを判断するステップと、
前記判断するステップで一致すると判断した場合、前記管理されるライトデータ及びパリティを前記第１のアクセス単位で前記物理ディスク装置に保存するステップと、
を有する、ストレージ装置のデータ処理方法。
【０１０４】
（付記４）
前記上位装置からの指示に基づいて前記物理ディスク装置からデータをリードする場合、当該リードデータ及びパリティを前記第１のアクセス単位で読み出し、前記論理ディスク装置を用いて前記第２のアクセス単位で前記リードデータを管理するとともに、前記読み出したパリティを前記メモリに保存するステップと、
前記論理ディスク装置で管理されるリードデータのパリティを計算し、当該計算したパリティと、前記メモリに保存したパリティとが一致するか否かを判断するステップと、
前記判断するステップで一致すると判断した場合、前記論理ディスク装置により前記第２のアクセス単位で管理されるリードデータを前記上位装置へ送信するステップと、
を有する、付記３記載のストレージ装置のデータ処理方法。
【産業上の利用可能性】
【０１０５】
論理ディスク装置をファイルとして管理するファイルシステムを有するストレージ装置に広く適用可能である。
【符号の説明】
【０１０６】
１０１・・・ストレージ装置
１２０・・・ホスト入出力制御部
１３０・・・キャッシュ制御部
１４０・・・ファイルシステム処理部
１５０・・・ディスク入出力制御部
１６０・・・ＲＡＩＤ部
１７０・・・ファイルシステム
１７１，１７２・・・ディスク装置
１８０・・・パリティ計算部
２３１，２３２，２３３・・・データ
２４１，２４２，２４３・・・パリティ
【図１】
2011237999.tif 000003
【図２】
2011237999.tif 000004
【図３】
2011237999.tif 000005
【図４】
2011237999.tif 000006
【図５】
2011237999.tif 000007
【図６】
2011237999.tif 000008
【図７】
2011237999.tif 000009
【図８】
2011237999.tif 000010
【図９】
2011237999.tif 000011