(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023040672
(43)【公開日】2023-03-23
(54)【発明の名称】ストレージシステム、ストレージ管理方法、ストレージ管理プログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20230315BHJP
【FI】
G06F3/06 304P
G06F3/06 301F
【審査請求】有
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2021147785
(22)【出願日】2021-09-10
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】杉原 香保里
(72)【発明者】
【氏名】山本 貴大
(72)【発明者】
【氏名】関 俊哉
(57)【要約】
【課題】ライトホール問題を解決するための追加処理において、記憶装置への書き込みを少なく抑えることができる。
【解決手段】ストレージシステムは、計算機、不揮発性の記憶デバイス、および記憶デバイスよりも高速なアクセスが可能な高速記憶デバイスを含み、高速記憶デバイスにはライトログ情報を含むドライブログが記録される。計算機は、ライトデータのライト要求を受けた場合に、まずドライブログチェック処理を行い、次にデータライト処理を行う。ドライブログチェック処理では、重複ライトログレコードがドライブログに記録されている場合には、ドライブログおよびライトログ情報を対象として、重複ライトログレコードのライトログ状態を「完了」に変更してからデータライト処理に進み、記録されていない場合には、ドライブログおよびライトログ情報を変更することなくデータライト処理に進む。
【選択図】
図9
【特許請求の範囲】
【請求項1】
計算機、不揮発性の記憶デバイス、および前記記憶デバイスよりも高速なアクセスが可能な高速記憶デバイスを含むストレージシステムであって、
それぞれの前記記憶デバイスは、記憶領域が、ユーザデータを格納するユーザ領域と、前記ユーザデータへの書き込みに関するライトログ情報を格納するメタ領域と、に分割されており、
前記ライトログ情報には、前記ユーザ領域における前記ユーザデータの書き込み範囲とライトログ状態との組合せであるライトログレコードが複数含まれ、
前記ライトログ状態は少なくとも、書き込みを開始することを示す「開始」、または書き込みが完了したことを示す「完了」のいずれかを表し、
前記高速記憶デバイスには、前記ライトログ情報を含むドライブログが記録され、
前記計算機は、ライトデータのライト要求を受けた場合に、前記ライトデータを書き込む前記ユーザ領域の範囲である書き込み予定範囲を特定した上で、まずドライブログチェック処理を行い、次にデータライト処理を行い、
前記ドライブログチェック処理では、前記書き込み予定範囲と少なくとも一部が重複する書き込み範囲を有する前記ライトログレコードである重複ライトログレコードが前記ドライブログに記録されている場合には、前記ドライブログおよび前記ライトログ情報を対象として、前記重複ライトログレコードのライトログ状態を「完了」に変更してから前記データライト処理に進み、前記重複ライトログレコードが前記ドライブログに記録されていない場合には、前記ドライブログおよび前記ライトログ情報を変更することなく前記データライト処理に進み、
前記データライト処理では、前記ライトログ情報および前記ドライブログに対して、前記書き込み予定範囲および前記ライトログ状態を「開始」とする前記ライトログレコードを書き込み、その後に前記書き込み予定範囲へ前記ライトデータを書き込み、
前記計算機は、前記ライトデータのライト要求を受信したことに起因する処理として、前記書き込み予定範囲と組み合わされる前記ライトログ状態を「完了」に変更しない、ストレージシステム。
【請求項2】
請求項1に記載のストレージシステムにおいて、
前記計算機は、前記ライト要求を受けた場合に、前記ライトデータおよび前記ライトログレコードを前記計算機に格納される2以上の前記記憶デバイスに記録し、
前記書き込み範囲とは、同一の前記記憶デバイスに記録される前記ユーザデータの書き込み範囲である、ストレージシステム。
【請求項3】
請求項1に記載のストレージシステムにおいて、
前記記憶デバイスを備える前記計算機が複数含まれ、
前記計算機は、上位制御から前記ライトデータの前記ライト要求を受けた場合にはさらに、他の前記計算機に対して前記ライトデータの前記ライト要求を送信する、ストレージシステム。
【請求項4】
請求項1に記載のストレージシステムにおいて、
前記ドライブログに含まれる前記ライトログレコードの数、および前記ライトログ情報に含まれる前記ライトログレコードの数は、当該ストレージシステムにおける最大同時書き込み数に基づき設定される、ストレージシステム。
【請求項5】
請求項1に記載のストレージシステムにおいて、
前記メタ領域において重複のないそれぞれ異なる領域にアクセスするための複数のライトログ資源が設定され、
前記計算機は、前記ライトログ資源を占有して前記メタ領域に前記ライトログレコードを書き込む、ストレージシステム。
【請求項6】
プロセッサ、不揮発性の記憶デバイス、および前記記憶デバイスよりも高速なアクセスが可能な高速記憶デバイスを含むストレージシステムにおける前記プロセッサが実行するストレージ管理方法であって、
それぞれの前記記憶デバイスは、記憶領域が、ユーザデータを格納するユーザ領域と、前記ユーザデータへの書き込みに関するライトログ情報を格納するメタ領域と、に分割されており、
前記ライトログ情報には、前記ユーザ領域における前記ユーザデータの書き込み範囲とライトログ状態との組合せであるライトログレコードが複数含まれ、
前記ライトログ状態は少なくとも、書き込みを開始することを示す「開始」、または書き込みが完了したことを示す「完了」のいずれかを表し、
前記高速記憶デバイスには、前記ライトログ情報を含むドライブログが記録され、
ライトデータのライト要求を受けた場合に、前記プロセッサが前記ライトデータを書き込む前記ユーザ領域の範囲である書き込み予定範囲を特定した上で、まずドライブログチェック処理を行い、次にデータライト処理を行うことを含み、
前記ドライブログチェック処理では、前記書き込み予定範囲と少なくとも一部が重複する書き込み範囲を有する前記ライトログレコードである重複ライトログレコードが前記ドライブログに記録されている場合には、前記ドライブログおよび前記ライトログ情報を対象として、前記重複ライトログレコードのライトログ状態を「完了」に変更してから前記データライト処理に進み、前記重複ライトログレコードが前記ドライブログに記録されていない場合には、前記ドライブログおよび前記ライトログ情報を変更することなく前記データライト処理に進み、
前記データライト処理では、前記ライトログ情報および前記ドライブログに対して、前記書き込み予定範囲および前記ライトログ状態を「開始」とする前記ライトログレコードを書き込み、その後に前記書き込み予定範囲へ前記ライトデータを書き込み、
前記プロセッサは、前記ライトデータのライト要求を受信したことに起因する処理として、前記書き込み予定範囲と組み合わされる前記ライトログ状態を「完了」に変更しない、ストレージ管理方法。
【請求項7】
プロセッサ、不揮発性の記憶デバイス、および前記記憶デバイスよりも高速なアクセスが可能な高速記憶デバイスを含むストレージシステムにおいて実行されるストレージ管理プログラムであって、
それぞれの前記記憶デバイスは、記憶領域が、ユーザデータを格納するユーザ領域と、前記ユーザデータへの書き込みに関するライトログ情報を格納するメタ領域と、に分割されており、
前記ライトログ情報には、前記ユーザ領域における前記ユーザデータの書き込み範囲とライトログ状態との組合せであるライトログレコードが複数含まれ、
前記ライトログ状態は少なくとも、書き込みを開始することを示す「開始」、または書き込みが完了したことを示す「完了」のいずれかを表し、
前記高速記憶デバイスには、前記ライトログ情報を含むドライブログが記録され、
前記ストレージシステムがライトデータのライト要求を受けた場合に、前記プロセッサに前記プロセッサが前記ライトデータを書き込む前記ユーザ領域の範囲である書き込み予定範囲を特定させた上で、まずドライブログチェック処理を行わせ、次にデータライト処理を行わせることを含み、
前記ドライブログチェック処理では、前記書き込み予定範囲と少なくとも一部が重複する書き込み範囲を有する前記ライトログレコードである重複ライトログレコードが前記ドライブログに記録されている場合には、前記ドライブログおよび前記ライトログ情報を対象として、前記重複ライトログレコードのライトログ状態を「完了」に変更させてから前記データライト処理に進ませ、前記重複ライトログレコードが前記ドライブログに記録されていない場合には、前記ドライブログおよび前記ライトログ情報を変更することなく前記データライト処理に進ませ、
前記データライト処理では、前記ライトログ情報および前記ドライブログに対して、前記書き込み予定範囲および前記ライトログ状態を「開始」とする前記ライトログレコードを書き込ませ、その後に前記書き込み予定範囲へ前記ライトデータを書き込ませ、
前記プロセッサに、前記ライトデータのライト要求を受信したことに起因する処理として、前記書き込み予定範囲と組み合わされる前記ライトログ状態を「完了」に変更させない、ストレージ管理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステム、ストレージ管理方法、およびストレージ管理プログラムに関する。
【背景技術】
【0002】
記憶装置の信頼性や可用性を向上させるRAID技術が広く用いられている。RAIDを構成する複数の記憶装置において、データおよびパリティの組を完全に同時には更新できないため、書き込みの過渡状態において電源の遮断や障害が発生した際には、正常にデータがライトされず、データとパリティとが整合しない状態となる。これにより、データの回復が不可能となり、この問題がライトホール問題として知られている。ライトホール問題の対応策の一例として、特許文献1には、データを記憶する複数のディスク記憶デバイスと、前記複数のディスク記憶デバイスに伝送経路を介し接続され、上位からのアクセス指示に応じて、前記ディスク記憶デバイスをアクセス制御するストレージコントローラとを有し、前記ストレージコントローラは、ライトコマンドに付随するライトデータを格納するメモリと、前記ライトコマンド毎に、ID値を更新し、前記ライトデータの一部又は全部にID値を挿入して、前記ディスク記憶デバイスのディスクにライトするコントローラとを有し、前記コントローラは、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納し、前記リードしたデータ中のID値と、前記挿入したID値を比較して、前記ディスク記憶デバイスのライト抜けを検出することを特徴とするデータストレージシステムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載されている発明では、ライトコマンドおよびこれに対応するライトデータ毎にID値の付与や照合の工程が必要となりシステムに多大な負荷が生じるため、ライトホール問題の対応策として改善の余地がある。
【課題を解決するための手段】
【0005】
本発明の第1の態様によるストレージシステムは、計算機、不揮発性の記憶デバイス、および前記記憶デバイスよりも高速なアクセスが可能な高速記憶デバイスを含むストレージシステムであって、それぞれの前記記憶デバイスは、記憶領域が、ユーザデータを格納するユーザ領域と、前記ユーザデータへの書き込みに関するライトログ情報を格納するメタ領域と、に分割されており、前記ライトログ情報には、前記ユーザ領域における前記ユーザデータの書き込み範囲とライトログ状態との組合せであるライトログレコードが複数含まれ、前記ライトログ状態は少なくとも、書き込みを開始することを示す「開始」、または書き込みが完了したことを示す「完了」のいずれかを表し、前記高速記憶デバイスには、前記ライトログ情報を含むドライブログが記録され、前記計算機は、ライトデータのライト要求を受けた場合に、前記ライトデータを書き込む前記ユーザ領域の範囲である書き込み予定範囲を特定した上で、まずドライブログチェック処理を行い、次にデータライト処理を行い、前記ドライブログチェック処理では、前記書き込み予定範囲と少なくとも一部が重複する書き込み範囲を有する前記ライトログレコードである重複ライトログレコードが前記ドライブログに記録されている場合には、前記ドライブログおよび前記ライトログ情報を対象として、前記重複ライトログレコードのライトログ状態を「完了」に変更してから前記データライト処理に進み、前記重複ライトログレコードが前記ドライブログに記録されていない場合には、前記ドライブログおよび前記ライトログ情報を変更することなく前記データライト処理に進み、前記データライト処理では、前記ライトログ情報および前記ドライブログに対して、前記書き込み予定範囲および前記ライトログ状態を「開始」とする前記ライトログレコードを書き込み、その後に前記書き込み予定範囲へ前記ライトデータを書き込み、前記計算機は、前記ライトデータのライト要求を受信したことに起因する処理として、前記書き込み予定範囲と組み合わされる前記ライトログ状態を「完了」に変更しない。
本発明の第2の態様によるストレージ管理方法は、プロセッサ、不揮発性の記憶デバイス、および前記記憶デバイスよりも高速なアクセスが可能な高速記憶デバイスを含むストレージシステムにおける前記プロセッサが実行するストレージ管理方法であって、それぞれの前記記憶デバイスは、記憶領域が、ユーザデータを格納するユーザ領域と、前記ユーザデータへの書き込みに関するライトログ情報を格納するメタ領域と、に分割されており、前記ライトログ情報には、前記ユーザ領域における前記ユーザデータの書き込み範囲とライトログ状態との組合せであるライトログレコードが複数含まれ、前記ライトログ状態は少なくとも、書き込みを開始することを示す「開始」、または書き込みが完了したことを示す「完了」のいずれかを表し、前記高速記憶デバイスには、前記ライトログ情報を含むドライブログが記録され、ライトデータのライト要求を受けた場合に、前記プロセッサが前記ライトデータを書き込む前記ユーザ領域の範囲である書き込み予定範囲を特定した上で、まずドライブログチェック処理を行い、次にデータライト処理を行うことを含み、前記ドライブログチェック処理では、前記書き込み予定範囲と少なくとも一部が重複する書き込み範囲を有する前記ライトログレコードである重複ライトログレコードが前記ドライブログに記録されている場合には、前記ドライブログおよび前記ライトログ情報を対象として、前記重複ライトログレコードのライトログ状態を「完了」に変更してから前記データライト処理に進み、前記重複ライトログレコードが前記ドライブログに記録されていない場合には、前記ドライブログおよび前記ライトログ情報を変更することなく前記データライト処理に進み、前記データライト処理では、前記ライトログ情報および前記ドライブログに対して、前記書き込み予定範囲および前記ライトログ状態を「開始」とする前記ライトログレコードを書き込み、その後に前記書き込み予定範囲へ前記ライトデータを書き込み、前記プロセッサは、前記ライトデータのライト要求を受信したことに起因する処理として、前記書き込み予定範囲と組み合わされる前記ライトログ状態を「完了」に変更しない。
本発明の第3の態様によるストレージ管理プログラムは、プロセッサ、不揮発性の記憶デバイス、および前記記憶デバイスよりも高速なアクセスが可能な高速記憶デバイスを含むストレージシステムにおいて実行されるストレージ管理プログラムであって、それぞれの前記記憶デバイスは、記憶領域が、ユーザデータを格納するユーザ領域と、前記ユーザデータへの書き込みに関するライトログ情報を格納するメタ領域と、に分割されており、前記ライトログ情報には、前記ユーザ領域における前記ユーザデータの書き込み範囲とライトログ状態との組合せであるライトログレコードが複数含まれ、前記ライトログ状態は少なくとも、書き込みを開始することを示す「開始」、または書き込みが完了したことを示す「完了」のいずれかを表し、前記高速記憶デバイスには、前記ライトログ情報を含むドライブログが記録され、前記ストレージシステムがライトデータのライト要求を受けた場合に、前記プロセッサに前記プロセッサが前記ライトデータを書き込む前記ユーザ領域の範囲である書き込み予定範囲を特定させた上で、まずドライブログチェック処理を行わせ、次にデータライト処理を行わせることを含み、前記ドライブログチェック処理では、前記書き込み予定範囲と少なくとも一部が重複する書き込み範囲を有する前記ライトログレコードである重複ライトログレコードが前記ドライブログに記録されている場合には、前記ドライブログおよび前記ライトログ情報を対象として、前記重複ライトログレコードのライトログ状態を「完了」に変更させてから前記データライト処理に進ませ、前記重複ライトログレコードが前記ドライブログに記録されていない場合には、前記ドライブログおよび前記ライトログ情報を変更することなく前記データライト処理に進ませ、前記データライト処理では、前記ライトログ情報および前記ドライブログに対して、前記書き込み予定範囲および前記ライトログ状態を「開始」とする前記ライトログレコードを書き込ませ、その後に前記書き込み予定範囲へ前記ライトデータを書き込ませ、前記プロセッサに、前記ライトデータのライト要求を受信したことに起因する処理として、前記書き込み予定範囲と組み合わされる前記ライトログ状態を「完了」に変更させない。
【発明の効果】
【0006】
本発明によれば、ライトホール問題を解決するための追加処理において、記憶装置への書き込みを少なく抑えることができる。
【図面の簡単な説明】
【0007】
【
図2】ストレージシステムの制御のための情報を示す図
【
図9】ストレージシステムが上位制御からライト要求を受領した際の動作を示すフローチャート
【
図10】ドライブログチェック処理の詳細を示すフローチャート
【
図11】パリティライト処理の詳細を示すフローチャート
【
図12】データライト処理の詳細を示すフローチャート
【
図13】ライトログ破棄処理の詳細を示すフローチャート
【
図20】第1の実施の形態の処理を示す第1のタイムチャート
【
図21】第1の実施の形態の処理を示す第2のタイムチャート
【
図22】第1の実施の形態の処理を示す第3のタイムチャート
【
図23】第1の実施の形態の処理を示す第4のタイムチャート
【
図24】第1の実施の形態の処理を示す第5のタイムチャート
【発明を実施するための形態】
【0008】
―第1の実施の形態―
以下、
図1~
図24を参照して、本発明のストレージシステムの第1の実施の形態を説明する。
【0009】
図1は、ストレージシステム100の全体構成図である。計算機ノード101は、例えば一般的なサーバ計算機の構成を有している。計算機ノード101のハードウエア構成は特に限定されない。計算機ノード101は、ネットワーク103を介して他の計算機ノード101とポート106を通じて接続する。ネットワーク103は、例えばInfiniBandや、イーサネットなどにより構成される。
【0010】
複数の計算機ノード101は、ドメイン102を形成する。ドメイン102は、例えば地理的な地域と対応させてもよいし、仮想的又は物理的なネットワーク103のトポロジと対応させてもよい。ネットワーク104(外部ネットワーク)は、複数のドメイン102を接続する。それぞれの計算機ノード101は、内部ネットワーク112を介してポート106、プロセッサパッケージ111、複数のディスクドライブ(以下においてドライブとも呼ぶ)113を接続する。プロセッサパッケージ111は、メモリ118、およびプロセッサ119を含む。プロセッサ119はたとえば中央演算処理装置である。
【0011】
メモリ118は、プロセッサ119がリードやライト命令を処理し、またストレージの機能を実行する上で、必要な制御用の情報を格納し、またストレージのキャッシュデータを格納する。また、メモリ118は、例えばプロセッサ119により実行するプログラムを格納する。メモリ118は、揮発性のDRAMであってもよいし、不揮発のSCM(Storage Class Memory)などを用いてもよい。
【0012】
ドライブ113は、例えば、FC(Fibre Channel)、SAS(Serial Attached SCSI)、SATA(Serial Advanced Technology Attachment)などのインタフェースを持つハードディスクドライブや、SSD(Solid State Drive)などにより構成される。ドライブ113は、NAND、PRAM、ReRAMなどのSCMを用いてもよいし、揮発性のメモリを用いてもよい。揮発性メモリを使用する場合、バッテリによってストレージデバイスを不揮発化してもよい。ドライブ113よりもメモリ118は高速なアクセスが可能なので、メモリ118は「高速記憶デバイス」とも呼べる。
【0013】
図2は、ストレージシステム100の制御のための情報を示す図である。メモリ118は、
図2に示す情報に加え、ストレージ機能を実現するストレージプログラム、OS、インタフェースプログラムを含む、各種プログラムを格納する。メモリ118は、さらに、業務を実行するアプリケーションプログラムを格納することがある。メモリ118には、管理情報としてライトログ資源テーブル81と、ライトログ資源キュー82と、ドライブログテーブル83と、ハッシュテーブル84とが格納される。メモリ118にはさらに、処理プログラムとしてIO処理プログラム51と、ライトログ管理プログラム52とが格納される。またメモリ118には、ネットワーク104、103を介した上位装置(図示せず)との間でのIO要求およびその応答の送受信を制御する上位制御のプログラムが格納される。
【0014】
ライトログ資源テーブル81には、ドライブ上のライトログの記録位置が記録される。ライトログ資源キュー82は、ライトログ資源テーブル81のインデックス番号をキュー構造に格納したものである。ライトログ管理プログラム52がドライブ上のライトログ領域にアクセスする際には、ライトログ資源キュー82からインデックス番号を取得し、そのライトログ資源を一時的に占有し、このインデックス番号に対応するライトログの記録位置にアクセスする。これにより、複数処理がドライブ上の同一のライトログ情報へ同時にアクセスすることが防止される。それぞれの計算機ノード101が有するライトログ資源の数は、ストレージシステム100に規定されている最大同時IO数、正確には最大同時書き込み数と同等以上の必要がある。それぞれの計算機ノード101が有するライトログ資源の数はたとえば、ストレージシステム100における最大同時IO数の2倍である。
【0015】
ドライブログテーブル83には、同一の計算機ノード101に格納されるすべてのドライブ113に記録されたライトログ情報85が記録される。ライトログ情報85については後述する。ハッシュテーブル84は、ユーザ領域の重複を高速にチェックするためのハッシュテーブルである。ハッシュテーブル84では、ユーザ領域のオフセットをキーとしたマップを使用する。なお以下では、ドライブログテーブル83を「ドライブログ」と呼ぶこともある。IO処理プログラム51およびライトログ管理プログラム52の概要を説明する前に、ドライブ113の概念図を説明する。
【0016】
図3は、ドライブ113の概念図である。計算機ノード101に含まれるそれぞれのドライブ113は、ユーザ領域とメタ領域とに分けられる。本実施の形態において、ユーザ領域とメタ領域との境界は固定である。ただしドライブ113ごとにその境界が異なっていてもよい。ユーザ領域には保護対象のデータや冗長化のためのパリティが書き込まれる。本実施の形態ではミラーリングによりデータを保護するため、データとパリティは同一である。メタ領域には、ライトログ情報85が書き込まれる。前述のように、計算機ノード101のメモリ118に格納されるドライブログテーブル83には、その計算機ノード101に含まれる全てのドライブ113のライトログ情報85が含まれる。
【0017】
後述するように、各ドライブのライトログ情報85の更新と、ドライブログテーブル83の更新は、ほぼ同時に行われる。同一の計算機ノード101において、同一の情報を2か所に書き込む理由は、高速にライトログ情報85を読み出したいためである。すなわち、プロセッサ119の動作周期に比べるとドライブ113からの情報の読み出しは非常に長い時間を要するが、メモリ118からの情報の読み出しはドライブ113に比べれば短い時間で済む。
図2に戻って説明を続ける。
【0018】
IO処理プログラム51は、上位制御からのIO要求を受けてIO処理を行う。具体的にはIO処理プログラム51は、ライトログ管理プログラム52に対してメタ領域のライトログ情報85およびメモリ118上のドライブログテーブル83を更新させ、IO処理プログラム51自身でユーザ領域上のデータまたはパリティを更新する。またIO処理プログラム51は、データ保護のために同一のデータを他のノードのIO処理プログラム51に対して保存するように指示する。本実施の形態では、上位制御からIO要求を受ける計算機ノード101をデータノードDNと呼び、他の計算機ノード101のIO処理プログラム51からデータ保存が指示されるノードをパリティノードPNと呼ぶ。ただしデータノードDNとパリティノードPNの区別は便宜的であり、ある処理ではデータノードDNとして動作する計算機ノード101が別の処理ではパリティノードPNとして動作してもよい。
【0019】
ライトログ管理プログラム52は、IO処理プログラム51からの指示を受けて以下に述べる処理を行う。ライトログ管理プログラム52は、IO処理プログラム51がこれから書き込みを行うユーザ領域の情報、たとえば書き込み領域の先頭アドレスと書き込むデータ長の領域の情報を、IO処理プログラム51から指定される。ライトログ管理プログラム52はドライブログテーブル83を参照し、IO処理プログラム51がこれから書き込みを行うユーザ領域の範囲と重複した領域のライトログの有無を確認する。ライトログ管理プログラム52は、重複した領域のライトログが残っている場合には、そのライトログを開始状態から完了状態に遷移させる。そしてライトログ管理プログラム52は、ライトログ資源テーブル81からドライブ113上のメタ領域に記録されたライトログ情報85へアクセスするための資源を取得してライトログ情報85を更新する。さらにライトログ管理プログラム52は、更新後のライトログ情報85の情報が含まれるように、メモリ118上のドライブログテーブル83を更新する。
【0020】
図4は、ライトログ資源テーブル81の一例を示す図である。ライトログ資源テーブル81は、それぞれのドライブ113上のライトログの記録位置が記録される。ライトログ資源テーブル81は複数のレコードか構成され、各レコードはライトログ資源番号811、ドライブ番号813、およびオフセット位置812を含む。ライトログ資源番号811は、ライトログ資源の識別子である。ドライブ番号813は、ライトログが記録されるドライブ113の識別子である。オフセット位置812は、ライトログが記録される位置を示しており、ドライブ113の先頭領域からのオフセット量、またはメタ領域の先頭領域からのオフセット量である。
図4に示す例ではライトログ資源テーブル81は3つのレコードのみを示しているが、実際にはライトログ資源と同数のレコードを有する。ライトログ資源の数は、それぞれのドライブ113のメタ領域に格納されるライトログの総数と一致する。
【0021】
図5は、ライトログ資源キュー82の一例を示す図である。ライトログ資源キュー82は、ライトログ資源テーブル81のインデックス番号をキュー構造に格納したものである。ドライブ上のライトログ領域にアクセスする際には、ライトログ資源キュー82からインデックス番号を取得し、これに対応するライトログの記録位置にアクセスすることで、複数処理から同一のライトログ情報へのアクセスを行わないように制御できる。
【0022】
図6は、ドライブログテーブル83の一例を示す図である。ドライブログテーブル83には、同一の計算機ノードに含まれる全てのドライブ113のライトログ情報85、および付加情報が格納される。ドライブログテーブル83は複数のレコードから構成され、各レコードはドライブ番号831、ライトログ資源番号832、ライトログ情報833、およびハッシュ値834を含む。各レコードは、いずれかのドライブ113のユーザ領域への書き込み(
図6の説明において、「対象書き込み」と呼ぶ)に関連して生成、または更新される。なお
図6ではドライブログテーブル83は4つのレコードのみを示しているが、実際には多数のレコードを含む。
【0023】
ドライブ番号831は、対象書き込みの対象となるドライブ113を識別する識別子である。ライトログ資源番号832は、対象書き込みに用いられるライトログ資源の識別子である。ライトログ情報833は、対象書き込みに関するライトログの情報であり、ドライブ番号831により特定されるドライブ113に記録されるライトログ情報85の1つのレコードと同一である。
図6ではライトログ情報833の詳細を省略しているが、ライトログ情報833の構成は
図7に示すライトログ情報85と同一である。ハッシュ値834は、対象書き込みにおけるユーザ領域の重複を高速に確認するためのハッシュ値である。ドライブログテーブル83の各レコードは、同一のドライブ番号831かつ、同一のライトログ資源番号832の対象書き込みが行われると上書きされる。
【0024】
図7は、ライトログ情報85の一例を示す図である。ライトログ情報は、ドライブ113のメタ領域に格納され、同一の情報はドライブログテーブル83にも含まれる。ライトログ情報85は複数のレコードから構成され、各レコードは、トランザクション番号841、チャンクグループ番号842、オフセット位置843、IO長844、ライトログ状態845、およびデータ846のフィールドを有する。各レコードは、いずれかのドライブ113のユーザ領域への書き込み(
図7の説明において、「対象書き込み」と呼ぶ)に関連して生成、または更新される。なお以下では、ライトログ情報85のそれぞれのレコードを「ライトログレコード」とも呼ぶ。
【0025】
トランザクション番号841は、IO処理の通し番号である。チャンクグループ番号842は、対象書き込みに用いられるチャンクグループの識別子である。オフセット位置843は、対象書き込みが行われるユーザ領域のアドレスである。IO長844は、対象書き込みにおける書き込みの長さである。ライトログ状態845は、対象書き込みを開始することを示す「開始」、または対象書き込みが完了したことを示す「完了」のいずれかである。ライトログ状態845は例えば、ストレージシステムの電源の遮断や障害からの回復時に残っているライトログの状態を参照し、データ/パリティをそれぞれIO処理前の状態の戻すのか、IO処理後の状態に戻すのかを判断するために利用される。これにより計算機ノード間でデータの世代を合わせることが容易となる。データ846は対象書き込みにおいてユーザ領域に書き込まれるデータそのものが格納される。ライトログ情報85のレコード数は、ライトログ資源の数と同一である。
【0026】
図8は、ハッシュテーブル84の一例を示す図である。ハッシュテーブル84は、ドライブログテーブル83を高速に検索するためのハッシュテーブルである。ハッシュテーブル84には、ハッシュ値とドライブログ番号の組合せが複数組格納される。ハッシュ値は、書き込みを行うユーザ領域のアドレス、換言するとハッシュテーブル84におけるオフセット位置843に基づき算出される。ドライブログ番号はドライブログテーブル83におけるインデックス番号(#)を表している。
【0027】
(フローチャート)
図9~
図13を参照して、ストレージシステム100の動作をフローチャートにより説明する。
図9は、ストレージシステム100が上位制御からライト要求を受領した際の動作を示すフローチャートである。ただし以下の説明では、上位制御から書き込みを要求されたデータを「ライトデータ」と呼び、ライトデータを書き込むユーザ領域の範囲を「書き込み予定範囲」と呼ぶ。書き込み予定範囲は、データノードDNとパリティノードPNでは一致しないことが多い。
【0028】
図9において、まずステップS311において、データノードDNのIO処理プログラム51がライトデータのライト要求を受領し、ライトデータを書き込むドライブ113およびライトデータを書き込むユーザ領域の範囲を特定する。続くステップS312においてライトログ管理プログラム52は、ライトログ資源を取得する。続くステップS313では、データノードDNにおけるライトデータを対象としてドライブログチェック処理を行う。本処理の詳細は
図10を参照して後に説明する。続くステップS314では、パリティライト処理を行う。本処理の詳細は
図11を参照して後に説明する。続くステップS315では、データライト処理を行う。本処理の詳細は
図12を参照して後に説明する。続くステップS316では、ライトログ破棄処理を行う。本処理の詳細は
図13を参照して後に説明する。続くステップS317ではIO処理プログラム51がライト応答を上位制御に発行して
図9に示す処理を終了する。
【0029】
図10は、ドライブログチェック処理の詳細を示すフローチャートである。
図10では、まずステップS321においてライトログ管理プログラム52は、同じライト位置のドライブログが残っているか否かを判断する。ここで、指定されたドライブ113および書き込み予定範囲と少なくとも一部が重複する書き込み範囲を有するライトログレコードを「重複ライトログレコード」と呼ぶ。この場合に、ステップS321では具体的には、この重複ライトログレコードがドライブログテーブル83に記録されているか否かを判断する。
【0030】
ライトログ管理プログラム52は、重複ライトログレコードがドライブログテーブル83に含まれると判断する場合はステップS332に進み、重複ライトログレコードがドライブログテーブル83に含まれないと判断する場合は
図10に示す処理を終了する。ステップS322ではライトログ管理プログラム52は、ドライブログテーブル83およびライトログ情報85における重複ライブログレコードのライトログ状態を「完了」に更新して
図10に示す処理を終了する。以上が
図10に示す処理の説明である。
【0031】
図11は、パリティライト処理の詳細を示すフローチャートである。
図11では、まずステップS341において、データノードDNのIO処理プログラム51がパリティノードPNのIO処理プログラム51に対してパリティライト要求を発行し、続くステップS342ではパリティノードPNのIO処理プログラム51がパリティライト要求を受領する。パリティライト要求には、データノードDNが上位制御から受信したライトデータが含まれる。ただし以下の説明では、パリティノードPNが扱うこのライトデータを「パリティ」や「パリティデータ」と呼ぶ。この際にパリティノードPNのIO処理プログラム51は、パリティデータを書き込むドライブ113およびパリティデータを書き込むユーザ領域の範囲を特定する。
【0032】
続くステップS343ではパリティノードPNのライトログ管理プログラム52がライトログ資源を取得し、続くステップS344では、パリティノードPNにおけるパリティデータを対象としてドライブログチェック処理を行う。ドライブログチェック処理の詳細は
図10において説明したとおりである。ただし、ステップS313におけるドライブログチェック処理とは、少なくとも書き込み位置が異なるので、判断内容は異なる可能性がある。
【0033】
続くステップS345ではパリティノードPNのライトログ管理プログラム52は、ドライブログテーブル83およびパリティデータを書き込むドライブ113のライトログ情報85に、パリティデータの書き込みを開始する旨のライトログを記録する。すなわちこのライトログレコードは、オフセット位置843がパリティデータの書き込み開始位置であり、ライトログ状態845が「開始」とされる。続くステップS346ではパリティノードPNのIO処理プログラム51は、パリティデータをドライブ113に書き込む。続くステップS347ではパリティノードPNのIO処理プログラム51はパリティライト応答をデータノードDNに送信し、続くステップS348ではデータノードDNのIO処理プログラム51がこのパリティライト応答を受領する。以上が
図11に示す処理の説明である。
【0034】
図12は、データライト処理の詳細を示すフローチャートである。
図12では、まずステップS331において、データノードDNのライトログ管理プログラム52がドライブログテーブル83およびライトデータを書き込むドライブ113のライトログ情報85に、ライトデータの書き込みを開始する旨のライトログレコードを記録する。すなわちこのライトログレコードは、オフセット位置843がライトデータの書き込み開始位置であり、ライトログ状態845が「開始」とされる。続くステップS346ではデータノードDNのIO処理プログラム51は、ライトデータをドライブ113に書き込む。以上が
図12に示す処理の説明である。
【0035】
図13は、ライトログ破棄処理の詳細を示すフローチャートである。
図13では、まずステップS351において、データノードDNのIO処理プログラム51がパリティノードPNのIO処理プログラム51に対してライトログ破棄要求を発行し、続くステップS352ではパリティノードPNのIO処理プログラム51がライトログ破棄要求を受領する。続くステップS353ではパリティノードPNのライトログ管理プログラム52がライトログ資源を解放し、続くステップS354ではパリティノードPNのIO処理プログラム51がライトログ破棄応答をデータノードDNに送信する。続くステップS355ではデータノードDNのIO処理プログラム51がライトログ破棄応答を受領し、続くステップS356ではデータノードDNのライトログ管理プログラム52がライトログ資源を解放して
図13に示す処理を終了する。
【0036】
(比較例の構成)
本実施の形態のストレージシステムにおけるデータ書き込み時のライトログ処理の詳細のタイムチャートを説明する前に、まずは比較例の構成と概要を説明する。比較例は、データ及び冗長コード(消失訂正符号)を複数の計算機ノードへ分散して格納する分散型ストレージシステムであり、構成および動作の詳細は例えば特許6752149号、特許6547057号に開示されている。
【0037】
図14は、比較例によるデータ保護を示す概念図である。
図14では、3つの計算機ノードと3つのストレージノードを示している。
図14において、四角で囲むA~Fはデータを示す。第1計算機ノードがAとB、第2計算機ノードがCとD、第3計算機ノードがEとFを出力した場合の動作は次のとおりである。第1ストレージノードは、AとBをそのまま保存し、さらに、CとEの消失訂正符号を保存する。第2ストレージノードは、CとDをそのまま保存し、さらに、AとFの消失訂正符号を保存する。第3ストレージノードは、EとFをそのまま保存し、さらに、BとDの消失訂正符号を保存する。この場合に、いずれか1つのストレージノードに障害が発生してもA~Eの全てのデータをそのまま、または復元して得ることができる。この方式では、ストレージの容量効率が高く、かつ通常時にはストレージノードからの読み込み性能が高い利点を有する。
【0038】
図15は、比較例の制御のための情報を示す図である。
図15は、本実施の形態における
図2と対の関係にある。比較例は処理プログラムとして、IO処理プログラム51に類似する処理を行う比較IO処理プログラム51Zと、ライトログ管理プログラム52に類似する処理を行う比較ライトログ管理プログラム52Zとを備える。比較例は、管理情報としてライトログ資源テーブル81およびライトログ資源キュー82を有し、ドライブログテーブル83およびハッシュテーブル84は有さない。
【0039】
(比較例のタイムチャート)
図16~
図19は、比較例によるデータ書き込みの一連の処理を示すタイムチャートである。
図16~
図19のそれぞれにおいて、図中の上から下に向かって時間が経過している。
図16~
図19に示す処理は図面の順番で時系列的に連続しており、
図16に示す処理の次に
図17に示す処理が行われ、その後に
図18に示す処理が行われ、最後に
図19に示す処理が行われる。また
図16~
図19において各処理には「S400」から始まる連番のステップ番号を付している。このステップ番号は数字が大きいほど時系列で後の時刻に実行されることを示している。なお
図16~
図19では、作図の都合によりライトログ資源テーブル81を「ライトログ資源」と記載する。またデータが格納される計算機ノードを「データノード」、当該データに対応する消失訂正符号が格納される計算機ノードを「パリティノード」と記載する。
【0040】
図16に示す処理は、すべてデータノードDNにおける処理である。そのため
図16の説明ではデータノードDNの構成である旨の記載は省略する。比較IO処理プログラム51Zは、まず上位制御からライト要求を受領する(S400)。次に比較IO処理プログラム51Zは、比較ライトログ管理プログラム52Zにライトログ資源の取得を指示する(S401)。この指示を受けた比較ライトログ管理プログラム52Zは、ライトログ資源キュー82にアクセスしてライトログ資源番号を取得する(S402)。
図16では、ライトログ資源キュー82から情報を取得することを、便宜的にライトログ資源キュー82から比較ライトログ管理プログラム52Zへの破線の矢印で示している。
図16~
図19の他の箇所でも、破線の矢印は同様の便宜的な記載である。次に比較ライトログ管理プログラム52Zはライトログ資源テーブル81にアクセスし、S402において取得したライトログ資源番号に対応するライトログ資源を取得する(S404、S405)。ライトログ資源を取得すると比較ライトログ管理プログラム52Zは、取得したライトログ資源を比較IO処理プログラム51Zに提供する(S406)。次に比較IO処理プログラム51Zはドライブ113にアクセスして旧データを読み込む(S407、S408)。
図17を参照して説明を続ける。
【0041】
データノードDNの比較IO処理プログラム51Zは、パリティノードPNの比較IO処理プログラム51Zに対してパリティライトを要求する(S421)。この要求を受けた比較IO処理プログラム51Zは、同じパリティノードPNの比較ライトログ管理プログラム52Zに対してライトログ資源の取得を指示する(S422)。この指示を受けた比較ライトログ管理プログラム52Zは、同じパリティノードPNのライトログ資源キュー82にアクセスしてライトログ資源番号を取得する(S423、S424)。次にパリティノードPNの比較ライトログ管理プログラム52Zはライトログ資源テーブル81にアクセスし、S423において取得したライトログ資源番号に対応するライトログ資源を取得する(S425、S426)。ライトログ資源を取得すると比較ライトログ管理プログラム52Zは、取得したライトログ資源を比較IO処理プログラム51Zに提供する(S427)。
【0042】
次にパリティノードPNの比較IO処理プログラム51Zは、ドライブ113にアクセスして旧パリティデータ(消失訂正符号)を読み込む(S428、S429)。次に比較IO処理プログラム51Zは、書き込みを開始する旨の開始ライトログの記録をライトログ管理プログラム52に指示する(S430)。比較ライトログ管理プログラム52Zは、ドライブ113に対して開始ライトログの書き込みを行い、ドライブ113より書き込みが完了した旨の応答を受け取る(S431、S432)。次に比較ライトログ管理プログラム52Zは、正常に開始ライトログの書き込みが完了すると、開始ライトログの書き込みが完了した旨をパリティノードPNの比較IO処理プログラム51Zに伝達する(S433)。開始ライトログの書き込み完了の通知を受けたパリティノードPNの比較IO処理プログラム51Zは、ドライブ113に新たなパリティ(消失訂正符号)を書き込み、ドライブ113より書き込みが完了した旨の応答を受け取る(S434、S435)。パリティノードPNの比較IO処理プログラム51Zは、正常にパリティの書き込みが完了すると、パリティの書き込みが完了した旨のパリティライト応答をデータノードDNの比較IO処理プログラム51Zに伝達する(S436)。
図18を参照して説明を続ける。
【0043】
パリティノードPNからパリティライト応答を受信したデータノードDNの比較IO処理プログラム51Zは、データノードDNのドライブ113に書き込みを開始する旨の開始ライトログをデータノードDNの比較ライトログ管理プログラム52Zに指示する(S441)。比較ライトログ管理プログラム52Zは、ドライブ113に対してライトログの書き込みを行い、ドライブ113より書き込みが完了した旨の応答を受け取る(S442、S443)。次に比較ライトログ管理プログラム52Zは、正常に開始ライトログの書き込みが完了すると、開始ライトログの書き込みが完了した旨をデータノードDNの比較IO処理プログラム51Zに伝達する(S444)。開始ライトログの書き込み完了の通知を受けたデータノードDNの比較IO処理プログラム51Zは、ドライブ113に新たなデータを書き込み、ドライブ113より書き込みが完了した旨の応答を受け取る(S445、S446)。データノードDNの比較IO処理プログラム51Zは、正常に新データの書き込みが完了すると、パリティノードPNの比較IO処理プログラム51Zに書き込み完了を示す完了ライトログの記録をパリティノードPNの比較IO処理プログラム51Zに指示する(S447)。なお以下では、パリティノードPNに完了ライトログの記録を指示することと、「ライトログ確定要求」とも呼ぶ。
【0044】
この指示を受けたパリティノードPNの比較IO処理プログラム51Zは、比較ライトログ管理プログラム52Zに完了ライトログの記録を指示する(S448)。この指示を受けた比較ライトログ管理プログラム52Zは、ドライブ113に対して完了ライトログの書き込みを行い、ドライブ113より書き込みが完了した旨の応答を受け取る(S449、S450)。パリティノードPNの比較ライトログ管理プログラム52Zは、正常に完了ライトログの書き込みが完了すると、完了ライトログの書き込みが完了した旨をパリティノードPNの比較IO処理プログラム51Zに伝達する(S451)。パリティノードPNの比較IO処理プログラム51Zは、正常に完了ライトログの書き込みが完了すると、完了ライトログの書き込みが完了した旨のライトログ確定応答をデータノードDNの比較IO処理プログラム51Zに伝達する(S452)。
【0045】
パリティノードPNからライトログ確定応答を受信したデータノードDNの比較IO処理プログラム51Zは、データノードDNのドライブ113への書き込み完了を示す完了ライトログの記録をデータノードDNの比較ライトログ管理プログラム52Zに指示する(S453)。比較ライトログ管理プログラム52Zは、ドライブ113に対して完了ライトログの書き込みを行い、ドライブ113より書き込みが完了した旨の応答を受け取る(S454、S455)。次に比較ライトログ管理プログラム52Zは、正常に完了ライトログの書き込みが完了すると、完了ライトログの書き込みが完了した旨をデータノードDNの比較IO処理プログラム51Zに伝達する(S456)。
図19を参照して説明を続ける。
【0046】
完了ライトログの書き込み完了の通知を受けたデータノードDNの比較IO処理プログラム51Zは、パリティノードPNの比較IO処理プログラム51Zにライトログの破棄要求を送信する(S461)。この要求を受けたパリティノードPNの比較IO処理プログラム51Zは、ライトログ資源の解放を同じパリティノードPNの比較ライトログ管理プログラム52Zに指示する(S462)。パリティノードPNの比較ライトログ管理プログラム52Zは、ライトログ資源テーブル81のライトログ情報を初期化し(S463、S464)、ライトログ資源キュー82にライトログ資源番号を返却する(S465、S466)。パリティノードPNの比較ライトログ管理プログラム52Zは、ライトログ資源番号の返却が完了すると、ライトログの資源解放が完了した旨を同じパリティノードPNの比較IO処理プログラム51Zに伝達する(S467)。この伝達を受けたパリティノードPNの比較IO処理プログラム51Zは、ライトログの破棄が完了した旨のライトログ破棄応答をデータノードDNの比較IO処理プログラム51Zに伝達する。この伝達を受けたデータノードDNの比較IO処理プログラム51Zは、同じデータノードDNの比較ライトログ管理プログラム52Zにライトログ資源の解放を指示する(S469)。
【0047】
この指示を受けたデータノードDNの比較ライトログ管理プログラム52Zは、ライトログ資源テーブル81のライトログ情報を初期化し(S470、S471)、ライトログ資源キュー82にライトログ資源番号を返却する(S472、S473)。データノードDNの比較ライトログ管理プログラム52Zは、ライトログ資源番号の返却が完了すると、ライトログの資源解放が完了した旨を同じデータノードDNの比較IO処理プログラム51Zに伝達する(S474)。この伝達を受けたデータノードDNの比較IO処理プログラム51Zは、
図16のS400において受信したライト要求に応じた処理が完了したことを示すライト応答を上位制御に送信して、
図16~
図19に示したデータ書き込みの一連の処理を終了する。
【0048】
(本発明の実施形態のストレージシステムのタイムチャート)
図20~
図24は、本実施の形態によるデータ書き込みの一連の処理を示すタイムチャートである。
図20~
図24のそれぞれにおいて、図中の上から下に向かって時間が経過している。
図20~
図24に示す処理は図面の順に時系列的に連続している。また
図20~
図24において各処理には「S500」から始まる連番のステップ番号を付している。このステップ番号は数字が大きいほど時系列で後の時刻に実行されることを示している。なお
図20~
図24では、作図の都合によりライトログ資源テーブル81を「ライトログ資源」と記載する。またデータが格納される計算機ノードを「データノード」、当該データのミラーリング先の計算機ノードを「パリティノード」と記載する。以下では主に、
図16~
図19に示したMECによる一連の処理との相違点を中心に説明する。
【0049】
図20に示す処理は、すべてデータノードDNにおける処理である。そのため
図20の説明ではデータノードDNの構成である旨の記載は省略する。IO処理プログラム51は、まず上位制御からライト要求を受領する(S500)。次にIO処理プログラム51は、ライトログ管理プログラム52にライトログ資源の取得を指示する(S501)。この指示を受けた際のライトログ管理プログラム52の処理は、
図16に示した比較ライトログ管理プログラム52Zの処理と同様なので詳細説明は省略する。具体的には、ライトログ管理プログラム52のS502~S506の処理は、比較ライトログ管理プログラム52ZのS402~S406の処理と同様である。
【0050】
次にIO処理プログラム51は、ライトログ管理プログラム52に対してドライブログテーブル83の確認とライトログ確定を指示する(S507)。この処理は比較例と大きく異なる。この指示を受けたライトログ管理プログラム52は、ドライブログテーブル83のチェックを行う(S508)。具体的にはライトログ管理プログラム52は、S500において受領したライト要求に基づき書き込みを行うユーザ領域のアドレス範囲と重複する領域について、ドライブログテーブル83に記録が残っているか否かを確認する。ただしライトログ管理プログラム52は、先にドライブログテーブル83の全体を読み込み、その後に書き込み対象のユーザ領域が重複するか否かを判断してもよい。ライトログ管理プログラム52は、ドライブログテーブル83に記録が残っていると判断する場合のみS510~S513の処理を行い、ドライブログテーブル83に記録が残っていないと判断する場合はS510~S513の処理を行うことなくIO処理プログラム51に処理完了を通知する(S514)。
【0051】
S510~S513ではライトログ管理プログラム52は、ドライブ113およびドライブログテーブル83におけるそのライトログに対して、書き込みがすでに完了している旨の書き込み、すなわちライトログの更新を行う(S510~S513)。その次にライトログ管理プログラム52は、IO処理プログラム51に処理完了を通知する(S514)。なお、前述のようにドライブログテーブル83とドライブ113のメタ領域には同一の情報が格納されているが、ライトログ管理プログラム52はS508において短時間でアクセス可能なドライブログテーブル83を読み込む。すなわちライトログ管理プログラム52は、書き込みが必要な場合のみドライブ113にアクセスすることで処理時間を短縮する。
図21を参照して説明を続ける。
【0052】
データノードDNのIO処理プログラム51は、パリティノードPNのIO処理プログラム51に対してパリティライトを要求する(S521)。この要求を受けたIO処理プログラム51がライトログ資源取得を指示する処理(S522)、およびライトログ管理プログラム52がライトログ資源を取得する処理は
図17と同様なので説明を省略する。具体的には、
図21のS522~S527の処理は、
図17のS422~S427の処理に対応する。次にパリティノードPNのIO処理プログラム51は、同じパリティノードPNのライトログ管理プログラム52に対してドライブログテーブル83の確認とライトログ確定を指示する(S528)。この指示を受けたライトログ管理プログラム52の処理(S529~S535)は、
図20のS508~S514と同一なので説明を省略する。
図22を参照して説明を続ける。
【0053】
次にパリティノードPNのIO処理プログラム51は、同じパリティノードPNのライトログ管理プログラム52に開始ライトログの記録を指示する(S541)。この指示を受けたパリティノードPNのライトログ管理プログラム52は、開始ライトログをドライブログテーブル83およびドライブ113に書き込む(SS542~S545)。このライトログの書き込みは、ドライブログテーブル83の内容を確認することなく行われる。書き込み開始のライトログの記録は省略できないからである。パリティノードPNのライトログ管理プログラム52は、開始ライトログの記録が完了するとIO処理プログラム51に完了を通知する(S546)。この通知を受けたパリティノードPNのIO処理プログラム51は、ドライブ113に新しいパリティデータの書き込みを指示し(S547、S548)、パリティライト応答をデータノードDNのIO処理プログラム51に送信する。
図23を参照して説明を続ける。
【0054】
パリティノードPNからパリティライト応答を受信したデータノードDNのIO処理プログラム51は、同じデータノードDNのライトログ管理プログラム52に開始ライトログの記録を指示する(S561)。この指示を受けたデータノードDNのライトログ管理プログラム52は、開始ライトログをドライブログテーブル83およびドライブ113に書き込む(S562~S565)。このライトログの書き込みは、ドライブログテーブル83の内容を確認することなく行われ、省略不可能な点はパリティノードPNにおける処理と同様である。開始ライトログの書き込みが完了するとライトログ管理プログラム52はIO処理プログラム51に処理完了を通知する(S566)。この通知を受けたデータノードDNのIO処理プログラム51は、データノードDNのドライブ113に新データの書き込みを行う(S567、S568)。比較例におけるデータノードDNからのライトログ確定要求に始まるパリティノードPNにおける完了ライトログの書き込み及び応答、データノードDNにおける完了ライトログの書き込み及び応答に至る一連の処理S447~S456は本発明の実施形態のストレージシステムでは実行されない。
図24を参照して説明を続ける。
【0055】
次にデータノードDNのIO処理プログラム51は、パリティノードPNのIO処理プログラム51にライトログの破棄要求を送信する(S581)。ライトログの破棄要求を受信したパリティノードPNのIO処理プログラム51およびライトログ管理プログラム52の処理(S582~S588)は、
図19のS462~S468と同一なので説明を省略する。ライトログ破棄応答を受信したデータノードDNのIO処理プログラム51は、同じデータノードDNのライトログ管理プログラム52にライトログ資源の破棄を指示する。ライトログの破棄要求を受信したデータノードDNのライトログ管理プログラム52の処理(S590~S594)は、
図19のS470~S474と同一なので説明を省略する。ライトログ管理プログラム52からライトログ資源解放の完了を伝達されたデータノードDNのIO処理プログラム51は、
図20のS500において受信したライト要求に応じた処理が完了したことを示すライト応答を上位制御に送信して、
図20~
図24に示したデータ書き込みの一連の処理を終了する。
【0056】
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)ストレージシステム100は、計算機ノード101、不揮発性の記憶デバイスであるドライブ113、およびドライブ113よりも高速なアクセスが可能なメモリ118を含む。それぞれのドライブ113は、記憶領域が、ユーザデータを格納するユーザ領域と、ユーザデータへの書き込みに関するライトログ情報85を格納するメタ領域と、に分割されている。ライトログ情報85には、ユーザ領域における書き込み範囲とライトログ状態との組合せであるライトログレコードが複数含まれる。ライトログ状態には、書き込みを開始することを示す「開始」、および書き込みが完了したことを示す「完了」が含まれる。メモリ118には、ライトログ情報85を含むドライブログテーブル83が記録される。計算機ノード101は、ライトデータのライト要求を受けた場合に、ライトデータを書き込むユーザ領域の範囲である書き込み予定範囲を特定した上で、まずドライブログチェック処理(
図9のS313)を行い、次にデータライト処理(S315)を行う。ドライブログチェック処理(S313)では、書き込み予定範囲と少なくとも一部が重複する書き込み範囲を有するライトログレコードである重複ライトログレコードがドライブログに記録されている場合には、ドライブログテーブル83およびライトログ情報85を対象として、重複ライトログレコードのライトログ状態を「完了」に変更して(
図10のS322)からデータライト処理に進み、重複ライトログレコードがドライブログに記録されていない場合には、ドライブログおよびライトログ情報を変更することなくデータライト処理に進む(
図10のS321:NO)。データライト処理では、ライトログ情報およびドライブログに対して、書き込み予定範囲およびライトログ状態を「開始」とするライトログレコードを書き込み、その後に書き込み予定範囲へライトデータを書き込む。計算機ノード101は、ライトデータのライト要求を受信したことに起因する処理として、書き込み予定範囲と組み合わされるライトログ状態を「完了」に変更しない。
【0057】
ライトホール問題に対処するために、ユーザ領域に書き込む前にライトログ状態を「開始」とするライトログレコードをドライブ113に書き込み、ユーザ領域への書き込みが完了するとドライブ113に記録されているライトログ状態を「完了」に更新することが考えられる。この場合は、ユーザ領域への書き込みが完了したことを明確に記録できる。しかし、ライトホール問題への対処のために、ユーザ領域へ1回書き込むごとにメタ領域への書き込みが必ず2回発生する。一方で、本実施の形態ではライトログ状態を「開始」とするライトログレコードは必ず書き込むが、ライトログ状態を「完了」とするライトログレコードは特定の条件を満たす場合にしか書き込まない。そのため、ライトホール問題を解決するための追加処理において、ドライブ113への書き込みを少なく抑えることができる。特に、ライトログ資源の数に対して、ユーザデータ空間が十分に大きければ、重複領域の書き込みが発生する前に他のライトデータを書き込むためのライトログレコードを新たに記録するために上書きされ、重複領域の書き込みはほぼ発生しない。
【0058】
(2)ストレージシステム100には、ドライブ113を備える計算機ノード101が複数含まれる。計算機ノード101であるデータノードDNは、上位制御からライトデータのライト要求を受けた場合にはさらに、他の計算機ノード101であるパリティノードPNに対してライトデータのライト要求を送信する(
図21のS521)。そのため、複数の計算機ノード101を用いて信頼性や可用性をさらに向上させることができる。
【0059】
(3)ドライブログに含まれるライトログレコードの数、およびライトログ情報に含まれるライトログレコードの数は、当該ストレージシステムにおける最大同時書き込み数に基づき設定される。たとえばライトログ資源の数、およびライトログ情報に含まれるライトログレコードの数をストレージシステム100における最大同時IO数の2倍とし、ドライブログに含まれるライトログレコードの数は、最大同時IO数の2倍に計算機ノード101に含まれるドライブ113の数を乗じた数に設定される。そのため、ライトログレコードが上書きされる頻度を増やし、ドライブ113の記録されたライトログ状態を「完了」に変更する機会を減らすことができる。
【0060】
(4)メタ領域において重複のないそれぞれ異なる領域にアクセスするための複数のライトログ資源が設定される。計算機ノード101は、ライトログ資源を占有してメタ領域にライトログレコードを書き込む。そのため、複数処理が同一のメタ領域へ同時にアクセスすることが防止される。
【0061】
(変形例1)
上述した第1の実施の形態では、データノードDNとパリティノードPNは異なる計算機ノード101であった。しかし同一の計算機ノード101がデータノードDNおよびパリティノードPNとして動作してもよい。
【0062】
本変形例によれば次の作用効果が得られる。
(5)計算機ノード101は、ライト要求を受けた場合に、ライトデータおよびライトログレコードを2以上のドライブ113に記録し、書き込み範囲とは、同一のドライブ113に記録されるユーザデータの書き込み範囲である。そのため、単一の計算機ノード101に閉じたミラーリングにおいても、ライトホール問題を解決するための追加処理において、ドライブ113への書き込みを少なく抑えることができる。
【0063】
上述した各実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、1つの機能ブロック図で表した構成を2以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。
【0064】
上述した各実施の形態および変形例において、プログラムはメモリ118に格納されるとしたが、プログラムは不揮発性の記憶装置に格納されていてもよい。また、計算機ノード101が不図示の入出力インタフェースを備え、必要なときに入出力インタフェースと前述の不揮発性の記憶装置が利用可能な媒体を介して、他の装置からプログラムが読み込まれてもよい。ここで媒体とは、例えば入出力インタフェースに着脱可能な記憶媒体、または通信媒体、すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号、を指す。また、プログラムにより実現される機能の一部または全部がハードウエア回路やFPGAにより実現されてもよい。
【0065】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【0066】
100 …ストレージシステム
51…IO処理プログラム
52…ライトログ管理プログラム
81…ライトログ資源テーブル
82…ライトログ資源キュー
83…ドライブログテーブル
84…ハッシュテーブル
85…ライトログ情報
101…計算機ノード
118…メモリ
119…プロセッサ