JP7201775B2 - Storage system, data management method, and data management program - Google Patents
Storage system, data management method, and data management program Download PDFInfo
- Publication number
- JP7201775B2 JP7201775B2 JP2021182809A JP2021182809A JP7201775B2 JP 7201775 B2 JP7201775 B2 JP 7201775B2 JP 2021182809 A JP2021182809 A JP 2021182809A JP 2021182809 A JP2021182809 A JP 2021182809A JP 7201775 B2 JP7201775 B2 JP 7201775B2
- Authority
- JP
- Japan
- Prior art keywords
- controller
- transfer
- memory
- data
- management information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Hardware Redundancy (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本発明は、ストレージシステムにおけるデータを管理する技術に関する。 The present invention relates to technology for managing data in a storage system.
ストレージシステムでは、電源喪失などの障害からデータを保護するために、複数のストレージコントローラ間でデータを多重化(一般には二重化)している。また、ストレージシステムでは、複数の専用回路を用い、ライトデータをキャッシュ領域に同時に多重化することも行われている。 In a storage system, data is multiplexed (generally duplicated) among multiple storage controllers in order to protect data from failures such as power loss. Further, in a storage system, a plurality of dedicated circuits are used to simultaneously multiplex write data in a cache area.
例えば、特許文献1には、第一キャッシュとFIFOバッファとにデータを格納した時点でホストにライト完了を送信し、その後、FIFOバッファから第二キャッシュにデータを送付することで、キャッシュを二重化するストレージシステムでの書込みを高速化する技術が開示されている。
For example, in
一方、専用回路の開発コスト削減を目的として、特許文献2には、専用回路の処理を汎用コントローラでエミュレーションするストレージシステムにおいて、データの一貫性を保証する技術が開示されている。この技術では、コントローラ外部から受領するデータをバッファ領域に格納し、このコントローラがバッファ領域からキャッシュ領域に転送することで、I/O処理中に障害が発生しても、データの破壊を防ぐことができるようにしている。
On the other hand, for the purpose of reducing development costs of dedicated circuits,
ストレージシステムの性能向上のために、汎用コントローラを多数搭載したストレージシステムが登場している。 In order to improve the performance of storage systems, storage systems equipped with many general-purpose controllers have appeared.
このようなストレージシステムにおいて、メモリ容量の増加を抑える観点では、データの多重化を二多重とすることが望ましい。 In such a storage system, from the viewpoint of suppressing an increase in memory capacity, it is desirable to multiplex data in two.
例えば、このようなストレージシステムにおいてデータを二重化する場合においては、ホストからデータを受領するコントローラと、データの二重化先のコントローラとが全て異なる場合がある。このような場合に、特許文献2に記載の技術では、二重化先のコントローラのそれぞれにおいて、バッファ領域からキャッシュ領域へデータを転送する必要があり、コントローラのプロセッサへの処理負荷が掛かり、コントローラの性能が低下してしまう虞がある。
For example, when data is duplicated in such a storage system, the controller that receives data from the host and the controller that duplicates the data may be completely different. In such a case, in the technique described in
本発明は、上記事情に鑑みなされたものであり、その目的は、コントローラのプロセッサへの処理負荷を抑制しつつ、適切にデータの一貫性を確保することのできる技術を提供することにある。 SUMMARY OF THE INVENTION The present invention has been made in view of the circumstances described above, and an object thereof is to provide a technique capable of appropriately ensuring data consistency while suppressing the processing load on the processor of the controller.
上記目的を達成するため、一観点に係るストレージシステムは、複数のコントローラと、データを格納可能な記憶デバイスユニットとを有するストレージシステムであって、メモリに直接アクセス可能であるとともに、他のコントローラとの通信が可能なDMA(Direct Memory Access)部を有し、コントローラは、プロセッサ部と、データを一時的に格納するバッファ領域と、データをキャッシュするキャッシュ領域とを有するメモリと、を有し、ライト要求にかかる新データがバッファ領域に格納された場合に、コントローラのプロセッサ部は、DMA部を用いて、ライト要求に対応する新データが格納されたバッファ領域から、複数のコントローラのキャッシュ領域に対して、他のバッファ領域を介さずに順次転送させる。 In order to achieve the above object, a storage system according to one aspect is a storage system having a plurality of controllers and storage device units capable of storing data, capable of directly accessing memory, and capable of communicating with other controllers. The controller has a DMA (Direct Memory Access) unit capable of communication, a processor unit, a memory having a buffer area for temporarily storing data, and a memory having a cache area for caching data. When the new data related to the request is stored in the buffer area, the processor unit of the controller uses the DMA unit to transfer the new data corresponding to the write request from the buffer area to the cache areas of the plurality of controllers. are transferred sequentially without going through other buffer areas.
本発明によれば、コントローラのプロセッサへの処理負荷を抑制しつつ、適切にデータの一貫性を確保することができる。 ADVANTAGE OF THE INVENTION According to this invention, the consistency of data can be ensured appropriately, suppressing the processing load to the processor of a controller.
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. However, the present invention should not be construed as being limited to the description of the embodiments shown below. Those skilled in the art will easily understand that the specific configuration can be changed without departing from the idea or gist of the present invention.
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。 In the configurations of the invention described below, the same or similar configurations or functions are denoted by the same reference numerals, and overlapping descriptions are omitted.
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。 The notations such as “first”, “second”, “third”, etc. in this specification and the like are attached to identify the constituent elements, and do not necessarily limit the number or order.
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。 The position, size, shape, range, etc. of each component shown in the drawings may not represent the actual position, size, shape, range, etc. in order to facilitate understanding of the invention. Therefore, the present invention is not limited to the positions, sizes, shapes, ranges, etc. disclosed in the drawings and the like.
また、以下の説明における用語の意味は、下記の通りである。
(*)「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以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
Also, the meanings of terms used in the following description are as follows.
(*) "PDEV" is an abbreviation for non-volatile physical storage device. Multiple PDEVs may configure multiple RAID groups. "RAID" is an abbreviation for Redundant Array of Independent (or Inexpensive) Disks. A RAID group may be called a parity group.
(*) An HCA (Host Channel Adapter) is a device that is instructed by a CPU and performs communication between controllers. HCA is an example of a DMA (Direct Memory Access) unit, for example, and can directly access memory.
(*) The processor section includes one or more processors. The at least one processor is typically a microprocessor such as a CPU (Central Processing Unit). Each of the one or more processors may be single-core or multi-core. A processor may include hardware circuitry that performs some or all of the processing.
まず、実施例1に係る計算機システムについて説明する。 First, a computer system according to the first embodiment will be explained.
図1は、実施例1に係るストレージシステムのライト処理の概要を説明する図である。図1は、二重化先のコントローラ22(#1、#2)それぞれのキャッシュ領域243(#1、#2)に対して逐次にデータを転送するライト処理の流れを示している。 FIG. 1 is a diagram for explaining an outline of write processing of a storage system according to the first embodiment. FIG. 1 shows the flow of write processing in which data is sequentially transferred to the cache areas 243 (#1, #2) of the controllers 22 (#1, #2) of the duplication destination.
本実施例に係る計算機システム100のストレージシステム2は、複数のコントローラ22(コントローラ#0,#1,#2)を備えている。複数のコントローラ22は、相互に接続されている。コントローラ22は、例えば、ストレージシステム専用のコントローラではなくて、汎用のコントローラである。コントローラ22は、FE-I/F210と、プロセッサ部の一例としてのCPU230と、メモリ240とを有する。メモリ240は、バッファ領域242及びキャッシュ領域243を有するとともに、転送状態管理情報247を格納している。
The
ストレージシステム2においては、各コントローラ22がホスト計算機(ホストともいう)1からのI/O要求を並列に処理できるよう、I/O処理対象の空間(例えば、論理ユニット:LU)ごとに処理担当(この処理担当である権利を、オーナ権という)のコントローラ22を定めている。例えば、コントローラ#1が、LUN#0のLUに対するオーナ権を持っているとき、LUN#0のLUに対するI/O要求は、このコントローラ#1の制御により処理される。
In the
ホスト計算機1(ホスト計算機#0、#1、#2)は、通信ネットワーク11を介して、ストレージシステム2と接続されている。ホスト計算機1は、例えば、それぞれ1つのコントローラ22と接続する。
Host computers 1 (
コントローラ22は、ホスト計算機1からのライト要求に従うライトデータを、記憶デバイスユニット20に書き込まず、複数のコントローラ22内のキャッシュ領域243に二重化して格納した後に、ホスト計算機1に対してライト処理の完了を通知する。これにより、高速なライト処理を実現することができる。
The
コントローラ22は、ライト要求とは非同期にキャッシュ領域243内のライトデータを記憶デバイスユニット20に書き込む。既にキャッシュ領域243に二重化されたライトデータが格納されていて、まだ記憶デバイスユニット20に書き込まれていない状態(ダーティ状態といい、このライトデータをダーティデータという)において、ホスト計算機1から同じ書き込み先への新たなライトデータを受領するときには、コントローラ22は、キャッシュ領域243内のライトデータの破壊を避けるために、新たなライトデータをバッファ領域242に格納する。その後、コントローラ22は、バッファ領域242内に格納した新たなライトデータを複数(二重化の場合には2つ)のコントローラ内のそれぞれのキャッシュ領域243に逐次に転送することでライトデータの一貫性を保持する。転送状態管理情報247は、二重化先のコントローラ22のそれぞれのキャッシュ領域243に対してライトデータを逐次に転送する際の進捗状況(転送状態)を管理する情報である。
The
ここで、ライト要求を受領したコントローラ22以外のコントローラ22のバッファ領域242を介さずに、一のコントローラ22のキャッシュ領域243にライトデータを転送し、転送が完了した後、他のコントローラ22のキャッシュ領域243にライトデータを転送することを「逐次転送」という。
Here, the write data is transferred to the
ここで、コントローラ#0が、コントローラ#1がオーナ権を有するLUに対するライト要求をホスト計算機#0から受け取った場合のライト処理について説明する。
Write processing when the
コントローラ#0は、ホスト計算機#0からライト要求を受信した場合、コントローラ#0のCPU#0は、ライト要求の対象となるLUのオーナ権を有するコントローラ#1のCPU#1にライト要求を転送する。
When the
CPU#1は、バッファ領域#0上にライトデータを格納する領域を確保させ、ライトデータに対応するキャッシュ領域243(本例では、キャッシュ領域#1、#2)上に格納されているデータの状態を確認する。本実施形態では、キャッシュ領域243のデータは、ダーティ状態であることとする。キャッシュ領域243のデータがダーティ状態(ダーティデータ)であるので、CPU#1は、逐次転送が必要と判断する。
The
その後、コントローラ#0のCPU#0は、FE-IF#0を介してバッファ領域#0に確保された領域にライトデータを格納する(ステップS1)。
After that, the
次いで、CPU#1は、HCA#0に、バッファ領域#0からキャッシュ領域#2へライトデータをコピー(転送)し、その後、キャッシュ領域#1にライトデータをコピー(転送)すること(逐次転送)を依頼する(ステップS2)。
Next, the
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)。
Next,
次に、HCA#0は、HCA#1を介して、バッファ領域#0からキャッシュ領域#1へライトデータをコピーする(以降、第二転送という)(ステップS6)。
Next,
次に、HCA#0は、HCA#1を介して、転送状態管理情報#1にキャッシュ領域#1へのライトデータの転送完了を格納させる(ステップS7)。
Next,
CPU#1は、転送状態管理情報#1を参照し、ライトデータの二重化完了を確認する(ステップS8)。次に、CPU#1は、CPU#0及びFE-I/F#0を介して、ホスト計算機#0にライト要求完了を報告する(ステップS9)。これにより、ホスト計算機1からのライトデータは、キャッシュ領域#1と、キャッシュ領域#2とに二重化して格納される。
The
なお、上記例では、キャッシュ領域#2、#1の順でライトデータを順次転送させていたが、キャッシュ領域#1、#2の順としてもよい。
In the above example, the write data is sequentially transferred in the order of the
図2は、実施例1に係るストレージシステムの障害発生時のライト処理の概要を説明する図である。図2は、図1に示すライト処理の途中に障害が発生した時のライト処理の概要を示している。 FIG. 2 is a diagram for explaining an overview of write processing when a failure occurs in the storage system according to the first embodiment. FIG. 2 shows an outline of write processing when a failure occurs during the write processing shown in FIG.
HCA#0が、CPU#1から逐次転送の依頼を受け、逐次転送を実施中にHCA250やHCA250を繋ぐネットワーク(図3のHCAネットワーク23)のパス等に障害が発生すると(ステップS11)、キャッシュ領域#1または#2内のダーティ状態のライトデータ(ダーティデータ)を破壊してしまう虞がある(ステップS12)。つまり、ダーティデータの一部分だけが新たなライトデータの一部分によって上書きされた別のデータとなってしまう虞がある。
When
そこで、ライトデータを管理するCPU#1は、転送状態管理情報247を参照し、正常なダーティデータを保持するキャッシュ領域243を特定する(ステップS13)。その後、CPU#1は、特定したキャッシュ領域243内のダーティデータをデステージ(すなわち、記憶デバイスユニット20に転送)する(ステップS14)。さらに、CPU#1は、デステージを完了後に、キャッシュ領域#1及び#2内のダーティデータを破棄する。なお、以降の説明では、特に記載しない場合には、デステージの完了後に、そのデステージしたデータに対応するデータが格納されていた複数のキャッシュ領域243のデータを破棄するものとする。
Therefore, the
以上の処理により、正常なダーティデータを選択して記憶デバイスユニット20に書き込むことができ、ライトデータの一貫性を保証できる。
By the above processing, normal dirty data can be selected and written to the
次に、本実施例に係る計算機システムについて詳細に説明する。 Next, the computer system according to this embodiment will be described in detail.
図3は、実施例1に係る計算機システムの構成図である。 FIG. 3 is a configuration diagram of a computer system according to the first embodiment.
計算機システム100は、1以上のホスト計算機1と、ストレージシステム2とを備える。ホスト計算機1と、ストレージシステム2とは、ネットワーク11を介して接続されている。ネットワーク11は、例えば、SAN(Storage Area Network)である。
A
ストレージシステム2は、複数(例えば、3台以上)のコントローラ22(コントローラ22#0,・・・,#N)と、記憶デバイスユニット20とを有する。複数のコントローラ22は、HCAネットワーク23を介して相互に接続されている。ストレージシステム2の可用性を向上させるため、コントローラ22毎に専用の電源を用意し、それぞれのコントローラ22に対して、その専用の電源を用いて給電するようにしてもよい。
The
コントローラ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と通信するためのインタフェースデバイスである。
The FE-I/
メモリ240は、例えば、RAM(Random Access Memory)であり、バッファ領域242と、キャッシュ領域243とを含む。また、メモリ240は、制御モジュール241、コントローラ状態管理情報244、キャッシュ状態管理情報245、転送管理情報246、及び転送状態管理情報247を記憶する。なお、メモリ240は、不揮発性メモリであっても、揮発性メモリであってもよい。
The
制御モジュール241は、CPU230に実行されることにより、ストレージシステム2全体を制御するためのモジュール(プログラム)である。より具体的には、制御モジュール241は、CPU230に実行されることにより、I/O処理の制御等を行う。
The
バッファ領域242は、ホスト計算機1から受領したライトデータを一時的に格納する領域である。
The
キャッシュ領域243は、ホスト計算機1から記憶デバイスユニット20へ送信されるライトデータをキャッシュする領域である。キャッシュ領域243は、ダーティデータを格納することもあるので、バックアップ電源等により不揮発化されていてもよい。
The
コントローラ状態管理情報244は、コントローラ22が正常状態か、故障状態かを管理するための情報である。キャッシュ状態管理情報245は、二重化に使用されているキャッシュ領域243を有するコントローラ22とキャッシュの状態を管理するための情報である。転送管理情報246は、逐次転送で転送するライトデータを受信したコントローラ22と、転送状態管理情報247のエントリのアドレスを管理するための情報である。転送状態管理情報247は、逐次転送の進捗状況(転送状態)を管理するための情報である。コントローラ状態管理情報244、キャッシュ状態管理情報245、転送管理情報246、及び転送状態管理情報247の詳細は、図4乃至図7を参照して後述する。
The controller
記憶デバイスユニット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グループに格納される。
The
HCA250は、CPU230から指示を受け、自コントローラ22のメモリ240に対する操作や、HCAネットワーク23を経由して、他コントローラ22のメモリ240に対する操作を行う。
The
次に、コントローラ状態管理情報244を詳細に説明する。
Next, the controller
図4は、実施例1に係るコントローラ状態管理情報のデータ構造の一例を示す図である。 FIG. 4 is a diagram illustrating an example of a data structure of controller state management information according to the first embodiment;
コントローラ状態管理情報244は、コントローラ22ごとのエントリを格納する。コントローラ状態管理情報233のエントリは、コントローラID401及び状態402のフィールドを含む。コントローラID401には、エントリに対応するコントローラ22の識別子(コントローラID)が格納される。状態402には、エントリに対応するコントローラ22の動作状態が格納される。動作状態としては、正常、故障等がある。
The controller
次に、キャッシュ状態管理情報245を詳細に説明する。
Next, the cache
図5は、実施例1に係るキャッシュ状態管理情報のデータ構造の一例を示す図である。 FIG. 5 is a diagram illustrating an example of the data structure of cache state management information according to the first embodiment;
キャッシュ状態管理情報245は、データアドレス毎のエントリを格納する。キャッシュ状態管理情報245のエントリは、データアドレス501、第一転送先コントローラID502、第二転送先コントローラID503、及びキャッシュ状態504のフィールドを含む。
The cache
データアドレス501には、エントリに対応するストレージシステム2内のユーザデータの格納位置を示す値(データアドレス)が格納される。
The data address 501 stores a value (data address) indicating the storage location of the user data in the
第一転送先コントローラID502には、エントリに対応するデータアドレスのデータが二重化されてキャッシュされている、第一転送の転送先のキャッシュ領域243を有するコントローラ22(転送先コントローラの一例)の識別子(コントローラID:第一転送先コントローラID)が格納される。
In the first transfer
第二転送先コントローラID503には、エントリに対応するデータアドレスのデータが二重化されてキャッシュされている、第二転送の転送先のキャッシュ領域243を有するコントローラ22(担当コントローラの一例)の識別子(コントローラID:第二転送先コントローラID)が格納される。本実施形態では、第二転送先コントローラID503には、エントリに対応するデータアドレスのデータが属する論理ユニットのオーナ権を有するコントローラ(オーナコントローラ)22のコントローラIDが格納される。
In the second transfer
キャッシュ状態504には、エントリに対するデータアドレスのデータのキャッシュの状態を示す情報が格納される。キャッシュの状態としては、記憶デバイスユニット20にデステージされていないことを示すダーティと、デステージされていることを示すクリーンとがある。
The
次に、転送管理情報246を詳細に説明する。
Next, the
図6は、実施例1に係る転送管理情報のデータ構造の一例を示す図である。 FIG. 6 is a diagram illustrating an example of the data structure of transfer management information according to the first embodiment.
転送管理情報246は、データアドレス毎のエントリを格納する。転送管理情報246のエントリは、データアドレス601、コントローラID602、及び転送状態管理情報アドレス603のフィールドを含む。データアドレス601には、エントリに対応するストレージシステム2内のユーザデータの格納位置(記憶空間)を示す値(データアドレス)が格納される。コントローラID602には、エントリに対応するデータアドレスのライトデータをホスト1から受信したコントローラ(受信コントローラ)22の識別情報(コントローラID)が格納される。転送状態管理情報アドレス603には、エントリに対応するデータアドレスの転送状態管理情報247における対応するエントリの格納場所を示す値(アドレス)が格納される。
The
次に、転送状態管理情報247を詳細に説明する。
Next, the transfer
図7は、実施例1に係る転送状態管理情報のデータ構造の一例を示す図である。 FIG. 7 is a diagram illustrating an example of the data structure of transfer status management information according to the first embodiment;
転送状態管理情報247は、データアドレス毎のエントリを格納する。転送状態管理情報247のエントリは、データアドレス701、第一転送データ受領済フラグ702、第一転送完了フラグ703、及び第二転送完了フラグ704のフィールドを含む。
The transfer
データアドレス701は、エントリに対応するストレージシステム2内のユーザデータの格納位置を示す値(データアドレス)が格納される。第一転送データ受領済フラグ702には、HCA250によって、データアドレス701のデータアドレスに対応するライトデータの第一転送のデータが受領されたか否かを示す値(受領済みフラグ)が格納される。受領済みフラグは、受領された場合には、「1」が設定され、受領されていない場合には、「0」が設定される。第一転送完了フラグ703には、HCA250によって、データアドレス701に対応するデータアドレスのライトデータの第一転送が完了したか否かを示す値(第一転送完了フラグ)が格納される。第一転送完了フラグは、第一転送が完了された場合には、「1」が設定され、第一転送が完了されていない場合には、「0」が設定される。第二転送完了フラグ704には、HCA250によって、データアドレス701に対応するデータアドレスのライトデータの第二転送が完了したか否かを示す値(第二転送完了フラグ)が格納される。第二転送完了フラグは、第二転送が完了された場合には、「1」が設定され、第二転送が完了されていない場合には、「0」が設定される。
The data address 701 stores a value (data address) indicating the storage location of user data in the
次に、実施例1に係る計算機システムによる処理動作について説明する。 Next, processing operations by the computer system according to the first embodiment will be described.
まず、逐次転送依頼処理について説明する。 First, the sequential transfer request processing will be described.
図8は、実施例1に係る逐次転送依頼処理のフローチャートである。 FIG. 8 is a flowchart of sequential transfer request processing according to the first embodiment.
逐次転送依頼処理は、ライト要求に対応するライトデータ(新データ)が対象とする記憶デバイスユニット20における論理ユニット(記憶空間)のオーナ権を有するコントローラ22(オーナコントローラ22という。:担当コントローラの一例)がライト要求を受信した場合に実行される。ここで、オーナコントローラ22にライト要求が送信される場合としては、ホスト計算機1から直接オーナコントローラ22に送られる場合と、ライト要求に対応するライトデータに対応するキャッシュ領域243を有さず、FE-I/F210を介してホスト計算機1からライトデータを受領したコントローラ22(FEコントローラ22という。受信コントローラの一例)からオーナコントローラ22に転送される場合と、がある。
The sequential transfer request process is performed by the controller 22 (referred to as the owner controller 22) having ownership of the logical unit (storage space) in the
本例では、FEコントローラ22からオーナコントローラ22にライト要求が転送された場合を例に説明する。
In this example, a case where a write request is transferred from the
オーナコントローラ22は、ライト要求を受信する(ステップS101)。次いで、オーナコントローラ22は、キャッシュ状態管理情報245を参照し、ライト要求のデータアドレスに対応するエントリのキャッシュ状態504からキャッシュ状態を取得し(ステップS102)、キャッシュ状態がダーティであるか否かを判定する(ステップS103)。
The
この結果、ダーティでないと判定された場合(ステップS103:NO)には、キャッシュ領域243のデータ(旧データ)が既に記憶デバイスユニット20に格納されていることを示すので、オーナコントローラ22は、ライトデータを2つのコントローラ22のキャッシュ領域243に同時に(並行して)転送し、処理を終了する(S106)。
As a result, if it is determined that the data is not dirty (step S103: NO), it indicates that the data (old data) in the
一方、ダーティであると判定された場合(ステップS103:YES)には、オーナコントローラ22は、ライト要求のデータアドレスに対応する転送状態管理情報247のエントリの格納先を示す値(転送状態管理情報アドレス)を取得し、転送管理情報246にエントリを追加する。オーナコントローラ22は、追加したエントリのデータアドレス601、コントローラID602、及び転送状態管理情報アドレス603に、それぞれ、ライトデータのデータアドレス、FEコントローラ22のコントローラID、及び転送状態管理情報247のエントリの転送状態管理情報アドレスを設定する(ステップS104)。
On the other hand, if it is determined to be dirty (step S103: YES), the
次に、オーナコントローラ22は、ライトデータの逐次転送をFEコントローラ22内のHCA250に依頼し(ステップS105)、次の処理(図9の逐次転送完了待ち処理)を実行する(L0)。なお、FEコントローラ22のHCA250への依頼は、自コントローラ22のHCA250を経由して通知してもよい。
Next, the
次に、逐次転送完了待ち処理について説明する。 Next, the sequential transfer completion waiting process will be described.
図9は、実施例1に係る逐次転送完了待ち処理のフローチャートである。 FIG. 9 is a flowchart of sequential transfer completion waiting processing according to the first embodiment.
オーナコントローラ22は、逐次転送が完了しているか否かを判定する(ステップS201)。すなわち、オーナコントローラ22は、転送状態管理情報247を参照し、ライトデータのデータアドレスに対応するエントリ、すなわち、データアドレス701の値がライトデータのデータアドレスであるエントリにおける第一転送完了フラグ703及び第二転送完了フラグ704のフラグが立っているか否か、すなわち、フラグの値が“1”であるか否かを判定する。なお、本ステップの処理は、一定の周期で行ってもよい。
The
この結果、逐次転送が完了していると判定した場合(ステップS201:YES)には、オーナコントローラ22は、FEコントローラ22を経由してホスト1にライト処理が終了したことを意味するGood応答を送信し(ステップS202)、処理を終了する。一方、逐次転送が完了していないと判定した場合(ステップS201:NO)には、オーナコントローラ22は、コントローラ状態管理情報244から他のコントローラ22の状態を取得し、状態が故障であるコントローラID(故障コントローラID)を特定する(ステップS203)。
As a result, when it is determined that the sequential transfer has been completed (step S201: YES), the
次いで、オーナコントローラ22は、第一転送の転送先コントローラ22(第一転送先コントローラ22)が故障しているか否かを判定する(ステップS204)。具体的には、オーナコントローラ22は、ステップS203で特定した故障コントローラIDに、データアドレスに対応するキャッシュ状態管理情報245のエントリにおけるデータアドレス501に格納された第一転送先コントローラID502の第一転送先コントローラIDと一致するものが存在するか否かにより、第一転送先コントローラ22が故障しているか否かを判定する。
Next, the
この結果、第一転送先コントローラ22が故障していると判定した場合(ステップS204:YES)には、オーナコントローラ22は、第二転送が完了しているか否かを判定する(ステップS205)。すなわち、オーナコントローラ22は、転送状態管理情報247を参照し、データアドレスに対応するエントリの第二転送完了フラグ704のフラグが立っているか否かを判定する。
As a result, when it is determined that the first
この結果、第二転送が完了していると判定した場合(ステップS205:YES)には、第二転送により、第二転送先コントローラ(オーナコントローラ22)のキャッシュ領域243に対してライトデータが格納されていることを意味しているので、オーナコントローラ22は、オーナコントローラ22のキャッシュ領域243に格納されているライトデータ(保証データ)をデステージ(記憶デバイスユニット20に転送)する(ステップS207)。次に、オーナコントローラ22は、FEコントローラ22を経由してホスト1に失敗応答を送信し、処理を終了する(ステップS211)。
As a result, when it is determined that the second transfer is completed (step S205: YES), the write data is stored in the
ここで、第二転送が完了している場合(ステップS205:YES)には、第二転送の転送先のコントローラ22(第二転送先コントローラ22、オーナコントローラ)のキャッシュ領域243のライトデータは壊れていないことを示しているため、キャッシュ領域243のライトデータをデステージすることで、データの一貫性を保証できる。
Here, if the second transfer is completed (step S205: YES), the write data in the
一方、第二転送が完了していないと判定した場合(ステップS205:NO)には、オーナコントローラ22は、第一転送が完了しているか否かを判定する(ステップS206)。すなわち、オーナコントローラ22は、転送状態管理情報247を参照し、データアドレスに対応するエントリの第一転送完了フラグ703のフラグが立っているか否か判定する。
On the other hand, when determining that the second transfer has not been completed (step S205: NO), the
この結果、第一転送が完了していると判定した場合(ステップS206:YES)には、オーナコントローラ22は、処理をステップS201に進め、第二転送の完了を待つ。
As a result, when it is determined that the first transfer is completed (step S206: YES), the
一方、第一転送が完了していないと判定した場合(ステップS206:NO)、オーナコントローラ22は、処理をステップS207に進める。
On the other hand, when determining that the first transfer has not been completed (step S206: NO), the
ここで、第一転送が完了していない場合、第二転送の開始前に第一転送先コントローラ22が故障していることを意味しているので、第二転送先コントローラであるオーナコントローラ22のキャッシュ領域243のダーティデータは更新されておらず、このキャッシュ領域243のダーティデータ(保証データ)をデステージすることで、データの一貫性を保証できる。
Here, if the first transfer has not been completed, it means that the first
一方、ステップS204で、第一転送先コントローラ22が故障していないと判定した場合(S204:NO)には、オーナコントローラ22は、FEコントローラ22が故障しているか否かを判定する(ステップS208)。すなわち、オーナコントローラ22は、転送管理情報246を参照し、データアドレスに対応するエントリのコントローラID602のコントローラIDを取得し、このコントローラIDと一致するものがステップS203で特定した故障コントローラIDに存在するか否かにより、FEコントローラ22が故障しているか否かを判定する。
On the other hand, if it is determined in step S204 that the first
この結果、FEコントローラ22が故障していないと判定した場合(ステップS208:NO)には、オーナコントローラ22は、処理をステップS201に戻し、逐次転送の完了を待つ。
As a result, when it is determined that the
一方、FEコントローラ22が故障していると判定した場合(ステップS208:YES)には、オーナコントローラ22は、第一転送が完了しているか否かを判定する(ステップS209)。すなわち、オーナコントローラ22は、転送状態管理情報247を参照し、データアドレスに対応するエントリの第一転送完了フラグ703のフラグが立っているか否か判定する。なお、第一転送完了フラグ703のフラグで判定する代わりに、第一転送データ受領済フラグ702のフラグが立っているか否かを判定してもよい。また、ステップS209の前に、第二転送が完了しているか否かを判定し、第二転送が完了している場合、ホスト1にGood応答を送信し、処理を終了してもよい。
On the other hand, if it is determined that the
この結果、第一転送が完了していると判定した場合(ステップS209:YES)、オーナコントローラ22は、第一転送先のコントローラ22にそのコントローラ22のキャッシュ領域243からのデータ(保証データ)のデステージを依頼し(ステップS210)、処理をステップ211に進める。なお、第一転送先のコントローラ22は、依頼に対応して、キャッシュ領域243のデータをデステージすることとなる。ここで、第一転送が完了している場合、第一転送先コントローラ22のキャッシュ領域243のライトデータは壊れていないため、このキャッシュ領域243のライトデータがデステージされることによりデータの一貫性を保証できる。
As a result, when it is determined that the first transfer is completed (step S209: YES), the
一方、第一転送が完了していないと判定した場合(ステップS209:NO)には、オーナコントローラ22は、処理をステップS207に進め、自コントローラ22のキャッシュ領域243のライトデータ(保証データ)をデステージする。ここで、第一転送が完了していない場合、第二転送の開始前にFEコントローラ22が故障しているため、オーナコントローラ22のキャッシュ領域243のダーティデータは更新されておらず、このキャッシュ領域243のダーティデータをデステージすることでデータの一貫性を保証できる。
On the other hand, if it is determined that the first transfer has not been completed (step S209: NO), the
次に、逐次転送処理について説明する。 Next, sequential transfer processing will be described.
図10は、実施例1に係る逐次転送処理のフローチャートである。 FIG. 10 is a flowchart of sequential transfer processing according to the first embodiment.
FEコントローラ22(具体的には、FEコントローラ22のHCA250)は、オーナコントローラ22から送信された逐次転送依頼を受信し、逐次転送依頼からライトデータのデータアドレスを取得する(ステップS301)。次に、FEコントローラ22は、キャッシュ状態管理情報245を参照し、データアドレスに対応するエントリの第一転送先コントローラID502及び第二転送先コントローラID503から、第一転送先コントローラID及び第二転送先コントローラIDを取得する(ステップS302)。
The FE controller 22 (specifically, the
次に、FEコントローラ22のHCA250は、第一転送を実行する(ステップS303)。具体的には、FEコントローラ22のHCA250は、ライトデータをバッファ領域242から取り出し、第一転送先コントローラ22のHCA250を介して、ライトデータをキャッシュ領域243に転送する(ステップS303)。この際、ライトデータは、第一転送先コントローラ22のバッファ領域240を経由することなく、また、第一転送先コントローラ22のCPU230の関与なしに、キャッシュ領域243に転送される。
Next, the
次に、FEコントローラ22のHCA250は、ライトデータの転送が成功したか否かを判定する(ステップS304)。
Next, the
この結果、転送が失敗したと判定した場合(ステップS304:NO)には、FEコントローラ22のHCA250は、逐次転送処理を終了する。
As a result, when it is determined that the transfer has failed (step S304: NO), the
一方、転送が成功したと判定した場合(ステップS304:YES)には、FEコントローラ22のHCA250は、第一転送先コントローラ22のメモリ240内に存在する転送状態管理情報247のデータアドレスに対応するエントリの第一転送データ受領済フラグ702のフラグを立てる、すなわち、フラグを1に設定する(ステップS305)。
On the other hand, if it is determined that the transfer was successful (step S304: YES), the
次に、FEコントローラ22のHCA250は、第一転送先コントローラ22のHCA250に第二転送先コントローラ22のメモリ240内に存在する転送状態管理情報247のデータアドレスに対応するエントリの第一転送完了フラグ703のフラグを立てることを指示する(ステップS306)。
Next, the
次に、FEコントローラ22のHCA250は、第二転送を実行する(ステップS307)。具体的には、FEコントローラ22のHCA250は、ライトデータをバッファ領域242から取り出し、第二転送先コントローラ22のHCA250を介して、ライトデータをキャッシュ領域243に転送する(ステップS307)。
Next, the
次に、FEコントローラ22のHCA250は、ライトデータの転送が成功したか否かを判定する(ステップS308)。
Next, the
この結果、転送が失敗したと判定した場合(ステップS308:NO)には、FEコントローラ22は、逐次転送処理を終了する。
As a result, when it is determined that the transfer has failed (step S308: NO), the
一方、転送が成功したと判定した場合(ステップS308:YES)には、FEコントローラ22のHCA250は、第二転送先コントローラ22のメモリ240内に存在する転送状態管理情報247のデータアドレスに対応するエントリの第二転送完了フラグ704のフラグを立てる、すなわち、フラグを1に設定し(ステップS309)、処理を終了する。
On the other hand, if it is determined that the transfer was successful (step S308: YES), the
次に、障害対応処理について説明する。 Next, failure handling processing will be described.
図11は、実施例1に係る障害対応処理のフローチャートである。障害対応処理は、オーナコントローラ22以外のコントローラ22により実行される処理である。障害対応処理は、一定時間ごとに一度実行されてもよく、コントローラ22により障害が検知された場合に実行されてもよい。
FIG. 11 is a flowchart of failure handling processing according to the first embodiment. The failure handling process is a process executed by a
コントローラ22は、コントローラ状態管理情報244から他のコントローラ22の状態を取得し、状態が故障であるコントローラID401(故障コントローラID)を特定する(ステップS401)。
The
次に、コントローラ22は、オーナコントローラ22(第二転送先コントローラ22)が故障しているか否かを判定する(ステップS402)。すなわち、オーナコントローラ22は、障害コントローラIDに、データアドレスに対応するキャッシュ状態管理情報245のエントリにおける第二転送先コントローラID503のコントローラIDと一致するものが存在しているか否かにより、オーナコントローラ22が故障しているか否かを判定する。
Next, the
この結果、オーナコントローラ22が故障していないと判定した場合(ステップS402:NO)には、コントローラ22は、処理をステップS401に戻す。一方、オーナコントローラ22が故障していると判定した場合(ステップS402:YES)には、コントローラ22は、自身(自コントローラ)が第一転送先コントローラであるか否かを判定する(ステップS403)。すなわち、コントローラ22は、自身のコントローラID(自コントローラID)と、データアドレスに対応するキャッシュ状態管理情報245のエントリにおける第一転送先コントローラID503のコントローラIDとが同一であるか判定する。なお、上記処理の代わりに、自コントローラがFEコントローラであるか否かを判定し、すなわち、自コントローラIDと、転送管理情報246のデータアドレスに対応するエントリのコントローラID602のコントローラIDとが同一であるか否かを判定し、自コントローラがFEコントローラである場合に、以降の処理を行ってもよい。
As a result, when it is determined that the
ステップS403の判定の結果、自コントローラが第一転送先コントローラでないと判定した場合(ステップS403:NO)には、コントローラ22は、処理をステップS401に進める。
As a result of the determination in step S403, when the
一方、自コントローラが第一転送先コントローラであると判定した場合(ステップS403:YES)には、コントローラ22は、第一転送が完了しているか否かを判定する(ステップS404)。すなわち、コントローラ22は、転送管理情報246のデータアドレスに対応するエントリの転送状態管理情報アドレス603のアドレスを用いて、転送状態管理情報247のエントリを参照し、このエントリの第一転送データ受領済フラグ702のフラグが立っているか否かを判定する。
On the other hand, when it is determined that its own controller is the first transfer destination controller (step S403: YES), the
この判定結果、第一転送が完了していないと判定した場合(ステップS404:NO)には、コントローラ22は、処理をステップS401に進め、第一転送の完了を待つ。
As a result of this determination, when it is determined that the first transfer has not been completed (step S404: NO), the
一方、第一転送が完了していると判定した場合(ステップS404:YES)には、コントローラ22は、キャッシュ領域243のライトデータ(保証データ)をデステージし(ステップS405)、FEコントローラ22を経由してホスト1に失敗応答を送信し(ステップS406)、処理を終了する。ここで、第一転送が完了している場合(ステップS404:YES)、第一転送先コントローラ22のキャッシュ領域243のライトデータは壊れていないため、キャッシュ領域243のライトデータをデステージすることでデータの一貫性を保証できる。
On the other hand, if it is determined that the first transfer has been completed (step S404: YES), the
以上説明したように、上記実施例に係る計算機システムでは、ライトデータの二重化の処理の進捗に合わせて、障害発生時に記憶デバイスユニット20に書き込むキャッシュ領域243を使い分けることで、ライトデータの一貫性を保証できる。
As described above, in the computer system according to the above embodiment, the consistency of write data is ensured by selectively using the
次に、実施例2に係る計算機システムについて説明する。 Next, a computer system according to the second embodiment will be explained.
実施例2に係る計算機システムは、図3に示す実施例1に係る計算機システムにおいて、論理ユニットを担当するコントローラ22を特定のコントローラ22に限定しない、すなわち、論理ユニットのオーナ権を設定しないようにしたシステムである。この計算機システムにおいては、例えば、ホスト1からのライト要求を受信したコントローラ(受信コントローラ)が担当コントローラとなる。
The computer system according to the second embodiment does not limit the
実施例2に係る計算機システムでは、図8に示す逐次転送依頼処理を、ホスト1からライト要求を受信したコントローラ22(FEコントローラ22)が実行する。
In the computer system according to the second embodiment, the controller 22 (FE controller 22) that receives the write request from the
次に、逐次転送完了待ち処理について説明する。 Next, the sequential transfer completion waiting process will be described.
図12は、実施例2に係る逐次転送完了待ち処理のフローチャートである。 FIG. 12 is a flowchart of sequential transfer completion waiting processing according to the second embodiment.
FEコントローラ22は、逐次転送が完了しているか否かを判定する(ステップS501)。すなわち、FEコントローラ22は、転送状態管理情報247を参照し、ライトデータのデータアドレスに対応するエントリ、すなわち、データアドレス701の値がライトデータのデータアドレスであるエントリにおける第一転送完了フラグ703及び第二転送完了フラグ704のフラグが立っているか否か、すなわち、フラグの値が“1”であるか否かを判定する。
The
この結果、逐次転送が完了していると判定した場合(ステップS501:YES)には、FEコントローラ22は、ホスト1にGood応答を送信し(ステップS502)、処理を終了する。一方、逐次転送が完了していないと判定した場合(ステップS501:NO)には、FEコントローラ22は、コントローラ状態管理情報244から他のコントローラ22の状態を取得し、状態が故障であるコントローラID(故障コントローラID)を特定する(ステップS503)。
As a result, when it is determined that the sequential transfer is completed (step S501: YES), the
次いで、オーナコントローラ22は、第一転送の転送先コントローラ22(第一転送先コントローラ22)が故障しているか否かを判定する(ステップS504)。
Next, the
この結果、第一転送先コントローラ22が故障していると判定した場合(ステップS504:YES)には、FEコントローラ22は、第二転送が完了しているか否かを判定する(ステップS505)。すなわち、FEコントローラ22は、転送状態管理情報247を参照し、データアドレスに対応するエントリの第二転送完了フラグ704のフラグが立っているか否かを判定する。
As a result, when it is determined that the first
この結果、第二転送が完了していると判定した場合(ステップS505:YES)には、FEコントローラ22は、第二転送先のコントローラ22のキャッシュ領域243に格納されているライトデータ(保証データ)のデステージを依頼する(ステップS507)。次に、FEコントローラ22は、ホスト1に失敗応答を送信し、処理を終了する(ステップS511)。
As a result, when it is determined that the second transfer is completed (step S505: YES), the
ここで、第二転送が完了している場合(ステップS505:YES)には、第二転送の転送先のコントローラ22(第二転送先コントローラ22)のキャッシュ領域243のライトデータは壊れていないことを示しているため、キャッシュ領域243のライトデータをデステージすることで、データの一貫性を保証できる。
Here, if the second transfer is completed (step S505: YES), the write data in the
一方、第二転送が完了していないと判定した場合(ステップS505:NO)には、FEコントローラ22は、第一転送が完了しているか否かを判定する(ステップS506)。
On the other hand, if it is determined that the second transfer has not been completed (step S505: NO), the
この結果、第一転送が完了していると判定した場合(ステップS506:YES)には、FEコントローラ22は、処理をステップS501に進め、第二転送の完了を待つ。
As a result, when it is determined that the first transfer is completed (step S506: YES), the
一方、第一転送が完了していないと判定した場合(ステップS506:NO)、FEコントローラ22は、処理をステップS507に進める。
On the other hand, if it is determined that the first transfer has not been completed (step S506: NO), the
ここで、第一転送が完了していない場合、第二転送の開始前に第一転送先コントローラ22が故障していることを意味しているので、第二転送先コントローラのキャッシュ領域243のダーティデータは更新されておらず、このキャッシュ領域243のダーティデータをデステージすることで、データの一貫性を保証できる。
Here, if the first transfer is not completed, it means that the
一方、ステップS504で、第一転送先コントローラ22が故障していないと判定した場合(S504:NO)には、FEコントローラ22は、第二転送先コントローラ22が故障しているか否かを判定する(ステップS508)。すなわち、FEコントローラ22は、キャッシュ状態管理情報245を参照し、データアドレスに対応するエントリの第二転送先コントローラID503のコントローラIDを取得し、このコントローラIDと一致するものがステップS503で特定した故障コントローラIDに存在するか否かにより、第二転送先コントローラ22が故障しているか否かを判定する。
On the other hand, if it is determined in step S504 that the first
この結果、第二転送先コントローラ22が故障していないと判定した場合(ステップS508:NO)には、FEコントローラ22は処理をステップS501に戻し、逐次転送の完了を待つ。
As a result, when it is determined that the second
一方、第二転送先コントローラ22が故障していると判定した場合(ステップS508:YES)には、FEコントローラ22は、第一転送が完了しているか否かを判定する(ステップS509)。
On the other hand, if it is determined that the second
この結果、第一転送が完了していないと判定した場合(ステップS509:NO)には、FEコントローラ22は、処理をステップS501に進め、第一転送が終わるのを待つ。
As a result, when it is determined that the first transfer has not been completed (step S509: NO), the
一方、第一転送が完了していると判定した場合(ステップS509:YES)、FEコントローラ22は、第一転送先のコントローラ22にそのコントローラ22のキャッシュ領域243からのデータ(保証データ)のデステージを依頼し(ステップS510)、処理をステップS511に進める。ここで、第一転送が完了している場合、第一転送先コントローラ22のキャッシュ領域243のライトデータは壊れていないため、このキャッシュ領域243のライトデータをデステージすることでデータの一貫性を保証できる。
On the other hand, if it is determined that the first transfer is completed (step S509: YES), the
次に、逐次転送処理について説明する。 Next, sequential transfer processing will be described.
実施例2に係る計算機システムの逐次転送処理は、図10に示す逐次転送処理とは、ステップS306とステップS309における処理内容が異なる。 The sequential transfer processing of the computer system according to the second embodiment differs from the sequential transfer processing shown in FIG. 10 in the processing contents in steps S306 and S309.
実施例2に係る計算機システムにおいては、ステップS306では、コントローラ22のHCA250は、自コントローラ22のメモリ240内に存在する、データアドレスに対応する転送状態管理情報247のエントリの第一転送完了フラグ703のフラグを立てる。また、ステップS309では、コントローラ22のHCA250は、自コントローラ22のメモリ240内に存在する、データアドレスに対応する転送状態管理情報247のエントリの第二転送完了フラグ704のフラグを立てる。
In the computer system according to the second embodiment, in step S306, the
次に、障害対応処理について説明する。 Next, failure handling processing will be described.
図13は、実施例2に係る障害対応処理のフローチャートである。 FIG. 13 is a flowchart of failure handling processing according to the second embodiment.
障害対応処理は、FEコントローラ22以外のコントローラ(他コントローラ)が実行する処理である。障害対応処理は、一定時間に一度実施してもよいし、他コントローラ22の障害検知時に実施してもよい。
The failure handling process is a process executed by a controller other than the FE controller 22 (another controller). The failure handling process may be performed once at a fixed time, or may be performed when a failure of another
コントローラ22は、コントローラ状態管理情報244から他のコントローラ22の状態を取得し、状態が故障であるコントローラID(故障コントローラID)を特定する(ステップS601)。次に、コントローラ22は、FEコントローラ22が故障しているか否かを判定する(ステップS602)。
The
この結果、FEコントローラ22が故障していないと判定した場合(ステップS602:NO)には、コントローラ22は、処理をステップS601に戻す。一方、FEコントローラ22が故障していると判定した場合(ステップS602:YES)には、コントローラ22は、自身(自コントローラ)が第一転送先コントローラであるか否かを判定する(ステップS603)。なお、上記処理の代わりに、自コントローラが第二転送先コントローラであるか否かを判定し、以降の処理を行ってもよい。
As a result, when it is determined that the
ステップS603の判定の結果、自コントローラ22が第一転送先コントローラでないと判定した場合(ステップS603:NO)には、コントローラ22は、処理をステップS601に進める。
As a result of the determination in step S603, when it is determined that the
一方、自コントローラが第一転送先コントローラであると判定した場合(S603:YES)には、コントローラ22は、第一転送が完了しているか否かを判定する(ステップS604)。
On the other hand, when determining that its own controller is the first transfer destination controller (S603: YES), the
この判定結果、第一転送が完了していると判定した場合(ステップS604:YES)には、コントローラ22は、キャッシュ領域243のライトデータ(保証データ)をデステージし(ステップS606)、FEコントローラ22を経由してホスト1に失敗応答を送信し(ステップS607)、処理を終了する。ここで、第一転送が完了している場合(ステップS604:YES)、第一転送先コントローラ22のキャッシュ領域243のライトデータは壊れていないため、キャッシュ領域243のライトデータをデステージすることでデータの一貫性を保証できる。
As a result of this determination, if it is determined that the first transfer has been completed (step S604: YES), the
一方、第一転送が完了していないと判定した場合(ステップS604:NO)には、コントローラ22は、第二転送先のコントローラ22にキャッシュ領域243に格納されているライトデータ(保証データ)のデステージを依頼し(ステップS605)、処理をステップS607に進める。ここで、第一転送が完了していない場合(ステップS604:NO)、第二転送の開始前に第一転送先コントローラ22が故障しているため、第二転送先コントローラ22のキャッシュ領域243のダーティデータは更新されておらず、このキャッシュ領域243のダーティデータをデステージすることでデータの一貫性を保証できる。
On the other hand, if it is determined that the first transfer has not been completed (step S604: NO), the
以上説明したように、上記実施例に係る計算機システムでは、ライトデータの二重化の処理の進捗に合わせて、障害発生時に記憶デバイスユニット20に書き込むキャッシュ領域243を使い分けることで、ライトデータの一貫性を保証できる。
As described above, in the computer system according to the above embodiment, the consistency of write data is ensured by selectively using the
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。 In addition, the present invention is not limited to the above-described embodiments, and includes various modifications. Further, for example, the above-described embodiments are detailed descriptions of the configurations for easy understanding of the present invention, and are not necessarily limited to those having all the described configurations. Moreover, it is possible to add, delete, or replace a part of the configuration of each embodiment with another configuration.
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェア(データ管理プログラム)のプログラムコードによって実現してもよい。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどがある。 Further, each of the above configurations, functions, processing units, processing means, and the like may be realized by hardware, for example, by designing a part or all of them using an integrated circuit. Further, the present invention may be implemented by program code of software (data management program) that implements the functions of the embodiments. In this case, a computer is provided with a storage medium recording the program code, and a processor included in the computer reads the program code stored in the storage medium. In this case, the program code itself read from the storage medium implements the functions of the above-described embodiments, and the program code itself and the storage medium storing it constitute the present invention. Examples of storage media for supplying such program code include flexible disks, CD-ROMs, DVD-ROMs, hard disks, SSDs (Solid State Drives), optical disks, magneto-optical disks, CD-Rs, magnetic tapes, There are non-volatile memory cards, ROMs, and the like.
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装してもよい。 Also, the program code that implements the functions described in this embodiment may be implemented in a wide range of programming or scripting languages, such as assembler, C/C++, perl, Shell, PHP, and Java.
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。 Furthermore, by distributing the program code of the software that implements the functions of the embodiment via a network, it can be stored in storage means such as a hard disk or memory of a computer, or in a storage medium such as a CD-RW or CD-R. Alternatively, a processor provided in the computer may read and execute the program code stored in the storage means or the storage medium.
上記実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。 In the above embodiments, the control lines and information lines are those considered necessary for explanation, and not all control lines and information lines are necessarily shown on the product. All configurations may be interconnected.
また、上記実施例では、複数のコントローラ22のキャッシュ領域243上での二重化ができない場合に、正常なデータを記憶デバイスユニット20にデステージすることにより、データの一貫性を保証できるようにしていたが、本発明はこれに限られず、例えば、複数のコントローラ22のキャッシュ領域243上での二重化ができない場合に、正常なデータを、正常な動作が可能なコントローラ22のキャッシュ領域243にコピーして、複数のコントローラ22のキャッシュ領域243上で二重化させるようにしてもよい。
Also, in the above embodiment, when duplication on the
また、上記実施形態では、ライトデータを複数のコントローラ22のキャッシュ領域243上で二重化をさせるようにしていたが、本発明はこれに限られず、3以上の多重化をさせるようにしてもよく。
Further, in the above embodiment, write data is duplicated on the
1…ホスト計算機、2…ストレージシステム、11…ネットワーク、20…記憶デバイスユニット、22…コントローラ、23…HCAネットワーク、100…計算機システム、200…PDEV、230…CPU、240…メモリ、243…キャッシュ領域、244…コントローラ状態管理情報、245…キャッシュ状態管理情報、246…転送管理情報、247…転送状態管理情報、250…HCA
1
Claims (6)
前記コントローラは、
プロセッサ部と、
メモリと、を有し、
ライト要求にかかる新データが第1の前記コントローラの第1の前記メモリに格納された場合に、前記ライト要求にかかる新データにかかる第2のコントローラの第2のメモリ及び第3のコントローラの第3のメモリの旧データの状態がダーティである場合に、前記第1のコントローラは、ライト要求に対応する新データが格納された第1のメモリから、前記新データを第2のコントローラの第2のメモリに対して転送し、前記第2のメモリへの転送が完了した後に、前記新データを第3のコントローラの第3のメモリに対して転送することにより、前記第2のメモリと前記第3のメモリに別々に転送を行って前記旧データを上書きし、
前記ライト要求にかかる新データにかかる前記第2のメモリ及び前記第3のメモリの旧データの状態がダーティではない場合に、前記新データを前記第2のメモリと前記第3のメモリに並行して転送を行って前記旧データを上書きする
ストレージシステム。 A storage system having a plurality of controllers and storage device units capable of storing data,
The controller is
a processor unit;
having a memory and
When the new data related to the write request is stored in the first memory of the first controller, the new data related to the write request is stored in the second memory of the second controller and the memory of the third controller. 3 is dirty, the first controller transfers the new data from the first memory storing the new data corresponding to the write request to the second memory of the second controller. , and after the transfer to the second memory is completed, the new data is transferred to the third memory of the third controller , whereby the second memory and the separately transferring to a third memory to overwrite the old data;
When the state of the old data in the second memory and the third memory related to the new data related to the write request is not dirty, the new data is transferred to the second memory and the third memory in parallel. to overwrite the old data
storage system.
前記転送時に障害が発生した場合には、前記障害により損傷が発生していない前記新データまたは旧データを用いて処理を行う
請求項1に記載のストレージシステム。 When the transfer is performed separately, the transfer to the third memory is performed after confirming the success of the transfer to the second memory,
2. The storage system according to claim 1 , wherein if a failure occurs during said transfer, said new data or old data that has not been damaged by said failure is used for processing.
前記第2のメモリまたは前記第3のメモリのいずれかの転送が正常に行われた場合には、正常に転送された新データを前記記憶デバイスユニットにデステージし、
前記第2のメモリまたは前記第3のメモリのいずれかにも転送が正常に行われていない場合には、前記第2のメモリまたは前記第3のメモリに格納済みの旧データを前記記憶デバイスユニットにデステージして、前記第2のメモリまたは前記第3のメモリのデータをダーティでなくする
請求項2に記載のストレージシステム。 If a failure occurs during the transfer,
if the transfer to either the second memory or the third memory is successful, destage the successfully transferred new data to the storage device unit;
When the transfer to either the second memory or the third memory is not normally performed, the old data stored in the second memory or the third memory is transferred to the storage device unit. 3. The storage system of claim 2 , wherein the data in the second memory or the third memory is undirty by destaging to the second memory.
請求項1に記載のストレージシステム。 2. The storage system according to claim 1 , wherein said first controller can directly access a second memory of said second controller and a third memory of said third controller.
請求項4に記載のストレージシステム。 5. The storage system according to claim 4 , wherein said transfer is performed by a DMA (Direct Memory Access) section of said first controller.
前記コントローラは、
プロセッサ部と、
メモリと、を有し、
ライト要求にかかる新データが第1の前記コントローラの第1の前記メモリに格納された場合に、前記ライト要求にかかる新データにかかる第2のコントローラの第2のメモリ及び第3のコントローラの第3のメモリの旧データの状態がダーティである場合に、前記第1のコントローラは、ライト要求に対応する新データが格納された第1のメモリから、前記新データを第2のコントローラの第2のメモリに対して転送し、前記第2のメモリへの転送が完了した後に、前記新データを第3のコントローラの第3のメモリに対して転送することにより、前記第2のメモリと前記第3のメモリに別々に転送を行って前記旧データを上書きし、
前記ライト要求にかかる新データにかかる前記第2のメモリ及び前記第3のメモリの旧データの状態がダーティではない場合に、前記新データを前記第2のメモリと前記第3のメモリに並行して転送を行って前記旧データを上書きする
データ管理方法。 A data management method by a storage system having a plurality of controllers and storage device units capable of storing data,
The controller is
a processor unit;
having a memory and
When the new data related to the write request is stored in the first memory of the first controller, the new data related to the write request is stored in the second memory of the second controller and the memory of the third controller. 3 is dirty, the first controller transfers the new data from the first memory storing the new data corresponding to the write request to the second memory of the second controller. , and after the transfer to the second memory is completed, the new data is transferred to the third memory of the third controller , whereby the second memory and the separately transferring to a third memory to overwrite the old data;
when the state of the old data in the second memory and the third memory related to the new data related to the write request is not dirty, the new data is transferred to the second memory and the third memory in parallel. to overwrite the old data
Data management method.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021182809A JP7201775B2 (en) | 2018-11-08 | 2021-11-09 | Storage system, data management method, and data management program |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018210691A JP6976237B2 (en) | 2018-11-08 | 2018-11-08 | Storage system, data management method, and data management program |
JP2021182809A JP7201775B2 (en) | 2018-11-08 | 2021-11-09 | Storage system, data management method, and data management program |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018210691A Division JP6976237B2 (en) | 2018-11-08 | 2018-11-08 | Storage system, data management method, and data management program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022010181A JP2022010181A (en) | 2022-01-14 |
JP7201775B2 true JP7201775B2 (en) | 2023-01-10 |
Family
ID=87888591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021182809A Active JP7201775B2 (en) | 2018-11-08 | 2021-11-09 | Storage system, data management method, and data management program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7201775B2 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015052798A1 (en) | 2013-10-09 | 2015-04-16 | 株式会社日立製作所 | Storage system and storage control method |
WO2017056219A1 (en) | 2015-09-30 | 2017-04-06 | 株式会社日立製作所 | Storage device, and method for controlling storage device |
-
2021
- 2021-11-09 JP JP2021182809A patent/JP7201775B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015052798A1 (en) | 2013-10-09 | 2015-04-16 | 株式会社日立製作所 | Storage system and storage control method |
WO2017056219A1 (en) | 2015-09-30 | 2017-04-06 | 株式会社日立製作所 | Storage device, and method for controlling storage device |
Also Published As
Publication number | Publication date |
---|---|
JP2022010181A (en) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8904129B2 (en) | Method and apparatus for backup and restore in a dynamic chunk allocation storage system | |
US5586291A (en) | Disk controller with volatile and non-volatile cache memories | |
JP6009095B2 (en) | Storage system and storage control method | |
JP4437489B2 (en) | Storage system having volatile cache memory and nonvolatile memory | |
US8074017B2 (en) | On-disk caching for raid systems | |
US9304901B2 (en) | System and method for handling I/O write requests | |
US6912669B2 (en) | Method and apparatus for maintaining cache coherency in a storage system | |
US8984374B2 (en) | Storage system and storage control apparatus | |
JP5056747B2 (en) | Storage area management device and storage area management method | |
US20130290613A1 (en) | Storage system and storage apparatus | |
US20190324859A1 (en) | Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive | |
US7984260B2 (en) | Storage system provided with a plurality of controller modules | |
US20050086559A1 (en) | Storage system using fast storage devices for storing redundant data | |
US20150095696A1 (en) | Second-level raid cache splicing | |
JP2005301419A (en) | Disk array device and data processing method for it | |
KR20200041815A (en) | System for supporting erasure code data protection with embedded pcie switch inside fpga+ssd | |
US20110238915A1 (en) | Storage system | |
US11334508B2 (en) | Storage system, data management method, and data management program | |
JP2006099802A (en) | Storage controller, and control method for cache memory | |
JP7201775B2 (en) | Storage system, data management method, and data management program | |
JP4398596B2 (en) | Disk array device | |
WO2016006108A1 (en) | Storage and control method therefor | |
JP3793544B2 (en) | Disk array device and control method thereof | |
US8667218B2 (en) | Storage apparatus comprising RAID groups of RAID 1 series and control method of writing to RAID group of RAID 1 series | |
JP3256329B2 (en) | Disk array device and control method therefor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211109 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211109 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220830 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220921 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221118 |
|
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: 20221206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221222 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7201775 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |