(57)【特許請求の範囲】
【請求項１】
第１のノードと、第２のノードとを備えた情報処理システムにおいて、
前記第１のノードは、
データを第１の記憶手段に順次格納するとともに、前記第１の記憶手段への格納対象のデータを前記第２のノードに送信する手段と、
前記第１の記憶手段に格納されたデータを該第１の記憶手段から順次読み出して第２の記憶手段に格納する手段と、
を備え、
前記第２のノードは、
前記第１のノードから送信された前記格納対象のデータを第３の記憶手段に格納する手段を備え、
前記第１のノードは、前記第２のノードに対して削除を許容するデータについての通知を行う際に、最後に前記第２の記憶手段に格納した特定のデータを識別することが可能な識別情報を前記第２のノードに送信し、
前記第２のノードは、前記第３の記憶手段に格納したデータのうち、該識別情報により識別される前記特定のデータと、該特定のデータよりも前に格納したデータとの削除を行う、
ことを特徴とする情報処理システム。
【請求項２】
前記第１のノードは、
データを第１の記憶手段に順次格納するときに、記憶順序情報を対応づけて格納し、
前記格納対象のデータを送信するときに、該格納対象のデータに対応づけられた記憶順序情報を付加して送信し、
前記識別情報は、前記特定のデータに対応づけられた記憶順序情報であり、
前記第２のノードは、
前記特定のデータに対応づけられた記憶順序情報に基づいて、前記特定のデータを識別し、かつ、該特定のデータよりも記憶順が前である前記１又は複数のデータを識別し、前記削除を行う、
ことを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記第１のノードは、前記格納対象のデータの送信と同期して前記識別情報を前記第２のノードに送信する、
ことを特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
前記記憶順序情報は、前記第１の記憶手段にデータを格納する際における格納時刻である、
ことを特徴とする請求項２に記載の情報処理システム。
【請求項５】
前記第１のノードは、前記格納対象のデータが格納される前記第２の記憶手段の領域に格納される他のデータが、すでに前記第１の記憶手段に格納されているときには、前記格納対象のデータで該他のデータを上書きし、
前記第２のノードは、前記格納対象のデータが格納される前記第２の記憶手段の領域に格納される他のデータが、すでに前記第３の記憶手段に格納されているときには、前記格納対象のデータで該他のデータを上書きする、
ことを特徴とする請求項１〜４のいずれか１つに記載の情報処理システム。
【請求項６】
前記第２のノードは、前記格納対象のデータを前記第３の記憶手段に格納するときに、前記第３の記憶手段の領域の割当てに失敗したときには、前記第１のノードに、格納処理が失敗したことを示すレスポンスを返信し、
前記第１のノードは、前記第２のノードから前記レスポンスを受信すると、前記第１の記憶手段に格納されたデータを該第１の記憶手段から読み出して第２の記憶手段に格納し、前記識別情報を前記第２のノードに再度送信する、
ことを特徴とする請求項１〜５のいずれか１つに記載の情報処理システム。
【請求項７】
第１のノードと、第２のノードとを備えた情報処理システムにおいて、
前記第１のノードに、
データを第１の記憶手段に順次格納するとともに、前記第１の記憶手段への格納対象のデータを前記第２のノードに送信し、
前記第１の記憶手段に格納されたデータを該第１の記憶手段から順次読み出して第２の記憶手段に格納する、
処理を実行させ、
前記第２のノードに、
前記第１のノードから送信された前記格納対象のデータを第３の記憶手段に格納する、
処理を実行させ、
前記第１のノードは、前記第２のノードに対して削除を許容するデータについての通知を行う際に、最後に前記第２の記憶手段に格納した特定のデータを識別することが可能な識別情報を前記第２のノードに送信し、
前記第２のノードは、前記第３の記憶手段に格納したデータのうち、該識別情報により識別される前記特定のデータと、該特定のデータよりも前に格納したデータとの削除を行う、
ことを特徴とする情報処理プログラム。
【請求項８】
第１のノードと、第２のノードとを備えた情報処理システムにおいて、
前記第１のノードが、
データを第１の記憶手段に順次格納するとともに、前記第１の記憶手段への格納対象のデータを前記第２のノードに送信し、
前記第１の記憶手段に格納されたデータを該第１の記憶手段から順次読み出して第２の記憶手段に格納する、
処理を実行し、
前記第２のノードが、
前記第１のノードから送信された前記格納対象のデータを第３の記憶手段に格納する、
処理を実行し、
前記第１のノードは、前記第２のノードに対して削除を許容するデータについての通知を行う際に、最後に前記第２の記憶手段に格納した特定のデータを識別することが可能な識別情報を前記第２のノードに送信し、
前記第２のノードは、前記第３の記憶手段に格納したデータのうち、該識別情報により識別される前記特定のデータと、該特定のデータよりも前に格納したデータとの削除を行う、
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置の記憶手段に記憶したデータを二重化する技術に関する。
【背景技術】
【０００２】
情報処理システムでは、あるノードが備える記憶手段に格納したデータを、他のノードが備える記憶手段に複製して、データを二重化することが行われている。かかるデータの二重化を行う技術の一例として、正ストレージシステムと副ストレージシステムとを備えるリモートコピーシステムに関する技術が開示されている。この技術では、正ストレージシステムがライト要求を受けると、ライトデータにライト時刻を付与して副ストレージシステムに転送する。そして、副ストレージシステムは、ライト時刻に基づき、副ストレージシステム内の論理ボリュームにライトデータを格納する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２２１４８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、データの二重化を行うケースとして、いわゆるライトバック処理において次のようにデータの二重化を行うケースが考えられる。例えば、第１のノードが記憶手段にデータの格納を行うときに、一時的に、第１の記憶手段（例えば、比較的高速に記憶処理を行うことができる記憶手段）にデータを格納しておく。そして、第１のノードは、第１の記憶手段から第２の記憶手段（例えば、比較的記憶処理に時間を要する記憶手段）に対して順次データを格納する。このとき、第２の記憶手段にデータを格納する前に第１の記憶手段からデータが失われてしまう事態に備え、第１のノードは、別の第２のノードの第３の記憶手段に、第１の記憶手段のデータを二重化しておく。この場合、第１のノードが、第１の記憶手段から第２の記憶手段にデータを格納すると、この格納したデータを第１の記憶手段から削除するとともに、第２のノードに対し、第３の記憶手段に二重化した対応データを削除するようにリクエストを送信する。そして、第２のノードでは、第３の記憶手段から対応データを削除する。
【０００５】
本技術は、１つの側面において、このようなデータの二重化を行うシステムにおいて、二重化されたデータの削除に要する処理負荷を軽減することを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、第１のノードと、第２のノードとを備えた情報処理システムにおいて、次のような処理を行う。すなわち、第１のノードが、データを第１の記憶手段に順次格納するとともに、第１の記憶手段への格納対象のデータを第２のノードに送信する。また、第１のノードは、第１の記憶手段に格納されたデータを第１の記憶手段から順次読み出して第２の記憶手段に格納する。一方、第２のノードは、第１のノードから送信された格納対象のデータを第３の記憶手段に記憶する。ここで、第１のノードは、最後に第２の記憶手段に格納した特定のデータを識別することが可能な識別情報を第２のノードに送信する。そして、第２のノードは、第３の記憶手段に格納したデータのうち、識別情報により識別される特定のデータと、特定のデータよりも前に格納したデータとの削除を行う。
【発明の効果】
【０００７】
本技術によれば、１つの側面において、データの二重化を行うシステムにおいて、二重化されたデータの削除に要する処理負荷を軽減することができる。
【図面の簡単な説明】
【０００８】
【図１】情報処理システムの機能ブロックの一例を示す説明図である。
【図２】第１メモリ及び第２メモリ並びに二重化リクエストのデータ構造の一例の説明図である。
【図３】二重化処理のシーケンスの一例の説明図である。
【図４】二重化処理におけるデータの具体例の説明図である。
【図５】第１プロセッサ側における処理（書き込みリクエスト受信時）の一例を示すフローチャートである。
【図６】第１メモリの割当て処理部分の一例の説明図である。
【図７】第１メモリの割当て処理部分の一例の説明図である。
【図８】第１プロセッサ側における処理（ハードディスクにデータ格納）の一例を示すフローチャートである。
【図９】第２プロセッサ側における処理（書き込みリクエスト受信時）の一例を示すフローチャートである。
【図１０】ハードウェア構成の一例の説明図である。
【発明を実施するための形態】
【０００９】
［１．実施形態の概要］
本明細書で記載する実施形態では、あるプロセッサにおいてライトバック処理を行うときに、ダーティデータを他のプロセッサの記憶手段との間で二重化するシステムにおいて、二重化したデータの削除に要する処理負荷を全体として低減する技術について説明する。
【００１０】
通常、ライトバック処理においては、例えば、あるコンピュータのプロセッサ（第１のノードの一例であり、以下、第１プロセッサとする）が他のホストコンピュータからハードディスク等へのデータの書き込みリクエストを受信したとき、次のような処理を行う。すなわち、まず、書き込み処理を迅速に行うことが可能なメモリ等の内部記憶装置（第１の記憶手段の一例であり、以下、第１メモリとする）に、データを一時的に格納する。その後、第１プロセッサは、第１メモリに格納しておいたデータを、ハードディスク等の外部記憶装置（第２の記憶手段の一例である）に格納し、第１メモリ上の対応データを削除する。なお、メモリ等には格納済みであるがハードディスク等には未だ格納していないデータをダーティデータという。ここで、第１プロセッサは、ハードディスクにデータを格納する前に、第１メモリにデータを格納した時点で、書き込みが完了したレスポンスを返信する。こうすることで、ホストコンピュータに対するレスポンスを迅速に行うことができるからである。
【００１１】
しかし、第１プロセッサがデータを第１メモリに一時的に格納してからハードディスクに格納するまでの間に、何らかの理由によって第１メモリに一時的に格納したデータが失われることがある。この場合、ホストコンピュータに対しては書き込み完了のレスポンスが送信済みであるにも関わらず、実際には、ハードディスクにデータが格納されないまま、データが失われることとなってしまう。このような事態を回避するため、第１プロセッサは、第１メモリにデータを格納する時点で、他のプロセッサ（第２のノードの一例であり、以下、第２プロセッサとする）に対してこのデータの二重化リクエストを送信する。そして、当該ダーティデータを受信した第２プロセッサ側において、第２メモリ（第３の記憶手段の一例であり、以下、第２メモリとする）にこのデータを記憶しておく。このように、第１メモリと第２メモリとでデータを二重化しておき、第１プロセッサ側の第１メモリのデータが失われたときには、第２プロセッサ側の第２メモリに格納しておいたデータを用いて、ハードディスクへの格納を行う。
【００１２】
ここで、このようにダーティデータを二重化したシステムにおいては、第１プロセッサがデータをハードディスクに格納し、第１メモリの対応データを削除した時点で、当然に第２プロセッサ側の第２メモリに記憶したデータも不要となる。このため、第１プロセッサは、データをハードディスクに格納して第１メモリの対応データを削除すると、第２プロセッサに対しても、対応データの削除リクエストを送信する。第２プロセッサでは、この削除リクエストを受信すると、第２メモリに格納しておいた対応データを削除（パージ）する。すなわち、第１プロセッサは、第１メモリのデータをハードディスクに格納する度に、第２プロセッサに対し、削除リクエストを送信することとなる。一方、第２プロセッサは、この削除リクエストを受信する度に、第２メモリのデータを削除することとなる。
【００１３】
本明細書の実施形態で説明する技術は、このように第１メモリのデータをハードディスクに格納する度に第２プロセッサに対して削除リクエストを送信する必要性を省き、また、第２メモリのデータを複数一括して削除することを可能にし、システム全体として、二重化したデータの削除に要する処理負荷を低減させる技術である。
【００１４】
具体的には、本技術では、第１プロセッサが、第２プロセッサに対し、最後にハードディスクに格納したデータを識別することが可能な識別情報を送信する。この「最後にハードディスクに格納したデータを識別することが可能な識別情報」とは、換言すれば、第１プロセッサの第１メモリに格納されたデータのうち、最も前に格納されたデータを識別可能な情報ともいえる。すなわち、第１プロセッサの第１メモリに格納されたデータのうち、最も前に格納されたデータが識別できれば、その１つ前のデータが、最後にハードディスクに格納したデータということになるからである。一方で、第２プロセッサは、この識別情報によって識別される、最後にハードディスクに格納したデータを含め、このデータよりも前に格納されたデータを、第２メモリから削除する。
【００１５】
さらに具体的には、本技術では、第１プロセッサにおいて、第１メモリにデータを格納するときに、データを第１メモリに格納した順序を示す記憶順序情報を対応付けておく。一方で、第１プロセッサは、第２プロセッサに対してこのデータの二重化リクエストを送信するときに、当該データに対応付けた記憶順序情報を付加して送信する。さらに、第１プロセッサは、当該データに対し、第１メモリに蓄積されたデータのうち、最も前に格納したデータに対応付けた記憶順序情報を、識別情報として付加して送信する。そして、第２プロセッサでは、受信したデータを、そのデータに対応付けられた記憶順序情報とともに第２メモリに格納する一方で、第２メモリに格納されたデータのうち、第１プロセッサから受信した識別情報に基づいて、最後にハードディスクに格納したデータを含め、このデータよりも前に格納されたデータを、第２メモリから削除する。
【００１６】
このように、本技術では、第１プロセッサが第２プロセッサに識別情報を送信するため、第２プロセッサ側で、第２メモリから削除するべきデータを識別して削除することができる。このとき、第２プロセッサでは、この識別情報に基づき、最後にハードディスクに格納したデータを含め、このデータよりも前に格納されたデータを第２メモリから削除できるため、複数のデータを一括して削除することが可能である。また、かりに削除できるデータが１件であったとしても（すなわち、最後にハードディスクに格納したデータのみであったとしても）、少なくとも、第１プロセッサが第１メモリのデータをハードディスクに格納する度に第２プロセッサに対して削除リクエストを送信する必要がない。このため、システム全体として処理負荷を軽減することができる。
【００１７】
［２．全体構成の説明］
図１は、本実施形態に係る情報処理システムの一例の機能ブロック図である。
情報処理システムは、第１コンピュータ１、第２コンピュータ２及びホストコンピュータ３を備える。第１コンピュータ１及び第２コンピュータ２間、並びに、第１コンピュータ１及びホストコンピュータ３間は、例えばＬＡＮ（Local Area Network）等で通信可能にネットワーク接続されている。第１コンピュータ１は第１プロセッサ１１を備え、第２コンピュータ２は第２プロセッサ２１を備える。さらに、第１コンピュータ１は、記憶手段の一例であるハードディスク１５を備える。
【００１８】
第１プロセッサ１１は、第１メモリ格納制御部１２、ディスク格納制御部１３及び第１メモリ１４を備える。
第１メモリ格納制御部１２は、ホストコンピュータ３から受信した書き込みリクエストに含まれるデータに現在時刻である格納時刻を対応付けて第１メモリ１４に一時的に格納する。このとき、第１メモリ格納制御部１２は、第２プロセッサ２１に対し、第１メモリ１４のデータの二重化リクエストを送信する。
【００１９】
具体的には、第１メモリ格納制御部１２は、ホストコンピュータ３から、ハードディスク１５へのデータの書き込みリクエストを受信すると、現在時刻を格納時刻とし、当該書き込みリクエストに含まれるデータに当該格納時刻を付加した二重化リクエストを、第２コンピュータ２の第２プロセッサ２１に送信する。なお、この格納時刻は、データの格納順番を示す記憶順序情報の一例である。このとき、第１メモリ格納制御部１２は、第１メモリ１４に存在するデータのうち、最も前に格納されたデータに対応付けられた格納時刻を、最古時刻として二重化リクエストに付加して第２コンピュータ２の第２プロセッサ２１に送信する。この最古時刻が、最後にハードディスク１５に格納したデータを識別することが可能な識別情報の一例である。換言すれば、第１メモリ格納制御部１２は、最古時刻を、二重化リクエストと同期して送信するともいえる。そして、第１メモリ格納制御部１２は、第２プロセッサ２１から二重化が完了したレスポンスを受信すると、ホストコンピュータ３からの書き込みリクエストに含まれるデータを第１メモリ１４に格納する。このとき、第１メモリ格納制御部１２は、当該書き込みリクエストに含まれるデータに対応付けて、前述した格納時刻を付加して格納する。
【００２０】
ディスク格納制御部１３は、所定時間毎に、第１メモリ１４に記憶されているデータを、格納時刻の古い順に順次読み出し、ハードディスク１５に格納する。
第２プロセッサ２１は、第２メモリ格納制御部２２、削除部２３及び第２メモリ２４を備える。
【００２１】
第２メモリ格納制御部２２は、第１プロセッサ１１から二重化リクエストを受信すると、受信した二重化リクエストに含まれるデータのうち、前述の書き込みリクエストに含まれるデータ及び当該データに付加された格納時刻を、第２メモリ２４に格納する。
【００２２】
削除部２３は、第１プロセッサ１１から二重化リクエストを受信すると、第２メモリ２４に記憶されているデータのうち、二重化リクエストに含まれる最古時刻よりも格納時刻が前のデータを削除する。
【００２３】
［３．第１メモリ及び第２メモリ、二重化リクエストのデータ構造］
次に、第１メモリ１４及び第２メモリ２４に記憶されるデータ、並びに、第１プロセッサ１１から第２プロセッサ２１に送信される二重化リクエストのデータの構造につき、図２を参照しながら具体的に説明する。
【００２４】
図２（Ａ）は、第１メモリ１４に記憶されるデータのデータ構造の一例を示している。第１メモリ１４に格納されるデータは、格納時刻、デバイスＩＤ、ＬＢＡ（Local Block Addressing）、サイズ及びデータ内容を含む。格納時刻は、前述したように、当該データを第１メモリ１４に格納する際における時刻を示す。デバイスＩＤ、ＬＢＡ、サイズ及びデータ本体は、ホストコンピュータ３から受信する書き込みリクエストに含まれるデータである。デバイスＩＤは、データを格納するデバイスを特定する識別子であり、本実施形態ではハードディスク１５を示す識別子となる。ＬＢＡは、ハードディスク１５におけるデータの格納場所を示すアドレスである。サイズは、データ本体部分のデータサイズを示す。データ本体は、ハードディスク１５に格納するべき具体的なデータの本体部分（ボディ）である。
【００２５】
図２（Ｂ）は、第１プロセッサ１１から第２プロセッサ２１に送信される二重化リクエストに含まれるデータのデータ構造を示す。二重化リクエストのデータは、最古時刻、格納時刻、デバイスＩＤ、ＬＢＡ、サイズ及びデータ内容を含む。最古時刻は、前述したように、当該データが第２プロセッサ２１に送信される時点で第１メモリ１４に記憶されているデータのうち、最も前に格納されたデータの格納時刻である。格納時刻、デバイスＩＤ、ＬＢＡ、サイズ及びデータ内容は、図２（Ａ）に示した、第１メモリ１４に記憶されるデータと同様である。
【００２６】
また、第２メモリ２４に格納されるデータの構造は、図２（Ａ）に示した、第１メモリ１４に格納されるデータの構造と同様である。すなわち、第２プロセッサ２１の第２メモリ格納制御部２２は、第１プロセッサ１１から受信した、図２（Ｂ）に示した構造のデータのうち、最古時刻を除いた他の部分のデータを、第２メモリ２４に格納する。
【００２７】
［４．二重化処理のシーケンス概要］
次に、第１コンピュータ１の第１プロセッサ１１が第１メモリ１４に格納するデータを、第２プロセッサの第２メモリ２１に二重化する際の処理の流れの一例につき、図３のシーケンス図を参照しながら説明する。
【００２８】
ホストコンピュータ３は、第１コンピュータ１の第１プロセッサ１１に対し、データの書き込みリクエストを送信する。この書き込みリクエストは、デバイスＩＤ、ＬＢＡ、サイズ及びデータ本体を含む。
【００２９】
第１プロセッサ１１の第１メモリ格納制御部１２は、当該書き込みリクエストに含まれるデータに、格納時間及び最古時間を付加した二重化リクエストを、第２コンピュータ２の第２プロセッサに送信する。
【００３０】
第２プロセッサ２１の削除部２３では、二重化リクエストを受信すると、第２メモリ２４に記憶されているデータのうち、受信した最古時間よりも格納時間が前のデータを削除する。また、第２メモリ格納制御部２２では、二重化リクエストを受信すると、二重化リクエストに含まれるデータのうち、デバイスＩＤ、ＬＢＡ、サイズ及びデータ本体並びに当該データに付加された格納時刻を、第２メモリ２４に格納する。そして、第１プロセッサ１１に対し、第２メモリ２４への書込みが完了したレスポンスを返信する。
【００３１】
第１プロセッサ１１の第１メモリ格納制御部１２では、第２プロセッサ２１からレスポンスを受信すると、デバイスＩＤ、ＬＢＡ、サイズ及びデータ本体に格納時刻を付加して、第１メモリ１４へ格納する。
【００３２】
第２コンピュータ２からレスポンスを受信した第１コンピュータ１の第１プロセッサ１１では、さらに、ホストコンピュータ３に対し、書き込みリクエストの対象データの書込みが完了したレスポンスを返信する。
【００３３】
［５．二重化処理のデータ具体例］
ここで、前述の二重化処理につき、さらに、図４にデータの具体例を示して説明する。
まず、ホストコンピュータ３から書き込みリクエストを受信し、第１プロセッサ１１の第１メモリ格納制御部１２が第１メモリ１４にデータを格納した状態が、図４（Ａ）に示す状態であるとする。格納時刻「2011/1/1 12:05:00」のデータが、当該書き込みリクエストを受信して格納したデータである。そして、第１メモリ１４に記憶されているデータのうち、格納時刻が最も古いデータの格納時刻は「2011/1/1 12:02:00」である。この場合、この「2011/1/1 12:02:00」が最古時刻となる。
【００３４】
そして、このとき、第１プロセッサ１１の第１メモリ格納制御部１２が第２プロセッサ２１に送信する二重化リクエストは、図４（Ｂ）に示すようになる。すなわち、二重化リクエストは、図４（Ａ）に示した、格納時刻「2011/1/1 12:05:00」のデータに、さらに最古時刻「2011/1/1 12:02:00」が付加されたデータとなる。
【００３５】
さらに、この二重化リクエストを受信し、二重化リクエストのデータを第２メモリ２４に格納した状態の第２メモリ２４が、図４（Ｃ）に示す状態であるとする。ここで、第２メモリ２４に記憶されているデータを参照すると、格納時刻が最古時刻「2011/1/1 12:02:00」より前であるデータが２件存在する。このため、第２プロセッサ２１の削除部２３は、この２件のデータを削除し、メモリ領域を解放する。
【００３６】
なお、この削除部２３の処理を換言すると次のようになる。すなわち、二重化リクエストに最古時刻「2011/1/1 12:02:00」が含まれることにより、削除部２３は、第２メモリ２４に記憶されているデータのうち、格納時刻がこの最古時刻よりも前であり且つ最新である、格納時刻「2011/1/1 12:01:00」のデータが、最後にハードディスク１５に格納されたデータであると識別することができる。このため、削除部２３は、このように識別した、格納時刻「2011/1/1 12:01:00」のデータ及びこれより格納時刻が前のデータを削除し、メモリ領域を解放する。
【００３７】
［６．第１プロセッサ及び第２プロセッサの処理の詳細説明］
次に、第１プロセッサ１１及び第２プロセッサ２１のそれぞれで実行する具体的な処理につき、図５〜図９を参照しながら説明する。
【００３８】
＜第１プロセッサ側における処理（書き込みリクエスト受信時）＞
図５は、ホストコンピュータ３からデータの書き込みリクエストを受信したときにおける第１プロセッサ１１の処理を示す。
【００３９】
Ｓ１では、第１メモリ格納制御部１２が、ホストコンピュータ３からのデータの書き込みリクエストの受信を待機する。
【００４０】
Ｓ２では、第１メモリ格納制御部１２が、ホストコンピュータ３からのデータの書き込みリクエストを受信する。
【００４１】
Ｓ３では、第１メモリ格納制御部１２が、ホストコンピュータ３から受信したデバイスＩＤ、ＬＢＡ、サイズ及びデータ本体に格納時刻及び最古時刻を付加し、二重化リクエストとして、第２プロセッサ２１に送信する。そして、第１メモリ格納制御部１２は、第２プロセッサ２１からのレスポンスを待機する。
【００４２】
Ｓ４では、第１メモリ格納制御部１２が、第２プロセッサ２１からのレスポンスが、二重化が正常に完了したＯＫレスポンスであるか否かを判定する。ＯＫレスポンスである場合には（Ｙｅｓ）、Ｓ６に進み、二重化が失敗したＮＧレスポンスである場合には（Ｎｏ）、Ｓ５に進む。
【００４３】
Ｓ５では、ディスク格納制御部１３が、第１メモリ１４に記憶されているデータのうち、格納時刻が最古のデータを読み出し、ハードディスク１５に格納する。そして、第１メモリ格納制御部１２は、ハードディスク１５に格納した当該データを、第１メモリ１４から削除する。換言すれば、第１メモリ格納制御部１２は、当該データが記憶されていた第１メモリ１４の領域を解放する。そして、再度Ｓ３の処理を実行する。
【００４４】
Ｓ６では、第１メモリ格納制御部１２が、ホストコンピュータ３から受信した書き込みリクエストに含まれるデバイスＩＤ、ＬＢＡ及びサイズに基づき、書き込みリクエストに含まれる書き込み対象のデータ本体が格納されるべきディスク領域のデータが、第１メモリ１４上に記憶されているか否かをチェックする。
【００４５】
Ｓ７では、第１メモリ格納制御部１２が、Ｓ６のチェック結果として、書き込み対象のデータ本体が格納されるべきディスク領域のデータが、第１メモリ１４上に記憶されているか否かを判定する。記憶されていれば（Ｙｅｓ）、Ｓ８に進み、記憶されていなければ（Ｎｏ）、Ｓ９に進む。
【００４６】
Ｓ８では、第１メモリ格納制御部１２が、書き込みリクエストに含まれるデータを第１メモリ１４に格納するときに、新たなメモリ領域の割当てが不要か否かを判定する。新たなメモリ領域の割当てが不要であれば（Ｙｅｓ）、Ｓ９に進み、新たなメモリ領域の割当てが必要であれば（Ｎｏ）、Ｓ１１に進む。
【００４７】
なお、かかるＳ６〜Ｓ８の処理を行う理由は、次のようなものである。すなわち、第１メモリ１４上に、ハードディスク１５の同じディスク領域に格納するデータが既に存在すれば、その第１メモリ１４上のデータのデータ本体を新たに格納するデータのデータ本体で上書きすることで、別途第１メモリ１４のメモリ領域を割当てる必要がなくなるからである。また、このように既存のデータに新たなデータのデータ本体を上書きしてデータを統合することで、ハードディスク１５にデータを格納する回数を抑えることができる。
【００４８】
Ｓ９では、第１メモリ格納制御部１２が、第１メモリ１４において、書き込みリクエストに含まれるデータを格納するためのメモリ領域の割当てを試みる。
【００４９】
Ｓ１０では、第１メモリ格納制御部１２が、第１メモリ１４において、書き込みリクエストに含まれるデータを格納するメモリ領域の割当てが成功したか否かを判定する。割当てが成功した場合には（Ｙｅｓ）、Ｓ１２に進み、割当てが失敗した場合には（Ｎｏ）、Ｓ１１に進む。
【００５０】
Ｓ１１では、ディスク格納制御部１３が、第１メモリ１４に格納されたデータのうち、格納時刻が最古のデータを読み出し、ハードディスク１５に格納する。そして、第１メモリ格納制御部１２は、当該データが格納されていた第１メモリ１４の領域を解放する。そして、再度Ｓ９の処理を実行する。
【００５１】
Ｓ１２では、第１メモリ格納制御部１２が、書き込みリクエストに含まれるデバイスＩＤ、ＬＢＡ、サイズ及びデータ本体にＳ３の格納時刻を対応付けて、第１メモリ１４の適切なメモリ領域に格納する。なお、ここで適切なメモリ領域に格納するとは、新たなメモリ領域を割当てた場合には当該新たなメモリ領域に格納することを示し、新たなメモリ領域の割当てが不要であった場合には、既存のデータのデータ本体に、書き込みリクエストに含まれるデータ本体を上書きすることを示す。
【００５２】
Ｓ１３では、第１メモリ格納制御部１２が、Ｓ１２において既存のデータのメモリ領域に書き込みリクエストに含まれるデータを上書きした場合であって、第１メモリ１４の既存データのデータ本体の全部分を上書きしたときに、既存データの格納時刻を、Ｓ３の格納時刻で上書きする。なお、かかる上書き方法は一例に過ぎず、例えば、データ本体の一部分を上書きしたときにも、格納時刻を上書きするようにしてもよい。
【００５３】
Ｓ１４では、第１メモリ格納制御部１２が、ホストコンピュータ３に対し、書き込みが完了したＯＫレスポンスを返信する。
【００５４】
なお、前述のＳ６〜Ｓ８又はＳ３４〜３６における第１メモリ１４のメモリ領域の割当て処理について、図６及び図７を参照し、具体例を用いて説明する。
例えば、第１メモリ１４に記憶されているデータが図６（Ａ）に示すデータであったとする。このデータは、デバイスＩＤ＝「DEV-A」、ＬＢＡ＝「100」、サイズ＝「100」である。
【００５５】
そして、新たな書き込みリクエストに含まれるデータが、例えば、図６（Ｂ）に示すように、デバイスＩＤ＝「DEV-A」、ＬＢＡ＝「100」、サイズ＝「100」であるとする。このデータのデータ本体が格納されるべきディスク領域は、図６（Ａ）の既存データと同じである。このため、第１メモリ１４において新たな領域割当てを行うことは不要であり、第１メモリ格納制御部１２は、既存データのデータ本体を、書き込みリクエストの対象であるデータ本体で上書きする。その結果、第１メモリ１４のデータは、図６（Ｂ）に示すデータとなる。なお、このとき、第１メモリ格納制御部１２は、既存データのデータ本体の全部分を上書きしたため、格納時刻を新たな格納時刻で上書きする（Ｓ１３）。
【００５６】
次に、新たな書き込みリクエストに含まれるデータが、例えば、例えば、図６（Ｃ）に示すように、デバイスＩＤ＝「DEV-A」、ＬＢＡ＝「125」、サイズ＝「50」であるとする。このデータのデータ本体が格納されるべきディスク領域は、図６（Ｃ）に示すように、図６（Ａ）の既存データと一部重複しており、既存データにない新たな領域に格納するべきデータはない。このため、第１メモリ１４において新たな領域割当てを行うことは不要であり、第１メモリ格納制御部１２は、既存データのデータ本体の一部を、書き込みリクエストの対象であるデータ本体で上書きする。その結果、第１メモリ１４のデータは、図６（Ｃ）に示すデータとなる。なお、このとき、第１メモリ格納制御部１２は、既存データのデータ本体の一部分のみを上書きしたため、格納時刻は既存データのままとする（Ｓ１３）。
【００５７】
次に、新たな書き込みリクエストに含まれるデータが、例えば、図７（Ａ）に示すように、デバイスＩＤ＝「DEV-A」、ＬＢＡ＝「50」、サイズ＝「200」であるとする。このデータのデータ本体が格納されるべきディスク領域は、図６（Ａ）の既存データと一部重複しており、さらに既存データにはないディスク領域をも書き込み対象としている。このため、第１メモリ格納制御部１２は、第１メモリ１４において新たなメモリ領域割当てを行い、別途データを格納する。
【００５８】
次に、新たな書き込みリクエストの対象のデータが、例えば図６（Ｂ）に示すように、デバイスＩＤ＝「DEV-A」、ＬＢＡ＝「125」、サイズ＝「100」であるとする。このデータのデータ本体が格納されるべきディスク領域は、図６（Ａ）の既存データと一部重複しており、さらに既存データにはないディスク領域をも書き込み対象としている。このため、第１メモリ格納制御部１２は、第１メモリ１４において新たなメモリ領域割当てを行い、別途データを格納する。
【００５９】
＜第１プロセッサ側における処理（ハードディスクにデータ格納）＞
図８は、第１プロセッサ１１が所定時間毎に実行するハードディスク１５へのデータ格納処理を示す。なお、所定時間とは、例えばシステム管理者等が予め設定しておいた時間である。
【００６０】
Ｓ２１では、ディスク格納制御部１３が、所定時間以上ハードディスク１５に格納されていないデータが第１メモリ１４に存在するか否かを判定する。なお、この判定は、例えば、現在時刻から所定時間を差し引いた時間と、第１メモリ１４のデータの格納時刻とを比較することで判定することができる。所定時間以上ハードディスク１５に格納されていないデータが存在すれば（Ｙｅｓ）、Ｓ２２に進み、存在しなければ、処理を終了する。
【００６１】
Ｓ２２では、ディスク格納制御部１３が、第１メモリ１４に格納されたデータのうち、格納時刻が最古のデータを読み出し、ハードディスク１５に格納する。そして、第１メモリ格納制御部１２は、当該データが格納されていた第１メモリ１４の領域を解放する。
【００６２】
＜第２プロセッサ側における処理（書き込みリクエスト受信時）＞
図９は、ホストコンピュータ３からデータの書き込みリクエストを受信したときにおける第２プロセッサ２１の処理を示す。
【００６３】
Ｓ３１では、第２メモリ格納制御部２２が、第１コンピュータ１の第１プロセッサ１１からの二重化リクエストの受信を待機する。
【００６４】
Ｓ３２では、第２メモリ格納制御部２２が、第１プロセッサ１１からの二重化リクエストを受信する。
【００６５】
Ｓ３３では、第２メモリ格納制御部２２が、第１プロセッサ１１から受信した二重化リクエストに含まれる最古時刻を参照する。そして、第２メモリ格納制御部２２は、第２メモリ２４に記憶されているデータのうち、格納時刻が最古時刻よりも前のデータを削除する。
【００６６】
Ｓ３４では、第２メモリ格納制御部２２が、第１プロセッサ１１から受信した二重化リクエストに含まれるデバイスＩＤ、ＬＢＡ及びサイズに基づき、二重化リクエストに含まれる二重化対象のデータ本体が第１プロセッサのハードディスク１５において格納されるべきディスク領域のデータが、第２メモリ２４上に記憶されているか否かをチェックする。
【００６７】
Ｓ３５では、第２メモリ格納制御部２２が、Ｓ３４のチェック結果として、二重化リクエストに含まれる二重化対象のデータ本体がハードディスク１５において格納されるべきディスク領域のデータが、第２メモリ２４上に記憶されているか否かを判定する。記憶されていれば（Ｙｅｓ）、Ｓ３６に進み、記憶されていなければ（Ｎｏ）、Ｓ３７に進む。
【００６８】
Ｓ３６では、第２メモリ格納制御部２２が、書き込みリクエストの書き込み対象のデータを第２メモリ２４に格納するときに、新たなメモリ領域の割当てが不要か否かを判定する。新たなメモリ領域の割当てが不要であれば（Ｙｅｓ）、Ｓ３７に進み、新たなメモリ領域の割当てが必要であれば（Ｎｏ）、Ｓ４０に進む。
【００６９】
なお、Ｓ３４〜Ｓ３６の処理を行う理由も、前述したＳ６〜Ｓ８の処理と同様であり、そのメモリ領域の割当て処理の内容は、図６及び図７を参照して説明した内容と同様である。
【００７０】
Ｓ３７では、第２メモリ格納制御部２２が、第２メモリ２４において、二重化リクエストに含まれるデータを格納するメモリ領域の割当てを試みる。
【００７１】
Ｓ３８では、第２メモリ格納制御部２２が、第２メモリ２４において、二重化リクエストに含まれるデータを格納するメモリ領域の割当てが成功したか否かを判定する。割当てが成功した場合には（Ｙｅｓ）、Ｓ４０に進み、割当てが失敗した場合には（Ｎｏ）、Ｓ３９に進む。
【００７２】
Ｓ３９では、第２メモリ格納制御部２２が、第１プロセッサ１１に対し、第２メモリ２４への二重化に失敗したＮＧレスポンスを返信する。
【００７３】
Ｓ４０では、第２メモリ格納制御部２２が、二重化リクエストに含まれるデバイスＩＤ、ＬＢＡ、サイズ及びデータ本体を、第２メモリ２４の適切なメモリ領域に格納する。なお、ここで適切なメモリ領域に格納するとは、前述のＳ１２と同様、新たなメモリ領域を割当てた場合には当該新たなメモリ領域に格納することを示し、新たなメモリ領域の割当てが不要であった場合には、既存のデータのデータ本体に、二重化リクエストに含まれるデータ本体を上書きすることを示す。
【００７４】
Ｓ４１では、第２メモリ格納制御部２２が、Ｓ４０において既存のデータのメモリ領域に二重化リクエストに含まれるデータを上書きした場合であって、第２メモリ２４の既存データのデータ本体の全部分を上書きしたときに、既存データの格納時刻を、二重化リクエストに含まれる格納時刻で上書きする。
【００７５】
Ｓ４２では、第２メモリ格納制御部２２が、ホストコンピュータ３に対し、二重化が正常に完了したＯＫレスポンスを返信する。
【００７６】
［７．ハードウェア構成］
図１０は、上述した第１コンピュータ１及び第２コンピュータ２が具現化された情報処理装置のハードウェア構成の一例を示す。本情報処理装置は、プロセッサ９０１、メモリ９０２、ストレージ９０３、可搬記憶媒体駆動装置９０４、入出力装置９０５及び通信インタフェース９０６を備える。
【００７７】
プロセッサ９０１は、制御ユニット、演算ユニット及び命令デコーダ等を含み、実行ユニットが、命令デコーダで解読されたプログラムの命令に従い、制御ユニットより出力される制御信号に応じ、演算ユニットを用いて算術・論理演算を実行する。かかるプロセッサ９０１は、制御に用いる各種情報が格納される制御レジスタ、既にアクセスしたメモリ２等の内容を一時的に格納可能なキャッシュ、及び、仮想記憶のページテーブルのキャッシュとしての機能を果たすＴＬＢを備える。なお、プロセッサ９０１は、ＣＰＵ（Central Processing Unit）コアが複数設けられている構成でもよい。なお、第１コンピュータ１においては第１プロセッサ１１が、第２コンピュータ２においては第２プロセッサ２１が、それぞれプロセッサ９０１に該当する。
【００７８】
メモリ９０２は、例えばＲＡＭ（Random Access Memory）等の記憶装置であり、プロセッサ９０１で実行されるプログラムがロードされるとともに、プロセッサ９０１の処理に用いるデータが格納されるメインメモリである。なお、第１コンピュータ１においては第１メモリ１４が、第２コンピュータ２においては第２メモリ２４が、それぞれメモリ９０２に該当する。
【００７９】
ストレージ９０３は、例えばＨＤＤ（Hard Disk Drive）やフラッシュメモリ等の記憶装置であり、プログラムや各種データが格納される。なお、第１コンピュータ１のハードディスク１５が、ストレージ９０３に該当する。
【００８０】
可搬記憶媒体駆動装置９０４は、可搬記憶媒体９０７に記憶されたデータやプログラムを読み出す装置である。可搬記憶媒体９０７は、例えば磁気ディスク、光ディスク、光磁気ディスク又はフラッシュメモリ等である。なお、プロセッサ９０１は、メモリ９０２やストレージ９０３と協働しつつ、ストレージ９０３や可搬記憶媒体９０７に格納されたプログラムを実行する。なお、プロセッサ９０１が実行するプログラムや、アクセス対象となるデータは、当該情報処理装置と通信可能な他の装置に格納されていてもよい。
【００８１】
入出力装置９０５は例えばキーボード等やディスプレイ等であり、ユーザ操作等による動作命令を受け付ける一方、情報処理装置による処理結果を出力する。
通信インタフェース９０６は例えばＬＡＮカード等であり、外部とのデータ通信を可能にする。上述した情報処理装置の各構成要素は、バス９０８で接続されている。
【００８２】
［８．本実施形態による作用効果等］
前述した実施形態の構成及び処理によれば、第１プロセッサ１１が、第２プロセッサ２１に対し、第１メモリ１４に記憶されている最古のデータの格納時刻である最古時刻を送信する。このため、第２プロセッサ２１では、第２メモリ２４に記憶されているデータのうち、この最古時刻よりも格納時刻が前のデータを削除対象として識別し、複数のデータを一括して削除することができる。また、かりに最古時刻よりも格納時刻が前のデータが１件であったとしても（すなわち、最後にハードディスク１５に格納したデータのみであったとしても）、少なくとも、前述した実施形態によれば、第１プロセッサ１１が、ハードディスク１５に第１メモリ１４のデータを格納する度に第２プロセッサ２１に対してデータの削除リクエストを送信する必要がない。このため、かかる削除リクエストの送信量を抑制することができる。したがって、システム全体として、処理負荷を低減することができる。
【００８３】
また、前述した実施形態では、最古時刻を、第１メモリ１４に格納するデータの二重化リクエストに付加して第２プロセッサ２１に送信している。これにより、第２メモリ２４のデータの削除のみを目的とした削除リクエストを送信する必要がなく、第１プロセッサ及び第２プロセッサ間の通信量をさらに抑制することができる。
【００８４】
さらに、前述した実施形態では、Ｓ６〜Ｓ８及びＳ３４〜Ｓ３６において、メモリ領域の割当て判定を行っている。すなわち、例えば第１プロセッサ１１では、書き込みリクエストに含まれるデータを第１メモリ１４に格納するときに、既に第１メモリ１４に記憶されているデータと同じディスク領域に格納するデータについては、既存のデータのデータ本体に、格納する対象のデータ本体を上書きしている。これにより、新たなメモリ領域の割当てを回避できるとともに、ハードディスク１５へのデータの格納回数を抑制することができる。なお、第２メモリ２４に対するメモリ割当て処理についても同様である。
【００８５】
また、前述した実施形態では、第２プロセッサ２１において第２メモリ２４のメモリ領域の割当てに失敗したときに、第１プロセッサ１１において第１メモリ１４のデータをハードディスク１５に格納し、最古時刻を新しくした上で、再度第２メモリ２４へ最古時刻を含んだ二重化リクエストを送信し、データの二重化を行っている。これにより、第２メモリ２４へのデータの二重化をより確実に行うことができている。
【００８６】
［９．他の実施形態、変形例等］
ここで、第１プロセッサ１１は、最古時刻に限らず、最後にハードディスク１５に格納されたデータを第２プロセッサ２１で識別可能であれば、いかなる情報を識別情報として送信してもよい。例えば、第１プロセッサ１１は、第１メモリ１４にデータを格納した順番を示すシーケンス番号等をデータに付加して第１メモリ１４に格納するとともに第２メモリに二重化してもよい。そして、第２プロセッサ２１に対し、最古時刻の代わりに、第１メモリ１４に記憶されているデータのうち、最もシーケンス番号が古いデータのシーケンス番号を送信してもよい。
【００８７】
なお、かりに、第１メモリ１４にデータが１件も記憶されていない場合には、第１プロセッサ１１は、例えば最古時刻等の代わりにデータが０件であることを識別可能な識別子を送信してもよい。そして、第２プロセッサ２１では、この識別子を受信したときには、第２メモリ２４のデータを全件削除するようにしてもよい。
【００８８】
また、前述した実施形態では、最古時刻を、第１メモリ１４に格納するデータの二重化リクエストに付加して第２プロセッサ２１に送信しているが、二重化リクエストとは無関係に、所定のタイミングで第２プロセッサ２１に対して最古時刻を送信してもよい。このようにしても、第２プロセッサ２１では、第２メモリ２４の複数のデータをまとめて削除することができる。したがって、第１メモリ１４の古いデータから順にハードディスク１５にデータを格納する度に削除リクエストを送信し、その度に第２メモリ２４のデータを削除するよりも、効率的に第２メモリ２４のデータ削除を行うことができる。
【００８９】
さらに、前述したＳ６〜Ｓ８及びＳ３４〜Ｓ３６によるメモリ領域の割当て判定を行わずに、一律で全てのデータに対して第１メモリ１４のメモリ領域を新たに割当てるようにしても、当然に本技術の目的は達成することができる。
【００９０】
また、第１プロセッサ１１は、第２プロセッサ２１からのレスポンスを待った上で、第１メモリ１４へのデータの格納を行っているが、例えば、第１メモリ１４へのデータの格納を先に行い、その後に、第２プロセッサ２１に二重化リクエストを送信してもよい。さらに、第２プロセッサ２１は、第２メモリ２４のデータの削除処理を、第２メモリ２４に対するデータの格納処理よりも先に行ってもよく、あるいは、第２メモリ２４に対するデータの格納処理とは無関係のタイミングで行ってもよい。
【００９１】
さらに、前述した実施形態では、第１メモリ１４にデータを格納するケースとして、ホストコンピュータ３からのデータの書き込みリクエストを受信したときのみを説明している。しかし、例えば、第１コンピュータ１自体で実行するプログラム等からの書き込みリクエストが発生したとき等にも、当然に本技術を適用することができる。
【００９２】
なお、前述した実施形態において、第１プロセッサ１１と第２プロセッサ２１とは異なるコンピュータに設置されているが、１つのコンピュータ内に設置されていてもよい。この場合、第１プロセッサ１１及び第２プロセッサ２１間のデータ通信は、バス等を介して行うこととなる。
【００９３】
また、前述した実施形態では、第１メモリ１４及びハードディスク１５を用いたライトバック処理を行うシステムを例に挙げて説明したが、高速に記憶処理が可能な記憶手段と、これと比較して記憶処理に時間がかかる記憶手段との関係であれば、いかなる装置で実現してもよい。例えば、キャッシュメモリとメインメモリ間におけるライトバック処理を行うシステムにおける二重化処理に対して、本技術を適用してもよい。また、第１メモリ１４及び第２メモリ２４は、構造上、それぞれ第１プロセッサ１１及び第２プロセッサ２１の外部に設置されていてもよい。
【００９４】
さらに、例えば、第１コンピュータ１のハードディスク１５は、第１コンピュータ１とは異なる他の装置に含まれていてもよい。この場合、第１コンピュータ１と当該他の装置とが通信可能にネットワーク接続され、第１コンピュータ１は、ネットワークを介してハードディスク１５にアクセスすることとなる。
【００９５】
以上の情報処理装置の機能的構成及び物理的構成は、上述の態様に限るものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。
【符号の説明】
【００９６】
１…第１コンピュータ、２…第２コンピュータ、３…ホストコンピュータ、１１…第１プロセッサ、１２…第１メモリ格納制御部、１３…ディスク格納制御部、１４…第１メモリ、１５…ハードディスク、２１…第２プロセッサ、２２…第２メモリ格納制御部、２３…削除部、２４…第２メモリ
【図８】
0005673396.tif 000002
【図１】
0005673396.tif 000003
【図２】
0005673396.tif 000004
【図３】
0005673396.tif 000005
【図４】
0005673396.tif 000006
【図５】
0005673396.tif 000007
【図６】
0005673396.tif 000008
【図７】
0005673396.tif 000009
【図９】
0005673396.tif 000010
【図１０】
0005673396.tif 000011