JP2004295563A - データの整合性を保つための高信頼化されたデータ管理方法 - Google Patents
データの整合性を保つための高信頼化されたデータ管理方法 Download PDFInfo
- Publication number
- JP2004295563A JP2004295563A JP2003087967A JP2003087967A JP2004295563A JP 2004295563 A JP2004295563 A JP 2004295563A JP 2003087967 A JP2003087967 A JP 2003087967A JP 2003087967 A JP2003087967 A JP 2003087967A JP 2004295563 A JP2004295563 A JP 2004295563A
- Authority
- JP
- Japan
- Prior art keywords
- data
- writing
- area
- save
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】データの整合性を保つためのデータ管理方法を高信頼化する。
【解決手段】情報処理装置に接続され、情報領域と複数の退避領域を備える蓄積装置に蓄積されるデータの管理方法であって、前記複数の退避領域に対してデータの書き込みを並列に行い、前記書き込みがいずれか1つの退避領域に対して完了したかを判定し、いずれかの退避領域に対して前記書き込みが完了した時、前記情報処理装置に前記情報領域に対する前記データの書き込み完了が通知され、いずれかの退避領域に対して前記書き込みが完了した後、前記情報領域に対して前記データの書き込みを行うことを特徴とするデータ管理方法を提供する。
【選択図】 図1
【解決手段】情報処理装置に接続され、情報領域と複数の退避領域を備える蓄積装置に蓄積されるデータの管理方法であって、前記複数の退避領域に対してデータの書き込みを並列に行い、前記書き込みがいずれか1つの退避領域に対して完了したかを判定し、いずれかの退避領域に対して前記書き込みが完了した時、前記情報処理装置に前記情報領域に対する前記データの書き込み完了が通知され、いずれかの退避領域に対して前記書き込みが完了した後、前記情報領域に対して前記データの書き込みを行うことを特徴とするデータ管理方法を提供する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、システムクラッシュ等による再起動時にデータの整合性を保つためのデータ管理方法を高信頼化する方法に関する。
【0002】
【従来の技術】
情報処理装置が蓄積装置に蓄積されたデータを管理する方法として、ファイルシステムがある。これは、データをその管理情報と合わせたファイルとして管理するものである。管理情報には例えば、ファイルの作成者、アクセス権、サイズ、蓄積装置での位置情報などの情報が含まれる。
【0003】
ファイルへのデータ書き込み中に情報処理装置が予期せぬ理由(電源断、システムクラッシュ等)で停止すると、管理情報を更新する前にデータだけが更新されたり、またその逆が起こる場合があり、データの整合性が取れなくなることがある。そこで、予期せぬ理由で正常終了せず再起動した場合のデータの整合性を保つデータ管理方法の1つとしてジャーナルファイルシステムが考案された。
【0004】
図7は、ジャーナルファイルシステムを説明する図である。情報処理装置1のIOコントローラ4を介して情報処理装置1と複数の蓄積装置61、62が接続される。蓄積装置61の情報領域7はファイルを格納するために使用され、蓄積装置62の退避領域8は、ファイルに書き込むデータを一旦格納するために使用される。
【0005】
メモリ3に格納されたオペレーティングシステム(OS)31に基づいて処理を実行するCPU2は、情報処理装置1や蓄積装置6に命令を発行する。CPU2は、更新ファイルに記録されたデータと書き込むデータの差分データ(ログデータ)を計算し、差分データをまず退避領域8の設定された蓄積装置62に送信する。そして、CPU2は退避領域8への書き込み完了通知を蓄積装置62から受け、退避領域8に蓄積されたログデータを対応するファイルへ反映すべく、情報領域7への書き込みをスケジューリングする。その後、CPU2はスケジュールされた情報領域7への書き込みを実行する。
【0006】
このデータ管理方法により、ファイルへのデータ更新中にシステムトラブル等の予期せぬ理由により情報処理装置1が停止した場合でも、情報処理装置1の再起動時に退避領域8に残されたログデータを対象のファイルを含む情報領域7へ反映させることによりデータの整合性を保つことができる。なぜなら、データだけ更新されてしまった場合は、ログデータから管理情報を作成することができ、管理情報だけが更新されてしまった場合は、ログデータを対象のファイルに追加することができるためである。
【0007】
なお、図7において情報領域7と退避領域8は別々の蓄積装置61、62に設定されているが、同一の蓄積装置に設定することもできる。また、退避領域8に蓄積されるログデータは、更新差分データに限られない。例えば、更新ファイルの更新前のデータあるいは書き込むデータ自身を退避領域8に蓄積し、システムトラブル等による再起動が発生したら、退避領域8に蓄積されたデータを対応するファイルに反映することによってもデータの整合性は保たれる。
【0008】
ジャーナルファイルシステムに関する公知例には、クラスタノード間でディスクのみならずメモリをも共有し、共有メモリ上にログデータを保存し、ノードが故障しても共有メモリ上のログデータを使用し他方のノードがファイルシステムのリカバリを行うものがある(特許文献1参照)。また他の公知例には、現用系ノード、待機系ノードのメモリ上での同期的なログデータの複製により、ログデータの書き込みに伴う性能劣化問題を解消しようとするものがある(特許文献2参照)。
【0009】
【特許文献1】
特開平9−212400号公報、耐故障性を備えたファイルシステム
【0010】
【特許文献2】
特開平8−106426号公報、クライアントサーバシステム及びその処理方法
【0011】
【発明が解決しようとする課題】
しかしながら、従来におけるデータの整合性を保つデータ管理方法においては、情報処理装置が予期せぬ理由で停止した場合データの整合性は保たれるが、データ自身の破壊から情報処理装置を守るよう高信頼化されてはいない。例えば、ジャーナルファイルシステムでは、更新差分データ等の退避領域に記録されたログデータ自身が破壊された場合、破壊されたデータは修復されないため、誤ったデータが対象となるファイルに書き込まれる可能性があった。また、従来の特許文献1あるいは特許文献2に提案されるようなメモリ上にログデータが保存される場合、システム全体が停止した場合ログデータを喪失するため、システムの再起動後にファイルシステムの状態を復旧できないでいた。
【0012】
退避領域に蓄積されたデータが破壊されてもデータの整合性を保つためには、ソフトウエアRAID(Redundant Array of Independent Disks)あるいはハードウエアRAIDにより退避領域に蓄積されるログデータを冗長化する方法が考えられる。しかし、RAIDを使用して退避領域を冗長化する場合、ジャーナルファイルシステムの性能のキーとなる退避領域のIO性能を損ねてしまう。
【0013】
例えば、退避領域の冗長化を実現するRAIDレベルとして、RAID1(ミラーリング)を使用する場合、ミラーの片面に対する書き込みが終了後でないとミラーのもう一方に対する書き込みが開始されず時間がかかる。またRAID5を使用する場合も、パリティの計算にCPUの処理能力を消費してしまうため時間がかかる。
【0014】
また、他にジャーナルファイルシステムの高信頼化法は提案されていない。従って本発明の目的は、ソフトウエアRAIDあるいはハードウエアRAIDを使用せずに、システムトラブル等による再起動時にデータの整合性を保つための高信頼化されたデータ管理方法に関連する技術を提供することにある。
【0015】
【課題を解決するための手段】
上記目的は、情報処理装置に接続され、情報領域と複数の退避領域を備える蓄積装置に蓄積されるデータの管理方法であって、前記複数の退避領域に対してデータの書き込みを並列に行い、前記書き込みがいずれかの退避領域に対して完了したかを判定し、いずれかの退避領域に対して前記書き込みが完了した時、前記情報処理装置に前記情報領域に対する前記データの書き込み完了が通知され、いずれかの退避領域に対して前記書き込みが完了した後、前記情報領域に対して前記データの書き込みを行うことを特徴とするデータ管理方法を提供する請求項1に記載の発明により達成される。
【0016】
また、上記目的は、請求項1において、前記複数の退避領域に対してデータの書き込みを並列に行う際、前記複数の退避領域のそれぞれに対し、前記データを蓄積可能な空き領域があるかを判定し、いずれかの退避領域にて前記データを蓄積可能な空き領域がない場合、前記情報領域に対して反映すべきデータがあるかを判定し、前記反映すべきデータがある場合、前記反映すべきデータを前記情報領域へ書き込み後、前記複数の退避領域に蓄積されたデータを前記反映すべきデータから除外することを特徴とするデータ管理方法を提供する請求項2に記載の発明により達成される。
【0017】
また、上記目的は、請求項1において、さらに、前記複数の退避領域に蓄積されたデータのうち前記情報領域に対して反映すべきデータを特定するためのヘッダ情報が各退避領域に記録され、前記複数の退避領域に対してデータの書き込みを並列に行う際、前記複数の退避領域のそれぞれに対し、前記データを蓄積可能な空き領域があるかを判定し、いずれかの退避領域にて前記データを蓄積可能な空き領域がない場合、前記反映すべきデータがあるかを判定し、前記反映すべきデータがある場合、前記反映すべきデータを前記情報領域へ書き込み後、前記複数の退避領域に蓄積されたデータを前記反映すべきデータから除外するように前記ヘッダ情報を更新することを特徴とするデータ管理方法を提供する請求項3に記載の発明により達成される。
【0018】
また、上記目的は、請求項1において、さらに、前記情報処理装置の起動時に、前記複数の退避領域に蓄積されたデータのうち最新データを保持する退避領域を選択し、前記選択された退避領域において前記情報領域に反映すべきデータが蓄積されているかを判定し、前記反映すべきデータが蓄積されている場合、前記情報領域に対して該反映すべきデータの書き込みを行うことを特徴とするデータ管理方法を提供する請求項4に記載の発明により達成される。
【0019】
また、上記目的は、情報処理装置に接続され、複数の情報領域と複数の退避領域を備える蓄積装置に蓄積されるデータの管理方法であって、前記複数の退避領域に対してデータの書き込みを並列に行い、前記書き込みがいずれかの退避領域に対して完了したかを判定し、いずれかの退避領域に対して前記書き込みが完了した時、前記情報処理装置に前記複数の情報領域に対する前記データの書き込み完了が通知され、いずれかの退避領域に対して前記書き込みが完了した後、前記複数の情報領域に対して前記データの書き込みを並列に行うことを特徴とするデータ管理方法を提供する請求項5に記載の発明により達成される。
【0020】
また、上記目的は、請求項5において、さらに、前記情報処理装置の起動時に、前記複数の退避領域において前記複数の情報領域に反映すべきデータが蓄積されているかを判定し、前記反映すべきデータが蓄積されている場合、前記複数の情報領域に対して該反映すべきデータの書き込みを並列に行い、すべての情報領域に対して該書き込みが完了した場合、前記複数の退避領域に蓄積されたデータを前記反映すべきデータから除外することを特徴とするデータ管理方法を提供する請求項6に記載の発明により達成される。
【0021】
また、上記目的は、情報領域と複数の退避領域を備える蓄積装置に接続された情報処理装置に、前記複数の退避領域に対してデータの書き込みを並列に実行させ、前記書き込みがいずれかの退避領域に対して完了したかを判定させ、いずれかの退避領域に対して前記書き込みが完了した後、前記情報領域に対して前記データの書き込みを実行させるプログラムを提供する請求項7に記載の発明により達成される。
【0022】
また、上記目的は、請求項7において、さらに、前記情報処理装置の起動時に、前記複数の退避領域に蓄積されたデータのうち最新データを保持する退避領域を選択させ、前記選択された退避領域において前記情報領域に反映すべきデータが蓄積されているかを判定させ、前記反映すべきデータが蓄積されている場合、前記情報領域に対して該反映すべきデータの書き込みを実行させるプログラムを提供する請求項8に記載の発明により達成される。
【0023】
【発明の実施の形態】
図1は、本発明の第一の実施形態における情報処理装置と蓄積装置を示すブロック図である。本発明の第一の実施形態では、2つの退避領域を備えた蓄積装置に対し、情報処理装置が並列に書き込み命令を発行してデータを退避領域に蓄積する。また、すべての退避領域への書き込み完了を待たずにいずれかの退避領域にデータの書き込みを完了した後に情報領域への書き込みを行う。
【0024】
また、退避領域に空き領域があるか判定し、空き領域がなければ空き領域を確保する処理を行う。そして、システムトラブル等の再起動時に退避領域のデータを反映することにより、データ整合性を保つ方法を高信頼化する。
【0025】
情報処理装置1は、メモリ3に格納された実行手順にそって処理を実行するCPU2と、周辺機器との入出力処理を制御するIOコントローラ4を備える。メモリ3には、CPU2を制御するためのオペレーティングシステム(OS)31等が格納される。IOコントローラ4は、情報処理装置1と蓄積装置61〜64を接続するためのインタフェースとして例えば、IDE(Integrated Drive Electronics)、SCSI(Small Computer System Interface)やFC(Fiber Channel)等を提供し、CPU1と蓄積装置とのデータ送受信を仲介する。
【0026】
蓄積装置61〜64は、中継装置5を介して情報処理装置1と接続される。蓄積装置61、62にはファイルが格納される情報領域71、72が設定され、蓄積装置63、64にはファイルを更新する際に一時的にデータを蓄積する退避領域81、82が設定される
中継装置5は、例えば、FCをインタフェースとする際のFCカード、FCスイッチや、SCSIカード等が相当する。CPU2により発行されたデータ書き込み、読み出し命令は、関連するデータと共にIOコントローラ4へ送信される。
【0027】
例えば、書き込み命令であれば、まず、データが蓄積装置63、64の退避領域81、82に対して一旦書き込まれ、その後蓄積装置61、62の情報領域71、72への書き込みが開始される。読み出し命令であれば、情報領域71、72からデータが読み出される。
【0028】
こうして情報処理装置1は、蓄積装置61〜64に対し、データ書き込み、読み出し命令を発行し、蓄積装置に蓄積されたファイルを管理する。なお、図1においては、蓄積装置61〜64のいずれかが故障しても他の情報領域7や退避領域8に影響を与えないようにするために、情報領域7、退避領域8がそれぞれ別々の蓄積装置61〜64に設定されているが、同一の蓄積装置に設定することも可能である。
【0029】
本発明の第一の実施形態におけるデータ管理方法は、データ書き込み処理と、情報処理装置の起動時の処理に特徴がある。従って、次にこれらの処理をフローチャートを用いて説明する。
【0030】
図2は、本発明の第一の実施形態における書き込み処理の動作を説明するフローチャートである。まず、蓄積装置6への書き込み命令が発行される(S21)。CPU2は書き込み命令を発行し、IOコントローラ4は退避領域8への書き込み命令に変換する。
【0031】
退避領域8に書き込むデータは、例えば、更新対象のファイルの更新差分データや、新規データ等である。本明細書においては、以降退避領域8に書き込むデータをログデータと呼ぶことにする。
【0032】
次に、退避領域8にログデータを蓄積可能な空き領域があるかをすべての退避領域で判定する(S22)。第一の実施形態における空き領域とは、データが蓄積されていない領域を意味する。ステップS22では、ログデータを格納できるだけの空き領域が退避領域81、82に残されているかをCPU2が判定すればよい。例えば、退避領域に残された空き領域のサイズがログデータのデータサイズを上回るかが判定される。OSの機能によってCPU2はこれらの情報を取得することができ、判定が可能である。
【0033】
ステップS22ですべての退避領域8に空き領域があると判定された場合、退避領域8へログデータを書き込む(S23)。CPU2は、複数の退避領域81、82に対して並列に書き込み命令を発行する。そしていずれかの退避領域8へのログデータの書き込みが完了したか判定する(S24)。ステップS24では、
蓄積装置63か64のいずれかが書き込み完了を通知した場合に、CPU2がステップS26の書き込み完了と判定する。
【0034】
ステップS24でどちらの退避領域81、82への書き込みも完了しなければ、どちらか1つの退避領域8への書き込みが完了するまで待機する。そして、いずれかの退避領域81、82へのログデータの書き込みが完了した場合、そのログデータの書き込みがすべての情報領域7に対して終了したものとCPU2はみなす(S25)。CPU2は、ステップS21で発生した書き込み命令が完了したものとみなし、書き込み要求をしたエンドユーザ(アプリケーション等)に書き込み命令の完了を通知する。後述する起動時の処理あるいは後述するライトバッファのフラッシュ(ステップS28の処理)を行うことにより、いずれかの退避領域にログデータがあれば、データの整合性を保つことが可能なため、情報領域への書き込み前に情報領域への書き込み完了とみなすことができ、書き込みを要求したエンドユーザに対する応答時間を短縮することができる。
【0035】
ステップS25は、複数の退避領域のいずれかに対するログデータの書き込み完了をもって、情報領域への書き込み完了とみなすだけなので、ログデータを書き込み中の退避領域では、書き込みが続行される。ステップS25により、いずれかの退避領域でログデータを書き込み中であっても、CPU2はそのすべての書き込み完了を待ち合わせることなく、ログデータの情報領域への書き込みをスケジューリングすることができる。
【0036】
ステップS25が済むと、情報領域へのログデータの書き込みがスケジューリングされる(S26)。ステップS26では、決められた時間にログデータが対応するファイルに書き込まれるようCPU2がスケジューリングする。スケジューリングされた時間に、CPU2は書き込み命令を発行し、IOコントローラ4が対応するファイルが格納された情報領域71、72に書き込みを行う。
【0037】
そして、実際に情報領域への書き込みが完了したか判定し、情報領域への書き込みが完了すれば(S27)、書き込み処理を終了する。ステップS27は、ステップS26で書き込みを行った情報領域を含む蓄積装置6が書き込み完了を通知した場合に、CPU2がステップS27の書き込み完了と判定すればよい。
【0038】
ステップS22でいずれかの退避領域にて空き領域が無いと判定された場合、退避領域に空き領域を確保するための処理を行う。まず、ライトバッファに蓄積されたデータを強制的に情報領域へ書き込む(S28)。
【0039】
ライトバッファはメモリ3に確保され、ステップS26でスケジュールはされたがまだ実行されていない書き込みに関するデータ(例えば、更新対象のファイル名とそのファイルに対応するログデータ等)が格納される。そして、ステップS27の情報領域への書き込み完了によってライトバッファは解放される。空き領域を確保するには、ログデータがすべて情報領域に反映されており、退避領域に蓄積されているログデータが反映すべきデータではない、つまり反映すべきデータから除外されている必要がある。
【0040】
ログデータを情報領域に反映する前に削除、あるいは上書きしてしまうとファイルの整合性が保てなくなるためである。従って、ステップS28でライトバッファに格納されたログデータを情報領域へ書き込みむことによって、ログデータが削除されても上書きされてもいい状態にする。
【0041】
そして、対応するファイルが格納された情報領域7への書き込みが完了した後、空き領域の確保が行われる(S30)。ステップS30では、退避領域81、82に蓄積されたログデータを反映すべきデータから除外するため、ログデータをすべて削除するようCPU2が命令を発行すればよい。
【0042】
ステップS28により反映すべきログデータはすべて情報領域7に反映されており、この時点でログデータを削除しても問題はない。ステップS30の終了後は、ステップS23へ進み空になった退避領域へログデータの書き込みを行うことができる。
【0043】
なお、本実施形態においては、退避領域が2つの場合を説明したが、退避領域が2つ以上存在しても図2を適用することができる。
【0044】
以上に説明した第一の実施形態の書き込み処理により、ログデータは従来のRAID1(ミラーリング)とは異なる方法で冗長化される。即ち、CPU2はすべての退避領域に対する書き込み完了時ではなくいずれかの退避領域に対する書き込み完了時に、書き込み要求をしたエンドユーザに書き込み完了を通知する。従って、エンドユーザに対する書き込みの応答時間が短縮される。また、エンドユーザに対する書き込み完了通知後もすべての退避領域に対しログデータの書き込みが続行されるため、ログデータの冗長化も実現される。
【0045】
また、従来のミラーリングによる冗長化方法とは異なるため、冗長化された退避領域8間で同期を取る必要もない。さらに、各ミラーにおいて変更箇所をマップ情報として記録し、再起動時にマップ情報を参照し、変更箇所のみミラー間の同期を取ることでデータの整合性を保つDRL(Dirty Region Logging)も、前述したように退避領域間で同期を取る必要性がないことから、必要ない。また、RAID5でのパリティの計算等も必要ないので、RAIDを使用する方法より書き込みを高速化できる。
【0046】
続いて、第一の実施形態における起動時の処理について説明する。
【0047】
図3は、本発明の第一の実施形態における情報処理装置を起動する時の処理を説明するフローチャートである。この処理は、情報処理装置1に電源を入れ初期化する際や、システムトラブルなどによる再起動時に退避領域に蓄積された反映すべきログデータを情報領域に反映することによって、データの整合性を保つものである。
【0048】
まず、退避領域81、82から最新のログデータを保持する退避領域を特定する(S31)。最新のログデータを保持する退避領域とは、最後に書き込まれたログデータの書き込みが完了している退避領域を意味する。退避領域8へのログデータの書き込みは並列に実行され、書き込み状態に差が出ないのが理想だが、実際は蓄積装置6に対する書き込み性能や情報処理装置1の負荷状況によって、十分な時間が経てばどちらの退避領域81、82にも同じログデータが蓄積されるとしても、あるタイミングにおいては、一方の退避領域ではログデータの書き込みが完了し、他方の退避領域ではまだ書き込み中となる場合がある。
【0049】
その状態で電源断等が発生した場合、次に起動させても退避領域のログデータは違いが生じたままである。そこで、最新のログデータを情報領域に反映して、データの整合性を保つためにステップS31を実行する。ステップS31は、例えば、OSの機能によって退避領域に最後にログデータが書き込まれた時間がわかるので、その時間が最も遅いログデータを含む退避領域8をCPU2が1つ選択すればよい。
【0050】
そして、ステップS31で特定された退避領域8に反映すべきログデータが存在するか判定する(S32)。第一の実施形態では、空き領域を確保するため反映済みのログデータをすべて削除するため(ステップS30)、退避領域8にログデータが残されていれば、それはすべて反映すべきログデータと判定できる。そこで例えば、ステップS32は、CPU2がステップS31で特定された退避領域に対して読み出し命令を発行し、読み出されるデータがあるかないかでログデータの有無を判定すればよい。
【0051】
ステップS32で反映すべきログデータが存在する場合、情報領域へのログデータの書き込みがスケジューリングされる(S26)。ステップS26は、ステップS22で空き領域がある場合に行われるステップS26と同じ処理を行う。そして情報領域への書き込み完了(S27)により起動時の処理を終了する。ステップS27は、ステップS22で空き領域がある場合に行われるステップS27と同じ処理を行う。
【0052】
ステップS32で退避領域にログデータが全く蓄積されていない場合、その退避領域はスキップされ、すべての退避領域に全くログデータが蓄積されていない場合は、そのまま起動時の処理を終了する。
【0053】
以上に説明した、第一の実施形態の書き込み処理および起動時の処理によって、退避領域に対するログデータの書き込み中に、情報処理装置1がクラッシュして再起動した場合、いずれか1つの退避領域に最新のログデータが残されていれば、そのログデータを再起動時に情報領域に反映することによってクラッシュ前のデータと整合性を保つことができる。また、どこにもログデータが残されていなければ、情報領域へのログデータの書き込みは完了しており、何もせずにデータの整合性が保たれる。
【0054】
また、情報処理装置1が稼動中に退避領域81、82のどちらかが故障しても、稼動中は、スケジュールされたタイミングや退避領域に空き領域が無くなったタイミングで、退避領域のログデータが情報領域に反映される。従って、本発明の第一の実施形態によってデータの整合性を保つデータ管理方法を高信頼化することができる。
【0055】
続いて本発明の第二の実施形態を説明する。第二の実施形態では、図1のブロック図と同じ構成の情報処理装置と蓄積装置を用いるが、第一の実施形態と異なり、情報領域71、72に蓄積されるデータが冗長化される。すなわち、第一の実施形態においては、情報領域71、72のどちらかにデータが書き込まれたが、同じデータが情報領域71、72に対して並列に書き込まれる。その書き込み方法は、退避領域に対する書き込み方法と同様であって、RAIDを使用しないものである。
【0056】
また、第一の実施形態と異なり、退避領域に蓄積されるログデータがヘッダ情報によって管理され、どのログデータが情報領域に反映されたかが管理される。また、ヘッダ情報の使用により、退避領域を循環型(退避領域の末尾までデータを蓄積したらデータを削除することなく先頭から上書きする方法)の領域として使用することが可能になる。そこでまず、第二の実施形態において使用される退避領域のデータ構成例を説明する。
【0057】
図4は、本発明の第二の実施形態において退避領域に蓄積されるデータのデータ構成例を示す図である。退避領域81、82のどちらにも、図4の構成をしたデータが蓄積される。各退避領域には、図4にあるようにログヘッダ44と複数のログ43が格納される。
【0058】
各ログ43には、ログ43の開始と終了を示すスタートビット45、エンドビット50が記録され、その間にログレコード51とログデータ49が格納される。ログ43は、スタートビット45から記録され、最後にエンドビット50が記録されることで初めて有効になる。
【0059】
このため、ログデータ49を記録中に情報処理装置1が停止した場合は、エンドビット50の記録がない(閉じていない)ログ43が退避領域に残される。スタートビット45とエンドビット50が共に存在しているログ43だけが有効とみなされ、エンドビット50が無く閉じていないログ43は、無効とみなされる。
【0060】
ログデータ49は、第一の実施形態のステップS21で説明したログデータそのものである。各ログデータ49に対して、1、2、3、、、と1ずつ増加するように番号付けがされ、その番号はログ43を特定するシークエンス番号として、ログレコード51のシークエンス番号(SEQ)46に格納される。ログレコード51には他に、ログ43全体の大きさ(SIZE)47、ログデータ49のサイズ(BSIZE)48が格納される。
【0061】
ログヘッダ44の最新シークエンス番号(SSEQ)41には、最後に情報領域に反映させたログ43を特定するシークエンス番号が格納される。また、退避領域は所定の大きさごとに番地付けされており、番地により退避領域内の位置が特定される。ログヘッダ44のオフセット(SOFFSET)42には、最後に情報領域に反映させたログデータ49を含むログの次のログ43の開始番地が格納される。
【0062】
第二の実施形態においては、情報処理装置の稼動中はメモリ3に、退避領域に最後に書き込んだログを特定するシークエンス番号、退避領域に最後に書き込んだログの次のログの退避領域での開始番地を特定するオフセット、情報領域に最後に反映させたログの次のログの退避領域での開始番地を特定するオフセットが退避領域毎に格納されるものとする。情報領域にログデータを反映させる際(例えば、ライトバッファのフラッシュ時)に、メモリ上のシークエンス番号がログヘッダ44の最新シークエンス番号41に、メモリ上の最後に情報領域に反映させたログの次のログの開始番地を特定するオフセットがログヘッダ44のオフセット42に格納される。
【0063】
図4において、ログヘッダ44を除いた領域には、ログが循環して蓄積される。即ち、末尾にログ43nが記録された後、次のログを書き込む場合、そのまま先頭(図4ではログ431の位置)から次のログを上書きする。反映すべきデータを誤って上書きすることを防ぐために、ログを書き込む前に空き領域の有無を判定し、反映すべきデータが残っていれば、情報領域への反映を先に行うため、誤って上書きする問題も起きない。
【0064】
退避領域に蓄積されるデータ構成を図4のようにした場合、次のようにして反映すべきデータの特定を行うことができる。まず反映すべきデータが存在するかどうかを次のようにして判定することができる。それは、オフセット(SOFFSET)42で特定される位置のログ43のシークエンス番号が、最新シークエンス番号(SSEQ)41のシークエンス番号以下かどうかを判定することにより行われる。即ち、オフセット(SOFFSET)42により特定されるログのシークエンス番号46が最新シークエンス番号41以上であれば、そのログは最後に情報領域に反映が行われた後に退避領域に蓄積されたログデータを含み、反映すべきデータが存在することがわかる。
【0065】
次に反映すべきデータを特定する。反映すべきデータは、オフセット42で特定されるログからログを1つずつ読み出して、各ログレコード51のシークエンス番号が開始位置のシークエンス番号から1ずつ単調増加する連番ではなくなるログまでのデータとして特定される。
【0066】
次に、図4を利用した本発明の第二の実施形態の書き込み処理と起動時の処理をフローチャートを用いて説明する。
【0067】
図5は、本発明の第二の実施形態における書き込み処理の動作を説明するフローチャートである。第二の実施形態における書き込み処理は、第一の実施形態における書き込み処理と一部重複するため、同じ処理には同じステップ番号が振られており、重複する箇所は説明が省略される。
【0068】
まず、蓄積装置6への書き込み命令が発生する(S21)。ステップS21は、図2のステップS21と同じ処理を行う。次に、退避領域8に空き領域があるかをすべての退避領域で判定する(S22)。第二の実施形態においては、第一の実施形態と異なり、ヘッダ情報によりログデータが反映すべきデータかが管理され、ログデータを削除せず上書きするため、第二の実施形態における空き領域は、退避領域にて反映すべきログデータを含むログを除いた部分を意味する。
【0069】
従って、ステップS22では、退避領域に反映すべきログデータが存在するか判定し、反映すべきログデータが無ければ、空き領域があることになる。反映すべきログデータがある場合は、退避領域のサイズから、ログヘッダ44のサイズ、反映すべきログデータを含むログ43のサイズ、ログ1つ分のログレコード、ログ1つ分のスタートビット、エンドビットのサイズを引いたサイズが、書き込むログデータのサイズを上回るか判定し、上回れば空き領域があることになる。下回れば、空き領域がないと判定される。CPU2は退避領域からログヘッダ44およびログレコード51を読み出すことによりこれらの判定が可能である。
【0070】
ステップS22で空き領域があると判定された場合、退避領域へログデータを書き込む(S23)。ステップS23は、第一の実施形態における図2のステップS23と同じ処理を行う。そしていずれかの退避領域へのログデータの書き込みが完了したか判定する(S24)。ステップS24は、第一の実施形態における図2のステップS24と同じ処理を行う。
【0071】
ステップS24で、どの退避領域への書き込みも完了しなければ、いずれか1つの退避領域への書き込みが完了するまで待機する。いずれかの退避領域81、82へのログデータの書き込みが完了した場合、そのログデータの書き込みがすべての情報領域7に対して終了したものとCPU2はみなす。(S25)CPU2は、ステップS21で発生した書き込み命令が完了したものとみなし、書き込み要求をしたエンドユーザ(アプリケーション等)に書き込み命令の完了を通知する。
【0072】
ステップS25は、第一の実施形態における図2のステップS25と同じものである。ステップS25が済むと、情報領域へログデータの書き込みがスケジューリングされる(S26)。第二の実施形態のステップS26では、第一の実施形態と異なり、データを冗長化するためにCPU2が情報領域71、72に対して並列に書き込みを行うようスケジューリングする。
【0073】
そしてすべての情報領域71、72に対する書き込みが完了したか判定する(S51)。ステップS51では、蓄積装置61、62が情報領域への書き込み完了を通知した場合に、CPU2がステップS26の書き込み完了と判定すればよい。
【0074】
すべての情報領域71、72への書き込みが完了しなければ、すべての情報領域7への書き込みが完了するまで待機する。すべての情報領域への書き込みが完了すれば(S27)、書き込み処理を終了する。ステップS27では、例えば蓄積装置6がすべての情報領域への書き込み完了を通知した場合に、CPU2がステップS27の書き込み完了と判定してもよい。
【0075】
ステップS22で、いずれかの退避領域81、82にて空き領域が無いと判定された場合、退避領域に空き領域を確保するための処理を行う。まず、ライトバッファに蓄積されたデータを強制的に情報領域へ書き込む(S28)。これは、図2のステップS28の処理と同じである。
【0076】
次に、ログデータを情報領域71、72の両方に対して書き込みが完了したか判定する(S51)。すべての情報領域への書き込みが実際に完了した後でなければ、空き領域の確保を行うことができない。
【0077】
例えば、情報領域71へのログデータの反映が完了した時、情報領域72ではまだログデータが書き込まれているとする。その時点で退避領域81、82からログデータを削除すると、情報領域71が故障した場合、その後再起動しても情報領域72に反映させるべきログデータが残されていないことになるからである。
【0078】
ステップS51では、蓄積装置6がすべての情報領域への書き込み完了を通知した場合に、CPU2がステップS26の書き込み完了と判定してもよい。ステップS51でまだいずれかの情報領域7に対してログデータの書き込みが行われている間は特に何もしない。ステップS51で情報領域71、72の両方に対してログデータの書き込みが終了した場合、次に空き領域の確保を行う(S30)。
【0079】
すべての情報領域に対するログデータの反映が済めば、そのログデータは反映すべきデータから除外され、ログデータを上書きしても構わない。第一の実施形態においては、空き領域の確保をするためログデータを削除したが、第二の実施形態においては、ログデータを反映すべきデータから除外するために、すべての退避領域8のログヘッダ44のオフセット42を、ステップS28において反映が完了したログデータ49を含むログ43の次のログ43が記録される開始番地に、そしてログヘッダ44の最新シークエンス番号41をメモリ3に格納された最後に情報領域に書き込んだログのシークエンス番号にそれぞれCPU2が更新する。メモリ3には、退避領域毎にこれらの情報が格納されており、対応するデータが各退避領域のログヘッダに書き込まれる。
【0080】
ステップS30の終了後は、ステップS23に進み空き領域の確保された退避領域に対してログデータを上書きすることができる。
【0081】
また、本実施形態においては、退避領域が2つの場合を説明したが、退避領域が2つ以上存在しても図5を適用することができる。また、情報領域が2つ以上存在している場合にも図5の適用が可能である。
【0082】
以上に説明した第二の実施形態の書き込み処理により、ログデータは従来のRAID1(ミラーリング)とは異なる方法で冗長化される。即ち、CPU2はすべての退避領域に対する書き込み完了時ではなくいずれかの退避領域に対する書き込み完了時に、書き込み要求をしたエンドユーザに書き込み完了を通知する。従って、エンドユーザに対する書き込みの応答時間が短縮される。また、エンドユーザに対する書き込み完了通知後もすべての退避領域に対しログデータの書き込みが続行されるため、ログデータの冗長化も実現される。
【0083】
また、従来のミラーリングによる冗長化方法とは異なるため、冗長化された退避領域間で同期を取る必要もない。さらに、各ミラーにおいて変更箇所をマップ情報として記録し、再起動時にマップ情報を参照し、変更箇所のみミラー間の同期を取ることでデータの整合性を保つDRL(Dirty Region Logging)も、前述したように退避領域間で同期を取る必要性がないことから、必要ない。また、RAID5でのパリティの計算等も必要ないので、RAIDを使用する方法より書き込みを高速化できる。
【0084】
続いて、第二の実施形態における起動時の処理について説明する。
【0085】
図6は、本発明の第二の実施形態における情報処理装置を起動する時の処理を説明するフローチャートである。この処理は、情報処理装置に電源を入れ、計算機システムを初期化する際や、システムトラブルなどによる再起動時に退避領域に蓄積された反映すべきログデータを情報領域に反映することによって、データの整合性を保つものである。
【0086】
まず、退避領域81、82から最新シークエンス番号が最も大きいものを特定する(S61)。CPU2が各退避領域8の最新シークエンス番号41に記録されたシークエンス番号を比較し、その最も大きなものを特定すればよい。そして、ステップS31で特定された最新シークエンス番号を利用し、各退避領域に反映すべきデータが存在するか判定する(S62)。
【0087】
ステップS62は、図4において説明したように、各退避領域において、ログヘッダ44に記録されたオフセット42により特定されるログのシークエンス番号46が、ステップS61で特定された最も大きな最新シークエンス番号以上かを判定すればよい。前者が後者以上であれば反映すべきデータが存在することになる。ステップS62でいずれかの退避領域に反映すべきデータが存在する場合、反映すべきデータが存在すると判定された退避領域にてログを1つ読み出す(S63)。そして、ステップS63で読み出されたログに含まれるログデータの有効性を判定する(S64)。
【0088】
ログデータの有効性は、読み出したログのログレコードに格納されたシークエンス番号が1ずつ単調増加しているかを判定する。番号が飛んでいる場合は、過去に記録されたデータであり情報領域に反映すべき有効なデータではないことになる。オフセット42により特定される最初に読み出されるログのシークエンス番号が基準となるため、この最初に読み出されるログに関しては無条件に有効と判定される。ステップS64は、反映すべきデータが存在すると判定されたすべての退避領域にて読み出されたログが対象である。
【0089】
そして、ステップS64で有効と判定されたログが1つでもあれば、そのログに含まれるログデータを情報領域に書き込む(S65)。反映すべきデータが存在すると判定された退避領域が複数存在する場合でも、ステップS65では有効と判定されたいずれかのログデータを1回情報領域に書き込めばよい。そして、ステップS65が済むと、ステップS63に戻り次のログを読み出す。
【0090】
ステップS62ですべての退避領域において反映すべきデータが存在しない場合と、ステップS64で読み出されたすべてのログが有効でない場合は、各退避領域のログヘッダを初期化し(S66)、起動時の処理を終了する。ステップS66のログヘッダの初期化は、例えば、最新シークエンス番号を0にリセットし、オフセット42をログが記録される領域の先頭番地(図4でいうログ431を特定する番地)とすればよい。
【0091】
なお、情報領域が2つ以上存在している場合にも図6の適用が可能である。その場合、ステップS34で書き込む対象の情報領域が複数になるだけである。
【0092】
以上に説明した第二の実施形態の書き込み処理および起動時の処理によって、退避領域に対するログデータの書き込み中に、情報処理装置1がクラッシュして再起動した場合、どこか1つの退避領域にログデータが残されていれば、そのログデータを再起動時に情報領域に反映することによってクラッシュ前のデータと整合性を保つことができる。
【0093】
また、反映すべきログデータがなければ、何もせずにデータの整合性が保たれる。また、退避領域81、82のどちらかが故障しても、残された反映すべきログデータを情報領域7に反映させることによりデータの整合性は保たれる。
【0094】
また、冗長化された情報領域71、72へのログデータの反映中に情報処理装置がクラッシュして再起動した場合、すべての情報領域71、72のへのログデータの反映が完了するまでは、ログデータは削除されないので、残されたログデータを再度情報領域71、72へ反映することによってデータの整合性を保つことができる。従って、本発明の第二の実施形態によってデータの整合性を保つデータ管理方法を高信頼化することができる。
【0095】
また、特に第二の実施形態においては、退避領域に蓄積されるログデータをログヘッダにより管理することにより、ログを循環型の記録領域として利用することができ、少ない容量で退避領域を実装できる。また、空き領域の確保をする際データを削除することなく、ログヘッダの更新だけをすればよいので、処理が高速化される。これは、退避領域が複数存在する場合に有効である。
【0096】
なお、第二の実施形態において、ログデータをログヘッダにより管理せず、第一の実施形態のように単純にログデータを退避領域に蓄積させ、空き領域を確保する際に、反映済みのログデータを削除するようにしても本発明のデータ管理方法を実施することは可能である。また、情報領域が複数であったとしても第二の実施形態を適用することが可能である。
【0097】
また、第一および第二の実施形態において実行される工程をプログラムにして、CPU2に実行させることで本発明を実施することも可能である。
【0098】
【発明の効果】
以上説明した本発明の実施形態によれば、退避領域を複数有することにより、そのいずれかの退避領域が故障しても、残りの退避領域を基にログデータを情報領域に反映させることができ、データの整合性を保つデータ管理方法を高信頼化することができる。また、すべての書き込みが完了するのを待ち合わせるのではなく、いずれか1つの退避領域に対するログデータの書き込みが完了すれば、情報処理装置1はエンドユーザに対する書き込み完了を通知でき、応答時間が短縮される。また、従来RAID1において、再起動時にミラーされたボリュームの同期が取れているかを示すダーティリージョンログなどを必要としないため、このデータ管理方法ではより高速である。起動時には、ログに残されたデータのみを反映するだけでデータの整合性を保つことができ、高速である。
【図面の簡単な説明】
【図1】本発明の第一の実施形態における情報処理装置と蓄積装置を示すブロック図である。
【図2】本発明の第一の実施形態における書き込み処理の動作を説明するフローチャートである。
【図3】本発明の第一の実施形態における情報処理装置を起動する時の処理を説明するフローチャートである。
【図4】本発明の第二の実施形態において退避領域に蓄積されるデータのデータ構成例を示す図である。
【図5】本発明の第二の実施形態における書き込み処理の動作を説明するフローチャートである。
【図6】本発明の第二の実施形態における情報処理装置を起動する時の処理を説明するフローチャートである。
【図7】ジャーナルファイルシステムを説明する図である。
【符号の説明】
1 情報処理装置、2 CPU、3 メモリ、31 オペレーティングシステム、4 IOコントローラ、5 中継装置、6 蓄積装置、7 情報領域、8 退避領域、41 最新シークエンス番号、42 オフセット、43 ログ、44 ログヘッダ、45 スタートビット、46 シークエンス番号、47 ログサイズ、48 ログデータサイズ、49 ログデータ、50 エンドビット
【発明の属する技術分野】
本発明は、システムクラッシュ等による再起動時にデータの整合性を保つためのデータ管理方法を高信頼化する方法に関する。
【0002】
【従来の技術】
情報処理装置が蓄積装置に蓄積されたデータを管理する方法として、ファイルシステムがある。これは、データをその管理情報と合わせたファイルとして管理するものである。管理情報には例えば、ファイルの作成者、アクセス権、サイズ、蓄積装置での位置情報などの情報が含まれる。
【0003】
ファイルへのデータ書き込み中に情報処理装置が予期せぬ理由(電源断、システムクラッシュ等)で停止すると、管理情報を更新する前にデータだけが更新されたり、またその逆が起こる場合があり、データの整合性が取れなくなることがある。そこで、予期せぬ理由で正常終了せず再起動した場合のデータの整合性を保つデータ管理方法の1つとしてジャーナルファイルシステムが考案された。
【0004】
図7は、ジャーナルファイルシステムを説明する図である。情報処理装置1のIOコントローラ4を介して情報処理装置1と複数の蓄積装置61、62が接続される。蓄積装置61の情報領域7はファイルを格納するために使用され、蓄積装置62の退避領域8は、ファイルに書き込むデータを一旦格納するために使用される。
【0005】
メモリ3に格納されたオペレーティングシステム(OS)31に基づいて処理を実行するCPU2は、情報処理装置1や蓄積装置6に命令を発行する。CPU2は、更新ファイルに記録されたデータと書き込むデータの差分データ(ログデータ)を計算し、差分データをまず退避領域8の設定された蓄積装置62に送信する。そして、CPU2は退避領域8への書き込み完了通知を蓄積装置62から受け、退避領域8に蓄積されたログデータを対応するファイルへ反映すべく、情報領域7への書き込みをスケジューリングする。その後、CPU2はスケジュールされた情報領域7への書き込みを実行する。
【0006】
このデータ管理方法により、ファイルへのデータ更新中にシステムトラブル等の予期せぬ理由により情報処理装置1が停止した場合でも、情報処理装置1の再起動時に退避領域8に残されたログデータを対象のファイルを含む情報領域7へ反映させることによりデータの整合性を保つことができる。なぜなら、データだけ更新されてしまった場合は、ログデータから管理情報を作成することができ、管理情報だけが更新されてしまった場合は、ログデータを対象のファイルに追加することができるためである。
【0007】
なお、図7において情報領域7と退避領域8は別々の蓄積装置61、62に設定されているが、同一の蓄積装置に設定することもできる。また、退避領域8に蓄積されるログデータは、更新差分データに限られない。例えば、更新ファイルの更新前のデータあるいは書き込むデータ自身を退避領域8に蓄積し、システムトラブル等による再起動が発生したら、退避領域8に蓄積されたデータを対応するファイルに反映することによってもデータの整合性は保たれる。
【0008】
ジャーナルファイルシステムに関する公知例には、クラスタノード間でディスクのみならずメモリをも共有し、共有メモリ上にログデータを保存し、ノードが故障しても共有メモリ上のログデータを使用し他方のノードがファイルシステムのリカバリを行うものがある(特許文献1参照)。また他の公知例には、現用系ノード、待機系ノードのメモリ上での同期的なログデータの複製により、ログデータの書き込みに伴う性能劣化問題を解消しようとするものがある(特許文献2参照)。
【0009】
【特許文献1】
特開平9−212400号公報、耐故障性を備えたファイルシステム
【0010】
【特許文献2】
特開平8−106426号公報、クライアントサーバシステム及びその処理方法
【0011】
【発明が解決しようとする課題】
しかしながら、従来におけるデータの整合性を保つデータ管理方法においては、情報処理装置が予期せぬ理由で停止した場合データの整合性は保たれるが、データ自身の破壊から情報処理装置を守るよう高信頼化されてはいない。例えば、ジャーナルファイルシステムでは、更新差分データ等の退避領域に記録されたログデータ自身が破壊された場合、破壊されたデータは修復されないため、誤ったデータが対象となるファイルに書き込まれる可能性があった。また、従来の特許文献1あるいは特許文献2に提案されるようなメモリ上にログデータが保存される場合、システム全体が停止した場合ログデータを喪失するため、システムの再起動後にファイルシステムの状態を復旧できないでいた。
【0012】
退避領域に蓄積されたデータが破壊されてもデータの整合性を保つためには、ソフトウエアRAID(Redundant Array of Independent Disks)あるいはハードウエアRAIDにより退避領域に蓄積されるログデータを冗長化する方法が考えられる。しかし、RAIDを使用して退避領域を冗長化する場合、ジャーナルファイルシステムの性能のキーとなる退避領域のIO性能を損ねてしまう。
【0013】
例えば、退避領域の冗長化を実現するRAIDレベルとして、RAID1(ミラーリング)を使用する場合、ミラーの片面に対する書き込みが終了後でないとミラーのもう一方に対する書き込みが開始されず時間がかかる。またRAID5を使用する場合も、パリティの計算にCPUの処理能力を消費してしまうため時間がかかる。
【0014】
また、他にジャーナルファイルシステムの高信頼化法は提案されていない。従って本発明の目的は、ソフトウエアRAIDあるいはハードウエアRAIDを使用せずに、システムトラブル等による再起動時にデータの整合性を保つための高信頼化されたデータ管理方法に関連する技術を提供することにある。
【0015】
【課題を解決するための手段】
上記目的は、情報処理装置に接続され、情報領域と複数の退避領域を備える蓄積装置に蓄積されるデータの管理方法であって、前記複数の退避領域に対してデータの書き込みを並列に行い、前記書き込みがいずれかの退避領域に対して完了したかを判定し、いずれかの退避領域に対して前記書き込みが完了した時、前記情報処理装置に前記情報領域に対する前記データの書き込み完了が通知され、いずれかの退避領域に対して前記書き込みが完了した後、前記情報領域に対して前記データの書き込みを行うことを特徴とするデータ管理方法を提供する請求項1に記載の発明により達成される。
【0016】
また、上記目的は、請求項1において、前記複数の退避領域に対してデータの書き込みを並列に行う際、前記複数の退避領域のそれぞれに対し、前記データを蓄積可能な空き領域があるかを判定し、いずれかの退避領域にて前記データを蓄積可能な空き領域がない場合、前記情報領域に対して反映すべきデータがあるかを判定し、前記反映すべきデータがある場合、前記反映すべきデータを前記情報領域へ書き込み後、前記複数の退避領域に蓄積されたデータを前記反映すべきデータから除外することを特徴とするデータ管理方法を提供する請求項2に記載の発明により達成される。
【0017】
また、上記目的は、請求項1において、さらに、前記複数の退避領域に蓄積されたデータのうち前記情報領域に対して反映すべきデータを特定するためのヘッダ情報が各退避領域に記録され、前記複数の退避領域に対してデータの書き込みを並列に行う際、前記複数の退避領域のそれぞれに対し、前記データを蓄積可能な空き領域があるかを判定し、いずれかの退避領域にて前記データを蓄積可能な空き領域がない場合、前記反映すべきデータがあるかを判定し、前記反映すべきデータがある場合、前記反映すべきデータを前記情報領域へ書き込み後、前記複数の退避領域に蓄積されたデータを前記反映すべきデータから除外するように前記ヘッダ情報を更新することを特徴とするデータ管理方法を提供する請求項3に記載の発明により達成される。
【0018】
また、上記目的は、請求項1において、さらに、前記情報処理装置の起動時に、前記複数の退避領域に蓄積されたデータのうち最新データを保持する退避領域を選択し、前記選択された退避領域において前記情報領域に反映すべきデータが蓄積されているかを判定し、前記反映すべきデータが蓄積されている場合、前記情報領域に対して該反映すべきデータの書き込みを行うことを特徴とするデータ管理方法を提供する請求項4に記載の発明により達成される。
【0019】
また、上記目的は、情報処理装置に接続され、複数の情報領域と複数の退避領域を備える蓄積装置に蓄積されるデータの管理方法であって、前記複数の退避領域に対してデータの書き込みを並列に行い、前記書き込みがいずれかの退避領域に対して完了したかを判定し、いずれかの退避領域に対して前記書き込みが完了した時、前記情報処理装置に前記複数の情報領域に対する前記データの書き込み完了が通知され、いずれかの退避領域に対して前記書き込みが完了した後、前記複数の情報領域に対して前記データの書き込みを並列に行うことを特徴とするデータ管理方法を提供する請求項5に記載の発明により達成される。
【0020】
また、上記目的は、請求項5において、さらに、前記情報処理装置の起動時に、前記複数の退避領域において前記複数の情報領域に反映すべきデータが蓄積されているかを判定し、前記反映すべきデータが蓄積されている場合、前記複数の情報領域に対して該反映すべきデータの書き込みを並列に行い、すべての情報領域に対して該書き込みが完了した場合、前記複数の退避領域に蓄積されたデータを前記反映すべきデータから除外することを特徴とするデータ管理方法を提供する請求項6に記載の発明により達成される。
【0021】
また、上記目的は、情報領域と複数の退避領域を備える蓄積装置に接続された情報処理装置に、前記複数の退避領域に対してデータの書き込みを並列に実行させ、前記書き込みがいずれかの退避領域に対して完了したかを判定させ、いずれかの退避領域に対して前記書き込みが完了した後、前記情報領域に対して前記データの書き込みを実行させるプログラムを提供する請求項7に記載の発明により達成される。
【0022】
また、上記目的は、請求項7において、さらに、前記情報処理装置の起動時に、前記複数の退避領域に蓄積されたデータのうち最新データを保持する退避領域を選択させ、前記選択された退避領域において前記情報領域に反映すべきデータが蓄積されているかを判定させ、前記反映すべきデータが蓄積されている場合、前記情報領域に対して該反映すべきデータの書き込みを実行させるプログラムを提供する請求項8に記載の発明により達成される。
【0023】
【発明の実施の形態】
図1は、本発明の第一の実施形態における情報処理装置と蓄積装置を示すブロック図である。本発明の第一の実施形態では、2つの退避領域を備えた蓄積装置に対し、情報処理装置が並列に書き込み命令を発行してデータを退避領域に蓄積する。また、すべての退避領域への書き込み完了を待たずにいずれかの退避領域にデータの書き込みを完了した後に情報領域への書き込みを行う。
【0024】
また、退避領域に空き領域があるか判定し、空き領域がなければ空き領域を確保する処理を行う。そして、システムトラブル等の再起動時に退避領域のデータを反映することにより、データ整合性を保つ方法を高信頼化する。
【0025】
情報処理装置1は、メモリ3に格納された実行手順にそって処理を実行するCPU2と、周辺機器との入出力処理を制御するIOコントローラ4を備える。メモリ3には、CPU2を制御するためのオペレーティングシステム(OS)31等が格納される。IOコントローラ4は、情報処理装置1と蓄積装置61〜64を接続するためのインタフェースとして例えば、IDE(Integrated Drive Electronics)、SCSI(Small Computer System Interface)やFC(Fiber Channel)等を提供し、CPU1と蓄積装置とのデータ送受信を仲介する。
【0026】
蓄積装置61〜64は、中継装置5を介して情報処理装置1と接続される。蓄積装置61、62にはファイルが格納される情報領域71、72が設定され、蓄積装置63、64にはファイルを更新する際に一時的にデータを蓄積する退避領域81、82が設定される
中継装置5は、例えば、FCをインタフェースとする際のFCカード、FCスイッチや、SCSIカード等が相当する。CPU2により発行されたデータ書き込み、読み出し命令は、関連するデータと共にIOコントローラ4へ送信される。
【0027】
例えば、書き込み命令であれば、まず、データが蓄積装置63、64の退避領域81、82に対して一旦書き込まれ、その後蓄積装置61、62の情報領域71、72への書き込みが開始される。読み出し命令であれば、情報領域71、72からデータが読み出される。
【0028】
こうして情報処理装置1は、蓄積装置61〜64に対し、データ書き込み、読み出し命令を発行し、蓄積装置に蓄積されたファイルを管理する。なお、図1においては、蓄積装置61〜64のいずれかが故障しても他の情報領域7や退避領域8に影響を与えないようにするために、情報領域7、退避領域8がそれぞれ別々の蓄積装置61〜64に設定されているが、同一の蓄積装置に設定することも可能である。
【0029】
本発明の第一の実施形態におけるデータ管理方法は、データ書き込み処理と、情報処理装置の起動時の処理に特徴がある。従って、次にこれらの処理をフローチャートを用いて説明する。
【0030】
図2は、本発明の第一の実施形態における書き込み処理の動作を説明するフローチャートである。まず、蓄積装置6への書き込み命令が発行される(S21)。CPU2は書き込み命令を発行し、IOコントローラ4は退避領域8への書き込み命令に変換する。
【0031】
退避領域8に書き込むデータは、例えば、更新対象のファイルの更新差分データや、新規データ等である。本明細書においては、以降退避領域8に書き込むデータをログデータと呼ぶことにする。
【0032】
次に、退避領域8にログデータを蓄積可能な空き領域があるかをすべての退避領域で判定する(S22)。第一の実施形態における空き領域とは、データが蓄積されていない領域を意味する。ステップS22では、ログデータを格納できるだけの空き領域が退避領域81、82に残されているかをCPU2が判定すればよい。例えば、退避領域に残された空き領域のサイズがログデータのデータサイズを上回るかが判定される。OSの機能によってCPU2はこれらの情報を取得することができ、判定が可能である。
【0033】
ステップS22ですべての退避領域8に空き領域があると判定された場合、退避領域8へログデータを書き込む(S23)。CPU2は、複数の退避領域81、82に対して並列に書き込み命令を発行する。そしていずれかの退避領域8へのログデータの書き込みが完了したか判定する(S24)。ステップS24では、
蓄積装置63か64のいずれかが書き込み完了を通知した場合に、CPU2がステップS26の書き込み完了と判定する。
【0034】
ステップS24でどちらの退避領域81、82への書き込みも完了しなければ、どちらか1つの退避領域8への書き込みが完了するまで待機する。そして、いずれかの退避領域81、82へのログデータの書き込みが完了した場合、そのログデータの書き込みがすべての情報領域7に対して終了したものとCPU2はみなす(S25)。CPU2は、ステップS21で発生した書き込み命令が完了したものとみなし、書き込み要求をしたエンドユーザ(アプリケーション等)に書き込み命令の完了を通知する。後述する起動時の処理あるいは後述するライトバッファのフラッシュ(ステップS28の処理)を行うことにより、いずれかの退避領域にログデータがあれば、データの整合性を保つことが可能なため、情報領域への書き込み前に情報領域への書き込み完了とみなすことができ、書き込みを要求したエンドユーザに対する応答時間を短縮することができる。
【0035】
ステップS25は、複数の退避領域のいずれかに対するログデータの書き込み完了をもって、情報領域への書き込み完了とみなすだけなので、ログデータを書き込み中の退避領域では、書き込みが続行される。ステップS25により、いずれかの退避領域でログデータを書き込み中であっても、CPU2はそのすべての書き込み完了を待ち合わせることなく、ログデータの情報領域への書き込みをスケジューリングすることができる。
【0036】
ステップS25が済むと、情報領域へのログデータの書き込みがスケジューリングされる(S26)。ステップS26では、決められた時間にログデータが対応するファイルに書き込まれるようCPU2がスケジューリングする。スケジューリングされた時間に、CPU2は書き込み命令を発行し、IOコントローラ4が対応するファイルが格納された情報領域71、72に書き込みを行う。
【0037】
そして、実際に情報領域への書き込みが完了したか判定し、情報領域への書き込みが完了すれば(S27)、書き込み処理を終了する。ステップS27は、ステップS26で書き込みを行った情報領域を含む蓄積装置6が書き込み完了を通知した場合に、CPU2がステップS27の書き込み完了と判定すればよい。
【0038】
ステップS22でいずれかの退避領域にて空き領域が無いと判定された場合、退避領域に空き領域を確保するための処理を行う。まず、ライトバッファに蓄積されたデータを強制的に情報領域へ書き込む(S28)。
【0039】
ライトバッファはメモリ3に確保され、ステップS26でスケジュールはされたがまだ実行されていない書き込みに関するデータ(例えば、更新対象のファイル名とそのファイルに対応するログデータ等)が格納される。そして、ステップS27の情報領域への書き込み完了によってライトバッファは解放される。空き領域を確保するには、ログデータがすべて情報領域に反映されており、退避領域に蓄積されているログデータが反映すべきデータではない、つまり反映すべきデータから除外されている必要がある。
【0040】
ログデータを情報領域に反映する前に削除、あるいは上書きしてしまうとファイルの整合性が保てなくなるためである。従って、ステップS28でライトバッファに格納されたログデータを情報領域へ書き込みむことによって、ログデータが削除されても上書きされてもいい状態にする。
【0041】
そして、対応するファイルが格納された情報領域7への書き込みが完了した後、空き領域の確保が行われる(S30)。ステップS30では、退避領域81、82に蓄積されたログデータを反映すべきデータから除外するため、ログデータをすべて削除するようCPU2が命令を発行すればよい。
【0042】
ステップS28により反映すべきログデータはすべて情報領域7に反映されており、この時点でログデータを削除しても問題はない。ステップS30の終了後は、ステップS23へ進み空になった退避領域へログデータの書き込みを行うことができる。
【0043】
なお、本実施形態においては、退避領域が2つの場合を説明したが、退避領域が2つ以上存在しても図2を適用することができる。
【0044】
以上に説明した第一の実施形態の書き込み処理により、ログデータは従来のRAID1(ミラーリング)とは異なる方法で冗長化される。即ち、CPU2はすべての退避領域に対する書き込み完了時ではなくいずれかの退避領域に対する書き込み完了時に、書き込み要求をしたエンドユーザに書き込み完了を通知する。従って、エンドユーザに対する書き込みの応答時間が短縮される。また、エンドユーザに対する書き込み完了通知後もすべての退避領域に対しログデータの書き込みが続行されるため、ログデータの冗長化も実現される。
【0045】
また、従来のミラーリングによる冗長化方法とは異なるため、冗長化された退避領域8間で同期を取る必要もない。さらに、各ミラーにおいて変更箇所をマップ情報として記録し、再起動時にマップ情報を参照し、変更箇所のみミラー間の同期を取ることでデータの整合性を保つDRL(Dirty Region Logging)も、前述したように退避領域間で同期を取る必要性がないことから、必要ない。また、RAID5でのパリティの計算等も必要ないので、RAIDを使用する方法より書き込みを高速化できる。
【0046】
続いて、第一の実施形態における起動時の処理について説明する。
【0047】
図3は、本発明の第一の実施形態における情報処理装置を起動する時の処理を説明するフローチャートである。この処理は、情報処理装置1に電源を入れ初期化する際や、システムトラブルなどによる再起動時に退避領域に蓄積された反映すべきログデータを情報領域に反映することによって、データの整合性を保つものである。
【0048】
まず、退避領域81、82から最新のログデータを保持する退避領域を特定する(S31)。最新のログデータを保持する退避領域とは、最後に書き込まれたログデータの書き込みが完了している退避領域を意味する。退避領域8へのログデータの書き込みは並列に実行され、書き込み状態に差が出ないのが理想だが、実際は蓄積装置6に対する書き込み性能や情報処理装置1の負荷状況によって、十分な時間が経てばどちらの退避領域81、82にも同じログデータが蓄積されるとしても、あるタイミングにおいては、一方の退避領域ではログデータの書き込みが完了し、他方の退避領域ではまだ書き込み中となる場合がある。
【0049】
その状態で電源断等が発生した場合、次に起動させても退避領域のログデータは違いが生じたままである。そこで、最新のログデータを情報領域に反映して、データの整合性を保つためにステップS31を実行する。ステップS31は、例えば、OSの機能によって退避領域に最後にログデータが書き込まれた時間がわかるので、その時間が最も遅いログデータを含む退避領域8をCPU2が1つ選択すればよい。
【0050】
そして、ステップS31で特定された退避領域8に反映すべきログデータが存在するか判定する(S32)。第一の実施形態では、空き領域を確保するため反映済みのログデータをすべて削除するため(ステップS30)、退避領域8にログデータが残されていれば、それはすべて反映すべきログデータと判定できる。そこで例えば、ステップS32は、CPU2がステップS31で特定された退避領域に対して読み出し命令を発行し、読み出されるデータがあるかないかでログデータの有無を判定すればよい。
【0051】
ステップS32で反映すべきログデータが存在する場合、情報領域へのログデータの書き込みがスケジューリングされる(S26)。ステップS26は、ステップS22で空き領域がある場合に行われるステップS26と同じ処理を行う。そして情報領域への書き込み完了(S27)により起動時の処理を終了する。ステップS27は、ステップS22で空き領域がある場合に行われるステップS27と同じ処理を行う。
【0052】
ステップS32で退避領域にログデータが全く蓄積されていない場合、その退避領域はスキップされ、すべての退避領域に全くログデータが蓄積されていない場合は、そのまま起動時の処理を終了する。
【0053】
以上に説明した、第一の実施形態の書き込み処理および起動時の処理によって、退避領域に対するログデータの書き込み中に、情報処理装置1がクラッシュして再起動した場合、いずれか1つの退避領域に最新のログデータが残されていれば、そのログデータを再起動時に情報領域に反映することによってクラッシュ前のデータと整合性を保つことができる。また、どこにもログデータが残されていなければ、情報領域へのログデータの書き込みは完了しており、何もせずにデータの整合性が保たれる。
【0054】
また、情報処理装置1が稼動中に退避領域81、82のどちらかが故障しても、稼動中は、スケジュールされたタイミングや退避領域に空き領域が無くなったタイミングで、退避領域のログデータが情報領域に反映される。従って、本発明の第一の実施形態によってデータの整合性を保つデータ管理方法を高信頼化することができる。
【0055】
続いて本発明の第二の実施形態を説明する。第二の実施形態では、図1のブロック図と同じ構成の情報処理装置と蓄積装置を用いるが、第一の実施形態と異なり、情報領域71、72に蓄積されるデータが冗長化される。すなわち、第一の実施形態においては、情報領域71、72のどちらかにデータが書き込まれたが、同じデータが情報領域71、72に対して並列に書き込まれる。その書き込み方法は、退避領域に対する書き込み方法と同様であって、RAIDを使用しないものである。
【0056】
また、第一の実施形態と異なり、退避領域に蓄積されるログデータがヘッダ情報によって管理され、どのログデータが情報領域に反映されたかが管理される。また、ヘッダ情報の使用により、退避領域を循環型(退避領域の末尾までデータを蓄積したらデータを削除することなく先頭から上書きする方法)の領域として使用することが可能になる。そこでまず、第二の実施形態において使用される退避領域のデータ構成例を説明する。
【0057】
図4は、本発明の第二の実施形態において退避領域に蓄積されるデータのデータ構成例を示す図である。退避領域81、82のどちらにも、図4の構成をしたデータが蓄積される。各退避領域には、図4にあるようにログヘッダ44と複数のログ43が格納される。
【0058】
各ログ43には、ログ43の開始と終了を示すスタートビット45、エンドビット50が記録され、その間にログレコード51とログデータ49が格納される。ログ43は、スタートビット45から記録され、最後にエンドビット50が記録されることで初めて有効になる。
【0059】
このため、ログデータ49を記録中に情報処理装置1が停止した場合は、エンドビット50の記録がない(閉じていない)ログ43が退避領域に残される。スタートビット45とエンドビット50が共に存在しているログ43だけが有効とみなされ、エンドビット50が無く閉じていないログ43は、無効とみなされる。
【0060】
ログデータ49は、第一の実施形態のステップS21で説明したログデータそのものである。各ログデータ49に対して、1、2、3、、、と1ずつ増加するように番号付けがされ、その番号はログ43を特定するシークエンス番号として、ログレコード51のシークエンス番号(SEQ)46に格納される。ログレコード51には他に、ログ43全体の大きさ(SIZE)47、ログデータ49のサイズ(BSIZE)48が格納される。
【0061】
ログヘッダ44の最新シークエンス番号(SSEQ)41には、最後に情報領域に反映させたログ43を特定するシークエンス番号が格納される。また、退避領域は所定の大きさごとに番地付けされており、番地により退避領域内の位置が特定される。ログヘッダ44のオフセット(SOFFSET)42には、最後に情報領域に反映させたログデータ49を含むログの次のログ43の開始番地が格納される。
【0062】
第二の実施形態においては、情報処理装置の稼動中はメモリ3に、退避領域に最後に書き込んだログを特定するシークエンス番号、退避領域に最後に書き込んだログの次のログの退避領域での開始番地を特定するオフセット、情報領域に最後に反映させたログの次のログの退避領域での開始番地を特定するオフセットが退避領域毎に格納されるものとする。情報領域にログデータを反映させる際(例えば、ライトバッファのフラッシュ時)に、メモリ上のシークエンス番号がログヘッダ44の最新シークエンス番号41に、メモリ上の最後に情報領域に反映させたログの次のログの開始番地を特定するオフセットがログヘッダ44のオフセット42に格納される。
【0063】
図4において、ログヘッダ44を除いた領域には、ログが循環して蓄積される。即ち、末尾にログ43nが記録された後、次のログを書き込む場合、そのまま先頭(図4ではログ431の位置)から次のログを上書きする。反映すべきデータを誤って上書きすることを防ぐために、ログを書き込む前に空き領域の有無を判定し、反映すべきデータが残っていれば、情報領域への反映を先に行うため、誤って上書きする問題も起きない。
【0064】
退避領域に蓄積されるデータ構成を図4のようにした場合、次のようにして反映すべきデータの特定を行うことができる。まず反映すべきデータが存在するかどうかを次のようにして判定することができる。それは、オフセット(SOFFSET)42で特定される位置のログ43のシークエンス番号が、最新シークエンス番号(SSEQ)41のシークエンス番号以下かどうかを判定することにより行われる。即ち、オフセット(SOFFSET)42により特定されるログのシークエンス番号46が最新シークエンス番号41以上であれば、そのログは最後に情報領域に反映が行われた後に退避領域に蓄積されたログデータを含み、反映すべきデータが存在することがわかる。
【0065】
次に反映すべきデータを特定する。反映すべきデータは、オフセット42で特定されるログからログを1つずつ読み出して、各ログレコード51のシークエンス番号が開始位置のシークエンス番号から1ずつ単調増加する連番ではなくなるログまでのデータとして特定される。
【0066】
次に、図4を利用した本発明の第二の実施形態の書き込み処理と起動時の処理をフローチャートを用いて説明する。
【0067】
図5は、本発明の第二の実施形態における書き込み処理の動作を説明するフローチャートである。第二の実施形態における書き込み処理は、第一の実施形態における書き込み処理と一部重複するため、同じ処理には同じステップ番号が振られており、重複する箇所は説明が省略される。
【0068】
まず、蓄積装置6への書き込み命令が発生する(S21)。ステップS21は、図2のステップS21と同じ処理を行う。次に、退避領域8に空き領域があるかをすべての退避領域で判定する(S22)。第二の実施形態においては、第一の実施形態と異なり、ヘッダ情報によりログデータが反映すべきデータかが管理され、ログデータを削除せず上書きするため、第二の実施形態における空き領域は、退避領域にて反映すべきログデータを含むログを除いた部分を意味する。
【0069】
従って、ステップS22では、退避領域に反映すべきログデータが存在するか判定し、反映すべきログデータが無ければ、空き領域があることになる。反映すべきログデータがある場合は、退避領域のサイズから、ログヘッダ44のサイズ、反映すべきログデータを含むログ43のサイズ、ログ1つ分のログレコード、ログ1つ分のスタートビット、エンドビットのサイズを引いたサイズが、書き込むログデータのサイズを上回るか判定し、上回れば空き領域があることになる。下回れば、空き領域がないと判定される。CPU2は退避領域からログヘッダ44およびログレコード51を読み出すことによりこれらの判定が可能である。
【0070】
ステップS22で空き領域があると判定された場合、退避領域へログデータを書き込む(S23)。ステップS23は、第一の実施形態における図2のステップS23と同じ処理を行う。そしていずれかの退避領域へのログデータの書き込みが完了したか判定する(S24)。ステップS24は、第一の実施形態における図2のステップS24と同じ処理を行う。
【0071】
ステップS24で、どの退避領域への書き込みも完了しなければ、いずれか1つの退避領域への書き込みが完了するまで待機する。いずれかの退避領域81、82へのログデータの書き込みが完了した場合、そのログデータの書き込みがすべての情報領域7に対して終了したものとCPU2はみなす。(S25)CPU2は、ステップS21で発生した書き込み命令が完了したものとみなし、書き込み要求をしたエンドユーザ(アプリケーション等)に書き込み命令の完了を通知する。
【0072】
ステップS25は、第一の実施形態における図2のステップS25と同じものである。ステップS25が済むと、情報領域へログデータの書き込みがスケジューリングされる(S26)。第二の実施形態のステップS26では、第一の実施形態と異なり、データを冗長化するためにCPU2が情報領域71、72に対して並列に書き込みを行うようスケジューリングする。
【0073】
そしてすべての情報領域71、72に対する書き込みが完了したか判定する(S51)。ステップS51では、蓄積装置61、62が情報領域への書き込み完了を通知した場合に、CPU2がステップS26の書き込み完了と判定すればよい。
【0074】
すべての情報領域71、72への書き込みが完了しなければ、すべての情報領域7への書き込みが完了するまで待機する。すべての情報領域への書き込みが完了すれば(S27)、書き込み処理を終了する。ステップS27では、例えば蓄積装置6がすべての情報領域への書き込み完了を通知した場合に、CPU2がステップS27の書き込み完了と判定してもよい。
【0075】
ステップS22で、いずれかの退避領域81、82にて空き領域が無いと判定された場合、退避領域に空き領域を確保するための処理を行う。まず、ライトバッファに蓄積されたデータを強制的に情報領域へ書き込む(S28)。これは、図2のステップS28の処理と同じである。
【0076】
次に、ログデータを情報領域71、72の両方に対して書き込みが完了したか判定する(S51)。すべての情報領域への書き込みが実際に完了した後でなければ、空き領域の確保を行うことができない。
【0077】
例えば、情報領域71へのログデータの反映が完了した時、情報領域72ではまだログデータが書き込まれているとする。その時点で退避領域81、82からログデータを削除すると、情報領域71が故障した場合、その後再起動しても情報領域72に反映させるべきログデータが残されていないことになるからである。
【0078】
ステップS51では、蓄積装置6がすべての情報領域への書き込み完了を通知した場合に、CPU2がステップS26の書き込み完了と判定してもよい。ステップS51でまだいずれかの情報領域7に対してログデータの書き込みが行われている間は特に何もしない。ステップS51で情報領域71、72の両方に対してログデータの書き込みが終了した場合、次に空き領域の確保を行う(S30)。
【0079】
すべての情報領域に対するログデータの反映が済めば、そのログデータは反映すべきデータから除外され、ログデータを上書きしても構わない。第一の実施形態においては、空き領域の確保をするためログデータを削除したが、第二の実施形態においては、ログデータを反映すべきデータから除外するために、すべての退避領域8のログヘッダ44のオフセット42を、ステップS28において反映が完了したログデータ49を含むログ43の次のログ43が記録される開始番地に、そしてログヘッダ44の最新シークエンス番号41をメモリ3に格納された最後に情報領域に書き込んだログのシークエンス番号にそれぞれCPU2が更新する。メモリ3には、退避領域毎にこれらの情報が格納されており、対応するデータが各退避領域のログヘッダに書き込まれる。
【0080】
ステップS30の終了後は、ステップS23に進み空き領域の確保された退避領域に対してログデータを上書きすることができる。
【0081】
また、本実施形態においては、退避領域が2つの場合を説明したが、退避領域が2つ以上存在しても図5を適用することができる。また、情報領域が2つ以上存在している場合にも図5の適用が可能である。
【0082】
以上に説明した第二の実施形態の書き込み処理により、ログデータは従来のRAID1(ミラーリング)とは異なる方法で冗長化される。即ち、CPU2はすべての退避領域に対する書き込み完了時ではなくいずれかの退避領域に対する書き込み完了時に、書き込み要求をしたエンドユーザに書き込み完了を通知する。従って、エンドユーザに対する書き込みの応答時間が短縮される。また、エンドユーザに対する書き込み完了通知後もすべての退避領域に対しログデータの書き込みが続行されるため、ログデータの冗長化も実現される。
【0083】
また、従来のミラーリングによる冗長化方法とは異なるため、冗長化された退避領域間で同期を取る必要もない。さらに、各ミラーにおいて変更箇所をマップ情報として記録し、再起動時にマップ情報を参照し、変更箇所のみミラー間の同期を取ることでデータの整合性を保つDRL(Dirty Region Logging)も、前述したように退避領域間で同期を取る必要性がないことから、必要ない。また、RAID5でのパリティの計算等も必要ないので、RAIDを使用する方法より書き込みを高速化できる。
【0084】
続いて、第二の実施形態における起動時の処理について説明する。
【0085】
図6は、本発明の第二の実施形態における情報処理装置を起動する時の処理を説明するフローチャートである。この処理は、情報処理装置に電源を入れ、計算機システムを初期化する際や、システムトラブルなどによる再起動時に退避領域に蓄積された反映すべきログデータを情報領域に反映することによって、データの整合性を保つものである。
【0086】
まず、退避領域81、82から最新シークエンス番号が最も大きいものを特定する(S61)。CPU2が各退避領域8の最新シークエンス番号41に記録されたシークエンス番号を比較し、その最も大きなものを特定すればよい。そして、ステップS31で特定された最新シークエンス番号を利用し、各退避領域に反映すべきデータが存在するか判定する(S62)。
【0087】
ステップS62は、図4において説明したように、各退避領域において、ログヘッダ44に記録されたオフセット42により特定されるログのシークエンス番号46が、ステップS61で特定された最も大きな最新シークエンス番号以上かを判定すればよい。前者が後者以上であれば反映すべきデータが存在することになる。ステップS62でいずれかの退避領域に反映すべきデータが存在する場合、反映すべきデータが存在すると判定された退避領域にてログを1つ読み出す(S63)。そして、ステップS63で読み出されたログに含まれるログデータの有効性を判定する(S64)。
【0088】
ログデータの有効性は、読み出したログのログレコードに格納されたシークエンス番号が1ずつ単調増加しているかを判定する。番号が飛んでいる場合は、過去に記録されたデータであり情報領域に反映すべき有効なデータではないことになる。オフセット42により特定される最初に読み出されるログのシークエンス番号が基準となるため、この最初に読み出されるログに関しては無条件に有効と判定される。ステップS64は、反映すべきデータが存在すると判定されたすべての退避領域にて読み出されたログが対象である。
【0089】
そして、ステップS64で有効と判定されたログが1つでもあれば、そのログに含まれるログデータを情報領域に書き込む(S65)。反映すべきデータが存在すると判定された退避領域が複数存在する場合でも、ステップS65では有効と判定されたいずれかのログデータを1回情報領域に書き込めばよい。そして、ステップS65が済むと、ステップS63に戻り次のログを読み出す。
【0090】
ステップS62ですべての退避領域において反映すべきデータが存在しない場合と、ステップS64で読み出されたすべてのログが有効でない場合は、各退避領域のログヘッダを初期化し(S66)、起動時の処理を終了する。ステップS66のログヘッダの初期化は、例えば、最新シークエンス番号を0にリセットし、オフセット42をログが記録される領域の先頭番地(図4でいうログ431を特定する番地)とすればよい。
【0091】
なお、情報領域が2つ以上存在している場合にも図6の適用が可能である。その場合、ステップS34で書き込む対象の情報領域が複数になるだけである。
【0092】
以上に説明した第二の実施形態の書き込み処理および起動時の処理によって、退避領域に対するログデータの書き込み中に、情報処理装置1がクラッシュして再起動した場合、どこか1つの退避領域にログデータが残されていれば、そのログデータを再起動時に情報領域に反映することによってクラッシュ前のデータと整合性を保つことができる。
【0093】
また、反映すべきログデータがなければ、何もせずにデータの整合性が保たれる。また、退避領域81、82のどちらかが故障しても、残された反映すべきログデータを情報領域7に反映させることによりデータの整合性は保たれる。
【0094】
また、冗長化された情報領域71、72へのログデータの反映中に情報処理装置がクラッシュして再起動した場合、すべての情報領域71、72のへのログデータの反映が完了するまでは、ログデータは削除されないので、残されたログデータを再度情報領域71、72へ反映することによってデータの整合性を保つことができる。従って、本発明の第二の実施形態によってデータの整合性を保つデータ管理方法を高信頼化することができる。
【0095】
また、特に第二の実施形態においては、退避領域に蓄積されるログデータをログヘッダにより管理することにより、ログを循環型の記録領域として利用することができ、少ない容量で退避領域を実装できる。また、空き領域の確保をする際データを削除することなく、ログヘッダの更新だけをすればよいので、処理が高速化される。これは、退避領域が複数存在する場合に有効である。
【0096】
なお、第二の実施形態において、ログデータをログヘッダにより管理せず、第一の実施形態のように単純にログデータを退避領域に蓄積させ、空き領域を確保する際に、反映済みのログデータを削除するようにしても本発明のデータ管理方法を実施することは可能である。また、情報領域が複数であったとしても第二の実施形態を適用することが可能である。
【0097】
また、第一および第二の実施形態において実行される工程をプログラムにして、CPU2に実行させることで本発明を実施することも可能である。
【0098】
【発明の効果】
以上説明した本発明の実施形態によれば、退避領域を複数有することにより、そのいずれかの退避領域が故障しても、残りの退避領域を基にログデータを情報領域に反映させることができ、データの整合性を保つデータ管理方法を高信頼化することができる。また、すべての書き込みが完了するのを待ち合わせるのではなく、いずれか1つの退避領域に対するログデータの書き込みが完了すれば、情報処理装置1はエンドユーザに対する書き込み完了を通知でき、応答時間が短縮される。また、従来RAID1において、再起動時にミラーされたボリュームの同期が取れているかを示すダーティリージョンログなどを必要としないため、このデータ管理方法ではより高速である。起動時には、ログに残されたデータのみを反映するだけでデータの整合性を保つことができ、高速である。
【図面の簡単な説明】
【図1】本発明の第一の実施形態における情報処理装置と蓄積装置を示すブロック図である。
【図2】本発明の第一の実施形態における書き込み処理の動作を説明するフローチャートである。
【図3】本発明の第一の実施形態における情報処理装置を起動する時の処理を説明するフローチャートである。
【図4】本発明の第二の実施形態において退避領域に蓄積されるデータのデータ構成例を示す図である。
【図5】本発明の第二の実施形態における書き込み処理の動作を説明するフローチャートである。
【図6】本発明の第二の実施形態における情報処理装置を起動する時の処理を説明するフローチャートである。
【図7】ジャーナルファイルシステムを説明する図である。
【符号の説明】
1 情報処理装置、2 CPU、3 メモリ、31 オペレーティングシステム、4 IOコントローラ、5 中継装置、6 蓄積装置、7 情報領域、8 退避領域、41 最新シークエンス番号、42 オフセット、43 ログ、44 ログヘッダ、45 スタートビット、46 シークエンス番号、47 ログサイズ、48 ログデータサイズ、49 ログデータ、50 エンドビット
Claims (8)
- 情報処理装置に接続され、情報領域と複数の退避領域を備える蓄積装置に蓄積されるデータの管理方法であって、
前記複数の退避領域に対してデータの書き込みを並列に行い、
前記書き込みがいずれかの退避領域に対して完了したかを判定し、
いずれかの退避領域に対して前記書き込みが完了した時、前記情報処理装置に前記情報領域に対する前記データの書き込み完了が通知され、
いずれかの退避領域に対して前記書き込みが完了した後、前記情報領域に対して前記データの書き込みを行うことを特徴とするデータ管理方法。 - 請求項1において、
前記複数の退避領域に対してデータの書き込みを並列に行う際、前記複数の退避領域のそれぞれに対し、前記データを蓄積可能な空き領域があるかを判定し、いずれかの退避領域にて前記データを蓄積可能な空き領域がない場合、前記情報領域に対して反映すべきデータがあるかを判定し、
前記反映すべきデータがある場合、前記反映すべきデータを前記情報領域へ書き込み後、前記複数の退避領域に蓄積されたデータを前記反映すべきデータから除外することを特徴とするデータ管理方法。 - 請求項1において、
さらに、前記複数の退避領域に蓄積されたデータのうち前記情報領域に対して反映すべきデータを特定するためのヘッダ情報が各退避領域に記録され、
前記複数の退避領域に対してデータの書き込みを並列に行う際、前記複数の退避領域のそれぞれに対し、前記データを蓄積可能な空き領域があるかを判定し、いずれかの退避領域にて前記データを蓄積可能な空き領域がない場合、前記反映すべきデータがあるかを判定し、
前記反映すべきデータがある場合、前記反映すべきデータを前記情報領域へ書き込み後、前記複数の退避領域に蓄積されたデータを前記反映すべきデータから除外するように前記ヘッダ情報を更新することを特徴とするデータ管理方法。 - 請求項1において、
さらに、前記情報処理装置の起動時に、前記複数の退避領域に蓄積されたデータのうち最新データを保持する退避領域を選択し、
前記選択された退避領域において前記情報領域に反映すべきデータが蓄積されているかを判定し、
前記反映すべきデータが蓄積されている場合、前記情報領域に対して該反映すべきデータの書き込みを行うことを特徴とするデータ管理方法。 - 情報処理装置に接続され、複数の情報領域と複数の退避領域を備える蓄積装置に蓄積されるデータの管理方法であって、
前記複数の退避領域に対してデータの書き込みを並列に行い、
前記書き込みがいずれかの退避領域に対して完了したかを判定し、
いずれかの退避領域に対して前記書き込みが完了した時、前記情報処理装置に前記複数の情報領域に対する前記データの書き込み完了が通知され、
いずれかの退避領域に対して前記書き込みが完了した後、前記複数の情報領域に対して前記データの書き込みを並列に行うことを特徴とするデータ管理方法。 - 請求項5において、
さらに、前記情報処理装置の起動時に、前記複数の退避領域において前記複数の情報領域に反映すべきデータが蓄積されているかを判定し、
前記反映すべきデータが蓄積されている場合、前記複数の情報領域に対して該反映すべきデータの書き込みを並列に行い、
すべての情報領域に対して該書き込みが完了した場合、前記複数の退避領域に蓄積されたデータを前記反映すべきデータから除外することを特徴とするデータ管理方法。 - 情報領域と複数の退避領域を備える蓄積装置に接続された情報処理装置に、
前記複数の退避領域に対してデータの書き込みを並列に実行させ、
前記書き込みがいずれかの退避領域に対して完了したかを判定させ、
いずれかの退避領域に対して前記書き込みが完了した後、前記情報領域に対して前記データの書き込みを実行させるプログラム。 - 請求項7において、
さらに、前記情報処理装置の起動時に、前記複数の退避領域に蓄積されたデータのうち最新データを保持する退避領域を選択させ、
前記選択された退避領域において前記情報領域に反映すべきデータが蓄積されているかを判定させ、
前記反映すべきデータが蓄積されている場合、前記情報領域に対して該反映すべきデータの書き込みを実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003087967A JP2004295563A (ja) | 2003-03-27 | 2003-03-27 | データの整合性を保つための高信頼化されたデータ管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003087967A JP2004295563A (ja) | 2003-03-27 | 2003-03-27 | データの整合性を保つための高信頼化されたデータ管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004295563A true JP2004295563A (ja) | 2004-10-21 |
Family
ID=33402221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003087967A Withdrawn JP2004295563A (ja) | 2003-03-27 | 2003-03-27 | データの整合性を保つための高信頼化されたデータ管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004295563A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007323377A (ja) * | 2006-06-01 | 2007-12-13 | Sony Corp | 記録装置、管理データの書き込み方法および管理データの修復方法 |
JP2010128765A (ja) * | 2008-11-27 | 2010-06-10 | Kyocera Communication Systems Co Ltd | データベース装置 |
JP2013105342A (ja) * | 2011-11-14 | 2013-05-30 | Fujitsu Ltd | データ管理方法及びデータ管理システム |
JP2013210919A (ja) * | 2012-03-30 | 2013-10-10 | Nec Corp | レプリケーション装置、レプリケーション方法及びプログラム |
-
2003
- 2003-03-27 JP JP2003087967A patent/JP2004295563A/ja not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007323377A (ja) * | 2006-06-01 | 2007-12-13 | Sony Corp | 記録装置、管理データの書き込み方法および管理データの修復方法 |
JP2010128765A (ja) * | 2008-11-27 | 2010-06-10 | Kyocera Communication Systems Co Ltd | データベース装置 |
JP2013105342A (ja) * | 2011-11-14 | 2013-05-30 | Fujitsu Ltd | データ管理方法及びデータ管理システム |
JP2013210919A (ja) * | 2012-03-30 | 2013-10-10 | Nec Corp | レプリケーション装置、レプリケーション方法及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4727437B2 (ja) | データベースを有するストレージシステムの記憶制御方法 | |
US9053075B2 (en) | Storage control device and method for controlling storages | |
EP1481324B1 (en) | Producing a mirrored copy using incremental-divergence | |
US6681339B2 (en) | System and method for efficient failover/failback techniques for fault-tolerant data storage system | |
US8074035B1 (en) | System and method for using multivolume snapshots for online data backup | |
US8762648B2 (en) | Storage system, control apparatus and control method therefor | |
US20100114847A1 (en) | Methods and Apparatuses for Data Protection | |
JP6064608B2 (ja) | ストレージ装置、バックアッププログラム、およびバックアップ方法 | |
US20070028045A1 (en) | Method for improving writing data efficiency and storage subsystem and system implementing the same | |
JPH07239799A (ja) | 遠隔データ・シャドーイングを提供する方法および遠隔データ二重化システム | |
JP2001166993A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
JP2004348193A (ja) | 情報処理システムおよびそのバックアップ方法 | |
JP2005276196A (ja) | ドライブ故障に続いてドライブリカバリを行うためのシステムおよび方法 | |
US20030212870A1 (en) | Method and apparatus for mirroring data stored in a mass storage system | |
JP2006134217A (ja) | ライブラリシステム,仮想ライブラリ装置,及びキャッシュ復元方法 | |
JP2012507788A (ja) | ストレージ・エリア・ネットワークを使用してコンピュータシステムを復旧するための方法およびシステム | |
JP2010049438A (ja) | 省電力バックアップ管理方法 | |
JP2014142852A (ja) | ストレージシステムおよび制御装置 | |
US7836215B2 (en) | Method for providing high performance storage devices | |
US7055055B1 (en) | Write cache flushing method for reducing data corruption | |
US20090177916A1 (en) | Storage system, controller of storage system, control method of storage system | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
JPH10326220A (ja) | ファイルシステムおよびファイル管理方法 | |
EP1090348B1 (en) | Method and apparatus for dealing with data corruption and shared disks in the context of saving, using and recovering data | |
JP2004295563A (ja) | データの整合性を保つための高信頼化されたデータ管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060606 |