JP6976237B2 - ストレージシステム、データ管理方法、及びデータ管理プログラム - Google Patents

ストレージシステム、データ管理方法、及びデータ管理プログラム Download PDF

Info

Publication number
JP6976237B2
JP6976237B2 JP2018210691A JP2018210691A JP6976237B2 JP 6976237 B2 JP6976237 B2 JP 6976237B2 JP 2018210691 A JP2018210691 A JP 2018210691A JP 2018210691 A JP2018210691 A JP 2018210691A JP 6976237 B2 JP6976237 B2 JP 6976237B2
Authority
JP
Japan
Prior art keywords
controller
data
transfer
new data
controllers
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
JP2018210691A
Other languages
English (en)
Other versions
JP2020077248A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2018210691A priority Critical patent/JP6976237B2/ja
Priority to US16/546,356 priority patent/US10936518B2/en
Publication of JP2020077248A publication Critical patent/JP2020077248A/ja
Priority to US17/169,775 priority patent/US11334508B2/en
Priority to JP2021182809A priority patent/JP7201775B2/ja
Application granted granted Critical
Publication of JP6976237B2 publication Critical patent/JP6976237B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、ストレージシステムにおけるデータを管理する技術に関する。
ストレージシステムでは、電源喪失などの障害からデータを保護するために、複数のストレージコントローラ間でデータを多重化(一般には二重化)している。また、ストレージシステムでは、複数の専用回路を用い、ライトデータをキャッシュ領域に同時に多重化することも行われている。
例えば、特許文献1には、第一キャッシュとFIFOバッファとにデータを格納した時点でホストにライト完了を送信し、その後、FIFOバッファから第二キャッシュにデータを送付することで、キャッシュを二重化するストレージシステムでの書込みを高速化する技術が開示されている。
一方、専用回路の開発コスト削減を目的として、特許文献2には、専用回路の処理を汎用コントローラでエミュレーションするストレージシステムにおいて、データの一貫性を保証する技術が開示されている。この技術では、コントローラ外部から受領するデータをバッファ領域に格納し、このコントローラがバッファ領域からキャッシュ領域に転送することで、I/O処理中に障害が発生しても、データの破壊を防ぐことができるようにしている。
特開2005−44010号公報 国際公開第2015/052798号
ストレージシステムの性能向上のために、汎用コントローラを多数搭載したストレージシステムが登場している。
このようなストレージシステムにおいて、メモリ容量の増加を抑える観点では、データの多重化を二多重とすることが望ましい。
例えば、このようなストレージシステムにおいてデータを二重化する場合においては、ホストからデータを受領するコントローラと、データの二重化先のコントローラとが全て異なる場合がある。このような場合に、特許文献2に記載の技術では、二重化先のコントローラのそれぞれにおいて、バッファ領域からキャッシュ領域へデータを転送する必要があり、コントローラのプロセッサへの処理負荷が掛かり、コントローラの性能が低下してしまう虞がある。
本発明は、上記事情に鑑みなされたものであり、その目的は、コントローラのプロセッサへの処理負荷を抑制しつつ、適切にデータの一貫性を確保することのできる技術を提供することにある。
上記目的を達成するため、一観点に係るストレージシステムは、複数のコントローラと、データを格納可能な記憶デバイスユニットとを有するストレージシステムであって、メモリに直接アクセス可能であるとともに、他のコントローラとの通信が可能なDMA(Direct Memory Access)部を有し、コントローラは、プロセッサ部と、データを一時的に格納するバッファ領域と、データをキャッシュするキャッシュ領域とを有するメモリと、を有し、ライト要求にかかる新データがバッファ領域に格納された場合に、コントローラのプロセッサ部は、DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラのキャッシュ領域に対して、他のバッファ領域を介さずに順次転送させる。
本発明によれば、コントローラのプロセッサへの処理負荷を抑制しつつ、適切にデータの一貫性を確保することができる。
図1は、実施例1に係るストレージシステムのライト処理の概要を説明する図である。 図2は、実施例1に係るストレージシステムの障害発生時のライト処理の概要を説明する図である。 図3は、実施例1に係る計算機システムの構成図である。 図4は、実施例1に係るコントローラ状態管理情報のデータ構造の一例を示す図である。 図5は、実施例1に係るキャッシュ状態管理情報のデータ構造の一例を示す図である。 図6は、実施例1に係る転送管理情報のデータ構造の一例を示す図である。 図7は、実施例1に係る転送状態管理情報のデータ構造の一例を示す図である。 図8は、実施例1に係る逐次転送依頼処理のフローチャートである。 図9は、実施例1に係る逐次転送完了待ち処理のフローチャートである。 図10は、実施例1に係る逐次転送処理のフローチャートである。 図11は、実施例1に係る障害対応処理のフローチャートである。 図12は、実施例2に係る逐次転送完了待ち処理のフローチャートである。 図13は、実施例2に係る障害対応処理のフローチャートである。
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
また、以下の説明における用語の意味は、下記の通りである。
(*)「PDEV」は、不揮発性の物理的な記憶デバイスの略である。複数のPDEVで複数のRAIDグループが構成されてよい。「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。RAIDグループはパリティグループと呼ばれてもよい。
(*)HCA(Host Channel Adaptor)は、CPUに指示され、コントローラ間の通信を行うデバイスである。HCAは、例えば、DMA(Direct Memory Access)部の一例であり、メモリに直接アクセスすることができる。
(*)プロセッサ部は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
まず、実施例1に係る計算機システムについて説明する。
図1は、実施例1に係るストレージシステムのライト処理の概要を説明する図である。図1は、二重化先のコントローラ22(#1、#2)それぞれのキャッシュ領域243(#1、#2)に対して逐次にデータを転送するライト処理の流れを示している。
本実施例に係る計算機システム100のストレージシステム2は、複数のコントローラ22(コントローラ#0,#1,#2)を備えている。複数のコントローラ22は、相互に接続されている。コントローラ22は、例えば、ストレージシステム専用のコントローラではなくて、汎用のコントローラである。コントローラ22は、FE−I/F210と、プロセッサ部の一例としてのCPU230と、メモリ240とを有する。メモリ240は、バッファ領域242及びキャッシュ領域243を有するとともに、転送状態管理情報247を格納している。
ストレージシステム2においては、各コントローラ22がホスト計算機(ホストともいう)1からのI/O要求を並列に処理できるよう、I/O処理対象の空間(例えば、論理ユニット:LU)ごとに処理担当(この処理担当である権利を、オーナ権という)のコントローラ22を定めている。例えば、コントローラ#1が、LUN#0のLUに対するオーナ権を持っているとき、LUN#0のLUに対するI/O要求は、このコントローラ#1の制御により処理される。
ホスト計算機1(ホスト計算機#0、#1、#2)は、通信ネットワーク11を介して、ストレージシステム2と接続されている。ホスト計算機1は、例えば、それぞれ1つのコントローラ22と接続する。
コントローラ22は、ホスト計算機1からのライト要求に従うライトデータを、記憶デバイスユニット20に書き込まず、複数のコントローラ22内のキャッシュ領域243に二重化して格納した後に、ホスト計算機1に対してライト処理の完了を通知する。これにより、高速なライト処理を実現することができる。
コントローラ22は、ライト要求とは非同期にキャッシュ領域243内のライトデータを記憶デバイスユニット20に書き込む。既にキャッシュ領域243に二重化されたライトデータが格納されていて、まだ記憶デバイスユニット20に書き込まれていない状態(ダーティ状態といい、このライトデータをダーティデータという)において、ホスト計算機1から同じ書き込み先への新たなライトデータを受領するときには、コントローラ22は、キャッシュ領域243内のライトデータの破壊を避けるために、新たなライトデータをバッファ領域242に格納する。その後、コントローラ22は、バッファ領域242内に格納した新たなライトデータを複数(二重化の場合には2つ)のコントローラ内のそれぞれのキャッシュ領域243に逐次に転送することでライトデータの一貫性を保持する。転送状態管理情報247は、二重化先のコントローラ22のそれぞれのキャッシュ領域243に対してライトデータを逐次に転送する際の進捗状況(転送状態)を管理する情報である。
ここで、ライト要求を受領したコントローラ22以外のコントローラ22のバッファ領域242を介さずに、一のコントローラ22のキャッシュ領域243にライトデータを転送し、転送が完了した後、他のコントローラ22のキャッシュ領域243にライトデータを転送することを「逐次転送」という。
ここで、コントローラ#0が、コントローラ#1がオーナ権を有するLUに対するライト要求をホスト計算機#0から受け取った場合のライト処理について説明する。
コントローラ#0は、ホスト計算機#0からライト要求を受信した場合、コントローラ#0のCPU#0は、ライト要求の対象となるLUのオーナ権を有するコントローラ#1のCPU#1にライト要求を転送する。
CPU#1は、バッファ領域#0上にライトデータを格納する領域を確保させ、ライトデータに対応するキャッシュ領域243(本例では、キャッシュ領域#1、#2)上に格納されているデータの状態を確認する。本実施形態では、キャッシュ領域243のデータは、ダーティ状態であることとする。キャッシュ領域243のデータがダーティ状態(ダーティデータ)であるので、CPU#1は、逐次転送が必要と判断する。
その後、コントローラ#0のCPU#0は、FE−IF#0を介してバッファ領域#0に確保された領域にライトデータを格納する(ステップS1)。
次いで、CPU#1は、HCA#0に、バッファ領域#0からキャッシュ領域#2へライトデータをコピー(転送)し、その後、キャッシュ領域#1にライトデータをコピー(転送)すること(逐次転送)を依頼する(ステップS2)。
HCA#0は、HCA#2を介して、バッファ領域#0からキャッシュ領域#2へライトデータをコピーする(以降、第一転送という)(ステップS3)。この際、HCA#0は、データコピー時にデータに付与された保証コードを確認する。保証コードは、データの格納位置を示す情報(VOL番号やVOLのアドレス等)やデータの一貫性を確認する情報(CRC(Cyclic Redundancy Check)等)から構成されてもよい。
次に、HCA#0は、HCA#2を介して、転送状態管理情報#2に、キャッシュ領域#2へのライトデータの転送受領を格納させ、HCA#2に、転送状態管理情報#1にキャッシュ領域#2へのライトデータの転送完了を格納させることを依頼する(ステップS4)。依頼を受けたHCA#2は、HCA#1を介して、転送状態管理情報#1にキャッシュ領域#2へのライトデータの転送完了を格納させる(ステップS5)。
次に、HCA#0は、HCA#1を介して、バッファ領域#0からキャッシュ領域#1へライトデータをコピーする(以降、第二転送という)(ステップS6)。
次に、HCA#0は、HCA#1を介して、転送状態管理情報#1にキャッシュ領域#1へのライトデータの転送完了を格納させる(ステップS7)。
CPU#1は、転送状態管理情報#1を参照し、ライトデータの二重化完了を確認する(ステップS8)。次に、CPU#1は、CPU#0及びFE−I/F#0を介して、ホスト計算機#0にライト要求完了を報告する(ステップS9)。これにより、ホスト計算機1からのライトデータは、キャッシュ領域#1と、キャッシュ領域#2とに二重化して格納される。
なお、上記例では、キャッシュ領域#2、#1の順でライトデータを順次転送させていたが、キャッシュ領域#1、#2の順としてもよい。
図2は、実施例1に係るストレージシステムの障害発生時のライト処理の概要を説明する図である。図2は、図1に示すライト処理の途中に障害が発生した時のライト処理の概要を示している。
HCA#0が、CPU#1から逐次転送の依頼を受け、逐次転送を実施中にHCA250やHCA250を繋ぐネットワーク(図3のHCAネットワーク23)のパス等に障害が発生すると(ステップS11)、キャッシュ領域#1または#2内のダーティ状態のライトデータ(ダーティデータ)を破壊してしまう虞がある(ステップS12)。つまり、ダーティデータの一部分だけが新たなライトデータの一部分によって上書きされた別のデータとなってしまう虞がある。
そこで、ライトデータを管理するCPU#1は、転送状態管理情報247を参照し、正常なダーティデータを保持するキャッシュ領域243を特定する(ステップS13)。その後、CPU#1は、特定したキャッシュ領域243内のダーティデータをデステージ(すなわち、記憶デバイスユニット20に転送)する(ステップS14)。さらに、CPU#1は、デステージを完了後に、キャッシュ領域#1及び#2内のダーティデータを破棄する。なお、以降の説明では、特に記載しない場合には、デステージの完了後に、そのデステージしたデータに対応するデータが格納されていた複数のキャッシュ領域243のデータを破棄するものとする。
以上の処理により、正常なダーティデータを選択して記憶デバイスユニット20に書き込むことができ、ライトデータの一貫性を保証できる。
次に、本実施例に係る計算機システムについて詳細に説明する。
図3は、実施例1に係る計算機システムの構成図である。
計算機システム100は、1以上のホスト計算機1と、ストレージシステム2とを備える。ホスト計算機1と、ストレージシステム2とは、ネットワーク11を介して接続されている。ネットワーク11は、例えば、SAN(Storage Area Network)である。
ストレージシステム2は、複数(例えば、3台以上)のコントローラ22(コントローラ22#0,・・・,#N)と、記憶デバイスユニット20とを有する。複数のコントローラ22は、HCAネットワーク23を介して相互に接続されている。ストレージシステム2の可用性を向上させるため、コントローラ22毎に専用の電源を用意し、それぞれのコントローラ22に対して、その専用の電源を用いて給電するようにしてもよい。
コントローラ22は、通信インタフェースと、記憶デバイスと、それらに接続されたプロセッサとを有する。通信インタフェースは、例えば、FE−I/F(Front End Inter/Face)210、BE−I/F(Back End Inter/Face)220、及びHCA250である。記憶デバイスは、例えば、メモリ240である。プロセッサは、例えば、CPU(Central Processing Unit)230である。なお、図3においては、コントローラ22は、1つのメモリ240を備えている構成としているが、メモリ240を複数備えてもよい。
FE−I/F210は、ホスト計算機1等のフロントエンドに存在する外部デバイスと通信するためのインタフェースデバイスである。BE−I/F220は、コントローラ22が記憶デバイスユニット20と通信するためのインタフェースデバイスである。HCA250は、各コントローラ22のメモリ240を操作するために他のHCA250と通信するためのインタフェースデバイスである。
メモリ240は、例えば、RAM(Random Access Memory)であり、バッファ領域242と、キャッシュ領域243とを含む。また、メモリ240は、制御モジュール241、コントローラ状態管理情報244、キャッシュ状態管理情報245、転送管理情報246、及び転送状態管理情報247を記憶する。なお、メモリ240は、不揮発性メモリであっても、揮発性メモリであってもよい。
制御モジュール241は、CPU230に実行されることにより、ストレージシステム2全体を制御するためのモジュール(プログラム)である。より具体的には、制御モジュール241は、CPU230に実行されることにより、I/O処理の制御等を行う。
バッファ領域242は、ホスト計算機1から受領したライトデータを一時的に格納する領域である。
キャッシュ領域243は、ホスト計算機1から記憶デバイスユニット20へ送信されるライトデータをキャッシュする領域である。キャッシュ領域243は、ダーティデータを格納することもあるので、バックアップ電源等により不揮発化されていてもよい。
コントローラ状態管理情報244は、コントローラ22が正常状態か、故障状態かを管理するための情報である。キャッシュ状態管理情報245は、二重化に使用されているキャッシュ領域243を有するコントローラ22とキャッシュの状態を管理するための情報である。転送管理情報246は、逐次転送で転送するライトデータを受信したコントローラ22と、転送状態管理情報247のエントリのアドレスを管理するための情報である。転送状態管理情報247は、逐次転送の進捗状況(転送状態)を管理するための情報である。コントローラ状態管理情報244、キャッシュ状態管理情報245、転送管理情報246、及び転送状態管理情報247の詳細は、図4乃至図7を参照して後述する。
記憶デバイスユニット20は、複数のPDEV200を有する。PDEV200は、HDD(Hard Disk Drive)でよいが、他種の記憶デバイス(不揮発性の記憶デバイス)、例えば、SSD(Solid State Drive)のようなFM(Flash Memory)デバイスでもよい。記憶デバイスユニット20は、異なる種類のPDEV200を有してよい。また、複数の同種のPDEV200でRAIDグループが構成されてよい。RAIDグループには、所定のRAIDレベルに従いデータが格納される。コントローラ22がホスト計算機1から受信したライトデータに対しては、FE−I/F210によって保証コードが付与される。この保証コードが付与されたデータは、RAIDグループに格納される。
HCA250は、CPU230から指示を受け、自コントローラ22のメモリ240に対する操作や、HCAネットワーク23を経由して、他コントローラ22のメモリ240に対する操作を行う。
次に、コントローラ状態管理情報244を詳細に説明する。
図4は、実施例1に係るコントローラ状態管理情報のデータ構造の一例を示す図である。
コントローラ状態管理情報244は、コントローラ22ごとのエントリを格納する。コントローラ状態管理情報233のエントリは、コントローラID401及び状態402のフィールドを含む。コントローラID401には、エントリに対応するコントローラ22の識別子(コントローラID)が格納される。状態402には、エントリに対応するコントローラ22の動作状態が格納される。動作状態としては、正常、故障等がある。
次に、キャッシュ状態管理情報245を詳細に説明する。
図5は、実施例1に係るキャッシュ状態管理情報のデータ構造の一例を示す図である。
キャッシュ状態管理情報245は、データアドレス毎のエントリを格納する。キャッシュ状態管理情報245のエントリは、データアドレス501、第一転送先コントローラID502、第二転送先コントローラID503、及びキャッシュ状態504のフィールドを含む。
データアドレス501には、エントリに対応するストレージシステム2内のユーザデータの格納位置を示す値(データアドレス)が格納される。
第一転送先コントローラID502には、エントリに対応するデータアドレスのデータが二重化されてキャッシュされている、第一転送の転送先のキャッシュ領域243を有するコントローラ22(転送先コントローラの一例)の識別子(コントローラID:第一転送先コントローラID)が格納される。
第二転送先コントローラID503には、エントリに対応するデータアドレスのデータが二重化されてキャッシュされている、第二転送の転送先のキャッシュ領域243を有するコントローラ22(担当コントローラの一例)の識別子(コントローラID:第二転送先コントローラID)が格納される。本実施形態では、第二転送先コントローラID503には、エントリに対応するデータアドレスのデータが属する論理ユニットのオーナ権を有するコントローラ(オーナコントローラ)22のコントローラIDが格納される。
キャッシュ状態504には、エントリに対するデータアドレスのデータのキャッシュの状態を示す情報が格納される。キャッシュの状態としては、記憶デバイスユニット20にデステージされていないことを示すダーティと、デステージされていることを示すクリーンとがある。
次に、転送管理情報246を詳細に説明する。
図6は、実施例1に係る転送管理情報のデータ構造の一例を示す図である。
転送管理情報246は、データアドレス毎のエントリを格納する。転送管理情報246のエントリは、データアドレス601、コントローラID602、及び転送状態管理情報アドレス603のフィールドを含む。データアドレス601には、エントリに対応するストレージシステム2内のユーザデータの格納位置(記憶空間)を示す値(データアドレス)が格納される。コントローラID602には、エントリに対応するデータアドレスのライトデータをホスト1から受信したコントローラ(受信コントローラ)22の識別情報(コントローラID)が格納される。転送状態管理情報アドレス603には、エントリに対応するデータアドレスの転送状態管理情報247における対応するエントリの格納場所を示す値(アドレス)が格納される。
次に、転送状態管理情報247を詳細に説明する。
図7は、実施例1に係る転送状態管理情報のデータ構造の一例を示す図である。
転送状態管理情報247は、データアドレス毎のエントリを格納する。転送状態管理情報247のエントリは、データアドレス701、第一転送データ受領済フラグ702、第一転送完了フラグ703、及び第二転送完了フラグ704のフィールドを含む。
データアドレス701は、エントリに対応するストレージシステム2内のユーザデータの格納位置を示す値(データアドレス)が格納される。第一転送データ受領済フラグ702には、HCA250によって、データアドレス701のデータアドレスに対応するライトデータの第一転送のデータが受領されたか否かを示す値(受領済みフラグ)が格納される。受領済みフラグは、受領された場合には、「1」が設定され、受領されていない場合には、「0」が設定される。第一転送完了フラグ703には、HCA250によって、データアドレス701に対応するデータアドレスのライトデータの第一転送が完了したか否かを示す値(第一転送完了フラグ)が格納される。第一転送完了フラグは、第一転送が完了された場合には、「1」が設定され、第一転送が完了されていない場合には、「0」が設定される。第二転送完了フラグ704には、HCA250によって、データアドレス701に対応するデータアドレスのライトデータの第二転送が完了したか否かを示す値(第二転送完了フラグ)が格納される。第二転送完了フラグは、第二転送が完了された場合には、「1」が設定され、第二転送が完了されていない場合には、「0」が設定される。
次に、実施例1に係る計算機システムによる処理動作について説明する。
まず、逐次転送依頼処理について説明する。
図8は、実施例1に係る逐次転送依頼処理のフローチャートである。
逐次転送依頼処理は、ライト要求に対応するライトデータ(新データ)が対象とする記憶デバイスユニット20における論理ユニット(記憶空間)のオーナ権を有するコントローラ22(オーナコントローラ22という。:担当コントローラの一例)がライト要求を受信した場合に実行される。ここで、オーナコントローラ22にライト要求が送信される場合としては、ホスト計算機1から直接オーナコントローラ22に送られる場合と、ライト要求に対応するライトデータに対応するキャッシュ領域243を有さず、FE−I/F210を介してホスト計算機1からライトデータを受領したコントローラ22(FEコントローラ22という。受信コントローラの一例)からオーナコントローラ22に転送される場合と、がある。
本例では、FEコントローラ22からオーナコントローラ22にライト要求が転送された場合を例に説明する。
オーナコントローラ22は、ライト要求を受信する(ステップS101)。次いで、オーナコントローラ22は、キャッシュ状態管理情報245を参照し、ライト要求のデータアドレスに対応するエントリのキャッシュ状態504からキャッシュ状態を取得し(ステップS102)、キャッシュ状態がダーティであるか否かを判定する(ステップS103)。
この結果、ダーティでないと判定された場合(ステップS103:NO)には、キャッシュ領域243のデータ(旧データ)が既に記憶デバイスユニット20に格納されていることを示すので、オーナコントローラ22は、ライトデータを2つのコントローラ22のキャッシュ領域243に同時に(並行して)転送し、処理を終了する(S106)。
一方、ダーティであると判定された場合(ステップS103:YES)には、オーナコントローラ22は、ライト要求のデータアドレスに対応する転送状態管理情報247のエントリの格納先を示す値(転送状態管理情報アドレス)を取得し、転送管理情報246にエントリを追加する。オーナコントローラ22は、追加したエントリのデータアドレス601、コントローラID602、及び転送状態管理情報アドレス603に、それぞれ、ライトデータのデータアドレス、FEコントローラ22のコントローラID、及び転送状態管理情報247のエントリの転送状態管理情報アドレスを設定する(ステップS104)。
次に、オーナコントローラ22は、ライトデータの逐次転送をFEコントローラ22内のHCA250に依頼し(ステップS105)、次の処理(図9の逐次転送完了待ち処理)を実行する(L0)。なお、FEコントローラ22のHCA250への依頼は、自コントローラ22のHCA250を経由して通知してもよい。
次に、逐次転送完了待ち処理について説明する。
図9は、実施例1に係る逐次転送完了待ち処理のフローチャートである。
オーナコントローラ22は、逐次転送が完了しているか否かを判定する(ステップS201)。すなわち、オーナコントローラ22は、転送状態管理情報247を参照し、ライトデータのデータアドレスに対応するエントリ、すなわち、データアドレス701の値がライトデータのデータアドレスであるエントリにおける第一転送完了フラグ703及び第二転送完了フラグ704のフラグが立っているか否か、すなわち、フラグの値が“1”であるか否かを判定する。なお、本ステップの処理は、一定の周期で行ってもよい。
この結果、逐次転送が完了していると判定した場合(ステップS201:YES)には、オーナコントローラ22は、FEコントローラ22を経由してホスト1にライト処理が終了したことを意味するGood応答を送信し(ステップS202)、処理を終了する。一方、逐次転送が完了していないと判定した場合(ステップS201:NO)には、オーナコントローラ22は、コントローラ状態管理情報244から他のコントローラ22の状態を取得し、状態が故障であるコントローラID(故障コントローラID)を特定する(ステップS203)。
次いで、オーナコントローラ22は、第一転送の転送先コントローラ22(第一転送先コントローラ22)が故障しているか否かを判定する(ステップS204)。具体的には、オーナコントローラ22は、ステップS203で特定した故障コントローラIDに、データアドレスに対応するキャッシュ状態管理情報245のエントリにおけるデータアドレス501に格納された第一転送先コントローラID502の第一転送先コントローラIDと一致するものが存在するか否かにより、第一転送先コントローラ22が故障しているか否かを判定する。
この結果、第一転送先コントローラ22が故障していると判定した場合(ステップS204:YES)には、オーナコントローラ22は、第二転送が完了しているか否かを判定する(ステップS205)。すなわち、オーナコントローラ22は、転送状態管理情報247を参照し、データアドレスに対応するエントリの第二転送完了フラグ704のフラグが立っているか否かを判定する。
この結果、第二転送が完了していると判定した場合(ステップS205:YES)には、第二転送により、第二転送先コントローラ(オーナコントローラ22)のキャッシュ領域243に対してライトデータが格納されていることを意味しているので、オーナコントローラ22は、オーナコントローラ22のキャッシュ領域243に格納されているライトデータ(保証データ)をデステージ(記憶デバイスユニット20に転送)する(ステップS207)。次に、オーナコントローラ22は、FEコントローラ22を経由してホスト1に失敗応答を送信し、処理を終了する(ステップS211)。
ここで、第二転送が完了している場合(ステップS205:YES)には、第二転送の転送先のコントローラ22(第二転送先コントローラ22、オーナコントローラ)のキャッシュ領域243のライトデータは壊れていないことを示しているため、キャッシュ領域243のライトデータをデステージすることで、データの一貫性を保証できる。
一方、第二転送が完了していないと判定した場合(ステップS205:NO)には、オーナコントローラ22は、第一転送が完了しているか否かを判定する(ステップS206)。すなわち、オーナコントローラ22は、転送状態管理情報247を参照し、データアドレスに対応するエントリの第一転送完了フラグ703のフラグが立っているか否か判定する。
この結果、第一転送が完了していると判定した場合(ステップS206:YES)には、オーナコントローラ22は、処理をステップS201に進め、第二転送の完了を待つ。
一方、第一転送が完了していないと判定した場合(ステップS206:NO)、オーナコントローラ22は、処理をステップS207に進める。
ここで、第一転送が完了していない場合、第二転送の開始前に第一転送先コントローラ22が故障していることを意味しているので、第二転送先コントローラであるオーナコントローラ22のキャッシュ領域243のダーティデータは更新されておらず、このキャッシュ領域243のダーティデータ(保証データ)をデステージすることで、データの一貫性を保証できる。
一方、ステップS204で、第一転送先コントローラ22が故障していないと判定した場合(S204:NO)には、オーナコントローラ22は、FEコントローラ22が故障しているか否かを判定する(ステップS208)。すなわち、オーナコントローラ22は、転送管理情報246を参照し、データアドレスに対応するエントリのコントローラID602のコントローラIDを取得し、このコントローラIDと一致するものがステップS203で特定した故障コントローラIDに存在するか否かにより、FEコントローラ22が故障しているか否かを判定する。
この結果、FEコントローラ22が故障していないと判定した場合(ステップS208:NO)には、オーナコントローラ22は、処理をステップS201に戻し、逐次転送の完了を待つ。
一方、FEコントローラ22が故障していると判定した場合(ステップS208:YES)には、オーナコントローラ22は、第一転送が完了しているか否かを判定する(ステップS209)。すなわち、オーナコントローラ22は、転送状態管理情報247を参照し、データアドレスに対応するエントリの第一転送完了フラグ703のフラグが立っているか否か判定する。なお、第一転送完了フラグ703のフラグで判定する代わりに、第一転送データ受領済フラグ702のフラグが立っているか否かを判定してもよい。また、ステップS209の前に、第二転送が完了しているか否かを判定し、第二転送が完了している場合、ホスト1にGood応答を送信し、処理を終了してもよい。
この結果、第一転送が完了していると判定した場合(ステップS209:YES)、オーナコントローラ22は、第一転送先のコントローラ22にそのコントローラ22のキャッシュ領域243からのデータ(保証データ)のデステージを依頼し(ステップS210)、処理をステップ211に進める。なお、第一転送先のコントローラ22は、依頼に対応して、キャッシュ領域243のデータをデステージすることとなる。ここで、第一転送が完了している場合、第一転送先コントローラ22のキャッシュ領域243のライトデータは壊れていないため、このキャッシュ領域243のライトデータがデステージされることによりデータの一貫性を保証できる。
一方、第一転送が完了していないと判定した場合(ステップS209:NO)には、オーナコントローラ22は、処理をステップS207に進め、自コントローラ22のキャッシュ領域243のライトデータ(保証データ)をデステージする。ここで、第一転送が完了していない場合、第二転送の開始前にFEコントローラ22が故障しているため、オーナコントローラ22のキャッシュ領域243のダーティデータは更新されておらず、このキャッシュ領域243のダーティデータをデステージすることでデータの一貫性を保証できる。
次に、逐次転送処理について説明する。
図10は、実施例1に係る逐次転送処理のフローチャートである。
FEコントローラ22(具体的には、FEコントローラ22のHCA250)は、オーナコントローラ22から送信された逐次転送依頼を受信し、逐次転送依頼からライトデータのデータアドレスを取得する(ステップS301)。次に、FEコントローラ22は、キャッシュ状態管理情報245を参照し、データアドレスに対応するエントリの第一転送先コントローラID502及び第二転送先コントローラID503から、第一転送先コントローラID及び第二転送先コントローラIDを取得する(ステップS302)。
次に、FEコントローラ22のHCA250は、第一転送を実行する(ステップS303)。具体的には、FEコントローラ22のHCA250は、ライトデータをバッファ領域242から取り出し、第一転送先コントローラ22のHCA250を介して、ライトデータをキャッシュ領域243に転送する(ステップS303)。この際、ライトデータは、第一転送先コントローラ22のバッファ領域240を経由することなく、また、第一転送先コントローラ22のCPU230の関与なしに、キャッシュ領域243に転送される。
次に、FEコントローラ22のHCA250は、ライトデータの転送が成功したか否かを判定する(ステップS304)。
この結果、転送が失敗したと判定した場合(ステップS304:NO)には、FEコントローラ22のHCA250は、逐次転送処理を終了する。
一方、転送が成功したと判定した場合(ステップS304:YES)には、FEコントローラ22のHCA250は、第一転送先コントローラ22のメモリ240内に存在する転送状態管理情報247のデータアドレスに対応するエントリの第一転送データ受領済フラグ702のフラグを立てる、すなわち、フラグを1に設定する(ステップS305)。
次に、FEコントローラ22のHCA250は、第一転送先コントローラ22のHCA250に第二転送先コントローラ22のメモリ240内に存在する転送状態管理情報247のデータアドレスに対応するエントリの第一転送完了フラグ703のフラグを立てることを指示する(ステップS306)。
次に、FEコントローラ22のHCA250は、第二転送を実行する(ステップS307)。具体的には、FEコントローラ22のHCA250は、ライトデータをバッファ領域242から取り出し、第二転送先コントローラ22のHCA250を介して、ライトデータをキャッシュ領域243に転送する(ステップS307)。
次に、FEコントローラ22のHCA250は、ライトデータの転送が成功したか否かを判定する(ステップS308)。
この結果、転送が失敗したと判定した場合(ステップS308:NO)には、FEコントローラ22は、逐次転送処理を終了する。
一方、転送が成功したと判定した場合(ステップS308:YES)には、FEコントローラ22のHCA250は、第二転送先コントローラ22のメモリ240内に存在する転送状態管理情報247のデータアドレスに対応するエントリの第二転送完了フラグ704のフラグを立てる、すなわち、フラグを1に設定し(ステップS309)、処理を終了する。
次に、障害対応処理について説明する。
図11は、実施例1に係る障害対応処理のフローチャートである。障害対応処理は、オーナコントローラ22以外のコントローラ22により実行される処理である。障害対応処理は、一定時間ごとに一度実行されてもよく、コントローラ22により障害が検知された場合に実行されてもよい。
コントローラ22は、コントローラ状態管理情報244から他のコントローラ22の状態を取得し、状態が故障であるコントローラID401(故障コントローラID)を特定する(ステップS401)。
次に、コントローラ22は、オーナコントローラ22(第二転送先コントローラ22)が故障しているか否かを判定する(ステップS402)。すなわち、オーナコントローラ22は、障害コントローラIDに、データアドレスに対応するキャッシュ状態管理情報245のエントリにおける第二転送先コントローラID503のコントローラIDと一致するものが存在しているか否かにより、オーナコントローラ22が故障しているか否かを判定する。
この結果、オーナコントローラ22が故障していないと判定した場合(ステップS402:NO)には、コントローラ22は、処理をステップS401に戻す。一方、オーナコントローラ22が故障していると判定した場合(ステップS402:YES)には、コントローラ22は、自身(自コントローラ)が第一転送先コントローラであるか否かを判定する(ステップS403)。すなわち、コントローラ22は、自身のコントローラID(自コントローラID)と、データアドレスに対応するキャッシュ状態管理情報245のエントリにおける第一転送先コントローラID503のコントローラIDとが同一であるか判定する。なお、上記処理の代わりに、自コントローラがFEコントローラであるか否かを判定し、すなわち、自コントローラIDと、転送管理情報246のデータアドレスに対応するエントリのコントローラID602のコントローラIDとが同一であるか否かを判定し、自コントローラがFEコントローラである場合に、以降の処理を行ってもよい。
ステップS403の判定の結果、自コントローラが第一転送先コントローラでないと判定した場合(ステップS403:NO)には、コントローラ22は、処理をステップS401に進める。
一方、自コントローラが第一転送先コントローラであると判定した場合(ステップS403:YES)には、コントローラ22は、第一転送が完了しているか否かを判定する(ステップS404)。すなわち、コントローラ22は、転送管理情報246のデータアドレスに対応するエントリの転送状態管理情報アドレス603のアドレスを用いて、転送状態管理情報247のエントリを参照し、このエントリの第一転送データ受領済フラグ702のフラグが立っているか否かを判定する。
この判定結果、第一転送が完了していないと判定した場合(ステップS404:NO)には、コントローラ22は、処理をステップS401に進め、第一転送の完了を待つ。
一方、第一転送が完了していると判定した場合(ステップS404:YES)には、コントローラ22は、キャッシュ領域243のライトデータ(保証データ)をデステージし(ステップS405)、FEコントローラ22を経由してホスト1に失敗応答を送信し(ステップS406)、処理を終了する。ここで、第一転送が完了している場合(ステップS404:YES)、第一転送先コントローラ22のキャッシュ領域243のライトデータは壊れていないため、キャッシュ領域243のライトデータをデステージすることでデータの一貫性を保証できる。
以上説明したように、上記実施例に係る計算機システムでは、ライトデータの二重化の処理の進捗に合わせて、障害発生時に記憶デバイスユニット20に書き込むキャッシュ領域243を使い分けることで、ライトデータの一貫性を保証できる。
次に、実施例2に係る計算機システムについて説明する。
実施例2に係る計算機システムは、図3に示す実施例1に係る計算機システムにおいて、論理ユニットを担当するコントローラ22を特定のコントローラ22に限定しない、すなわち、論理ユニットのオーナ権を設定しないようにしたシステムである。この計算機システムにおいては、例えば、ホスト1からのライト要求を受信したコントローラ(受信コントローラ)が担当コントローラとなる。
実施例2に係る計算機システムでは、図8に示す逐次転送依頼処理を、ホスト1からライト要求を受信したコントローラ22(FEコントローラ22)が実行する。
次に、逐次転送完了待ち処理について説明する。
図12は、実施例2に係る逐次転送完了待ち処理のフローチャートである。
FEコントローラ22は、逐次転送が完了しているか否かを判定する(ステップS501)。すなわち、FEコントローラ22は、転送状態管理情報247を参照し、ライトデータのデータアドレスに対応するエントリ、すなわち、データアドレス701の値がライトデータのデータアドレスであるエントリにおける第一転送完了フラグ703及び第二転送完了フラグ704のフラグが立っているか否か、すなわち、フラグの値が“1”であるか否かを判定する。
この結果、逐次転送が完了していると判定した場合(ステップS501:YES)には、FEコントローラ22は、ホスト1にGood応答を送信し(ステップS502)、処理を終了する。一方、逐次転送が完了していないと判定した場合(ステップS501:NO)には、FEコントローラ22は、コントローラ状態管理情報244から他のコントローラ22の状態を取得し、状態が故障であるコントローラID(故障コントローラID)を特定する(ステップS503)。
次いで、オーナコントローラ22は、第一転送の転送先コントローラ22(第一転送先コントローラ22)が故障しているか否かを判定する(ステップS504)。
この結果、第一転送先コントローラ22が故障していると判定した場合(ステップS504:YES)には、FEコントローラ22は、第二転送が完了しているか否かを判定する(ステップS505)。すなわち、FEコントローラ22は、転送状態管理情報247を参照し、データアドレスに対応するエントリの第二転送完了フラグ704のフラグが立っているか否かを判定する。
この結果、第二転送が完了していると判定した場合(ステップS505:YES)には、FEコントローラ22は、第二転送先のコントローラ22のキャッシュ領域243に格納されているライトデータ(保証データ)のデステージを依頼する(ステップS507)。次に、FEコントローラ22は、ホスト1に失敗応答を送信し、処理を終了する(ステップS511)。
ここで、第二転送が完了している場合(ステップS505:YES)には、第二転送の転送先のコントローラ22(第二転送先コントローラ22)のキャッシュ領域243のライトデータは壊れていないことを示しているため、キャッシュ領域243のライトデータをデステージすることで、データの一貫性を保証できる。
一方、第二転送が完了していないと判定した場合(ステップS505:NO)には、FEコントローラ22は、第一転送が完了しているか否かを判定する(ステップS506)。
この結果、第一転送が完了していると判定した場合(ステップS506:YES)には、FEコントローラ22は、処理をステップS501に進め、第二転送の完了を待つ。
一方、第一転送が完了していないと判定した場合(ステップS506:NO)、FEコントローラ22は、処理をステップS507に進める。
ここで、第一転送が完了していない場合、第二転送の開始前に第一転送先コントローラ22が故障していることを意味しているので、第二転送先コントローラのキャッシュ領域243のダーティデータは更新されておらず、このキャッシュ領域243のダーティデータをデステージすることで、データの一貫性を保証できる。
一方、ステップS504で、第一転送先コントローラ22が故障していないと判定した場合(S504:NO)には、FEコントローラ22は、第二転送先コントローラ22が故障しているか否かを判定する(ステップS508)。すなわち、FEコントローラ22は、キャッシュ状態管理情報245を参照し、データアドレスに対応するエントリの第二転送先コントローラID503のコントローラIDを取得し、このコントローラIDと一致するものがステップS503で特定した故障コントローラIDに存在するか否かにより、第二転送先コントローラ22が故障しているか否かを判定する。
この結果、第二転送先コントローラ22が故障していないと判定した場合(ステップS508:NO)には、FEコントローラ22は処理をステップS501に戻し、逐次転送の完了を待つ。
一方、第二転送先コントローラ22が故障していると判定した場合(ステップS508:YES)には、FEコントローラ22は、第一転送が完了しているか否かを判定する(ステップS509)。
この結果、第一転送が完了していないと判定した場合(ステップS509:NO)には、FEコントローラ22は、処理をステップS501に進め、第一転送が終わるのを待つ。
一方、第一転送が完了していると判定した場合(ステップS509:YES)、FEコントローラ22は、第一転送先のコントローラ22にそのコントローラ22のキャッシュ領域243からのデータ(保証データ)のデステージを依頼し(ステップS510)、処理をステップS511に進める。ここで、第一転送が完了している場合、第一転送先コントローラ22のキャッシュ領域243のライトデータは壊れていないため、このキャッシュ領域243のライトデータをデステージすることでデータの一貫性を保証できる。
次に、逐次転送処理について説明する。
実施例2に係る計算機システムの逐次転送処理は、図10に示す逐次転送処理とは、ステップS306とステップS309における処理内容が異なる。
実施例2に係る計算機システムにおいては、ステップS306では、コントローラ22のHCA250は、自コントローラ22のメモリ240内に存在する、データアドレスに対応する転送状態管理情報247のエントリの第一転送完了フラグ703のフラグを立てる。また、ステップS309では、コントローラ22のHCA250は、自コントローラ22のメモリ240内に存在する、データアドレスに対応する転送状態管理情報247のエントリの第二転送完了フラグ704のフラグを立てる。
次に、障害対応処理について説明する。
図13は、実施例2に係る障害対応処理のフローチャートである。
障害対応処理は、FEコントローラ22以外のコントローラ(他コントローラ)が実行する処理である。障害対応処理は、一定時間に一度実施してもよいし、他コントローラ22の障害検知時に実施してもよい。
コントローラ22は、コントローラ状態管理情報244から他のコントローラ22の状態を取得し、状態が故障であるコントローラID(故障コントローラID)を特定する(ステップS601)。次に、コントローラ22は、FEコントローラ22が故障しているか否かを判定する(ステップS602)。
この結果、FEコントローラ22が故障していないと判定した場合(ステップS602:NO)には、コントローラ22は、処理をステップS601に戻す。一方、FEコントローラ22が故障していると判定した場合(ステップS602:YES)には、コントローラ22は、自身(自コントローラ)が第一転送先コントローラであるか否かを判定する(ステップS603)。なお、上記処理の代わりに、自コントローラが第二転送先コントローラであるか否かを判定し、以降の処理を行ってもよい。
ステップS603の判定の結果、自コントローラ22が第一転送先コントローラでないと判定した場合(ステップS603:NO)には、コントローラ22は、処理をステップS601に進める。
一方、自コントローラが第一転送先コントローラであると判定した場合(S603:YES)には、コントローラ22は、第一転送が完了しているか否かを判定する(ステップS604)。
この判定結果、第一転送が完了していると判定した場合(ステップS604:YES)には、コントローラ22は、キャッシュ領域243のライトデータ(保証データ)をデステージし(ステップS606)、FEコントローラ22を経由してホスト1に失敗応答を送信し(ステップS607)、処理を終了する。ここで、第一転送が完了している場合(ステップS604:YES)、第一転送先コントローラ22のキャッシュ領域243のライトデータは壊れていないため、キャッシュ領域243のライトデータをデステージすることでデータの一貫性を保証できる。
一方、第一転送が完了していないと判定した場合(ステップS604:NO)には、コントローラ22は、第二転送先のコントローラ22にキャッシュ領域243に格納されているライトデータ(保証データ)のデステージを依頼し(ステップS605)、処理をステップS607に進める。ここで、第一転送が完了していない場合(ステップS604:NO)、第二転送の開始前に第一転送先コントローラ22が故障しているため、第二転送先コントローラ22のキャッシュ領域243のダーティデータは更新されておらず、このキャッシュ領域243のダーティデータをデステージすることでデータの一貫性を保証できる。
以上説明したように、上記実施例に係る計算機システムでは、ライトデータの二重化の処理の進捗に合わせて、障害発生時に記憶デバイスユニット20に書き込むキャッシュ領域243を使い分けることで、ライトデータの一貫性を保証できる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェア(データ管理プログラム)のプログラムコードによって実現してもよい。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどがある。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装してもよい。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上記実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
また、上記実施例では、複数のコントローラ22のキャッシュ領域243上での二重化ができない場合に、正常なデータを記憶デバイスユニット20にデステージすることにより、データの一貫性を保証できるようにしていたが、本発明はこれに限られず、例えば、複数のコントローラ22のキャッシュ領域243上での二重化ができない場合に、正常なデータを、正常な動作が可能なコントローラ22のキャッシュ領域243にコピーして、複数のコントローラ22のキャッシュ領域243上で二重化させるようにしてもよい。
また、上記実施形態では、ライトデータを複数のコントローラ22のキャッシュ領域243上で二重化をさせるようにしていたが、本発明はこれに限られず、3以上の多重化をさせるようにしてもよく。
1…ホスト計算機、2…ストレージシステム、11…ネットワーク、20…記憶デバイスユニット、22…コントローラ、23…HCAネットワーク、100…計算機システム、200…PDEV、230…CPU、240…メモリ、243…キャッシュ領域、244…コントローラ状態管理情報、245…キャッシュ状態管理情報、246…転送管理情報、247…転送状態管理情報、250…HCA




Claims (7)

  1. 複数のコントローラと、データを格納可能な記憶デバイスユニットとを有するストレージシステムであって、
    メモリに直接アクセス可能であるとともに、他のコントローラとの通信が可能なDMA(Direct Memory Access)部を有し、
    前記コントローラは、
    プロセッサ部と、
    データを一時的に格納するバッファ領域と、データをキャッシュするキャッシュ領域とを有するメモリと、を有し、
    ライト要求にかかる新データが前記バッファ領域に格納された場合に、前記コントローラのプロセッサ部は、
    前記DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラの前記キャッシュ領域に対して、他のバッファ領域を介さずに前記新データを転送させる処理を、それぞれの前記コントローラの前記キャッシュ領域に対する前記新データの転送の処理が重複しないように順次行うことにより前記新データの順次転送を行わせ、
    前記DMA部は、1つの前記コントローラの前記キャッシュ領域への前記新データの転送の処理の成功を確認してから、他の前記コントローラへの前記新データの転送の処理を行い、
    前記コントローラの前記プロセッサ部は、
    前記ライト要求に対応する格納領域の旧データが、複数のコントローラのメモリのキャッシュ領域に格納され、且つダーティデータである場合に、前記DMA部を用いて、前記新データの前記順次転送を行わせ、
    前記ライト要求に対応する格納領域の旧データが、複数のコントローラのメモリのキャッシュ領域に格納され、且つダーティデータでない場合に、前記DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラの前記キャッシュ領域に対して、前記新データを他のバッファ領域を介さずに並行して転送させる
    ストレージシステム。
  2. 複数のコントローラと、データを格納可能な記憶デバイスユニットとを有するストレージシステムであって、
    メモリに直接アクセス可能であるとともに、他のコントローラとの通信が可能なDMA(Direct Memory Access)部を有し、
    前記コントローラは、
    プロセッサ部と、
    データを一時的に格納するバッファ領域と、データをキャッシュするキャッシュ領域とを有するメモリと、を有し、
    ライト要求にかかる新データが前記バッファ領域に格納された場合に、前記コントローラのプロセッサ部は、
    前記DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラの前記キャッシュ領域に対して、他のバッファ領域を介さずに前記新データを転送させる処理を、それぞれの前記コントローラの前記キャッシュ領域に対する前記新データの転送の処理が重複しないように順次行うことにより前記新データの順次転送を行わせ、
    前記DMA部は、1つの前記コントローラの前記キャッシュ領域への前記新データの転送の処理の成功を確認してから、他の前記コントローラへの前記新データの転送の処理を行い、
    前記コントローラは、それぞれ前記DMA部を有しており、
    複数の前記DMA部は、前記ライト要求に対応する前記新データについての前記複数のコントローラの前記キャッシュ領域への転送状態を示す転送状態管理情報を前記コントローラの前記メモリに格納することで、前記複数のDMA部に前記転送を管理させ、全転送が完了したことを前記プロセッサ部が前記転送状態管理情報に基づき検知した場合に、前記ライト要求の要求元に応答し、
    前記記憶デバイスユニットにおけるI/O処理対象の記憶空間ごとに担当コントローラが決められており、
    ライト要求を受信した受信コントローラは、ライト要求を前記ライト要求の対象の記憶空間の担当コントローラにライト要求を送信するとともに、前記ライト要求の対象の新データをバッファ領域に格納し、
    前記担当コントローラのプロセッサ部は、前記受信コントローラのDMA部に対して、前記新データを複数のコントローラの前記キャッシュ領域に対して、他のバッファ領域を介さずに順次転送させる依頼を行い、
    前記受信コントローラのDMA部は、前記新データを格納対象の各コントローラの前記キャッシュ領域に転送させるごとに、前記新データの転送が完了したことを示す情報を前記担当コントローラの前記転送状態管理情報に格納させるように制御する
    ストレージシステム。
  3. 複数のコントローラと、データを格納可能な記憶デバイスユニットとを有するストレージシステムであって、
    メモリに直接アクセス可能であるとともに、他のコントローラとの通信が可能なDMA(Direct Memory Access)部を有し、
    前記コントローラは、
    プロセッサ部と、
    データを一時的に格納するバッファ領域と、データをキャッシュするキャッシュ領域とを有するメモリと、を有し、
    ライト要求にかかる新データが前記バッファ領域に格納された場合に、前記コントローラのプロセッサ部は、
    前記DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラの前記キャッシュ領域に対して、他のバッファ領域を介さずに前記新データを転送させる処理を、それぞれの前記コントローラの前記キャッシュ領域に対する前記新データの転送の処理が重複しないように順次行うことにより前記新データの順次転送を行わせ、
    前記DMA部は、1つの前記コントローラの前記キャッシュ領域への前記新データの転送の処理の成功を確認してから、他の前記コントローラへの前記新データの転送の処理を行い、
    前記コントローラは、それぞれ前記DMA部を有しており、
    複数の前記DMA部は、前記ライト要求に対応する前記新データについての前記複数のコントローラの前記キャッシュ領域への転送状態を示す転送状態管理情報を前記コントローラの前記メモリに格納することで、前記複数のDMA部に前記転送を管理させ、全転送が完了したことを前記プロセッサ部が前記転送状態管理情報に基づき検知した場合に、前記ライト要求の要求元に応答し、
    ライト要求に対応する入出力処理を担当するコントローラである担当コントローラの前記プロセッサ部は、
    前記ライト要求に対応する前記新データについての前記複数のコントローラの前記キャッシュ領域への転送時に障害が発生したことを検出した場合に、前記転送状態管理情報に基づいて、損傷が発生していないことが保証される旧データ又は新データである保証データを特定し、前記保証データを、前記記憶デバイスユニットにデステージさせるか、又は、障害が発生していないコントローラのメモリのキャッシュ領域に転送させて、前記保証データを複数のコントローラのメモリのキャッシュ領域に格納させた状態とし、
    前記記憶デバイスユニットにおけるI/O処理対象の記憶空間ごとに担当コントローラが決められており、
    前記DMA部は、ライト要求に対応する新データが格納されたバッファ領域から、まず、前記担当コントローラと異なる転送先コントローラの前記キャッシュ領域に対して転送させ、次に、担当コントローラの前記キャッシュ領域に対して転送させるように制御し、
    前記担当コントローラの前記プロセッサ部は、
    前記転送先コントローラに障害が発生していることを検出した際に、前記担当コントローラの前記キャッシュ領域への前記新データの転送が完了している場合には、前記担当コントローラの前記キャッシュ領域に格納されている前記新データを前記保証データとし、前記転送先コントローラの前記キャッシュ領域に対して前記新データの転送が完了していない場合には、前記担当コントローラの前記キャッシュ領域に格納されている前記旧データを前記保証データとする
    ストレージシステム。
  4. 複数のコントローラと、データを格納可能な記憶デバイスユニットとを有するストレージシステムであって、
    メモリに直接アクセス可能であるとともに、他のコントローラとの通信が可能なDMA(Direct Memory Access)部を有し、
    前記コントローラは、
    プロセッサ部と、
    データを一時的に格納するバッファ領域と、データをキャッシュするキャッシュ領域とを有するメモリと、を有し、
    ライト要求にかかる新データが前記バッファ領域に格納された場合に、前記コントローラのプロセッサ部は、
    前記DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラの前記キャッシュ領域に対して、他のバッファ領域を介さずに前記新データを転送させる処理を、それぞれの前記コントローラの前記キャッシュ領域に対する前記新データの転送の処理が重複しないように順次行うことにより前記新データの順次転送を行わせ、
    前記DMA部は、1つの前記コントローラの前記キャッシュ領域への前記新データの転送の処理の成功を確認してから、他の前記コントローラへの前記新データの転送の処理を行い、
    前記コントローラは、それぞれ前記DMA部を有しており、
    複数の前記DMA部は、前記ライト要求に対応する前記新データについての前記複数のコントローラの前記キャッシュ領域への転送状態を示す転送状態管理情報を前記コントローラの前記メモリに格納することで、前記複数のDMA部に前記転送を管理させ、全転送が完了したことを前記プロセッサ部が前記転送状態管理情報に基づき検知した場合に、前記ライト要求の要求元に応答し、
    ライト要求に対応する入出力処理を担当するコントローラである担当コントローラの前記プロセッサ部は、
    前記ライト要求に対応する前記新データについての前記複数のコントローラの前記キャッシュ領域への転送時に障害が発生したことを検出した場合に、前記転送状態管理情報に基づいて、損傷が発生していないことが保証される旧データ又は新データである保証データを特定し、前記保証データを、前記記憶デバイスユニットにデステージさせるか、又は、障害が発生していないコントローラのメモリのキャッシュ領域に転送させて、前記保証データを複数のコントローラのメモリのキャッシュ領域に格納させた状態とし、
    前記記憶デバイスユニットにおけるI/O処理対象の記憶空間ごとに担当コントローラが決められており、
    前記DMA部は、ライト要求に対応する新データが格納されたバッファ領域から、まず、前記担当コントローラと異なる転送先コントローラの前記キャッシュ領域に対して転送させ、次に、前記担当コントローラの前記キャッシュ領域に対して転送させるように制御し、
    前記担当コントローラの前記プロセッサ部は、
    前記担当コントローラの前記キャッシュ領域に対する転送が完了しておらず、前記ライト要求を受信した受信コントローラに故障が発生していることを検出した際に、前記転送先コントローラの前記キャッシュ領域に対して前記新データの転送が完了している場合に、前記転送先コントローラの前記キャッシュ領域に格納されている新データを保証データとする
    ストレージシステム。
  5. 複数のコントローラと、データを格納可能な記憶デバイスユニットとを有するストレージシステムであって、
    メモリに直接アクセス可能であるとともに、他のコントローラとの通信が可能なDMA(Direct Memory Access)部を有し、
    前記コントローラは、
    プロセッサ部と、
    データを一時的に格納するバッファ領域と、データをキャッシュするキャッシュ領域とを有するメモリと、を有し、
    ライト要求にかかる新データが前記バッファ領域に格納された場合に、前記コントローラのプロセッサ部は、
    前記DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラの前記キャッシュ領域に対して、他のバッファ領域を介さずに前記新データを転送させる処理を、それぞれの前記コントローラの前記キャッシュ領域に対する前記新データの転送の処理が重複しないように順次行うことにより前記新データの順次転送を行わせ、
    前記DMA部は、1つの前記コントローラの前記キャッシュ領域への前記新データの転送の処理の成功を確認してから、他の前記コントローラへの前記新データの転送の処理を行い、
    前記コントローラは、それぞれ前記DMA部を有しており、
    複数の前記DMA部は、前記ライト要求に対応する前記新データについての前記複数のコントローラの前記キャッシュ領域への転送状態を示す転送状態管理情報を前記コントローラの前記メモリに格納することで、前記複数のDMA部に前記転送を管理させ、全転送が完了したことを前記プロセッサ部が前記転送状態管理情報に基づき検知した場合に、前記ライト要求の要求元に応答する
    ライト要求に対応する入出力処理を担当するコントローラである担当コントローラの前記プロセッサ部は、
    前記ライト要求に対応する前記新データについての前記複数のコントローラの前記キャッシュ領域への転送時に障害が発生したことを検出した場合に、前記転送状態管理情報に基づいて、損傷が発生していないことが保証される旧データ又は新データである保証データを特定し、前記保証データを、前記記憶デバイスユニットにデステージさせるか、又は、障害が発生していないコントローラのメモリのキャッシュ領域に転送させて、前記保証データを複数のコントローラのメモリのキャッシュ領域に格納させた状態とし、
    前記記憶デバイスユニットにおけるI/O処理対象の記憶空間ごとに担当コントローラが決められており、
    前記DMA部は、ライト要求に対応する新データが格納されたバッファ領域から、まず、前記担当コントローラと異なる転送先コントローラの前記キャッシュ領域に対して転送させ、次に、前記担当コントローラの前記キャッシュ領域に対して転送させるように制御し、
    前記担当コントローラと異なるコントローラの前記プロセッサ部は、
    前記担当コントローラに故障が発生していることを検出した際に、自身のコントローラが、前記転送先コントローラである場合に、前記転送先コントローラの前記キャッシュ領域に対して前記新データの転送が完了しているか否かを判定し、前記転送先コントローラの前記キャッシュ領域に対して前記新データの転送が完了している場合に、前記コントローラの前記キャッシュ領域に格納されている新データを保証データとする
    ストレージシステム。
  6. 複数のコントローラと、データを格納可能な記憶デバイスユニットとを有するストレージシステムによるデータ管理方法であって、
    前記ストレージシステムは、メモリに直接アクセス可能であるとともに、他のコントローラとの通信が可能なDMA部を有し、
    前記コントローラは、プロセッサ部と、データを一時的に格納するバッファ領域と、データをキャッシュするキャッシュ領域とを有するメモリと、を有し、
    ライト要求にかかる新データが前記バッファ領域に格納された場合に、前記コントローラのプロセッサ部は、前記DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラの前記キャッシュ領域に対して、他のバッファ領域を介さずに前記新データを転送させる処理を、それぞれの前記コントローラの前記キャッシュ領域に対する前記新データの転送の処理が重複しないように順次行うことにより前記新データの順次転送を行わせ、
    前記DMA部は、1つの前記コントローラの前記キャッシュ領域への前記新データの転送の処理の成功を確認してから、他の前記コントローラへの前記新データの転送の処理を行い、
    前記コントローラの前記プロセッサ部は、
    前記ライト要求に対応する格納領域の旧データが、複数のコントローラのメモリのキャッシュ領域に格納され、且つダーティデータである場合に、前記DMA部を用いて、前記新データの前記順次転送を行わせ、
    前記ライト要求に対応する格納領域の旧データが、複数のコントローラのメモリのキャッシュ領域に格納され、且つダーティデータでない場合に、前記DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラの前記キャッシュ領域に対して、前記新データを他のバッファ領域を介さずに並行して転送させる
    データ管理方法。
  7. 複数のコントローラと、データを格納可能な記憶デバイスユニットとを有するストレージシステムを構成するコンピュータに実行させるデータ管理プログラムであって、
    前記コンピュータは、
    プロセッサ部と、
    データを一時的に格納するバッファ領域と、データをキャッシュするキャッシュ領域とを有するメモリと、
    前記メモリに直接アクセス可能であるとともに、他のコントローラとの通信が可能なDMA部と、を有し、
    前記コンピュータに、
    ライト要求にかかる新データが前記バッファ領域に格納された場合に、複数のDMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラの前記キャッシュ領域に対して、他のバッファ領域を介さずに前記新データを転送させる処理を、それぞれの前記コントローラの前記キャッシュ領域に対する前記新データの転送の処理が重複しないように順次行うことにより前記新データの順次転送を行わせ、
    前記DMA部に、1つの前記コントローラの前記キャッシュ領域への前記新データの転送の処理の成功を確認してから、他の前記コントローラへの前記新データの転送の処理を行わせ
    前記ライト要求に対応する格納領域の旧データが、複数のコントローラのメモリのキャッシュ領域に格納され、且つダーティデータである場合に、前記DMA部を用いて、前記新データの前記順次転送を行わせ、
    前記ライト要求に対応する格納領域の旧データが、複数のコントローラのメモリのキャッシュ領域に格納され、且つダーティデータでない場合に、前記DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラの前記キャッシュ領域に対して、前記新データを他のバッファ領域を介さずに並行して転送させる機能
    を実現させるためのデータ管理プログラム。
JP2018210691A 2018-11-08 2018-11-08 ストレージシステム、データ管理方法、及びデータ管理プログラム Active JP6976237B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2018210691A JP6976237B2 (ja) 2018-11-08 2018-11-08 ストレージシステム、データ管理方法、及びデータ管理プログラム
US16/546,356 US10936518B2 (en) 2018-11-08 2019-08-21 Storage system, data management method, and data management program
US17/169,775 US11334508B2 (en) 2018-11-08 2021-02-08 Storage system, data management method, and data management program
JP2021182809A JP7201775B2 (ja) 2018-11-08 2021-11-09 ストレージシステム、データ管理方法、及びデータ管理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018210691A JP6976237B2 (ja) 2018-11-08 2018-11-08 ストレージシステム、データ管理方法、及びデータ管理プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021182809A Division JP7201775B2 (ja) 2018-11-08 2021-11-09 ストレージシステム、データ管理方法、及びデータ管理プログラム

Publications (2)

Publication Number Publication Date
JP2020077248A JP2020077248A (ja) 2020-05-21
JP6976237B2 true JP6976237B2 (ja) 2021-12-08

Family

ID=70549895

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018210691A Active JP6976237B2 (ja) 2018-11-08 2018-11-08 ストレージシステム、データ管理方法、及びデータ管理プログラム

Country Status (2)

Country Link
US (2) US10936518B2 (ja)
JP (1) JP6976237B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6976237B2 (ja) * 2018-11-08 2021-12-08 株式会社日立製作所 ストレージシステム、データ管理方法、及びデータ管理プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2364867B (en) * 2000-07-17 2003-12-10 Advanced Risc Mach Ltd A data processing apparatus and slave interface mechanism for controlling access to a slave logic unit by a plurality of master logic units
JP4090400B2 (ja) 2003-07-24 2008-05-28 株式会社日立製作所 ストレージシステム
US20100174676A1 (en) * 2009-01-06 2010-07-08 International Business Machines Corporation Determining modified data in cache for use during a recovery operation
JP5835040B2 (ja) * 2012-03-19 2015-12-24 富士通株式会社 情報処理システムおよびデータ記録制御方法
WO2015052798A1 (ja) * 2013-10-09 2015-04-16 株式会社日立製作所 ストレージシステム及び記憶制御方法
JP2014167818A (ja) 2014-05-12 2014-09-11 Hitachi Ltd データ転送装置およびデータ転送方法
JP6520416B2 (ja) * 2015-06-02 2019-05-29 富士通株式会社 演算処理装置および演算処理装置の処理方法
WO2017056219A1 (ja) * 2015-09-30 2017-04-06 株式会社日立製作所 ストレージ装置およびストレージ装置の制御方法
US10289577B2 (en) * 2016-05-11 2019-05-14 New York University System, method and computer-accessible medium for low-overhead security wrapper for memory access control of embedded systems
JP6976237B2 (ja) * 2018-11-08 2021-12-08 株式会社日立製作所 ストレージシステム、データ管理方法、及びデータ管理プログラム

Also Published As

Publication number Publication date
US11334508B2 (en) 2022-05-17
US20210165753A1 (en) 2021-06-03
US10936518B2 (en) 2021-03-02
US20200151128A1 (en) 2020-05-14
JP2020077248A (ja) 2020-05-21

Similar Documents

Publication Publication Date Title
US9262265B2 (en) Storage system and storage control apparatus
US6912669B2 (en) Method and apparatus for maintaining cache coherency in a storage system
US8904129B2 (en) Method and apparatus for backup and restore in a dynamic chunk allocation storage system
US7975168B2 (en) Storage system executing parallel correction write
US9946655B2 (en) Storage system and storage control method
US6922752B2 (en) Storage system using fast storage devices for storing redundant data
US20030084397A1 (en) Apparatus and method for a distributed raid
US9298617B2 (en) Parallel destaging with replicated cache pinning
US7984260B2 (en) Storage system provided with a plurality of controller modules
JP2006227964A (ja) ストレージシステム、処理方法及びプログラム
JP2005301419A (ja) ディスクアレイ装置およびそのデータ処理方法
JP3661205B2 (ja) ディスクアレイシステムおよびディスクアレイシステムのパリティデータの生成方法
KR20200041815A (ko) FPGA+SSD 내부의 임베디드 PCIe 스위치로 이레이저 코드 데이터 보호 기능을 지원하는 시스템
JP2011018241A (ja) 退避処理装置、退避処理方法およびストレージシステム
JP6976237B2 (ja) ストレージシステム、データ管理方法、及びデータ管理プログラム
JP2006099802A (ja) 記憶制御装置およびキャッシュメモリの制御方法
JP7201775B2 (ja) ストレージシステム、データ管理方法、及びデータ管理プログラム
US11340826B2 (en) Systems and methods for strong write consistency when replicating data
JP3793544B2 (ja) ディスクアレイ装置及びその制御方法
JP3256329B2 (ja) ディスクアレイ装置及びその制御方法
US20180052749A1 (en) Information processing system and information processing method
JP3620205B2 (ja) 着脱可能な記憶媒体を使用した高信頼記憶システム
JP2018185584A (ja) ストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法
JP2002196893A (ja) ディスクアレイ装置及びその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210927

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: 20211012

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211109

R150 Certificate of patent or registration of utility model

Ref document number: 6976237

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150