(57)【要約】【課題】分散ストレージシステムにおいてディスク領域を減少させる。【解決手段】第１情報処理装置１は、データを記憶する第１記憶装置１３と、上位装置から受信された更新データと第１記憶装置１３に記憶されている更新前のデータとの差分を示す差分データを生成する差分生成部と、差分生成部によって生成された差分データを記憶する第２記憶装置１４と、第２記憶装置１４に記憶されている差分データを第２情報処理装置２に送信するデータ送信部と、を備え、第２情報処理装置２は、パリティを記憶する第３記憶装置２３と、データ送信部によって送信された差分データを受信するデータ受信部と、第３記憶装置２３に記憶されている更新前のパリティに対して、データ受信部によって受信された差分データを適用することによって、第３記憶装置２３に書き込む更新後のパリティを生成するパリティ差分適用部と、を備える。【選択図】図１
2016184372.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する第１情報処理装置と、当該第１情報処理装置と通信可能に接続され、前記データのパリティを格納する第２情報処理装置と、前記第１情報処理装置と通信可能に接続される上位装置とを有するストレージシステムであって、
前記第１情報処理装置は、
前記データを記憶する第１記憶装置と、
前記上位装置から受信された更新データと前記第１記憶装置に記憶されている更新前の前記データとの差分を示す差分データを生成する差分生成部と、
前記差分生成部によって生成された前記差分データを記憶する第２記憶装置と、
前記第２記憶装置に記憶されている前記差分データを前記第２情報処理装置に送信するデータ送信部と、
を備え、
前記第２情報処理装置は、
前記パリティを記憶する第３記憶装置と、
前記データ送信部によって送信された前記差分データを受信するデータ受信部と、
前記第３記憶装置に記憶されている更新前の前記パリティに対して、前記データ受信部によって受信された前記差分データを適用することによって、前記第３記憶装置に書き込む更新後のパリティを生成するパリティ差分適用部と、
を備えることを特徴とする、ストレージシステム。
【請求項２】
前記第１情報処理装置は、
前記第１記憶装置に記憶されている更新前の前記データに対して、前記第２記憶装置に記憶されている前記差分データを適用することによって、前記第１記憶装置に書き込む更新後のデータを生成するデータ差分適用部
を備えることを特徴とする、請求項１に記載のストレージシステム。
【請求項３】
前記差分生成部は、前記上位装置から受信された更新データと前記第１記憶装置に記憶されている更新前の前記データとについて、ガロア体上の演算を行なうことによって、前記差分データを生成する、
ことを特徴とする、請求項１又は２に記載のストレージシステム。
【請求項４】
前記第２記憶装置に記憶される前記差分データは、前記第１記憶装置に書き込まれるデータ及び前記第３記憶装置に書き込まれるパリティについてのジャーナルとして用いられる、
ことを特徴とする、請求項１〜３のいずれか１項に記載のストレージシステム。
【請求項５】
データのパリティを格納する他の情報処理装置と、上位装置と通信可能に接続される情報処理装置であって、
データを記憶する第１記憶装置と、
前記上位装置から受信された更新データと前記第１記憶装置に記憶されている更新前の前記データとの差分を示す差分データを生成する差分生成部と、
前記差分生成部によって生成された前記差分データを記憶する第２記憶装置と、
前記第２記憶装置に記憶されている前記差分データを前記他の情報処理装置に送信することにより、前記他の情報処理装置において更新後のパリティを生成させるデータ送信部と、
を備えることを特徴とする、情報処理装置。
【請求項６】
データのパリティを格納する他の情報処理装置と、上位装置と通信可能に接続される情報処理装置に備えられるコンピュータに、
前記上位装置から受信された更新データと当該情報処理装置に備えられる第１記憶装置に記憶されている更新前のデータとの差分を示す差分データを生成し、
生成された前記差分データを当該第１情報処理装置に備えられる第２記憶装置に格納し、
前記他の情報処理装置における更新後のパリティの算出のために、前記第２記憶装置に記憶されている前記差分データを前記他の情報処理装置に送信することにより、前記他の情報処理装置において更新後のパリティを生成させる、
処理を実行させることを特徴とする、パリティ生成プログラム。
【請求項７】
データを格納する第１情報処理装置と、当該第１情報処理装置と通信可能に接続され、前記データのパリティを格納する第２情報処理装置と、前記第１情報処理装置と通信可能に接続される上位装置とを有するストレージシステムにおけるパリティ生成方法であって、
前記第１情報処理装置は、
前記上位装置から受信された更新データと当該第１情報処理装置に備えられる第１記憶装置に記憶されている更新前の前記データとの差分を示す差分データを生成し、
生成された前記差分データを当該第１情報処理装置に備えられる第２記憶装置に格納し、
前記第２記憶装置に記憶されている前記差分データを前記第２情報処理装置に送信し、
前記第２情報処理装置は、
前記第１情報処理装置によって送信された前記差分データを受信し、
当該第２情報処理装置に備えられる第３記憶装置に記憶されている更新前の前記パリティに対して、受信された前記差分データを適用することによって、前記第３記憶装置に書き込む更新後のパリティを生成する、
ことを特徴とする、パリティ生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム，情報処理装置，パリティ生成プログラム及びパリティ生成方法に関する。
【背景技術】
【０００２】
データとパリティとを異なるノードに配置する分散ストレージシステムが知られている。分散ストレージシステムのErasure Codeでは、データとパリティとを異なるノードに配置するため、データの更新に伴って分散トランザクションが発生する。また、各ノードは、ノードダウンに備えて更新後のイメージデータをジャーナルとして記録し、トランザクションの信頼性を向上させる技術が知られている。
【０００３】
図７は従来例としてのストレージシステムにおけるジャーナル書き込み処理を説明する図であり、図８はそのジャーナル適用処理を説明する図である。
図７及び図８に示すストレージシステム（分散ストレージシステム）１００ａは、図示しないホスト装置に対して記憶領域を提供するものである。ストレージシステム１００ａは、複数（図示する例では３つ）のデータノード（データノード＃１〜＃３）１ａ及び複数（図示する例では２つ）のパリティノード２ａ（パリティノード＃１，＃２）を備える。つまり、図７及び図８は、Erasure Codeのストライプを構成するチャンクが３つのデータチャンクと２つのパリティチャンクとである例を示している。各データノード１ａと各パリティノード２ａとは、例えばLocal Area Network（ＬＡＮ）ケーブルを介して互いに通信可能に接続される。
【０００４】
以下、複数のデータノードのうち１つを特定する必要があるときには「データノード＃１」，「データノード＃２」又は「データノード＃３」と表記するが、任意のデータノードを指すときには「データノード１ａ」と表記する。また、以下、複数のパリティノードのうち１つを特定する必要があるときには「パリティノード＃１」又は「パリティノード＃２」と表記するが、任意のパリティノードを指すときには「パリティノード２ａ」と表記する。
【０００５】
データノード１ａは、図示しないホスト装置等の外部装置から受信したデータを格納するノードであり、Central Processing Unit（ＣＰＵ）１１ａ，ファイルストア１３ａ，ジャーナルディスク１４ａ及び図示しないメモリを備える。なお、各データノード＃１〜＃３は互いに同様の機能構成を備えるため、図７及び図８においては、データノード＃１，＃３が備える機能構成の図示を省略している。
【０００６】
ＣＰＵ１１ａは、種々の制御や演算を行なう処理装置であり、図示しないメモリに格納されたOperating System（ＯＳ）やプログラムを実行することにより、種々の機能を実現する。
ファイルストア１３ａは、データノード１ａが受信したデータを読み書き可能に格納する既知の装置であり、例えば、Hard Disk Drive（ＨＤＤ）やSolid State Drive（ＳＳＤ）である。
【０００７】
ジャーナルディスク１４ａは、データノード１ａが受信したデータについての記録であるジャーナルを読み書き可能に格納する既知の装置であり、例えば、ＨＤＤやＳＳＤである。
パリティノード２ａは、データノード１ａに格納されるデータのパリティを格納するノードであり、ＣＰＵ２１ａ，ファイルストア２３ａ，ジャーナルディスク２４ａ及び図示しないメモリを備える。なお、各パリティノード＃１，＃２は互いに同様の機能構成を備えるため、図７及び図８においては、パリティノード＃１が備える機能構成の図示を省略している。
【０００８】
ＣＰＵ２１ａは、種々の制御や演算を行なう処理装置であり、図示しないメモリに格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。
ファイルストア２３ａは、データノード１ａに格納されるデータのパリティを読み書き可能に格納する既知の装置であり、例えば、ＨＤＤやＳＳＤである。
ジャーナルディスク２４ａは、ファイルストア２３ａに格納されるパリティのジャーナルを読み書き可能に格納する既知の装置であり、例えば、ＨＤＤやＳＳＤである。
【０００９】
以下、図７及び図８を参照しながら、従来例としてのストレージシステムにおけるジャーナル書き込み処理及びジャーナル適用処理について説明する。図７及び図８を参照しながら説明する際には、簡単のため、「データノード＃２のＣＰＵ１１ａ」による処理を単に「データノード＃２」による処理として説明し、「パリティノード＃２のＣＰＵ２１ａ」による処理を単に「パリティノード＃２」による処理として説明する。
【００１０】
データノード＃２は、図示しないホスト装置から更新データ“７”を受信する（図７の符号Ｂ１参照）。
データノード＃２は、ファイルストア１３ａから更新前のデータ“４”を読み込む（図７の符号Ｂ２参照）。
データノード＃２は、更新データと更新前のデータとの差分を計算する（図７の符号Ｂ３参照）。図７に示す例においては、データノード＃２は、更新データ“７”から更新前のデータ“４”を減算した値“３”を差分データとして算出する。
【００１１】
データノード＃２は、更新データ（更新後のデータ）“７”をジャーナルディスク１４ａに書き込む（図７の符号Ｂ４参照）。
データノード＃２は、算出した差分データ“３”をパリティノード＃２へ転送する（図７の符号Ｂ５参照）。
パリティノード＃２は、データノード＃２から差分データ“３”を受信する（図７の符号Ｂ６参照）。
【００１２】
パリティノード＃２は、ファイルストア２３ａから更新前のパリティを読み込む（図７の符号Ｂ７参照）。
パリティノード＃２は、更新前のパリティに差分を適用する（図７の符号Ｂ８参照）。図７に示す例においては、データノード＃２は、更新前のパリティ“２”に差分データ“３”を加算することにより、更新後のパリティ“５”を算出する。
【００１３】
パリティノード＃２は、算出した更新後のパリティ“５”をジャーナルディスク２４ａに書き込む（図７の符号Ｂ９参照）。
次に、データノード＃２は、ジャーナルの適用のために、ジャーナルディスク１４ａからジャーナルを読み込む（図８の符号Ｂ１０参照）。
そして、データノード＃２は、読み込んだジャーナルをファイルストア１３ａに書き込む（図８の符号Ｂ１１参照）。
【００１４】
また、パリティノード＃２は、ジャーナルの適用のために、ジャーナルディスク２４ａからジャーナルを読み込む（図８の符号Ｂ１２参照）。
そして、パリティノード＃２は、読み込んだジャーナルをファイルストア１３ａに書き込む（図８の符号Ｂ１３参照）。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平８−８７４２４号公報
【特許文献２】特開２００６−３３８４６１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
このように、従来技術におけるストレージシステム１００ａは、データノード１ａ及びパリティノード２ａがジャーナルディスク１４ａ，２４ａをそれぞれ個別に備える。そして、データノード１ａは更新後のデータをジャーナルとしてジャーナルディスク１４ａに書き込み、パリティノード２ａは更新後のパリティをジャーナルとしてジャーナルディスク２４ａに書き込む。そのため、パリティノード２ａの数が増加するほどジャーナルのデータ量が増加し、必要なディスク容量が増加するのみならず、Input/Output（Ｉ／Ｏ）オーバヘッドが増加するという課題がある。
【００１７】
１つの側面では、本発明は、分散ストレージシステムにおいてディスク領域を減少させることを目的とする。
【課題を解決するための手段】
【００１８】
このため、このストレージシステムは、データを格納する第１情報処理装置と、当該第１情報処理装置と通信可能に接続され、前記データのパリティを格納する第２情報処理装置と、前記第１情報処理装置と通信可能に接続される上位装置とを有するストレージシステムであって、前記第１情報処理装置は、前記データを記憶する第１記憶装置と、前記上位装置から受信された更新データと前記第１記憶装置に記憶されている更新前の前記データとの差分を示す差分データを生成する差分生成部と、前記差分生成部によって生成された前記差分データを記憶する第２記憶装置と、前記第２記憶装置に記憶されている前記差分データを前記第２情報処理装置に送信するデータ送信部と、を備え、前記第２情報処理装置は、前記パリティを記憶する第３記憶装置と、前記データ送信部によって送信された前記差分データを受信するデータ受信部と、前記第３記憶装置に記憶されている更新前の前記パリティに対して、前記データ受信部によって受信された前記差分データを適用することによって、前記第３記憶装置に書き込む更新後のパリティを生成するパリティ差分適用部と、を備える。
【発明の効果】
【００１９】
開示のストレージシステムによれば、分散ストレージシステムにおいてディスク領域を減少させることができる。
【図面の簡単な説明】
【００２０】
【図１】実施形態の一例としてのストレージシステムの機能構成を模式的に示す図である。
【図２】実施形態の一例としてのデータノードが備えるＣＰＵの機能構成を模式的に示す図である。
【図３】実施形態の一例としてのパリティノードが備えるＣＰＵの機能構成を模式的に示す図である。
【図４】実施形態の一例としてのストレージシステムにおけるジャーナル書き込み処理及びジャーナル適用処理を説明するシーケンス図である。
【図５】実施形態の一例としてのストレージシステムにおけるジャーナル書き込み処理を説明する図である。
【図６】実施形態の一例としてのストレージシステムにおけるジャーナル適用処理を説明する図である。
【図７】従来例としてのストレージシステムにおけるジャーナル書き込み処理を説明する図である。
【図８】従来例としてのストレージシステムにおけるジャーナル適用処理を説明する図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照してストレージシステム，情報処理装置，パリティ生成プログラム及びパリティ生成方法に係る一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【００２２】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【００２３】
〔Ａ〕実施形態の一例
〔Ａ−１〕システム構成
図１は、実施形態の一例としてのストレージシステムの機能構成を模式的に示す図である。
図１に示すストレージシステム１００は、図示しないホスト装置（上位装置）に対して記憶領域を提供するものであり、データを複数のデータノード１に分散して格納する分散ストレージシステムとして機能する。ストレージシステム１００は、複数（図示する例では３つ）のデータノード（データノード＃１〜＃３；第１情報処理装置）１及び複数（図示する例では２つ）のパリティノード（パリティノード＃１，＃２；第２情報処理装置）２を備える。つまり、図１は、Erasure Codeのストライプを構成するチャンクが３つのデータチャンクと２つのパリティチャンクとである例を示している。各データノード１と各パリティノード２とは、例えばＬＡＮケーブルを介して互いに通信可能に接続される。
【００２４】
以下、複数のデータノードのうち１つを特定する必要があるときには「データノード＃１」，「データノード＃２」又は「データノード＃３」と表記するが、任意のデータノードを指すときには「データノード１」と表記する。また、以下、複数のパリティノードのうち１つを特定する必要があるときには「パリティノード＃１」又は「パリティノード＃２」と表記するが、任意のパリティノードを指すときには「パリティノード２」と表記する。
【００２５】
データノード１は、図示しないホスト装置等の外部装置から受信したデータを格納するノードであり、ＣＰＵ１１，メモリ１２，ファイルストア（第１記憶装置）１３及びジャーナルディスク（第２記憶装置）１４を備える。
ファイルストア１３は、データノード１が受信したデータを読み書き可能に格納する既知の装置であり、例えば、ＨＤＤやＳＳＤである。
【００２６】
ジャーナルディスク１４は、データノード１が受信したデータのジャーナル（更新履歴，更新差分）を読み書き可能に格納する既知の装置であり、例えば、ＨＤＤやＳＳＤである。
メモリ１２は、Read Only Memory（ＲＯＭ）及びRandom Access Memory（ＲＡＭ）を含む記憶装置である。メモリ１２のＲＯＭには、Basic Input/Output System（ＢＩＯＳ）等のプログラムが書き込まれている。メモリ１２上のソフトウェアプログラムは、ＣＰＵ１１に適宜読み込まれて実行される。また、メモリ１２のＲＡＭは、一次記録メモリあるいはワーキングメモリとして利用される。
【００２７】
ＣＰＵ１１は、種々の制御や演算を行なう処理装置であり、メモリ１２に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ１１は、図２を用いて後述するように、データ受信部１１１，ファイルストア読み込み部１１２，差分生成部１１３，ジャーナル書き込み部１１４，ジャーナル読み込み部１１５，差分適用部（データ差分適用部）１１６，ファイルストア書き込み部１１７及びデータ送信部１１８として機能する。
【００２８】
なお、これらのデータ受信部１１１，ファイルストア読み込み部１１２，差分生成部１１３，ジャーナル書き込み部１１４，ジャーナル読み込み部１１５，差分適用部１１６，ファイルストア書き込み部１１７及びデータ送信部１１８としての機能を実現するためのプログラム（パリティ生成プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
【００２９】
データ受信部１１１，ファイルストア読み込み部１１２，差分生成部１１３，ジャーナル書き込み部１１４，ジャーナル読み込み部１１５，差分適用部１１６，ファイルストア書き込み部１１７及びデータ送信部１１８としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ１２）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【００３０】
パリティノード２は、データノード１に格納されるデータのパリティを格納するノードであり、ＣＰＵ２１，メモリ２２及びファイルストア（第３記憶装置）２３を備える。
ファイルストア２３は、データノード１に格納されるデータのパリティを読み書き可能に格納する既知の装置であり、例えば、ＨＤＤやＳＳＤである。
メモリ２２は、ＲＯＭ及びＲＡＭを含む記憶装置である。メモリ２２のＲＯＭには、ＢＩＯＳ等のプログラムが書き込まれている。メモリ２２上のソフトウェアプログラムは、ＣＰＵ２１に適宜読み込まれて実行される。また、メモリ２２のＲＡＭは、一次記録メモリあるいはワーキングメモリとして利用される。
【００３１】
ＣＰＵ２１は、種々の制御や演算を行なう処理装置であり、メモリ２２に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ２１は、図３を用いて後述するように、データ受信部２１１，ファイルストア読み込み部２１２，差分適用部（パリティ差分適用部）２１３及びファイルストア書き込み部２１４として機能する。
【００３２】
なお、これらのデータ受信部２１１，ファイルストア読み込み部２１２，差分適用部２１３及びファイルストア書き込み部２１４としての機能を実現するためのプログラム（パリティ生成プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
【００３３】
データ受信部２１１，ファイルストア読み込み部２１２，差分適用部２１３及びファイルストア書き込み部２１４としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ２２）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ２１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【００３４】
図２は、実施形態の一例としてのデータノードが備えるＣＰＵの機能構成を模式的に示す図である。
データ受信部１１１は、図示しないホスト装置等の外部装置からデータ（更新データ）を受信する。具体的には、各データノード＃１〜＃３のデータ受信部１１１は、外部装置から送信されたデータをそれぞれのノードにおいて数バイト単位（例えば４バイト）のチャンクに区切って受信する。このため、データノード１のファイルストア１３へのデータの格納やパリティノード２におけるパリティの計算、ファイルストア２３へのパリティの格納も、区切られたチャンク毎に行なわれる。
【００３５】
ファイルストア読み込み部１１２は、ファイルストア１３に格納されたデータを読み込む。具体的には、ファイルストア読み込み部１１２は、データ受信部１１１によって更新データが受信された場合に、ファイルストア１３から更新対象の領域に格納されたデータである更新前データを読み込む。また、ファイルストア読み込み部１１２は、後述するジャーナル適用のタイミングにおいて、ファイルストア１３に記憶されている更新前データを読み込む。
【００３６】
差分生成部１１３は、差分情報を生成する。具体的には、差分生成部１１３は、データ受信部１１１によって受信された更新データとファイルストア読み込み部１１２よって読み込まれたファイルストア１３に記憶されている更新前データとの差分を示す差分情報を生成する。上述したように、本実施形態の一例におけるパリティ計算等はチャンク毎に区切って行なわれるため、差分生成部１１３は、次式を用いて更新データ（更新後イメージ）と更新前データ（更新前イメージ）とのビット幅のガロア体上の減算を行なう。
【００３７】
【数１】
2016184372.tif 000003
【００３８】
ここで、Ｄａｉは更新後イメージを示し、Ｄｂｉは更新前イメージを示し、又、負号“−”はガロア体上の減算を示す。そして、差分生成部１１３は、数バイト単位で区切られた差分を定義する。
ジャーナル書き込み部１１４は、データをジャーナルに書き込む。具体的には、ジャーナル書き込み部１１４は、差分生成部１１３によって生成された差分データをジャーナルとしてジャーナルディスク１４に書き込む。
【００３９】
図７及び図８に示した従来例におけるデータノード１ａは、更新後イメージをジャーナルとして書き込む。一方、本実施形態の一例におけるデータノード１のジャーナル書き込み部１１４は、差分生成部１１３によって計算されたガロア更新差分をジャーナルとして書き込む。
ジャーナル読み込み部１１５は、データをジャーナルから読み込む。具体的には、ジャーナル読み込み部１１５は、ジャーナル書き込み部１１４によって書き込まれた差分データをジャーナル適用のタイミングにおいてジャーナルディスク１４から読み込む。ここで、ジャーナル適用のタイミングとは、例えば、ジャーナルディスク１４の空き容量が不足したタイミングや、前回のジャーナル適用のタイミングから所定の時間が経過したタイミングである。
【００４０】
差分適用部１１６は、ファイルストア１３に書き込まれる更新後データを生成する。具体的には、差分適用部１１６は、ファイルストア読み込み部１１２によってファイルストア１３から読み込まれた更新前データに対して、ジャーナル読み込み部１１５によってジャーナルディスク１４から読み込まれた差分データを適用する（例えば加算する）。これにより、差分適用部１１６は、更新後データを生成する。
【００４１】
ファイルストア書き込み部１１７は、データをファイルストア１３に書き込む。具体的には、ファイルストア書き込み部１１７は、差分適用部１１６によって生成された更新後データをファイルストア１３に書き込む。
データ送信部１１８は、パリティノード２にデータを送信する。具体的には、データ送信部１１８は、ジャーナル読み込み部１１５によってジャーナルディスク１４から読み込まれた差分データをパリティノード２に対して送信する。
【００４２】
図７及び図８に示した従来例におけるデータノード１ａは、データノード１ａ側における処理の完了後（又はジャーナル書き込みと並行して）、計算した更新差分をパリティノード２ａに転送する。一方、本実施形態の一例におけるデータノード１のデータ送信部１１８は、ジャーナルディスク１４から読み込まれた更新差分をジャーナルが無効化されるまでの任意のタイミングでパリティノード２に転送する。
【００４３】
なお、データ送信部１１８はデータの冗長化のために差分データを複数のパリティノード２に送信しても良く、この場合には各パリティノード２における処理は並列して行なわれる。
【００４４】
図３は、実施形態の一例としてのパリティノードが備えるＣＰＵの機能構成を模式的に示す図である。
データ受信部２１１は、データノード１からデータを受信する。具体的には、データ受信部２１１は、データノード１のデータ送信部１１８によって送信された差分データを受信する。
【００４５】
ファイルストア読み込み部２１２は、ファイルストア２３からパリティを読み込む。具体的には、ファイルストア読み込み部２１２は、データ受信部２１１によって差分データが受信された場合に、ファイルストア２３に記憶されている更新前パリティを読み込む。
差分適用部２１３は、ファイルストア２３に書き込まれる更新後パリティを生成する。具体的には、差分適用部２１３は、ファイルストア読み込み部２１２によってファイルストア２３から読み込まれた更新前パリティに対して、データ受信部２１１によって受信された差分データを適用する（例えば加算する）。これにより、差分適用部２１３は、更新後パリティを生成する。
【００４６】
ファイルストア書き込み部２１４は、パリティをファイルストア２３に書き込む。具体的には、ファイルストア書き込み部２１４は、差分適用部２１３によって生成された更新後パリティをファイルストア２３に書き込む。
図７及び図８に示した従来例におけるパリティノード２ａは、ファイルストア２３ａに更新後パリティを書き込むとともに、更新前パリティに差分データを適用した更新後パリティを生成する。そして、パリティノード２ａは、生成した更新後パリティをジャーナルとしてジャーナルディスク２４ａに書き込む。一方、本実施形態の一例におけるパリティノード２はジャーナルを書き込むためのジャーナルディスクを備えず、ファイルストア書き込み部２１４はデータノード１から転送されたガロア更新差分を直接ファイルストア２３に書き込む。
【００４７】
本実施形態の一例においては、ジャーナルの発生の度にパリティノード２のファイルストア２３へのジャーナル適用を行なわなくても良い。つまり、データノード１はある程度のジャーナルをまとめて加算したジャーナル（差分データ）を一度にパリティノード２へ転送し、パリティノード２は転送されたジャーナルをまとめてファイルストア２３に適用することができる。以下、その理由を説明する。
【００４８】
（ａｉｊ）を線形ブロック符号の生成行列とし、Ｄｉをデータチャンクとすると、パリティチャンクＰｉは次式で表わされる。なお、ｉ及びｊはともに自然数であり、ｉはパリティの番号を示し、ｊはデータに依存する係数を特定する値である。
【００４９】
【数２】
2016184372.tif 000004
【００５０】
ここで、１又は複数のデータＤｋのガロア差分ジャーナルをΣΔＤｋとおくと、データチャンクの更新後イメージＤｋ´は次式で表わされる。
【００５１】
【数３】
2016184372.tif 000005
【００５２】
従って、パリティチャンクの更新後イメージＰｉ´は、次式で表わされる。
【００５３】
【数４】
2016184372.tif 000006
【００５４】
つまり、パリティチャンクのジャーナルとしてデータチャンクのガロア差分ジャーナルΣΔＤｋはそのまま記録され、パリティチャンクのジャーナルに係数（ａｉｋ）をかけたものがパリティチャンクの更新前イメージＰｉに足し合わされる。これにより、パリティチャンクの更新後イメージＰｉ´が求められる。
【００５５】
〔Ａ−２〕動作
上述の如く構成された実施形態の一例としてのストレージシステムにおけるジャーナル書き込み処理及びジャーナル適用処理を、図５及び図６を参照しながら、図４に示すシーケンス図（ステップＳ１〜Ｓ１３）に従って説明する。なお、図４のステップＳ１〜Ｓ４及び図５の符号Ａ１〜Ａ４はジャーナル書き込み処理を示し、図４のステップＳ５〜Ｓ１３及び図６の符号Ａ５〜Ａ１３はジャーナル適用処理を示す。
【００５６】
図４〜図６に示す例においては、データノード＃２及びパリティノード＃２におけるジャーナル書き込み処理及びジャーナル適用処理を説明する。また、簡単のため、データノード＃１，＃３及びパリティノード＃１が備える各機能構成の図示は省略し、データノード＃２が備えるメモリ１２及びパリティノード＃２が備えるメモリ２２の図示は省略している。
【００５７】
データノード＃２のデータ受信部１１１は、図示しないホスト装置等から更新データ“７”を受信する（図４のステップＳ１及び図５の符号Ａ１参照）。
ファイルストア読み込み部１１２は、更新前データ“４”をファイルストア１３から読み込む（図４のステップＳ２及び図５の符号Ａ２参照）。
差分生成部１１３は、データ受信部１１１によって受信された更新データとファイルストア読み込み部１１２によって読み込まれた更新前データとの差分を計算する（図４のステップＳ３及び図５の符号Ａ３参照）。図５に示す例においては、差分生成部１１３は、更新データ“７”から更新前データ“４”を減算した値“３”を差分データとして算出する。
【００５８】
ジャーナル書き込み部１１４は、差分生成部１１３によって生成された差分データ“３”をジャーナルとしてジャーナルディスク１４に書き込む（図４のステップＳ４及び図５の符号Ａ４参照）。
ジャーナル読み込み部１１５は、ジャーナル適用のタイミングにおいて、ジャーナル書き込み部１１４によって書き込まれた差分データ（ジャーナル）“３”をジャーナルディスク１４から読み込む（図４のステップＳ５及び図６の符号Ａ５参照）。
【００５９】
ファイルストア読み込み部１１２は、更新前データ“４”をファイルストア１３から読み込む（図４のステップＳ６及び図６の符号Ａ６参照）。
差分適用部１１６は、ファイルストア読み込み部１１２によって読み込まれた更新前データに対して、ジャーナル読み込み部１１５によって読み込まれた差分データを適用する（図４のステップＳ７及び図６の符号Ａ７参照）。図６に示す例においては、差分適用部１１６は、更新前データ“４”に差分データ“３”を加算することによって、更新後データ“７”を生成する。
【００６０】
ファイルストア書き込み部１１７は、差分適用部１１６によって生成された更新後データ“７”をファイルストア１３へ書き込む（図４のステップＳ８及び図６の符号Ａ８参照）。
データ送信部１１８は、図４のステップＳ６〜Ｓ８（図６の符号Ａ６〜Ａ８）の処理と並行して、ジャーナル読み込み部１１５によって読み込まれた差分データ“３”をパリティノード＃２へ転送する（図４のステップＳ９及び図６の符号Ａ９参照）。
【００６１】
パリティノード＃２のデータ受信部２１１は、パリティノード＃１によって転送された差分データ“３”を受信する（図４のステップＳ１０及び図６の符号Ａ１０参照）。
ファイルストア読み込み部２１２は、更新前パリティ“２”をファイルストア２３から読み込む（図４のステップＳ１１及び図６の符号Ａ１１）。
差分適用部２１３は、ファイルストア読み込み部２１２によって読み込まれた更新前パリティに対して、データ受信部２１１によって受信された差分データを適用する（図４のステップＳ１２及び図６の符号Ａ１２）。図６に示す例においては、差分適用部２１３は、更新前パリティ“２”に差分データ“３”を加算することによって、更新後パリティ“５”を生成する。
【００６２】
ファイルストア書き込み部２１４は、差分適用部２１３によって生成された更新後パリティ“５”をファイルストア２３へ書き込む（図４のステップＳ１３及び図６の符号Ａ１３）。
以上により、ジャーナル書き込み処理及びジャーナル適用処理は、終了する。
【００６３】
〔Ａ−３〕効果
データノード１において、差分生成部１１３は、上位装置から受信された更新データとファイルストア１３に記憶されている更新前データとの差分を示す差分でデータを生成する。そして、ジャーナルディスク１４は、差分生成部１１３によって生成された差分データを記憶する。
【００６４】
また、パリティノード２において、データ受信部２１１は、パリティノード１のデータ送信部１１８によって送信された差分データを受信する。そして、差分適用部２１３は、ファイルストア２３に記憶されている更新前パリティに対して、データ受信部２１１によって受信された差分データを適用することによって、ファイルストア２３に書き込む更新後パリティを生成する。
【００６５】
これらにより、分散ストレージシステム１００においてディスク領域を減少させることができる。具体的には、パリティノード２にジャーナルディスクを備える必要がなく、パリティノード２におけるストレージ資源を有効に活用することができる。また、パリティノード２においてジャーナルを書き込む処理を行なわないため、ジャーナル適用時のディスクＩ／Ｏの負荷を軽減することができる。更に、パリティノード２のファイルストア２３に対するジャーナル適用処理を正確に行なうことができる。
【００６６】
データノード１において、差分適用部１１６は、ファイルストア１３に記憶されている更新前データに対して、ジャーナルディスク１４に記憶されている差分データを適用することによって、ファイルストア１３に書き込む更新後データを生成する。
これにより、データノード１のファイルストア１３に対するジャーナル適用処理を正確に行なうことができる。
【００６７】
差分生成部１１３は、上位装置から受信された更新データとファイルストア１３に記憶されている更新前データとについて、ガロア体上の演算を行なうことによって、差分データを生成する。
これにより、差分生成部１１３による差分の算出を容易に行なうことができる。
【００６８】
〔Ｂ〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【００６９】
〔Ｃ〕付記
（付記１）
データを格納する第１情報処理装置と、当該第１情報処理装置と通信可能に接続され、前記データのパリティを格納する第２情報処理装置と、前記第１情報処理装置と通信可能に接続される上位装置とを有するストレージシステムであって、
前記第１情報処理装置は、
前記データを記憶する第１記憶装置と、
前記上位装置から受信された更新データと前記第１記憶装置に記憶されている更新前の前記データとの差分を示す差分データを生成する差分生成部と、
前記差分生成部によって生成された前記差分データを記憶する第２記憶装置と、
前記第２記憶装置に記憶されている前記差分データを前記第２情報処理装置に送信するデータ送信部と、
を備え、
前記第２情報処理装置は、
前記パリティを記憶する第３記憶装置と、
前記データ送信部によって送信された前記差分データを受信するデータ受信部と、
前記第３記憶装置に記憶されている更新前の前記パリティに対して、前記データ受信部によって受信された前記差分データを適用することによって、前記第３記憶装置に書き込む更新後のパリティを生成するパリティ差分適用部と、
を備えることを特徴とする、ストレージシステム。
【００７０】
（付記２）
前記第１情報処理装置は、
前記第１記憶装置に記憶されている更新前の前記データに対して、前記第２記憶装置に記憶されている前記差分データを適用することによって、前記第１記憶装置に書き込む更新後のデータを生成するデータ差分適用部
を備えることを特徴とする、付記１に記載のストレージシステム。
【００７１】
（付記３）
前記差分生成部は、前記上位装置から受信された更新データと前記第１記憶装置に記憶されている更新前の前記データとについて、ガロア体上の演算を行なうことによって、前記差分データを生成する、
ことを特徴とする、付記１又は２に記載のストレージシステム。
【００７２】
（付記４）
前記第２記憶装置に記憶される前記差分データは、前記第１記憶装置に書き込まれるデータ及び前記第３記憶装置に書き込まれるパリティについてのジャーナルとして用いられる、
ことを特徴とする、付記１〜３のいずれか１項に記載のストレージシステム。
【００７３】
（付記５）
データのパリティを格納する他の情報処理装置と、上位装置と通信可能に接続される情報処理装置であって、
データを記憶する第１記憶装置と、
前記上位装置から受信された更新データと前記第１記憶装置に記憶されている更新前の前記データとの差分を示す差分データを生成する差分生成部と、
前記差分生成部によって生成された前記差分データを記憶する第２記憶装置と、
前記第２記憶装置に記憶されている前記差分データを前記他の情報処理装置に送信することにより、前記他の情報処理装置において更新後のパリティを生成させるデータ送信部と、
を備えることを特徴とする、情報処理装置。
【００７４】
（付記６）
前記第１記憶装置に記憶されている更新前の前記データに対して、前記第２記憶装置に記憶されている前記差分データを適用することによって、前記第１記憶装置に書き込む更新後のデータを生成するデータ差分適用部
を備えることを特徴とする、付記５に記載の情報処理装置。
【００７５】
（付記７）
前記差分生成部は、前記上位装置から受信された更新データと前記第１記憶装置に記憶されている更新前の前記データとについて、ガロア体上の演算を行なうことによって、前記差分データを生成する、
ことを特徴とする、付記５又は６に記載の情報処理装置。
【００７６】
（付記８）
前記第２記憶装置に記憶される前記差分データは、前記第１記憶装置に書き込まれるデータ及び前記他の情報処理装置に格納されるパリティについてのジャーナルとして用いられる、
ことを特徴とする、付記５〜７のいずれか１項に記載の情報処理装置。
【００７７】
（付記９）
データのパリティを格納する他の情報処理装置と、上位装置と通信可能に接続される情報処理装置に備えられるコンピュータに、
前記上位装置から受信された更新データと当該情報処理装置に備えられる第１記憶装置に記憶されている更新前のデータとの差分を示す差分データを生成し、
生成された前記差分データを当該第１情報処理装置に備えられる第２記憶装置に格納し、
前記第２記憶装置に記憶されている前記差分データを前記他の情報処理装置に送信することにより、前記他の情報処理装置において更新後のパリティを生成させる、
処理を実行させることを特徴とする、パリティ生成プログラム。
【００７８】
（付記１０）
前記第１記憶装置に記憶されている更新前の前記データに対して、前記第２記憶装置に記憶されている前記差分データを適用することによって、前記第１記憶装置に書き込む更新後のデータを生成する、
処理を前記コンピュータに実行させることを特徴とする、付記９に記載のパリティ生成プログラム。
【００７９】
（付記１１）
前記上位装置から受信された更新データと前記第１記憶装置に記憶されている更新前の前記データとについて、ガロア体上の演算を行なうことによって、前記差分データを生成する、
処理を前記コンピュータに実行させることを特徴とする、付記９又は１０に記載のパリティ生成プログラム。
【００８０】
（付記１２）
前記第２記憶装置に記憶される前記差分データは、前記第１記憶装置に書き込まれるデータ及び前記他の情報処理装置に格納されるパリティについてのジャーナルとして用いられる、
ことを特徴とする、付記９〜１１のいずれか１項に記載のパリティ生成プログラム。
【００８１】
（付記１３）
データを格納する第１情報処理装置と、当該第１情報処理装置と通信可能に接続され、前記データのパリティを格納する第２情報処理装置と、前記第１情報処理装置と通信可能に接続される上位装置とを有するストレージシステムにおけるパリティ生成方法であって、
前記第１情報処理装置は、
前記上位装置から受信された更新データと当該第１情報処理装置に備えられる第１記憶装置に記憶されている更新前の前記データとの差分を示す差分データを生成し、
生成された前記差分データを当該第１情報処理装置に備えられる第２記憶装置に格納し、
前記第２記憶装置に記憶されている前記差分データを前記第２情報処理装置に送信し、
前記第２情報処理装置は、
前記第１情報処理装置によって送信された前記差分データを受信し、
当該第２情報処理装置に備えられる第３記憶装置に記憶されている更新前の前記パリティに対して、受信された前記差分データを適用することによって、前記第３記憶に書き込む更新後のパリティを生成する、
ことを特徴とする、パリティ生成方法。
【００８２】
（付記１４）
前記第１情報処理装置は、
前記第１記憶装置に記憶されている更新前の前記データに対して、前記第２記憶装置に記憶されている前記差分データを適用することによって、前記第１記憶装置に書き込む更新後のデータを生成する、
ことを特徴とする、付記１３に記載のパリティ生成方法。
【００８３】
（付記１５）
前記第１情報処理装置は、
前記上位装置から受信された更新データと前記第１記憶装置に記憶されている更新前の前記データとについて、ガロア体上の演算を行なうことによって、前記差分データを生成する、
ことを特徴とする、付記１３又は１４に記載のパリティ生成方法。
【００８４】
（付記１６）
前記第２記憶装置に記憶される前記差分データは、前記第１記憶装置に書き込まれるデータ及び前記第３記憶装置に書き込まれるパリティについてのジャーナルとして用いられる、
ことを特徴とする、付記１３〜１５のいずれか１項に記載のパリティ生成方法。
【符号の説明】
【００８５】
１００    ストレージシステム
１        データノード（第１情報処理装置）
１１      ＣＰＵ（コンピュータ）
１１１    データ受信部
１１２    ファイルストア読み込み部
１１３    差分生成部
１１４    ジャーナル書き込み部
１１５    ジャーナル読み込み部
１１６    差分適用部（データ差分適用部）
１１７    ファイルストア書き込み部
１１８    データ送信部
１２      メモリ
１３      ファイルストア（第１記憶装置）
１４      ジャーナルディスク（第２記憶装置）
２        パリティノード（第２情報処理装置）
２１      ＣＰＵ
２１１    データ受信部
２１２    ファイルストア読み込み部
２１３    差分適用部（パリティ差分適用部）
２１４    ファイルストア書き込み部
２２      メモリ
２３      ファイルストア（第３記憶装置）
１００ａ  ストレージシステム
１ａ      データノード
１１ａ    ＣＰＵ
１３ａ    ファイルストア
１４ａ    ジャーナルディスク
２ａ      パリティノード
２１ａ    ＣＰＵ
２３ａ    ファイルストア
２４ａ    ジャーナルディスク
【図１】
2016184372.tif 000007
【図２】
2016184372.tif 000008
【図３】
2016184372.tif 000009
【図４】
2016184372.tif 000010
【図５】
2016184372.tif 000011
【図６】
2016184372.tif 000012
【図７】
2016184372.tif 000013
【図８】
2016184372.tif 000014