JP6245700B2 - 計算機システム、データの検査方法及び計算機 - Google Patents

計算機システム、データの検査方法及び計算機 Download PDF

Info

Publication number
JP6245700B2
JP6245700B2 JP2014082174A JP2014082174A JP6245700B2 JP 6245700 B2 JP6245700 B2 JP 6245700B2 JP 2014082174 A JP2014082174 A JP 2014082174A JP 2014082174 A JP2014082174 A JP 2014082174A JP 6245700 B2 JP6245700 B2 JP 6245700B2
Authority
JP
Japan
Prior art keywords
data
stored
page
request
schedule
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.)
Active
Application number
JP2014082174A
Other languages
English (en)
Other versions
JP2015203927A (ja
Inventor
和生 合田
和生 合田
喜連川 優
優 喜連川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Tokyo NUC
Original Assignee
University of Tokyo NUC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by University of Tokyo NUC filed Critical University of Tokyo NUC
Priority to JP2014082174A priority Critical patent/JP6245700B2/ja
Priority to US15/303,345 priority patent/US10452644B2/en
Priority to PCT/JP2015/002032 priority patent/WO2015156000A1/ja
Publication of JP2015203927A publication Critical patent/JP2015203927A/ja
Application granted granted Critical
Publication of JP6245700B2 publication Critical patent/JP6245700B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データの関連性を検査する技術に関する。
計算機システムでは、複数のデータを必要に応じて関連付けて記憶装置に格納することによって効率的に管理することができる。例えば、大容量のデータを格納する場合には、データを分割して格納することによってデータの格納効率を向上させることができる(特許文献1参照)。また、分割されたデータの管理情報を別途管理し、データの読み出し要求を受け付けた場合には、分割されたデータを結合して当該データを提供する。
特開平07−141232号公報
しかしながら、格納されたデータの関連性を検査するためにはデータの格納領域全体にアクセスしなければならない場合があるため、データの格納領域の拡大にともなって検査時間が増大するおそれがあった。
本発明の目的は、データの関連性の検査に要する時間の増大を抑制することである。
本発明のある態様によれば、記憶装置によって構成される記憶領域を提供するストレージ装置と、データを管理する計算機とを備える計算機システムであって、前記記憶領域には、複数のデータが記憶され、前記複数のデータは、他のデータに関連付けられたデータを含み、前記計算機は、前記データが他のデータに正常に関連付けられているか否かを検査し、前記検査の実行要求よりも前記記憶領域に格納されたデータを読み書きする要求を優先して処理する。
本発明の代表的な実施形態によると、データの関連性の検査に要する時間の増大を抑制することができる。
本発明の第1実施形態のネットワークファイルシステムの構成を示す図である。 本発明の第1実施形態におけるファイルを格納する構造を説明する図であり、ファイルが正常に格納されている状態を示している。 本発明の第1実施形態におけるファイルを格納する構造を説明する図であり、ファイル(データ)の格納情報に不整合が発生している状態を示している。 本発明の第1実施形態のファイルシステムボリュームに格納されたファイルの一貫性検査を実行するための手順を示すフローチャートである。 本発明の第1実施形態のファイルの一貫性を検査する手順を示すフローチャートである。 本発明の第1実施形態においてエラー内容を検査結果表に保存する処理の手順を示すフローチャートである。 本発明の第1実施形態の検査結果表の一例を示す図である。 本発明の第1実施形態の一貫性検査を実行するためのスレッドを生成する手順を示すフローチャートである。 本発明の第1実施形態の一貫性検査を実行するためのスレッドを再開する手順を示すフローチャートである。 本発明の第1実施形態の資源余力表の一例を示す図である。 本発明の第1実施形態のスレッドの生成を待機させるキューの構造を説明する図である。 本発明の第1実施形態のスケジュール待ちキューに格納されたタスクを発行待ちキューに移動させる手順を示すフローチャートである。 本発明の第2実施形態のデータベースシステムの構成を示す図である。 本発明の第2実施形態のデータベースシステムにおけるデータ構造を説明する図であり、データが正常に格納されている状態を示している。 本発明の第2実施形態のデータベースシステムにおけるデータ構造を説明する図であり、データの格納情報に不整合が発生している状態を示している。 本発明の第2実施形態のデータベースシステムにおけるデータモデルを説明する図であり、データが正常に格納されている状態を示している。 本発明の第2実施形態のデータベースシステムにおけるデータモデルを説明する図であり、データの格納情報に不整合が発生している状態を示している。
(第1実施形態)
本発明の第1実施形態におけるネットワークファイルシステム(計算機システム)では、クライアント300がアプリケーションプログラム321によって業務処理を実行し、ネットワークファイルシステムサーバ100を介して当該業務処理に必要なデータを読み書きする。以下、本発明の第1実施形態におけるネットワークファイルシステムの構成について説明する。
図1は、本発明の第1実施形態のネットワークファイルシステムの構成を示す図である。
本発明の第1実施形態のネットワークファイルシステムは、ネットワークファイルシステムサーバ100、外部ストレージ装置200及びクライアント300を含む。ネットワークファイルシステムサーバ100は、複数であってもよく、単数に限られない。また、外部ストレージ装置200は、システム内に複数備えられるようにしてもよい。さらに、クライアント300の数は任意である。
ネットワークファイルシステムサーバ100は、外部ストレージ装置200に格納されたファイル(データ)を管理する。外部ストレージ装置200は、クライアント300によってアクセスされるファイル(データ)を格納する。クライアント300は、ネットワークファイルシステムサーバ100を介して外部ストレージ装置200に格納されたファイル(データ)にアクセスする。
ネットワークファイルシステムサーバ100は、ネットワーク10を介してクライアント300に接続される。ネットワーク10は、例えば、インターネットプロトコル(IP)ネットワークである。
また、ネットワークファイルシステムサーバ100は、ネットワーク20を介して外部ストレージ装置200に接続する。ネットワーク20は、ネットワーク10と共通であってもよいし、例えば、ファイバーチャネル(FC)プロトコルが適用されるストレージエリアネットワーク(SAN)であってもよい。ネットワークファイルシステムサーバ100と外部ストレージ装置200との間をSANで接続することによって、信頼性を向上させながら大量のデータを高速に送受信することが可能となる。
続いて、ネットワークファイルシステムサーバ100、外部ストレージ装置200及びクライアント300の詳細を説明する。まず、ネットワークファイルシステムサーバ100について説明する。
ネットワークファイルシステムサーバ100は、クライアント300から要求されたファイル(データ)を外部ストレージ装置200から取得し、当該クライアント300に送信する。
ネットワークファイルシステムサーバ100は、CPU110、メモリ120、ネットワークインターフェイス(I/F)130及びネットワークファイルアクセスインターフェイス(I/F)170を備える。CPU110、メモリ120、ネットワークI/F130及びネットワークファイルアクセスI/F170は、内部バスによって接続される。
CPU110は、メモリ120に記憶されたプログラム(図示せず)を実行することによって、クライアント300から要求された処理、又は、入力装置(図示せず)を介して管理者から指示された処理を実行する。
メモリ120は、CPU110によって実行されるプログラムと、当該プログラムの実行に必要なデータなどを記憶する。さらに、外部ストレージ装置200とクライアント300との間で送受信されるデータを一時的に記憶する。
また、メモリ120は、外部ストレージ装置200によって提供される記憶領域を管理するファイルシステム150を記憶する。ファイルシステム150は、図示しないオペレーティングシステムによって提供される機能であってもよいし、単体のプログラムなどであってもよい。また、分散ファイルシステムのように、複数の計算機にまたがって構成されていてもよい。さらに、メモリ120は、外部ストレージ装置200によって提供される記憶領域にアクセスするためのソフトウェアであるドライバ160を記憶する。
ファイルシステム150には、ファイルアクセス管理部151、一貫性検査部152、入出力制御部153が含まれる。ファイルアクセス管理部151は、ファイルシステム150によって管理されるファイルのアクセス要求を管理する。例えば、クライアント300から送信されたファイルアクセス要求を受け付け、当該受け付けた要求を入出力制御部153に入力する。なお、ファイルアクセス要求そのものではなく、要求内容に応じて定義された当該ファイルの入出力要求を含むタスクを入力するようにしてもよい。タスクは、外部ストレージ装置200に対する入出力処理の他に、出力されたファイル(データ)の加工など応答結果に基づく処理などを含む。
一貫性検査部152は、後述するファイルシステムボリューム210に格納されたファイルの一貫性(整合性)を検査する。一貫性検査は、ファイル毎に実行してもよいし、記憶領域(論理ボリューム)毎に実行してもよい。一貫性検査部152は、コマンド入力などによって一貫性検査要求(検査要求)を受け付けると、受け付けられた一貫性検査要求を入出力制御部153に入力する。
入出力制御部153は、ファイルアクセス管理部151又は一貫性検査部152から要求の入力を受け付け、当該要求に基づくタスクの実行によりファイルシステムボリューム210にアクセスする順序、すなわち、要求の処理順序を決定する。そして、決定された順序でCPU110がタスクを実行し、入出力要求を外部ストレージ装置200に発行する。なお、具体的な手順については後述する(図11、図12)。
本発明の第1実施形態では、ネットワーク10及びネットワーク20は、異なるネットワークを構成しており、ネットワークファイルシステムサーバ100は、各ネットワークに接続するためのインターフェイスをそれぞれ備えている。なお、ネットワーク10及びネットワーク20は同じであってもよく、この場合にはネットワークに接続するインターフェイスを共通にしてもよい。
ネットワークI/F130は、ネットワーク10に接続するためのインターフェイスである。例えば、ネットワークインターフェイスカードなどである。一方、ネットワークファイルアクセスI/F170は、ネットワーク20に接続するためのインターフェイスである。ネットワーク20が前述したSANである場合には、ネットワークファイルアクセスI/F170は、例えば、ホストバスアダプタ(HBA)である。
続いて、外部ストレージ装置200について説明する。外部ストレージ装置200は、ファイルシステムボリューム210、ディスク制御コントローラ250及びディスクインターフェイス(I/F)260を備える。
ファイルシステムボリューム210は、クライアント300によってアクセスされるファイルを格納する記憶領域である。また、ファイルシステムボリューム210は、複数の記憶装置によって構成された論理的なボリュームである。ファイルシステムボリューム210を複数の記憶装置で構成することによって、大容量の記憶領域を提供することが可能となっている。
ファイルシステムボリューム210を構成する記憶装置は、例えば、ハードディスクドライブ(HDD)、光ディスクドライブ、半導体記憶装置(ソリッドステートドライブ;SSD)などの不揮発性記憶媒体である。また、複数の記憶装置によってディスクアレイを構成するようにしてもよい。
ファイルシステムボリューム210には、各ファイルの名前、格納位置などを含むメタ情報211と、外部から読み書きされるデータであるファイル(データ)212とが格納される。
ディスク制御コントローラ250は、ファイルの読み書きなどの制御を実行する。例えば、ネットワークファイルシステムサーバ100から送信された入出力要求に基づいて、ファイルシステムボリューム210に格納されたファイルを読み書きする。また、ファイルの更新、削除、移動などにともなって、メタ情報211を更新する。
ディスクI/F260は、ネットワーク20を介してネットワークファイルシステムサーバ100に接続するためのインターフェイスである。
続いて、クライアント300について説明する。クライアント300は、CPU310、メモリ320及びネットワークインターフェイス(I/F)330を備える。
CPU310は、メモリ320に記憶されたプログラムを実行することによって各種処理を実行する。メモリ320は、CPU310によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。CPU310によって実行されるプログラムには、業務処理を実行するためのアプリケーションプログラム321と、アプリケーションプログラム321が各種資源(リソース)を利用するためのインターフェイスを提供したり、リソースを管理したりするためのオペレーティングシステム(OS)322とが含まれる。
ネットワークI/F330は、ネットワーク10に接続するためのインターフェイスであり、ネットワークファイルシステムサーバ100に備えられたネットワークI/F130と同様でよい。なお、ネットワーク10に有線で接続するようにしてもよいし、無線で接続するようにしてもよい。
以上、本発明の第1実施形態におけるネットワークファイルシステムの構成について説明した。続いて、本発明の第1実施形態のネットワークファイルシステムにおいて、管理対象のファイル(データ)を格納する構造について説明する。
図2及び図3は、本発明の第1実施形態におけるファイルを格納する構造を説明する図である。図2はファイルが正常に格納されている状態を示し、図3はファイル(データ)の格納情報に不整合が発生している状態を示している。
まず、本発明の第1実施形態のファイルシステムにおいてファイルを格納するためのデータ構造について説明する。本発明の第1実施形態のファイルシステムに格納されたファイルは、ファイル管理表(管理情報)220によって管理される。
ファイル管理表220には、ファイルを一意に識別するファイル識別子(File ID)221及びファイルが格納されたページ(ページ領域)を示すページ識別子(Page ID)222が含まれる。
また、ファイルがディレクトリに格納されている場合には、ファイル識別子221がディレクトリのInode番号(Inode ID)231としてディレクトリ管理表230に格納される。さらに、当該ファイルが格納されているディレクトリのパス名(Path)232がInode番号231と関連付けられて格納されている。
なお、ファイル管理表220及びディレクトリ管理表230は、外部ストレージ装置200のファイルシステムボリューム210に記憶されたメタ情報211に含まれるようにしてもよいし、ネットワークファイルシステムサーバ100に保持されるようにしてもよい。また、複数の外部ストレージ装置200のメタ情報を管理するための計算機をネットワークファイルシステムに備えるようにしてもよい。
本発明の第1実施形態では、ファイル(データ)は、ページ単位に分割されて格納される。各ページには、分割されたページの位置を指し示す参照ポインタ(P)と、ファイルの内容(コンテンツ)が格納されたページの位置を指し示す実体ポインタ(P)とが含まれる。参照P及び実体Pは参照先のページのページ識別子に対応し、図2及び図3では、理解しやすいように、ポインタ(アドレス)とページ識別子とが一致するようにしている。
また、参照Pの参照先のページには、参照Pと実体Pが含まれる。また、実体Pの参照先のページには、分割されたファイルの内容(コンテンツ)が格納される。
なお、図2に示すように参照先のポインタとコンテンツのいずれか一方のみがページに格納されるのではなく、参照先のポインタとコンテンツの両方が格納されるようにしてもよい。このように構成することによってページの構造が統一されるので、ファイルにアクセスする処理を簡略化することが可能となる。
ここで、図2を参照しながらデータ構造を具体的に説明すると、まず、ファイル管理表220には、ファイル識別子221として「9001」、ページ識別子222として「101」が設定されたレコードが格納されている。また、ファイル識別子221が「9001」のファイル(以下、「ファイル9001」と表現する)は、ディレクトリ「/data/data01」に格納されている。そこで、ディレクトリ管理表230には、Inode番号231にファイル識別子221である「9001」が設定されたレコードが格納されており、パス名として「/data/data01」が設定される。
ページ識別子222が「101」のページ(以下、「ページ101」と表現する)には、参照P「111」「112」、実体P「113」が設定されている。同様に、ページ111には参照P「121」及び実体P「122」、ページ112には参照P「131」及び実体P「132」、さらに、ページ121には参照P「141」及び実体P「142」、ページ131には参照P「151」及び実体P「152」が設定されている。したがって、ファイル9001の実体は、ページ113、ページ122、ページ132、ページ142、ページ152、・・・に分割して格納されている。
以上、図2を参照しながらファイル9001が正常に格納されている状態を説明した。次に、ファイル9001の格納位置を示す情報(参照P)に不整合が発生している状態を示す場合について図3を参照しながら説明する。
図3に示すように、ファイル管理表220及びディレクトリ管理表230は、図2に示した例と同様である。また、ページ101も正常な場合と同様であるが、ページ111の参照Pが指し示すページ121では、ページそのものが欠落しており、内容を参照することができなくなっている。さらに、ページ112の参照Pは不正なポインタ(−1)となっており、参照先のページを特定することができなくなっている。
ファイルが正常に格納されている場合には、ファイル管理表220に格納された先頭ページに対応するページ識別子222から参照Pをたどり、実体Pの参照先のページに格納されたコンテンツを結合することによってファイルを取得することが可能となっている。しかしながら、図3に示すように、参照Pの参照先のページが欠落していたり、参照Pの値が不正であった場合には、ファイルを正常に読み出すことができなくなってしまう。本発明の第1実施形態における一貫性検査は、ファイルを構成するコンテンツを格納するページが正常に登録されているか否かを判定する検査である。
なお、本発明の第1実施形態では、各ファイルは、各ページを節点とし、参照P又は実体Pによるページ間の接続(参照)を枝とする木構造を形成している。また、一のファイルについて一の木が対応するように構成されており、各ファイルに対応する木は、ファイル管理表220にファイルと対応付けられて格納されたページ識別子222に対応するページに対応する節点を根とする。さらに、図2及び図3に示した例では、参照先のポインタ又はコンテンツのいずれか一方がページに格納されるため、葉となる節点にはコンテンツが格納される。
以下、ファイルの格納情報が正常であるか否かを検査する手順について説明する。ファイルシステムの一貫性(整合性)検査は、通常、オペレーティングシステムの機能として提供される。例えば、UNIX(登録商標)関連のOSではfsckコマンド、Windows(登録商標)ではScandiskコマンドとしてファイルの一貫性を検査する機能が提供される。これらのコマンドには、ファイルに不整合が生じている場合(ファイルの一貫性が損なわれている場合)に修復を試みる機能が含まれている。
図4は、本発明の第1実施形態のファイルシステムボリューム210に格納されたファイルの一貫性検査を実行するための手順を示すフローチャートである。本処理は、システムの起動、又は、一貫性検査の実行を要求するコマンドの入力を契機にネットワークファイルシステムサーバ100によって実行され、外部ストレージ装置200に格納された各ファイルの一貫性を検査する。また、図4に示すフローチャートでは、ファイル管理表220に含まれるすべてのファイルに対して一貫性検査を実行するように構成されているが、ファイル又はディレクトリを指定して一貫性検査を実行するようにしてもよい。
ネットワークファイルシステムサーバ100のCPU110は、ファイルシステムボリューム210の一貫性検査が開始されると、一貫性検査の結果を記録する検査結果表140を初期化する(S1001)。検査結果表140は、ファイルシステム150に記憶するようにしてもよいし、外部ストレージ装置200のメタ情報211の一部として記憶してもよい。なお、ファイルシステム150に記憶する場合には、ネットワークファイルシステムサーバ100に備えられた図示しない不揮発性の記憶装置に記憶するようにしてもよい。なお、検査結果表140の内容については後述する(図7)。
次に、CPU110は、外部ストレージ装置200に格納されたメタ情報211のファイル管理表220を検索し、検査対象のファイルを選択する(S1002)。続いて、選択されたファイルに対し、当該ファイルの格納情報が整合しているか否かを検査する一貫性検査を実行する(S1003)。なお、一貫性検査の詳細な手順については後述する(図5)。
CPU110は、検査対象のファイルの一貫性検査が終了すると、未検査のファイルが残っているか否かを判定する(S1004)。未検査のファイルが残っている場合には(S1004の結果が「T」)、次の検査対象のファイルを選択し(S1005)、当該ファイルに対する一貫性検査を実行する(S1003)。
以上のようにして、すべての検査対象のファイルの一貫性検査が終了すると(S1004の結果が「F」)、CPU110は、検査結果表140を出力し(S1006)、本処理を終了する。
ここで、本発明の第1実施形態の外部ストレージ装置200は、前述のように、複数の記憶装置で記憶領域を構成することで、記憶装置単体では提供できない大容量の領域を提供することが可能となっている。また、ストレージ装置の信頼性(耐障害性)を向上させるために、複数の記憶装置によって冗長性を持たせた構成とする場合もある。このように構成された記憶領域では、一のファイルのコンテンツを格納する各ページが複数の記憶装置に分散して格納される場合がある。そこで、異なる記憶装置に格納されたページを検査する場合には、各ページを並列して検査することによって一貫性検査を高速化することができる。以下、ファイルの一貫性検査の手順について具体的に説明する。
図5は、本発明の第1実施形態のファイルの一貫性を検査する手順を示すフローチャートである。本処理は、ネットワークファイルシステムサーバ100によって実行され、外部ストレージ装置200に格納されたファイル毎の一貫性を検査する処理である。
ネットワークファイルシステムサーバ100のCPU110は、まず、メタ情報211のファイル管理表220を参照し、検査対象のファイルの根(ルート)となるページのページ識別子222を取得する(S1101)。さらに、取得したページ識別子222に基づいて、対応するページを読み込む(S1102)。
次に、CPU110は、読み込まれたページが正当か否かを判定する(S1103)。例えば、不良セクタなどによって参照ポインタ又は実体ポインタが指し示すページに記憶された内容を読み込むことができない場合には、ページが正当でないと判断する。読み込まれたページが正当でない場合には(S1103の結果が「N」)、エラー内容を保存する処理を実行する(S1104)。エラー内容を保存する処理については後述する(図6)。
一方、CPU110は、読み込まれたページが正当である場合には(S1103の結果が「T」)、読み込まれたページに参照先となる別ページのページ識別子が含まれているか否かを判定する(S1105)。別ページのページ識別子は、前述のように、参照ポインタ又は実体ポインタである。CPU110は、別ページのページ識別子が含まれていない場合には(S1105の結果が「F」)、本処理を終了する。
CPU110は、読み込まれたページに別ページのページ識別子が設定されている場合には(S1105の結果が「T」)、別ページのページ識別子が正当であるか否かを判定する(S1106)。ページ識別子に対応するページが存在しないなど、別ページのページ識別子が正当でない場合には(S1106の結果が「F」)、エラー内容を保存する処理を実行し(S1107)、S1109以降の処理を実行する。
CPU110は、別ページのページ識別子が正当である場合には(S1106の結果が「T」)、別ページを対象とする一貫性検査を実行するためのスレッドを生成する(S1108)。そして、生成されたスレッドで別ページを根(ルート)とした一貫性検査を実行する(S1111〜S1116)。詳細については後述する。
CPU110は、別ページの一貫性検査を実行するためのスレッドを生成すると、当該スレッドで実行された一貫性検査が終了するまで待機せずに、読み込まれたページに他のページ識別子が含まれているか否かを判定する(S1109)。
CPU110は、読み込まれたページに他のページ識別子が含まれている場合には(S1109の結果が「T」)、他のページ識別子についてS1106以降の処理を実行する。一方、読み込まれたページに他のページ識別子が含まれていない場合には(S1109の結果が「F」)、本処理を終了する。
ここで、S1108の処理で生成されたスレッドで実行される一貫性検査について説明する。本発明の第1実施形態では、複数のスレッドを並列して生成可能となっており、ページ毎の一貫性検査を再帰的に実行することによって、複数のページに対する一貫性検査を並列して処理することが可能となっている。
S1108の処理で別ページのページ識別子に基づいてスレッドが起動されると、CPU110は、当該別ページのページ識別子に基づいて対応するページを読み込む(S1111)。続いて、読み込まれたページが正当か否かを判定する(S1112)。S1112の処理は、S1103の処理と同様である。
CPU110は、読み込まれたページが正当でない場合には(S1112の結果が「N」)、エラー内容を保存する処理を実行する(S1113)。一方、読み込まれたページが正当である場合には(S1112の結果が「T」)、読み込まれたページにさらに別ページを参照するページ識別子が含まれているか否かを判定する(S1114)。
CPU110は、読み込まれたページに別ページを参照するページ識別子が含まれていない場合には(S1114の結果が「F」)、本処理を終了する。このとき、本処理を実行するために生成されたスレッドを消滅させることでメモリの消費を抑制する。
また、CPU110は、読み込まれたページに別ページを参照するページ識別子が含まれている場合には(S1114の結果が「T」)、別ページを参照するページ識別子が正当であるか否かを判定する(S1115)。別ページのページ識別子が正当でない場合には(S1115の結果が「F」)、エラー内容を保存する処理を実行し(S1116)、S1118以降の処理を実行する。
CPU110は、別ページのページ識別子が正当である場合には(S1115の結果が「T」)、別ページを対象とする一貫性検査を実行するためのスレッドをさらに生成し(S1117)、一貫性検査を行うS1111からS1118までの一連の処理を実行する。なお、S1111からS1118までの一連の処理を、一貫性検査を行うための「タスク」とする。本発明の第1実施形態では、1スレッド上で1タスクが実行され、完結する(別のタスクを実行するために、新たにスレッドを生成する場合を含む)。タスクには、一貫性検査の他に、通常のファイルアクセスを行うための処理なども含まれる。
CPU110は、さらに、読み込まれたページに他のページ識別子が含まれているか否かを判定する(S1118)。そして、他のページ識別子が含まれている場合には(S1118の結果が「T」)、他のページ識別子について、スレッドを新たに生成して一貫性検査を行うタスクを実行する。一方、他のページ識別子が含まれていない場合には(S1118の結果が「F」)、本処理を終了する。
以上のように、本発明の第1実施形態では、一貫性検査を実行するためのスレッドを生成すると、当該スレッドで実行された一貫性検査が完了するまで待機せずに、ページ毎の一貫性検査を再帰的に実行する。このように、複数の一貫性検査を並列して実行することによって、検査に要する時間を短縮することが可能となる。
本発明の第1実施形態では、データを格納するページが正常に設定されているか否か、すなわち、ページ識別子の参照先のページが正常であるか(存在するか)、ページ識別子そのものが正常であるかを、ネットワークファイルシステムサーバ100が判定している。これに対し、外部ストレージ装置200のディスク制御コントローラ250がデータを格納するページが正常に設定されているか否かを判定するようにしてもよい。また、ファイルシステムボリューム210のメタ情報211にファイル管理表220が含まれている場合には、外部ストレージ装置200が一貫性検査を実行し、検査結果表を生成するようにしてもよい。
さらに、外部ストレージ装置200のディスク制御コントローラ250が、ファイル管理表220等の一貫性検査に必要な情報を管理し、さらに、図5のフローチャートに示した処理を実行するようにしてもよい。このように構成することによって、外部ストレージ装置200が一貫性検査を含むデータ(ファイル)の一貫性の管理を行うことが可能となり、ネットワークファイルシステムサーバ100の負荷を低減することができる。
また、本発明の第1実施形態では、スレッドを無制限に生成するのではなく、ネットワークファイルシステムサーバ100の資源(リソース)などに依存して生成数などを制限し、制限を超えた数のスレッドの生成は待機させる。なお、スレッドの生成数の制限及び生成されたスレッドの実行順序等の制御については後述する(図8〜図12)。
続いて、検査結果表140の生成及び内容について説明する。図6は、本発明の第1実施形態においてエラー内容を検査結果表140に保存する処理の手順を示すフローチャートである。図7は、本発明の第1実施形態の検査結果表140の一例を示す図である。
ネットワークファイルシステムサーバ100のCPU110は、検査結果表140に発生したエラーの内容を書き込む(S1201)。具体的には、図7に示すように、エラーが発生したファイルの識別子(File ID)141、参照元のページ142、参照先のページ(参照先のPage ID)143、参照結果(エラーの種類)144が保存される。
また、参照結果には、図7に示すように、ページの不正、参照先のページ識別子の不正等がある。ページの不正では、ページを格納する領域が物理的に破損している場合などが含まれる。参照先のページ識別子が不正では、ページ識別子に対応するページが存在しない場合などが含まれる。
以上のように、ページ毎に一貫性検査を実行し、検査結果表140を作成することによって、エラーが発生したページを特定することができる。そして、検査結果表140を参照しながらファイルの修復などの処理を実行することが可能となる。
ここで、スレッド生成数の制限について説明する。本発明の第1実施形態では、ネットワークファイルシステムサーバ100及びネットワーク20などの資源の余力(性能)が記録された資源余力表180(図10)に基づいてスレッドの生成可否を決定する。スレッドの生成が許可されなかった場合には、生成可能となるまで待機させる。以下、詳細について説明する。
図8は、本発明の第1実施形態の一貫性検査を実行するためのスレッドを生成する手順を示すフローチャートである。
ネットワークファイルシステムサーバ100のCPU110は、まず、資源余力表180を参照し(S2001)、一貫性検査を実行するための所定の制約条件を満たすか否かを判定する。具体的には、一貫性検査を実行するために割当可能な資源余力が存在するか否か、又は、一貫性検査実行時に使用中の資源の総量が所定の最大資源(閾値)を超えるか否かを判定する(S2002)。
所定の制約条件としては、例えば、同時に実行(生成)するスレッドの数、CPU110の使用率などのネットワークファイルシステムサーバ100の資源に関する制約、ストレージ装置200との間の転送帯域などのネットワーク資源に関する制約などが含まれる。資源及び当該資源の制約条件の具体的な例については後述する(図10)。
CPU110は、一貫性検査の実行に割当可能な資源余力又は最大資源を超えない場合には(S2002の結果が「F」)、スレッドを生成し(S2003)、一貫性検査を行うためのタスクを実行する。一方、一貫性検査の実行に割当可能な資源余力又は最大資源を超えてしまう場合には(S2002の結果が「T」)、スレッドの生成を保留し、生成可能となるまで待機させるためのキューに、当該スレッドで実行されるタスクを格納する(S2004)。なお、一貫性検査を実行するための一連の手順(タスク)をあらかじめ定義し、キューには一貫性検査の対象となるページの識別子を格納するようにしてもよい。
続いて、キューに格納されたスレッドを再開(生成)するための手順について説明する。図9は、本発明の第1実施形態の一貫性検査を実行するためのスレッドを再開する手順を示すフローチャートである。
ネットワークファイルシステムサーバ100のCPU110は、まず、キューにスレッド生成待ちのタスクが存在するか否かを判定する(S2101)。存在しない場合には(S2101の結果が「F」)、本処理を終了する。
一方、CPU110は、キューにスレッド生成待ちのタスクが存在する場合には(S2101の結果が「T」)、キューの先頭に格納されたタスクを取得する(S2102)。そして、図8に示した場合と同様に、資源余力表180を参照し(S2103)、スレッドを生成してタスク(一貫性検査)を実行することにより、当該一貫性検査の実行に割当可能な資源余力又は最大資源を超えるか否かを判定する(S2104)。
CPU110は、一貫性検査の実行に割当可能な資源余力又は最大資源を超えない場合には(S2104の結果が「F」)、スレッドを生成し(S2105)、タスク(一貫性検査)を実行する。一方、タスク(一貫性検査)の実行に割当可能な資源余力又は最大資源を超えてしまう場合には(S2104の結果が「T」)、スレッドの生成を保留し、生成可能となるまで待機させるための再びキューに当該タスクを格納する(S2106)。
以上が、スレッドを生成する手順である。続いて、スレッドの生成を許可するか否かを決定するための資源余力表180について説明する。図10は、本発明の第1実施形態の資源余力表180の一例を示す図である。
本発明の第1実施形態では、入出力処理帯域、転送帯域、同時入出力発行数、同時実行スレッド数、CPU使用率の5種類の項目に基づいて、スレッドを生成するか否かを判定する。さらに別の項目に基づいてスレッドの生成可否を判断してもよい。
また、これらの項目について、システムが利用可能な最大資源である「システムが保持する性能資源(A)」、外部ストレージ装置200に格納されたファイルにアクセスするために利用される資源である「ファイルアクセスによる利用資源(B)」があらかじめ設定される。また、「システムが保持する性能資源(A)」から「ファイルアクセスによる利用資源(B)」を減算することによって、「一貫性検査のために割当可能な資源余力(A)−(B)」を算出することができる。さらに、ファイルアクセスに必要な資源も含めて「一貫性検査のために割当可能な最大資源(C)」が設定される。
本発明の第1実施形態では、前述のように、スレッド生成前(又は生成後)の資源の消費量が「一貫性検査のために割当可能な資源余力(A)−(B)」及び「一貫性検査のために割当可能な最大資源(C)」を超えない場合に、スレッドの生成が許可される。以下、各項目について説明する。
入出力処理帯域は、ネットワークファイルシステムサーバ100が外部ストレージ装置200に1秒間で送信可能な入出力要求の数である。システムが保持する性能資源(A)は50000IO/sとなっており、ファイルアクセスによる利用資源(B)は20000IO/sとなっている。したがって、一貫性検査のために割当可能な資源余力は30000MB/sとなる。さらに、一貫性検査のために割当可能な最大資源(C)は、40000MB/sとなっている。
転送帯域は、ネットワークファイルシステムサーバ100と外部ストレージ装置200との間で1秒間に転送可能なデータ量である。システムが保持する性能資源(A)は5000MB/sとなっており、ファイルアクセスによる利用資源(B)は2500MB/sとなっている。したがって、一貫性検査のために割当可能な資源余力は2500MB/sとなる。さらに、一貫性検査のために割当可能な最大資源(C)は、4000MB/sとなっている。
同時入出力発行数は、外部ストレージ装置200に対して同時に発行される入出力要求の数である。システムが保持する性能資源(A)は1000IOsとなっており、すなわち、最大1000件の入出力要求を同時に発行することが可能となっている。また、ファイルアクセスによる利用資源(B)は、200IOsとなっている。したがって、一貫性検査のために割当可能な資源余力は800IOsとなる。さらに、一貫性検査のために割当可能な最大資源(C)は、800IOsとなっている。
同時実行スレッド数は、ネットワークファイルシステムサーバ100が実行(生成)可能なスレッドの数である。システムが保持する性能資源(A)は800Threadsとなっており、ファイルアクセスによる利用資源(B)は150Threadsとなっている。したがって、一貫性検査のために割当可能な資源余力は650Threadsとなる。さらに、一貫性検査のために割当可能な最大資源(C)は、600Threadsとなっている。
CPU使用率は、ネットワークファイルシステムサーバ100のCPU110の使用率である。システムが保持する性能資源(A)は100%となっており、ファイルアクセスによる利用資源(B)は10%となっている。したがって、一貫性検査のために割当可能な資源余力は90%となる。さらに、一貫性検査のために割当可能な最大資源(C)は、80%となっている。
なお、システムが使用中の資源量の取得は、オペレーティングシステムにあらかじめ用意されているコマンドを利用してもよいし、同等の機能を実装してもよい。
続いて、スレッドの生成を待機させる構成について説明する。図11は、本発明の第1実施形態のスレッドの生成を待機させるキューの構造を説明する図である。
クライアント300から外部ストレージ装置200に格納されたファイルに対するアクセス要求が送信されると、ネットワークファイルシステムサーバ100は、ファイルアクセス管理部151によって当該アクセス要求を受け付ける。ファイルアクセス管理部151は、アクセス要求を受け付けると、当該受け付けられたアクセス要求を入出力制御部153に引き渡す。
また、ネットワークファイルシステムサーバ100は、外部ストレージ装置200によって提供される記憶領域の一貫性検査要求を一貫性検査部152が受け付ける。一貫性検査部152は、一貫性検査要求を受け付けると、当該受け付けられた一貫性検査要求を入出力制御部153に引き渡す。
入出力制御部153は、優先度が設定された複数のスケジュール待ちキュー154と、スレッドの生成を待機させる発行待ちキュー155とを備える。発行待ちキュー155に格納された要求を処理することによって、ファイルシステムボリューム210に対する入出力要求を発行する。
入出力制御部153は、ファイルアクセス管理部151から受け付けられたアクセス要求を、優先度の高いスケジュール待ちキュー154に格納する。一方、一貫性検査部152から受け付けられた一貫性検査要求を、優先度の低いスケジュール待ちキュー154に格納する。なお、ファイルのアクセス要求及び記憶領域の一貫性検査要求に対し、個別に優先度を設定するようにしてもよい。
スケジュール待ちキュー154にファイルのアクセス要求又は記憶領域の一貫性検査要求が格納されると、入出力制御部153は、要求の種類等に基づいてスケジュール待ちキュー154から要求を選択し、選択された要求を発行待ちキュー155に移動させる。スケジュール待ちキュー154から発行待ちキュー155に要求を移動させる手順については後述する(図12)。そして、発行待ちキュー155の先頭から取り出された要求を処理することによってファイルシステムボリューム210に入出力要求を発行する。
図12は、本発明の第1実施形態のスケジュール待ちキュー154に格納された要求を発行待ちキュー155に移動させる手順を示すフローチャートである。なお、スケジュール待ちキュー154に格納された要求を発行待ちキュー155に移動させるタイミングは、例えば、発行待ちキュー155に格納された要求が所定数以下になった場合であってもよいし、生成されているスレッドの数が所定数以下になった場合であってもよい。
ネットワークファイルシステムサーバ100のCPU110は、まず、高優先度のスケジュール待ちキュー154に要求があるか否かを判定する(S2201)。高優先度のスケジュール待ちキュー154に要求がある場合には(S2201の結果が「T」)、高優先度のスケジュール待ちキュー154から最大M個の要求を取り出す(S2202)。
一方、CPU110は、高優先度のスケジュール待ちキュー154に要求がない場合には(S2201の結果が「F」)、低優先度のスケジュール待ちキュー154に要求があるか否かを判定する(S2203)。低優先度のスケジュール待ちキュー154に要求がない場合には(S2203の結果が「F」)、スケジュール待ちキュー154に要求が含まれていないので、本処理を終了する。
また、CPU110は、低優先度のスケジュール待ちキュー154に要求がある場合には(S2203の結果が「T」)、低優先度のスケジュール待ちキュー154から最大N個の要求を取り出す(S2204)。このとき、MとNは同じ値であってもよいし、優先度の高い要求を処理できるように、NをMよりも小さい値としてもよい。
CPU110は、スケジュール待ちキュー154から取り出された要求を並び替える(S2205)。例えば、優先度の高い要求ほど早く処理するように順序を決定する。また、優先度が同じ場合には、後続の処理が多い(残りの処理時間の多い)要求を優先するようにしてもよいし、発行待ちキュー155に含まれる要求を最小化するために後続の処理が少ない(残りの処理時間の少ない)要求を優先するようにしてもよい。
また、発行待ちキュー155に要求が含まれている場合には、取り出された要求と、発行待ちキュー155に含まれている要求とを合わせて並べ替えをしてもよい。
最後に、CPU110は、並び替えられた要求を発行キューに格納し(S2206)、本処理を終了する。発行キューに格納された要求は、スレッドの生成が可能になると、キューの先頭から順次取り出され、生成されたスレッドで処理される。そして、生成されたスレッドにおいて、外部ストレージ装置200に入出力要求が発行(送信)され、入出力要求に対する応答が処理される。
ファイルの入出力要求の場合には、スレッド毎にページ単位でファイルのコンテンツが取得される。このとき、取得された各コンテンツを結合してファイルを生成した後、クライアント300に送信するようにしてもよいし、ファイルを生成せずに分割された状態でクライアント300に送信し、クライアント300で結合するようにしてもよい。
一方、記憶領域の一貫性検査要求の場合には、前述のように、スレッド毎に検査結果表140に検査結果を書き出す。そして、指定された記憶領域の一貫性検査が終了した後、検査結果表140を出力する。
なお、入出力制御部153のスケジュール待ちキュー154及び発行待ちキュー155には、ファイルのアクセス要求又は記憶領域の一貫性検査要求の代わりに各要求に対応するタスクを格納するようにしてもよい。
以上のように、本発明の第1実施形態によれば、一貫性検査をページ毎に並列して処理することが可能であるため、各ページに対して順次検査する場合と比較して高速に一貫性検査を行うことができる。特に、外部ストレージ装置200が提供する記憶領域を構成する記憶装置の数が多くなるほど処理の並列性を高めることが可能となる。
なお、本発明の第1実施形態では、記憶領域単位で一貫性検査を実行する例について説明したが、ファイル単位又はディレクトリ単位で一貫性検査を行うようにしてもよい。
以上説明した第1実施形態では、ネットワークファイルシステム(ネットワークアタッチトストレージ;NAS)に対して、ページ毎に並列して一貫性検査を実行する例について説明したが、外部にストレージ装置を備えずにディスクアレイ装置が接続されたアプリケーションサーバ又はデータベースサーバなどにも適用することができる。
(第2実施形態)
第1実施形態では、記憶装置に格納されたファイル(データ)の一貫性検査に本発明を適用する例について説明したが、第2実施形態では、データベースシステムによって管理されるデータの一貫性検査に本発明を適用する例について説明する。
図13は、本発明の第2実施形態のデータベースシステムの構成を示す図である。本発明の第2実施形態におけるデータベースシステムは、第1実施形態におけるネットワークファイルシステムサーバ100の代わりに、外部ストレージ装置200に格納されたデータを管理するデータベースサーバ400を備える。なお、外部ストレージ装置200及びクライアント300については、第1実施形態と共通の構成については同じ符号を割り当てる。
本実施形態では、クライアント300がアプリケーションプログラム321を実行し、データベースサーバ400によって管理されるデータにアクセスする。外部ストレージ装置200は、データベースサーバ400によって管理されるデータを格納する。なお、データベースを管理するための管理計算機を計算機システムに備えるようにしてもよい。
外部ストレージ装置200及びクライアント300の構成は第1実施形態と同様である。また、ネットワーク10及びネットワーク20についても第1実施形態と同様であり、前述のように、ネットワーク10及びネットワーク20が同じネットワークであってもよい。
データベースシステムには、関係モデルをベースとした関係データベース(RDB)、又はオブジェクトモデルをベースとしたオブジェクト指向データベースがある。本実施形態では、関係データベースを対象として説明する。
関係データベースでは、複数種類のデータによって構成されるレコード単位でデータを関係表1270に格納し、少ない入出力要求でレコードにアクセスするための索引1280を備える。索引1280のデータ構造は、本実施形態では後述するようにB+木であるが、B木であってもよいし、ハッシュであってもよい。
なお、本実施形態におけるデータベースシステムでは、関係表1270及び索引1280を外部ストレージ装置200に格納しているが、データベースサーバ400に備えられた記憶装置に関係表1270及び索引1280を格納するようにしてもよい。
データベースサーバ400は、CPU410、メモリ420、ネットワークI/F430及びホストバスアダプタ470を備える。CPU410、メモリ420、ネットワークI/F430は、第1実施形態のネットワークファイルシステムサーバ100のCPU110、メモリ120、ネットワークインターフェイス(I/F)130と同様であり、同等の機能を有する。また、ホストバスアダプタ470についても、ネットワークファイルアクセスインターフェイス(I/F)170と同様である。
データベースサーバ400は、メモリ420に記憶されたプログラムであるデータベース管理システム450を実行することによって、外部ストレージ装置200に格納されたデータを管理する。なお、第2実施形態も第1実施形態と同様にメモリ420にドライバが記憶されるが、第1実施形態と同等の機能であるため記載を省略する。
データベース管理システム450は、問合せ処理部451、データ管理部452、一貫性検査部453、入出力制御部454等を含む。
問合せ処理部451は、クライアント300から送信されたデータアクセス要求を受け付ける。データアクセス要求は、例えば、SQLによって記述される。また、問合せ処理部451は、受け付けたデータアクセス要求に基づいて、外部ストレージ装置200に格納されたデータにアクセスする。
データ管理部452は、本実施形態のデータベースシステムにおいてデータを管理するための機能(プログラム)及び管理情報を含む。管理情報には、関係表1270及び索引1280の格納位置を示す情報などが含まれる。
一貫性検査部453は、索引1280に定義された参照先のレコードが関係表1270に格納されているか否かを検査する。具体的には、索引1280に定義された参照先のレコードが関係表1270に存在するか否か、格納場所そのものが存在するか否かを検査する。詳細については、図14及び図15にて後述する。なお、索引1280の内部における索引間の一貫性を検査するようにしてもよい。
また、一貫性検査部453は、関係表1270に格納されたレコード間の関係性(参照整合性)が維持されているか否かを検査する。通常、参照整合性を破壊するレコードの更新又は削除は、データベース管理システム450(例えば、データ管理部452)によって阻止される。しかしながら、参照整合性の定義に誤りがあったり、定義そのものがなされていなかったりした場合など、関係性に不整合が生じたレコードが生成されてしまう可能性がある。本実施形態における一貫性検査部453は、このような不整合を検出する。詳細については、図16及び図17にて後述する。
入出力制御部454は、第1実施形態と同様に、外部ストレージ装置200に格納されたデータに対する入出力を制御する。具体的には、問合せ処理部451又は一貫性検査部453からの要求に基づいて、外部ストレージ装置200に格納されたデータにアクセスする。
例えば、問合せ処理の場合には、入出力制御部454がクライアント300から送信された問合せ要求を受け付け、問合せ処理部451に引き渡す。そして、問合せ処理部451が問合せ要求を処理し、問合せ結果を入出力制御部454に応答する。入出力制御部454は、問合せ結果をクライアント300に送信する。
一方、一貫性検査の場合には、入出力制御部454が管理計算機等から送信された検査要求を受け付け、一貫性検査部453に引き渡す。そして、一貫性検査部453が一貫性検査を実行し、検査結果を入出力制御部454に応答する。入出力制御部454は、検査結果を一貫性検査の要求元に送信する。
このとき、入出力制御部454は、第1実施形態と同様に、受け付けた要求(問合せ要求、検査要求)の実行順序を管理する。例えば、優先度の高いスケジュール待ちキューに問合せ要求、優先度の低いスケジュール待ちキューには検査要求を格納し、第1実施形態と同様に要求を処理するタスクを実行するためのスレッドを順次生成する。
続いて、関係表1270に格納されたレコードと索引1280のデータ構造について説明する。図14及び図15は、本発明の第2実施形態のデータベースシステムにおける関係表及び索引のデータ構造を説明する図である。図14はデータが正常に格納されている状態を示し、図15はデータの格納情報に不整合が発生している状態を示している。
本実施形態では、主キー以外の属性に索引を付与する二次索引の場合を例として説明する。二次索引では、データレコードを格納する必要はなく、キーに対し、レコードの格納情報(ポインタ、レコード識別子)を保持すればよい。
二次索引は、B+木で構成されており、ページ101が根(ルート)に対応するページとなっている。B+木では、葉(リーフ)に対応するページにのみ関係表1270のレコードの格納情報が格納される。図14及び図15では、根(ルート)であるページ101から、葉(リーフ)であるページ111及びページ112を参照している。
格納情報についてさらに説明すると、二次索引内部におけるページ間の参照はページ番号のみとなっている。一方、葉(リーフ)から関係表1270(ページ201〜ページ203)のレコードへの参照はページ番号及びスロット番号となっている。スロット番号は、ページ内でレコードが格納されている位置を示す情報である。
以上のようなデータ構造で関係表1270及び索引1280が構成される。図14を参照すると、ルートとなるページ101には、key1からkey3に対応するレコードの参照情報がページ111に格納され、key3以降に対応するレコードの参照情報がページ112に格納されることが示されている。そして、ページ111にはkey01に対応するレコードがページ番号201のスロット番号1に対応する領域に格納されていることが示されている。他のレコードについても同様に格納領域が特定されている。
これに対し、図15に示す状態では、一部のkeyに対応するレコードの格納領域を特定できない状態となっている。具体的には、ページ111においてkey02に対応するレコードが格納されている領域が「−1」となっているため、レコードの格納位置を特定することができなくなっている。また、ページ112においてkey12に対応するレコードがページ番号203のスロット番号2に対応する領域に格納されていることが示されているが、ページ203が存在していない。
本発明の第2実施形態における一貫性検査では、索引1280によってレコードの格納位置を特定することができない不整合を検出することが可能となっている。基本的には、第1実施形態(図4、図5)に示した手順と同様に処理することができる。
索引1280には複数の索引が含まれており、これらの索引はデータ管理部452によって取得することが可能となっている。そのため、索引1280に含まれる各索引(第1実施形態のファイルに対応)を順次選択して一貫性検査を実行することによって、図4のフローチャートに示した手順と同様に処理することができる。
また、索引ごとの一貫性検査についても図5のフローチャートに示した手順と同様に処理することができる。まず、検査対象の索引の根(ルート)となるページを特定し(S1101)、当該ページを読み込む(S1102)。そして、ページの正当性を判定する(S1103)。検査対象のページが他のページを参照しているか否かを判定し(S1105)、さらにページの参照先の正当性を判定する(S1106)。参照先が正当である場合には、新たにスレッドを生成し、参照先のページに対して一貫性検査を実行する(S1108)。
以上のように、データベースシステムにおける索引の一貫性検査においても本願発明を適用することができる。本発明の第2実施形態によれば、複数の記憶装置によって一の記憶領域が構成されている場合に、並列して一貫性検査を実行することが可能であるため、特に、大規模なデータベースシステムにおいて高速に検査を行うことが可能となる。そして、索引の一貫性検査を高速に完了させることが可能となるため、計算機システム全体の信頼性を向上させることができる。
続いて、関係表に含まれるレコード間の関係性に生じた不整合を検出する場合について説明する。図16及び図17は、本発明の第2実施形態のデータベースシステムにおけるデータモデルを説明する図である。図16は正常な状態(レコード間に不整合が生じていない状態)を示し、図17はレコード間に不整合が生じている状態を示している。
図16及び図17には、顧客情報を格納するCUSTOMER表と顧客の注文情報を格納するORDERS表が示されており、各表はCustIDで関係付けられている。ORDERS表に含まれるCustIDに対応するレコードをCUSTOMER表から削除すると注文に対応する顧客情報が消失してしまう。そのため、CustIDがORDERS表に含まれる場合には、通常、データベース管理システム450(データ管理部452)がCUSTOMER表から対応するレコードが削除されないように制御している。
図16を参照すると、CUSTOMER表とORDERS表の各レコードの関係性が正常な場合には、ORDERS表に含まれる各レコードに対応するCustIDを有するレコードがすべて存在している。
一方、図17に示すORDERS表には、CustIDが「106」のレコードが含まれているが、対応するCustIDのレコードはCUSTOMER表に含まれていない。そのため、CustIDが「106」に対応する注文情報に顧客情報が含まれない不完全なデータとなってしまう。
また、図16及び図17に示した例では一方の関係表が他方の関係表を参照する単純な構成であったが、一般的に、関係データベースでは、データ量を最小限に抑え、データの重複をなくすように関係表を正規化する。そのため、大規模なデータベースでは、トランザクション系の関係表で多くのマスタ系の関係表を参照する場合があり、不整合が生じているレコードを検出するために多くのコストを必要とする可能性がある。そこで、本発明の一貫性検査を適用することで、レコード間の関係の不整合を迅速に検出することが可能となる。
データベースシステムで管理される関係表のレコード間の関係は、データベースの定義情報に基づいて木構造で表現することができる。そこで、他の関係表(例えば、CUSTOMER表)を参照する関係表(例えば、ORDERS表)の各レコードを根(ルート)とすることで、第1実施形態(図4、図5)に示した手順と同様に、レコード(フィールド)ごとに一貫性検査を実行することができる。
なお、複数のレコードが一のレコードを参照する場合には、検査対象のフィールド(例えば、CustID)ごとに重複したレコードをあらかじめ除外して検査を行うようにしてもよいし、検査済みのフィールドを検査しないように制御してもよい。また、レコード(フィールド)ごとではなく、関係表ごとに一貫性検査を実行するようにしてもよい。
本発明の第2実施形態によれば、データベースシステムにおける索引と関係表のレコードとの間の整合性、及び、関係表のレコード間の整合性の検査に要する時間を短縮することができる。
以上、本発明の実施形態について説明したが、上記実施形態は本発明の適用例の一部を示したに過ぎず、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。
100 ネットワークファイルシステムサーバ
110、410 CPU
120、420 メモリ
130、430 ネットワークインターフェイス(I/F)
140 検査結果表
150 ファイルシステム
151 ファイルアクセス管理部
152 一貫性検査部
153 入出力制御部
154 スケジュール待ちキュー
155 発行待ちキュー
170 ネットワークファイルアクセスインターフェイス(I/F)
180 資源余力表
200 外部ストレージ装置
210 ファイルシステムボリューム
211 メタ情報
212 ファイル
220 ファイル管理表
230 ディレクトリ管理表
250 ディスク制御コントローラ
260 ディスクインターフェイス(I/F)
300 クライアント
400 データベースサーバ
450 データベース管理システム
451 問合せ処理部
452 データ管理部
453 一貫性検査部
454 入出力制御部
1270 関係表
1280 索引

Claims (16)

  1. 記憶装置によって構成される記憶領域を提供するストレージ装置と、データを管理する計算機とを備える計算機システムであって、
    前記記憶領域には、複数のデータが記憶され、
    前記複数のデータは、他のデータに関連付けられたデータを含み、
    前記計算機は、
    前記データが他のデータに正常に関連付けられているか否かを検査し、
    前記検査の実行要求よりも前記記憶領域に格納されたデータを読み書きする要求を優先して処理することを特徴とする計算機システム。
  2. 前記計算機は、前記データが他のデータに正常に関連付けられているか否かの検査を複数のデータで実行する場合には、一のデータの検査が完了したか否かにかかわらず、他のデータの検査を開始することを特徴とする請求項1に記載の計算機システム。
  3. 前記計算機は、
    前記計算機システムの資源情報を管理し、
    前記検査の実行時に、前記記憶領域に対する入出力要求を発行するためのタスクを生成し、
    前記資源情報に基づいて、前記タスクを実行するためのスレッドを生成するか否かを判定し、
    前記スレッドを生成しないと判定した場合には、当該スレッドの生成を保留することを特徴とする請求項1又は請求項2に記載の計算機システム。
  4. 前記計算機は、前記検査の実行要求を受け付け、当該実行要求に基づくタスクの実行スケジュールを管理する入出力制御部を備え、
    前記入出力制御部は、
    前記タスクの実行スケジュールが設定された要求を格納する発行待ちキューと、前記タスクの実行スケジュールが設定されていない要求を格納するスケジュール待ちキューと、を備え、
    前記スケジュール待ちキューに格納された要求の処理順序を決定し、
    前記処理順序が決定された要求を前記発行待ちキューに格納し、
    前記発行待ちキューに格納された要求に基づくタスクを実行するためのスレッドを順次生成することを特徴とする請求項3に記載の計算機システム。
  5. 前記スケジュール待ちキューには、第1のスケジュール待ちキューと、当該第1のスケジュール待ちキューよりも優先して要求が処理される第2のスケジュール待ちキューと、が含まれ、
    前記入出力制御部は、
    前記記憶領域に格納されたデータを読み書きする要求を受け付けた場合には、当該要求を前記第1のスケジュール待ちキューに格納し、
    前記検査の実行要求を受け付けた場合には、当該要求を前記第2のスケジュール待ちキューに格納することを特徴とする請求項4に記載の計算機システム。
  6. 前記計算機は、前記検査の実行要求を受け付け、当該実行要求に基づくタスクの実行スケジュールを管理する入出力制御部を備え、
    前記入出力制御部は、
    前記実行スケジュールが設定されたタスクを格納する発行待ちキューと、前記実行スケジュールが設定されていないタスクを格納するスケジュール待ちキューと、を備え、
    前記スケジュール待ちキューに格納されたタスクの実行順序を決定し、
    前記実行順序が決定されたタスクを前記発行待ちキューに格納し、
    前記発行待ちキューに格納されたタスクを実行するためのスレッドを順次生成することを特徴とする請求項3に記載の計算機システム。
  7. 前記スケジュール待ちキューには、第1のスケジュール待ちキューと、当該第1のスケジュール待ちキューよりも優先してタスクが実行される第2のスケジュール待ちキューと、が含まれ、
    前記入出力制御部は、
    前記記憶領域に格納されたデータを読み書きするためのタスクを、前記第1のスケジュール待ちキューに格納し、
    前記検査を実行するためのタスクを、前記第2のスケジュール待ちキューに格納することを特徴とする請求項6に記載の計算機システム。
  8. 前記データは、所定サイズのページに分割して格納され、
    前記計算機は、
    前記ページの配置を含む管理情報を管理し、
    前記管理情報に基づいて、前記検査として前記データを格納するページが正常に設定されているか否かを判定し、
    前記検査をページごとに実行することを特徴とする請求項1から請求項7のいずれか1項に記載の計算機システム。
  9. 前記ページには、前記分割されたデータの実体、又は、他のページを参照するページ識別子の少なくともいずれか一方が格納され、
    前記管理情報には、前記データを格納するページのページ識別子が含まれることを特徴とする請求項8に記載の計算機システム。
  10. 前記データは、前記ページを節点とし、当該ページに含まれるページ識別子が参照する他のページとの接続を枝とする木構造形成
    前記管理情報に含まれるページ識別子によって識別されるページは、前記木構造のに対応し
    前記木構造の葉となる節点に対応するページに前記分割されたデータの実体が格納されることを特徴とする請求項9に記載の計算機システム。
  11. 前記計算機は、前記データを管理するデータベース管理システムを実行し、
    前記データは、当該データに対応する1以上の列を含むレコードによって構成される関係表に格納され、
    前記計算機は、
    前記データと、当該データに対応する列を含むレコードの格納情報とを含む索引を管理し、
    前記検査として、前記データに対応する列を含むレコードの格納情報が前記索引に正常に設定されているか否かを判定することを特徴とする請求項1から請求項7のいずれか1項に記載の計算機システム。
  12. 前記計算機は、前記データを管理するデータベース管理システムを実行し、
    前記データは、当該データに対応する1以上の列を含むレコードによって構成される関係表に格納され、
    前記計算機は、異なる関係表に格納されたレコードに含まれるデータが対応している場合には、前記検査として、各データの対応が正常に設定されているか否かを判定することを特徴とする請求項1から請求項7のいずれか1項に記載の計算機システム。
  13. 記憶装置によって構成される記憶領域を提供するストレージ装置と、データを管理する計算機とを備える計算機システムにおける前記データの検査方法であって、
    前記記憶領域には、複数のデータが記憶され、
    前記複数のデータは、他のデータに関連付けられたデータを含み、
    前記検査方法は、
    前記計算機が、前記データが他のデータに正常に関連付けられているか否かを検査し、
    前記計算機が、前記検査の実行要求よりも前記記憶領域に格納されたデータを読み書きする要求を優先して処理することを特徴とするデータの検査方法。
  14. 前記検査を複数のデータで実行する場合には、前記計算機が、一のデータの検査が完了したか否かにかかわらず、他のデータの検査を開始することを特徴とする請求項13に記載のデータの検査方法。
  15. 記憶装置によって構成される記憶領域を提供するストレージ装置に接続され、前記記憶領域に格納されたデータを管理する計算機であって、
    前記ストレージ装置に接続されるインターフェイスと、前記データを管理するためのプログラムを記憶可能なメモリと、当該メモリに記憶されたプログラムを実行するプロセッサと、を備え、
    前記記憶領域には、複数のデータが記憶され、
    前記複数のデータは、他のデータに関連付けられたデータを含み、
    前記プロセッサは、
    前記データが他のデータに正常に関連付けられているか否かを検査し、
    前記検査の実行要求よりも前記記憶領域に格納されたデータを読み書きする要求を優先して処理することを特徴とする計算機。
  16. 前記データが他のデータに正常に関連付けられているか否かの検査を複数のデータで実行する場合には、前記プロセッサは、一のデータの検査が完了したか否かにかかわらず、他のデータの検査を開始することを特徴とする請求項15に記載の計算機。
JP2014082174A 2014-04-11 2014-04-11 計算機システム、データの検査方法及び計算機 Active JP6245700B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014082174A JP6245700B2 (ja) 2014-04-11 2014-04-11 計算機システム、データの検査方法及び計算機
US15/303,345 US10452644B2 (en) 2014-04-11 2015-04-10 Computer system, method for verifying data, and computer
PCT/JP2015/002032 WO2015156000A1 (ja) 2014-04-11 2015-04-10 計算機システム、データの検査方法及び計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014082174A JP6245700B2 (ja) 2014-04-11 2014-04-11 計算機システム、データの検査方法及び計算機

Publications (2)

Publication Number Publication Date
JP2015203927A JP2015203927A (ja) 2015-11-16
JP6245700B2 true JP6245700B2 (ja) 2017-12-13

Family

ID=54287583

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014082174A Active JP6245700B2 (ja) 2014-04-11 2014-04-11 計算機システム、データの検査方法及び計算機

Country Status (3)

Country Link
US (1) US10452644B2 (ja)
JP (1) JP6245700B2 (ja)
WO (1) WO2015156000A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6532385B2 (ja) * 2015-11-02 2019-06-19 キヤノン株式会社 情報処理システムおよびその制御方法、並びにプログラム
CN106200612B (zh) * 2016-07-07 2019-01-22 百度在线网络技术(北京)有限公司 用于测试车辆的方法和系统
WO2019097794A1 (ja) * 2017-11-20 2019-05-23 ソニー株式会社 情報処理装置、情報処理方法、および、プログラム
US10831534B2 (en) * 2018-03-12 2020-11-10 Walmart Apollo, Llc Mainframe data flow optimization for data integration
US10963299B2 (en) * 2018-09-18 2021-03-30 Advanced Micro Devices, Inc. Hardware accelerated dynamic work creation on a graphics processing unit
US11321123B2 (en) * 2019-11-21 2022-05-03 International Business Machines Corporation Determining an optimum number of threads to make available per core in a multi-core processor complex to executive tasks

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249222A (ja) * 1995-03-14 1996-09-27 Nippon Telegr & Teleph Corp <Ntt> データベース整合性チェック方法および装置
JPH09160790A (ja) * 1995-12-12 1997-06-20 Matsushita Electric Ind Co Ltd タスクスケジュール装置及びタスクスケジュール方法
CA2293167A1 (en) * 1999-12-30 2001-06-30 Nortel Networks Corporation Source code cross referencing tool, b-tree and method of maintaining a b-tree
US6799285B2 (en) * 2001-03-19 2004-09-28 Sun Microsystems, Inc. Self-checking multi-threaded processor
JP2005094096A (ja) * 2003-09-12 2005-04-07 Toshiba Corp 受信装置、伝送システム及び伝送方法
US7668845B1 (en) * 2004-02-18 2010-02-23 Microsoft Corporation C-tree for multi-attribute indexing
US7277905B2 (en) * 2004-03-31 2007-10-02 Microsoft Corporation System and method for a consistency check of a database backup
US7599949B1 (en) * 2004-04-30 2009-10-06 Unisys Corporation Database management system and method for maintaining a database in a range sensitive manner
US7363284B1 (en) * 2004-04-30 2008-04-22 Unisys Corporation System and method for building a balanced B-tree
JP4611830B2 (ja) * 2005-07-22 2011-01-12 優 喜連川 データベース管理システム及び方法
JP4736859B2 (ja) * 2006-03-02 2011-07-27 日本電気株式会社 通信装置および通信方法
US7499909B2 (en) * 2006-07-03 2009-03-03 Oracle International Corporation Techniques of using a relational caching framework for efficiently handling XML queries in the mid-tier data caching
US20080244244A1 (en) * 2007-03-30 2008-10-02 Advanced Micro Devices, Inc. Parallel instruction processing and operand integrity verification
US20080282150A1 (en) * 2007-05-10 2008-11-13 Anthony Wayne Erwin Finding important elements in pages that have changed
US7676704B2 (en) * 2007-06-29 2010-03-09 Symantec Corporation Resource management for scalable file system recovery
JP5224928B2 (ja) * 2008-06-23 2013-07-03 日本電信電話株式会社 データベース整合性チェック装置及び方法及びプログラム及びコンピュータ読取可能な記録媒体
JP5270271B2 (ja) * 2008-09-08 2013-08-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、情報処理方法、プログラムおよび記録媒体
US20100146003A1 (en) * 2008-12-10 2010-06-10 Unisys Corporation Method and system for building a B-tree
JP4801761B2 (ja) * 2009-08-12 2011-10-26 株式会社日立製作所 データベース管理方法およびシステム並びにその処理プログラム
WO2014087503A1 (ja) * 2012-12-05 2014-06-12 トヨタ自動車 株式会社 車両用ネットワークの認証システム及び車両用ネットワークの認証方法
WO2015029208A1 (ja) * 2013-08-30 2015-03-05 株式会社日立製作所 データベース管理装置、データベース管理方法及び記憶媒体
US10198572B2 (en) * 2013-09-17 2019-02-05 Microsoft Technology Licensing, Llc Virtual machine manager facilitated selective code integrity enforcement

Also Published As

Publication number Publication date
US20170177653A1 (en) 2017-06-22
WO2015156000A1 (ja) 2015-10-15
JP2015203927A (ja) 2015-11-16
US10452644B2 (en) 2019-10-22

Similar Documents

Publication Publication Date Title
JP6245700B2 (ja) 計算機システム、データの検査方法及び計算機
US9529551B2 (en) Systems and methods for instantaneous cloning
US9176963B2 (en) Managing counters in a distributed file system
JP5154200B2 (ja) データ読出し方法、データ管理システム及びストレージシステム
US9519664B1 (en) Index structure navigation using page versions for read-only nodes
US8234317B1 (en) Auto-committing files to immutable status based on a change log of file system activity
US9582213B2 (en) Object store architecture for distributed data processing system
US9996421B2 (en) Data storage method, data storage apparatus, and storage device
JP2008541207A (ja) ストレージシステム・アーキテクチャ内のデータ・アロケーション
JP2008539505A (ja) データコンテナの中身をクラスタの複数のボリュームにわたってストライピングするためのストレージシステム・アーキテクチャ
WO2017025039A1 (zh) 一种面向闪存存储的数据访问方法及其装置
CN106528338B (zh) 一种远程数据复制方法、存储设备及存储系统
US8140886B2 (en) Apparatus, system, and method for virtual storage access method volume data set recovery
JP6598997B2 (ja) データ準備のためのキャッシュ最適化
US11822520B2 (en) Freeing pages within persistent memory
JP2015049633A (ja) 情報処理装置、データ修復プログラム、及びデータ修復方法
US9009204B2 (en) Storage system
Polte et al. Fast log-based concurrent writing of checkpoints
WO2017172377A1 (en) File system support for file-level ghosting
US11200210B2 (en) Method of efficient backup of distributed file system files with transparent data access
US7873963B1 (en) Method and system for detecting languishing messages
JP2004252957A (ja) 分散ファイルシステムのファイルレプリケーション方法及び装置
US20200250040A1 (en) Sharing private space among data storage system data rebuild , file system checkingand data deduplication components to minimize private space overhead
KR101792189B1 (ko) 빅 데이터 처리 장치 및 방법
Nevarez et al. SQL Server Storage

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170530

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171030

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171110

R150 Certificate of patent or registration of utility model

Ref document number: 6245700

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250