JP6163588B2 - Storage system - Google Patents
Storage system Download PDFInfo
- Publication number
- JP6163588B2 JP6163588B2 JP2016095199A JP2016095199A JP6163588B2 JP 6163588 B2 JP6163588 B2 JP 6163588B2 JP 2016095199 A JP2016095199 A JP 2016095199A JP 2016095199 A JP2016095199 A JP 2016095199A JP 6163588 B2 JP6163588 B2 JP 6163588B2
- Authority
- JP
- Japan
- Prior art keywords
- parity
- data
- device controller
- fmpk
- controller
- 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.)
- Expired - Fee Related
Links
- 238000004364 calculation method Methods 0.000 claims description 104
- 238000012545 processing Methods 0.000 claims description 67
- 230000015654 memory Effects 0.000 claims description 60
- 238000013507 mapping Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 22
- 230000010365 information processing Effects 0.000 claims 10
- 238000000034 method Methods 0.000 description 140
- 230000008569 process Effects 0.000 description 107
- 238000007726 management method Methods 0.000 description 53
- 230000006870 function Effects 0.000 description 51
- 238000012546 transfer Methods 0.000 description 43
- 238000011084 recovery Methods 0.000 description 21
- 238000004891 communication Methods 0.000 description 12
- 101100048435 Caenorhabditis elegans unc-18 gene Proteins 0.000 description 5
- 230000008859 change Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000013404 process transfer Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Landscapes
- Detection And Correction Of Errors (AREA)
Description
本発明は、ストレージ装置に格納される冗長コードを演算する技術に関する。 The present invention relates to a technique for calculating a redundant code stored in a storage apparatus.
ストレージシステムのコントローラが複数の記憶装置を制御することでRAID(Redundant Array of Independent Disks)を構成し、データロストの発生を防ぐ技術が知られている。例えば、RAID5を採用するストレージシステムでは、記憶装置の上位装置にあたるストレージシステムのコントローラが、複数のデータブロックからパリティを生成する。
A technology is known in which a storage system controller configures a Redundant Array of Independent Disks (RAID) by controlling a plurality of storage devices and prevents data loss. For example, in a storage system that employs
前述のようなパリティ生成に伴うストレージシステムのコントローラの処理を軽減するため、下位装置にあたる各記憶装置が、RAIDを構成するストレージシステムがある。各記憶装置は、例えば、HDD(Hard Disk Drive)であり、各HDDのコントローラ(以下、HDDコントローラ)がパリティを生成する。 In order to reduce the processing of the storage system controller associated with parity generation as described above, there is a storage system in which each storage device corresponding to a lower level device constitutes a RAID. Each storage device is, for example, an HDD (Hard Disk Drive), and a controller of each HDD (hereinafter referred to as an HDD controller) generates a parity.
例えば、特許文献1では、更新前データ(旧データ)に対するデータの更新要求があると、HDDコントローラは、更新データ(新データ)と更新前データ(旧データ)からパリティを生成するための中間値(中間パリティ)を生成した後に、新データで旧データを更新する。HDDコントローラは、生成した中間パリティを旧データに対応する旧パリティが格納しているHDDに転送する。中間パリティを受信したHDDでは、HDDコントローラが、中間パリティと旧パリティから新パリティを生成し、生成した新パリティで旧パリティを更新する。
For example, in
近年のフラッシュメモリの低価格化に伴い、記憶装置としてHDDの代わりにFlash SSD(Flash Solid State Drive)が使用されるケースが増えつつある。HDDではある範囲の論理アドレスで特定されるデータに対する更新要求があると当該データ(旧データ)が格納されている物理領域に更新データ(新データ)が上書きされる。しかし、FlashSSDでは、データを上書きすることができないため、論理アドレスで特定されるデータに対する更新要求があると、当該データが格納されている物理領域とは異なる物理領域に更新データ(新データ)が格納され、特定された論理アドレスと新しい物理領域とがマッピングされる。これにより、Flash SSDの旧データが格納されている物理領域が無効にされる。 With the recent price reduction of flash memory, Flash SSD (Flash Solid State Drive) is being used instead of HDD as a storage device. In the HDD, when there is an update request for data specified by a certain range of logical addresses, the update data (new data) is overwritten in the physical area in which the data (old data) is stored. However, in Flash SSD, data cannot be overwritten. Therefore, when there is an update request for data specified by a logical address, update data (new data) is stored in a physical area different from the physical area in which the data is stored. The stored and specified logical address is mapped to the new physical area. As a result, the physical area in which the old data of the Flash SSD is stored is invalidated.
特許文献1では、中間パリティを生成した後に新データで旧データを上書きするため、中間パリティを生成した後は、旧データが存在しなくなる。そのため、パリティの更新前(例えば、中間パリティを、旧パリティを格納しているHDDに対して転送する前)に障害が発生し、中間パリティが消失した場合、旧データが存在しないため、中間パリティを再度、生成することができない。
In
一方、記憶装置をFlash SSDに置き換えた場合、フラッシュメモリはデータを上書きしないため、中間パリティを生成した後に、旧データが残っている可能性はある。しかし、Flash SSDでは、新データを書き込むと旧データを格納している物理領域を無効とし、所定のタイミングで旧データを消去する。すなわち、Flash SSDでも、引用文献1と同様に、障害発生時に旧データが存在しない可能性があり、その場合、中間パリティを生成することができない。
On the other hand, when the storage device is replaced with Flash SSD, the flash memory does not overwrite the data, so there is a possibility that the old data remains after the intermediate parity is generated. However, in the Flash SSD, when new data is written, the physical area storing the old data is invalidated and the old data is erased at a predetermined timing. That is, even in Flash SSD, there is a possibility that old data does not exist when a failure occurs, as in
本発明の一態様であるストレージシステムは、第1のコントローラと、複数の記憶装置を備える。RAIDを構成する複数の記憶装置のそれぞれは、ホストコンピュータからのデータを格納する記憶空間を提供する一つ以上の不揮発メモリチップと、不揮発メモリチップに接続される第2のコントローラとを有している。第1のコントローラが、第1のデータを第2のデータに更新する更新要求を受信した場合、複数の記憶装置のうちの第1の記憶装置内の第2のコントローラは、第2のデータを、第1の記憶装置の記憶空間内であって、第1のデータが格納されている領域とは異なる領域に格納し、第1と第2のデータとを関連付ける情報を生成し、そして第1及び第2のデータから中間パリティを生成するよう構成されている。複数の記憶装置のうち、第1のデータに対応する第1のパリティが格納されている第2の記憶装置における第2のコントローラは、前記中間パリティを受信し、前記中間パリティと第1のパリティから第2のパリティを生成し、第2のパリティを第2の記憶装置の記憶空間の領域内に格納するよう構成されている。第1の記憶装置の第2のコントローラは、第2のパリティが第2の記憶装置の記憶空間の領域内に格納された後に、前記情報を消去し、第1のデータが格納されている前記領域を消去対象領域として設定するよう構成されている。 A storage system that is one embodiment of the present invention includes a first controller and a plurality of storage devices. Each of the plurality of storage devices constituting the RAID includes one or more nonvolatile memory chips that provide a storage space for storing data from the host computer, and a second controller connected to the nonvolatile memory chips. Yes. When the first controller receives an update request for updating the first data to the second data, the second controller in the first storage device of the plurality of storage devices stores the second data. , Storing information in a storage space of the first storage device that is different from an area in which the first data is stored, generating information for associating the first and second data, and the first And an intermediate parity is generated from the second data. The second controller in the second storage device storing the first parity corresponding to the first data among the plurality of storage devices receives the intermediate parity, and receives the intermediate parity and the first parity. The second parity is generated from the second storage device, and the second parity is stored in the storage space area of the second storage device. The second controller of the first storage device erases the information and stores the first data after the second parity is stored in the storage space area of the second storage device. An area is set as an erasure target area.
幾つかの実施例を説明する。なお、本発明の技術的範囲は各実施例に限定されない。 Several examples will be described. The technical scope of the present invention is not limited to each example.
なお、以後の説明では、「***テーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。各種情報がデータ構造に依存しないことを示すために「***テーブル」を「***情報」と呼ぶことができる。 In the following description, various types of information may be described using the expression “*** table”, but the various types of information may be expressed using a data structure other than a table. In order to show that various types of information do not depend on the data structure, the “*** table” can be called “*** information”.
また、以後の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit ))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び通信制御装置(例えば通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。また、プログラムを主語として説明された処理は、管理システムが行う処理としても良い。また、プログラムの一部又は全ては専用ハードウェアによって実現されてもよい。このため、プログラムを主語として説明された処理は、コントローラが行う処理としても良い。コントローラは、プロセッサと、プロセッサに実行されるコンピュータプログラムを記憶する記憶資源とを含んでも良いし、上記の専用ハードウェアを含んでも良い。また、コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。 In the following description, the process may be described using “program” as a subject. However, the program is executed by a processor (for example, a CPU (Central Processing Unit)), so that a predetermined process is appropriately performed. Since the processing is performed using a storage resource (for example, a memory) and a communication control device (for example, a communication port), the subject of processing may be a processor. Further, the processing described with the program as the subject may be processing performed by the management system. Further, part or all of the program may be realized by dedicated hardware. For this reason, the processing described with the program as the subject may be processing performed by the controller. The controller may include a processor and a storage resource that stores a computer program executed by the processor, or may include the dedicated hardware described above. Further, the computer program may be installed in each computer from a program source. The program source may be, for example, a program distribution server or a storage medium.
また、以下の説明では、管理システムは、一以上の計算機、例えば、管理計算機、又は、管理計算機と表示用計算機との組み合わせである。具体的には、例えば、管理計算機が表示用情報を表示する場合は、管理計算機が管理システムである。また、処理の高速化や高信頼化のために、複数の計算機で管理計算機と同等の機能が実現されてもよく、この場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んで良い)が、管理システムである。 In the following description, the management system is one or more computers, for example, a management computer, or a combination of a management computer and a display computer. Specifically, for example, when the management computer displays display information, the management computer is a management system. In addition, in order to increase the processing speed and reliability, a function equivalent to that of the management computer may be realized by a plurality of computers. In this case, the plurality of computers (in the case where the display computer performs display, the display is displayed). A management system).
まず、本発明の適用例であるストレージシステムの構成について説明する。 First, the configuration of a storage system that is an application example of the present invention will be described.
図1は、ストレージシステム30の構成の一例を示す。このストレージシステム30は、データを格納する複数のストレージ装置50と、これら複数のストレージ装置に接続されているシステムコントローラ20とを有する。ストレージ装置は、例えば、FMPK(Flash Memory Package)50である。
FIG. 1 shows an example of the configuration of the
FMPK50は、データを格納する不揮発メモリと、不揮発メモリ及びシステムコントローラ20に接続されているデバイスコントローラ60とを有する。不揮発メモリは例えば、NAND型のFM(Flash Memory)55である。不揮発メモリはフラッシュメモリに限定されず、追記型のメモリ(例えば、相変化メモリ)でも良い。デバイスコントローラ60は、通信インタフェースデバイス、記憶デバイス及びそれらに接続された制御デバイスを有する。通信インタフェースデバイスは例えば、システムインタフェース53とFMインタフェース54である。以下の説明において、インタフェースをI/Fと示すことがある。システムI/F53は、システムコントローラ20に接続される。FM I/F54は、FM55に接続される。
The
記憶デバイスは例えば、メモリ52及びバッファ66である。制御デバイスは例えば、CPU51である。制御デバイスは、CPU51のようなプロセッサの他に、所定の処理(例えば圧縮、伸長、暗号化又は復号化)を行う専用ハードウェア回路を含んでも良い。専用ハードウェア回路は例えば、パリティ又は中間パリティを計算するパリティ演算回路65である。メモリ52には、FM55を制御するためのプログラム及び各種情報が記憶される。CPU51は、メモリ52に記憶されているプログラムを実行することにより各種機能を実現させる。バッファ66は例えば、DRAM(Dynamic Random Access Memory)等の揮発メモリである。また、バッファ66は、FM55へ書き込むデータ、FM55から読み出したデータ、パリティ演算中のデータ等を一時的に格納する。
The storage device is, for example, the
FMPK50は、複数のFM55を有していても良い。複数のFM55は、異種の記憶媒体を含んでも良いし、同種の記憶媒体であっても良い。例えば、FM55は、複数の物理ブロックで構成されている。各物理ブロックは複数の物理ページで構成されている。FM55内の各セルは、SLC(Single Level Cell)であってもMLC(Multiple LevelCell)であっても良い。また、不揮発メモリは、他の不揮発メモリであっても良いし、相変化メモリ等の記録可能なメモリであっても良い。
The FMPK50 may have a plurality of FM55. The plurality of
図2は、システムコントローラ20の構成を示す。システムコントローラ20は、通信インタフェースデバイス、記憶デバイス、及びそれらに接続された制御デバイスを有する。通信インタフェースデバイスは例えば、通信ネットワークに接続するための通信I/F18、FMPK50に接続するためのディスクI/F19である。記憶デバイスは例えば、メモリ12及びバッファ26である。制御デバイスは例えば、CPU11である。制御デバイスは、CPU11のようなプロセッサの他に、所定の処理(例えば圧縮、伸長、暗号化又は復号化)を行う専用ハードウェア回路を含んでも良い。専用ハードウェア回路は例えば、パリティ又は中間パリティのいずれかを計算するパリティ演算回路25である。メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。バッファ26は例えば、DRAM等の揮発メモリである。また、バッファ26は、FMPK50へライトするデータ、FMPK50からリードしたデータ、パリティ演算中のデータ等を一時的に格納する。なお、システムコントローラ20に接続される全てのFMPK50がパリティ演算回路65を有している場合には、システムコントローラ20は、パリティ演算回路25を有していなくても良い。
FIG. 2 shows the configuration of the
システムコントローラ20に相当する従来のシステムコントローラが提供していた機能として、パリティ演算、スナップショット、データ圧縮、重複排除などがあるが、これらの機能をFMPK50等の記憶媒体が実現できる。この実施例では、パリティ演算機能を説明する。
Functions provided by a conventional system controller corresponding to the
システムコントローラ20とデバイスコントローラ60が階層を形成していることから、システムコントローラ20を上位コントローラ、デバイスコントローラ60を下位コントローラ、と定義することもできる。
Since the
次に、システムコントローラ20がRAID(Redundant Array of Independent Disks)機能をサポートしているコントローラである場合のストレージシステム30の適用例である、計算機システムについて説明する。
Next, a computer system, which is an application example of the
図3は、実施例1に係る計算機システムの構成の一例を示す。この計算機システムは、ホスト計算機10と、ストレージシステム30とを有する。ホスト計算機10とストレージシステム30とは、通信ネットワーク、例えば、SAN(Storage Area Network)1を介して接続される。なお、計算機システムは、複数のホスト計算機10を有していても良い。この場合、ストレージシステム30は、SAN1を介して複数のホスト計算機10に接続される。
FIG. 3 illustrates an example of a configuration of the computer system according to the first embodiment. This computer system has a
ストレージシステム30は、複数のFMPK50と、これらのFMPK50を制御するシステムコントローラ20とを有する。ストレージ装置は例えば、FMPK50である。この例においてシステムコントローラ20は例えば、RAIDコントローラである。また、この例において、ストレージシステム30は、複数のシステムコントローラ20を有する。各システムコントローラ20は、SAN1を介してホスト計算機10に接続されている。複数のFMPK50の夫々は、複数のシステムコントローラ20に接続されている。なお、ストレージシステム30は、一つのシステムコントローラ20だけを有していても良い。
The
システムコントローラ20の構成は、図2に示された構成と同様である。メモリ12には更に、複数のFMPK50を用いるRAID機能のためのプログラム及び各種情報が記憶される。この例において、システムコントローラ20は、パリティ演算回路25を有しているが、パリティ演算回路25を有していなくても良い。
The configuration of the
ホスト計算機10は、管理システムであっても良い。
The
以下、システムコントローラ20がRAID5の制御を行う場合について説明する。
Hereinafter, a case where the
システムコントローラ20は、RG(RAID Group)とLU(Logical Unit、論理ボリュームと呼ばれることもある)とFMPK50と関連付けられている。図4は、RG及びLUの構成の一例を示す。システムコントローラ20は、FMPK50の幾つかをRGに割り当て、RGの記憶領域の一部又は全部をLUに割り当てる。なお、論理ボリュームは、シンプロビジョニング技術によりボリュームの容量が仮想化された仮想ボリュームであってもよい。仮想ボリュームには予めデータを格納するための物理的な記憶領域が割当てられていない。当該仮想ボリュームへのライト要求に応じて所定の単位で、当該仮想ボリュームに対して、物理的な記憶領域が割当てられる。
The
図5は、RG管理テーブル600の一例を示す。図6は、LU管理テーブル700の一例を示す。図7は、FMPK管理テーブル800の一例を示す。システムコントローラ20は、RG(RAID Group)とLU(Logical Unit)とFMPK50との関係を、メモリ12内のRG管理テーブル600とLU管理テーブル700とFMPK管理テーブル800へ書き込む
FIG. 5 shows an example of the RG management table 600. FIG. 6 shows an example of the LU management table 700. FIG. 7 shows an example of the FMPK management table 800. The
RG管理テーブル600は、RG毎のレコードを有する。或るRGのレコードは、このRGを示すRG番号601と、このRGに割り当てられたFMPK50を示すFMPK番号602と、このRGのRAIDレベル603とを示す。
The RG management table 600 has a record for each RG. A record of an RG indicates an
LU管理テーブル700は、LU毎のレコードを有する。或るLUのレコードは、このLUを示すLU番号701と、このLUに割り当てられたRGを示すRG番号702と、このLUに割り当てられたストライプブロックのサイズであるストライプサイズ703と、このLUの開始論理アドレスであるLU開始アドレス704と、このLUのサイズであるLUサイズ705と、このLUのIO特性706とを示す。IO特性706はこのLUに対して行われたIOパターンの傾向であり、シーケンシャルの傾向が強いか、或いはランダムの傾向が強いか、を示す。
The LU management table 700 has a record for each LU. A record of an LU includes an
IO特性706は、ユーザにより予め指定されても良いし、システムコントローラ20により判定されても良い。また、これらを組み合わせ、IO特性706の初期値がユーザにより予め指定され、所定の時間が経過した後、システムコントローラ20が判定により初期値を最適化しても良い。また、IO特性706の判定方法として例えば、システムコントローラ20は、単位時間毎に、或るLUに対するコマンドの統計を取り、ランダムI/OパターンとシーケンシャルのI/Oパターンのうち高いほうを当該LUのIO特性706と判定しても良い。コマンドの種類は、ランダムライト及びシーケンシャルライトを含む。ランダムライトの割合とシーケンシャルライトの割合の比較は、これらのコマンドの頻度を比較しても良いし、これらのコマンドにより書き込まれたデータ量を比較しても良い。また、システムコントローラ20は、一定周期でIO特性706を前述の判定方法によりモニタリングし、変更の必要があれば、LU管理テーブル700を更新しても良い。
The IO characteristic 706 may be specified in advance by the user or may be determined by the
FMPK管理テーブル800は、FMPK50毎のレコードを有する。或るFMPK50のレコードは、このFMPK50を示すFMPK番号801と、このFMPK50が所属するRGを示す所属RG番号802と、このFMPK50のパリティ演算機能を示すパリティ演算機能サポート情報803とを示す。パリティ演算機能サポート情報803は例えば、このFMPK50がパリティ演算回路65等のパリティ演算機能を有するか否かを示すフラグである。
The FMPK management table 800 has a record for each FMPK 50. A record of a
図8は、RG上のアドレス空間の一例を示す。図9は、RGに所属するFMPK50上のアドレス空間の一例を示す。この例において、システムコントローラ20は、RAID5のRG#0のために、4個のFMPK50であるFMPK#0〜FMPK#3を割り当てる。更にシステムコントローラ20は、RG#0上のアドレス空間から、連続する領域をLU#0に割り当て、別の連続する領域をLU#1に割り当てる。システムコントローラ20は、FMPK#0〜FMPK#3上のアドレス空間に亘るストライプラインを割り当て、ストライプライン順、FMPK番号順にストライプブロック及びパリティを割り当てる。ここでシステムコントローラ20は、ストライプライン毎に、ストライプブロック及びパリティを割り当てるFMPK番号をシフトさせる。このときシステムコントローラ20は、RG#0,LU#0,LU#1に関する情報を、RG管理テーブル600とLU管理テーブル700とFMPK管理テーブル800へ書き込む。
FIG. 8 shows an example of an address space on the RG. FIG. 9 shows an example of an address space on the
図10は、FMPK50におけるページマッピングの一例を示す。FMPK50上の論理アドレス空間は、複数の論理ページに分割されている。一方、FMPK50上の物理アドレス空間は、複数の物理ブロックに分割されており、更に各物理ブロックは、所定のブロックサイズを有し、複数の物理ページに分割されている。各論理ページ及び各物理ページは、所定のページサイズを有する。
FIG. 10 shows an example of page mapping in the FMPK50. The logical address space on the
なお、物理ページの代わりに、物理ブロック等、他の物理領域が用いられても良い。また、論理ページの代わりに、論理ユニット等、他の論理領域が用いられても良い。 Instead of physical pages, other physical areas such as physical blocks may be used. Further, instead of a logical page, another logical area such as a logical unit may be used.
図11は、ページマッピング管理テーブル1100の一例を示す。デバイスコントローラ60は、論理ページを物理ページに関連付け、その関連をメモリ52内のページマッピング管理テーブル1100へ書き込む。ページマッピング管理テーブル1100は、論理ページ毎のレコードを有する。或る論理ページのレコードは、この論理ページを示す論理ページ番号1101と、現在この論理ページに割り当てられている物理ページである現物理ページを示す物理ページ番号1102と、現物理ページの直前にこの論理ページに割り当てられていた物理ページである旧物理ページを示す旧物理ページ番号1103とを示す。即ち、或る論理ページに関連付けられている旧物理ページは、一世代前にこの論理ページに関連付けられていた現物理ページを示す。論理ページに関連付けられた旧物理ページは有効ページとして、論理ページとの関連付けが解除されるまでその関連性が保持される。関連付けが解除された旧物理ページは無効ページとなるため、リクラメーション処理等により所定のタイミングで、旧物理ページ内のデータが消去される。リクラメーション処理とは、メモリの特性上データを上書きできないフラッシュメモリにおいて、無効データ(無効ページに格納されているデータ)を消去して、その無効データが格納されていたページを再度書き込み可能な状態にする処理を言う。フラッシュメモリではブロック単位でデータを消去するので、デバイスコントローラ60は、対象ブロック内に有効ページと無効ページの両方がある場合、有効ページ内のデータを他ブロックへ移動してから、対象ブロックに格納されている無効データを消去する。本実施例においては、デバイスコントローラ60は、論理ページに関連付けられた物理ページ1102及び旧物理ページ1103を有効ページと判断して、リクラメーション処理を実行する。
FIG. 11 shows an example of the page mapping management table 1100. The
旧物理ページの管理方法の具体例について説明する。デバイスコントローラ60は、ページマッピング管理テーブル1100に示されている旧物理ページが不要か否かを判定し、或る旧物理ページが不要と判定された場合、この旧物理ページと論理ページの関連付けを解除しても良い。例えば、デバイスコントローラ60により管理される旧物理ページ数の上限が予め設定され、デバイスコントローラ60は、ページマッピング管理テーブル1100から旧物理ページを古い順に削除する。また、デバイスコントローラ60は、システムコントローラ20からの指示により、ページマッピング管理テーブル1100から旧物理ページを削除しても良い。判定基準の一例としては、データ更新に伴うパリティの更新が終了したことである。また、システムコントローラ20は、旧物理ページのデータが必要か否かを判定し、この旧物理ページが不要であると判定された場合に、この旧物理ページに対応するデバイスコントローラ60へ、ページマッピング管理テーブル1100からこの旧物理ページを削除することを指示しても良い。また、システムコントローラ20又はデバイスコントローラ60は、FM55の使用済みの容量が一定値以上になった場合に、ページマッピング管理テーブル1100から旧物理ページを削除しても良い。また、旧物理ページのデータの読み出しが要求され、且つ旧物理ページがページマッピング管理テーブル1100に残っている場合、デバイスコントローラ60は、旧物理ページのデータを読み出すことができる。
A specific example of the old physical page management method will be described. The
次に、システムコントローラ20の動作について説明する。
Next, the operation of the
まず、データ更新時のライト方法について説明する。 First, a writing method at the time of data update will be described.
ライト方法は例えば、リードモディファイライト及びフルストライプライトである。この例におけるリードモディファイライトは、一つのストライプラインの中で指定された一つのストライプブロックのデータを更新する処理である。あるいは、この例におけるフルストライプライトは、一つのストライプライン内の全てのデータを更新する処理である。リードモディファイライトは、指定されたストライプブロックの旧データと新データから中間パリティを計算し、中間パリティと旧パリティから新パリティを計算する。フルストライプライトは、全ての新データから新パリティを計算する。ここで、旧データは更新前のデータを示し、新データは更新後のデータを示し、旧パリティは更新前のパリティを示す、新パリティは更新後のパリティを示す。中間パリティは、パリティ演算の途中のパリティであり、旧パリティと新パリティの差分を示す。 The write method is, for example, read modify write and full stripe write. The read-modify-write in this example is a process for updating the data of one stripe block designated in one stripe line. Alternatively, the full stripe write in this example is a process for updating all data in one stripe line. In the read modify write, intermediate parity is calculated from old data and new data of a specified stripe block, and new parity is calculated from the intermediate parity and old parity. Full stripe write calculates new parity from all new data. Here, old data indicates data before update, new data indicates data after update, old parity indicates parity before update, and new parity indicates parity after update. The intermediate parity is a parity in the middle of the parity calculation, and indicates a difference between the old parity and the new parity.
次に、パリティ演算機能について説明する。 Next, the parity calculation function will be described.
パリティ演算機能は例えば、パリティ演算回路25及びパリティ演算回路65であり、一つのストライプラインにおける二つのストライプブロックのデータの間の排他的論理和(exclusive OR)をパリティとして計算する。また、パリティ演算機能は、旧データと新データの間の排他的論理和を中間パリティとして計算する。また、パリティ演算機能は、旧パリティと中間パリティの間の排他的論理和を新パリティとして計算する。旧データをDi、新データをDi_new、旧パリティをPとすると、新パリティP_newは次式で表される。
The parity calculation function is, for example, the
P_new = P+(Di+Di_new) P_new = P + (Di + Di_new)
ここで、演算子「+」は排他的論理和を表し、(Di+Di_new)は中間パリティを表す。中間パリティは、Di以外の全てのデータ間の排他的論理和に等しい。 Here, the operator “+” represents exclusive OR, and (Di + Di_new) represents intermediate parity. The intermediate parity is equal to an exclusive OR between all data other than Di.
なお、パリティの代わりに、ハミング符号等、他の冗長コードが用いられても良い。 Instead of parity, other redundant codes such as a Hamming code may be used.
次に、システムコントローラ20がFMPK管理テーブル800にパリティ演算機能サポート情報803を登録するパリティ演算機能登録処理について説明する。
Next, a parity calculation function registration process in which the
図12は、パリティ演算機能登録処理の一例を示す。システムコントローラ20は、新規のFMPK50をインストールする時や、システムコントローラ20の立ち上げ時等に、パリティ演算機能登録処理を行う。
FIG. 12 shows an example of the parity operation function registration process. The
まずシステムコントローラ20は、パリティ演算機能サポート確認コマンドをFMPK50のデバイスコントローラ60へ発行し、その応答を受領する(1201)。このときパリティ演算機能サポート確認コマンドを受けたデバイスコントローラ60は、デバイスコントローラ60自身がパリティ演算機能を有しているか否かを示す応答をシステムコントローラ20へ送る。次にシステムコントローラ20は、応答に基づいて、デバイスコントローラ60がパリティ演算機能を有しているか否かを示す情報を、FMPK管理テーブル800のパリティ演算機能サポート情報803へ登録し(1202)、この処理のフローを終了する。
First, the
なお、パリティ演算機能登録処理を行う代わりに、ユーザが予めパリティ演算機能サポート情報803を登録しても良い。
Instead of performing the parity operation function registration process, the user may register the parity operation
次に、パリティ演算を行うパリティ演算実施装置の決定方法について説明する。 Next, a method of determining a parity calculation execution device that performs parity calculation will be described.
図13は、パリティ演算実施装置の決定方法1300の一例を示す。システムコントローラ20は決定方法1300に従って、システムコントローラ20又はデバイスコントローラ60をパリティ演算実施装置として決定する。システムコントローラ20は、システムコントローラ20がパリティ演算回路25等のパリティ演算機能を有するか否かを示す情報と、FMPK管理テーブル800のパリティ演算機能サポート情報803とに基づいて、システムコントローラ20とデバイスコントローラ60の何れかをパリティ演算実施装置として決定する。パリティ演算実施装置を決定するための4個のケースが定義されている。各ケースは、ケース番号1301、システムコントローラ20がパリティ演算機能を有するか否かを示すシステム機能情報1302と、デバイスコントローラ60がパリティ演算機能を有するか否かを示すデバイス機能情報1303と、パリティ演算実施装置を示すパリティ演算実施情報1304と、オプション1305とを示す。
FIG. 13 shows an example of a
ケース#1は、システムコントローラ20がパリティ演算機能を有しており、且つデバイスコントローラ60もパリティ演算機能を有しているケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20とデバイスコントローラ60の何れも選択することができる。この場合、システムコントローラ20は、オプション1305に基づいて後述のライト処理を行う。
ケース#2は、システムコントローラ20がパリティ演算機能を有しており、且つデバイスコントローラ60がパリティ演算機能を有していないケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択する。
ケース#3は、システムコントローラ20がパリティ演算機能を有しておらず、且つデバイスコントローラ60がパリティ演算機能を有しているケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてデバイスコントローラ60を選択する。
ケース#4は、システムコントローラ20がパリティ演算機能を有しておらず、且つデバイスコントローラ60もパリティ演算機能を有していないケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20とデバイスコントローラ60の何れも選択することができない。
なお、パリティ演算機能登録処理及びパリティ演算実施装置の決定は、省かれても良い。例えば、システムコントローラ20と全てのデバイスコントローラ60がパリティ演算機能を有している場合、システムコントローラ20は、パリティ演算機能登録処理及びパリティ演算実施装置の決定を省き、後述するケース#1におけるライト処理を行う。また、管理者等によりパリティ演算実施装置が予め設定されている場合も、これらの処理を省略可能である。
The parity calculation function registration process and the determination of the parity calculation execution device may be omitted. For example, when the
次に、ケース#1〜#3におけるシステムコントローラ20のライト処理について説明する。
Next, the write process of the
図14は、システムコントローラ20のライト処理の一例を示す。まずシステムコントローラ20は、外部ホストからIO要求としてライト要求を受領する(1401)。外部ホストは例えば、SAN1を介してシステムコントローラ20に接続されたホスト計算機10である。次にシステムコントローラ20は、パリティ演算を行うパリティ演算実施装置としてシステムコントローラ20及びデバイスコントローラ60の一方を選択するパリティ演算選択処理を行う(1402)。なお、ケース#2及びケース#3では、パリティ演算実施装置は選択済みなので、ステップ1402の処理は省略する。次にシステムコントローラ20は、受領した命令に基づいてライト方法を選択するライト方法選択処理を行う(1403)。ライト方法は、リードモディファイライト及びフルストライプライトの一方である。次にシステムコントローラ20は、選択されたライト方法に従ってデバイスコントローラ60にデータ及びパリティを更新させるデータ更新処理を行う(1404)。
FIG. 14 shows an example of the write process of the
次に、パリティ演算選択処理1402の幾つかの具体例について説明する。
Next, some specific examples of the parity
まず、システムコントローラ20がLU毎のIO特性706に基づいてパリティ演算実施装置を選択する処理の具体例である、第1パリティ演算選択処理について説明する。
First, a first parity calculation selection process, which is a specific example of a process in which the
図15は、第1パリティ演算選択処理の一例を示す。まずシステムコントローラ20は、LU管理テーブル700に基づいて、当該ライトの対象のLUのIO特性706がランダムを示すか否かを判定する(1501)。当該LUのIO特性706がランダムを示す場合(1501,Yes)、システムコントローラ20は、パリティ演算実施装置としてデバイスコントローラ60を選択することにより、デバイスコントローラ60にパリティ演算を指示することを決定し(1502)、この処理のフローを終了する。一方、当該LUのIO特性706がランダムを示さない場合(1501,No)、すなわち後述するシーケンシャルライトの場合は、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択することにより、システムコントローラ20がパリティ演算を実施することを決定し(1503)、この処理のフローを終了する。
FIG. 15 shows an example of the first parity calculation selection process. First, based on the LU management table 700, the
即ち、システムコントローラ20は、IO契機で、LU管理テーブル700のIO特性706を参照し、IO特性706が、当該LUへの書き込みにおいてランダムライトがシーケンシャルライトより多いことを示す場合、デバイスコントローラ60にパリティ生成を指示する。一方、IO特性706が、当該LUへの書き込みにおいてランダムライトがシーケンシャルライトより少ないことを示す場合、システムコントローラ20がパリティ生成を実施する。
In other words, the
次に、システムコントローラ20がシステムコントローラ20のハードウェアの負荷を検出し、この負荷に基づいてパリティ演算実施装置を選択する処理の具体例である、第2パリティ演算選択処理について説明する。
Next, a second parity calculation selection process, which is a specific example of a process in which the
図16は、第2パリティ演算選択処理の一例を示す。ハードウェアは例えば、CPU11、メモリ12、パリティ演算回路25である。まずシステムコントローラ20は、自身のハードウェアの負荷が基準より高いか否かを判定する(1601)。ハードウェアの負荷が基準より高いと判定された場合(1601,Yes)、システムコントローラ20は、パリティ演算実施装置としてデバイスコントローラ60を選択し、デバイスコントローラ60にパリティ演算を指示し(1602)、この処理のフローを終了する。一方、ハードウェアの負荷が基準より高くないと判定された場合(1601,No)、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択し(1603)、この処理のフローを終了する。
FIG. 16 shows an example of the second parity calculation selection process. The hardware is, for example, the
ここで、システムコントローラ20は例えば、システムコントローラ20のハードウェアの負荷を計測し、計測結果が所定の閾値を超えた場合に、ハードウェアの負荷が高いと判定する。計測結果は例えば、CPU11の利用率、メモリ12の使用量、パリティ演算回路25へ入力されたデータ量等である。
Here, for example, the
次に、システムコントローラ20が当該ライトのIOパターンに基づいてパリティ演算実施装置を選択する処理の具体例である、第3パリティ演算選択処理について説明する。
Next, a third parity calculation selection process, which is a specific example of a process in which the
図17は、第3パリティ演算選択処理の一例を示す。まずシステムコントローラ20は、当該IO要求のIOパターンがランダムライトか否かを判定する(1701)。IOパターンがランダムライトであると判定された場合(1701,Yes)、システムコントローラ20はパリティ演算実施装置としてデバイスコントローラ60を選択し、デバイスコントローラ60にパリティ演算を指示し(1702)、この処理のフローを終了する。一方、IOパターンがランダムライトでないと判定された場合、即ちIOパターンがシーケンシャルライトであると判定された場合(1701,No)、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択し(1703)、この処理のフローを終了する。
FIG. 17 shows an example of the third parity calculation selection process. First, the
次に、システムコントローラ20が当該ライトのIOパターンとシステムコントローラ20のハードウェアの負荷とに基づいてパリティ演算実施装置を選択する処理の具体例である、第4パリティ演算選択処理について説明する。
Next, a fourth parity calculation selection process, which is a specific example of a process in which the
図18は、第4パリティ演算選択処理の一例を示す。まずシステムコントローラ20は、当該ライトのIOパターンがランダムライトか否かを判定する(1801)。IOパターンがランダムライトであると判定された場合(1801,Yes)、システムコントローラ20はパリティ演算実施装置としてデバイスコントローラ60を選択し、デバイスコントローラ60にパリティ演算を指示し(1802)、この処理のフローを終了する。一方、IOパターンがランダムライトでないと判定された場合(1801,No)、システムコントローラ20は、ハードウェアの負荷が高いか否かを判定する(1803)。ハードウェアの負荷が高いと判定された場合(1803,Yes)、システムコントローラ20は、処理のフローを1802へ移行させる。一方、ハードウェアの負荷が高くないと判定された場合(1803,No)、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択し(1804)、この処理のフローを終了する。
FIG. 18 shows an example of the fourth parity calculation selection process. First, the
なお、システムコントローラ20は、以上に示された複数の種類のパリティ演算選択処理1402を組み合わせることにより、パリティ演算実施装置を選択しても良い。
Note that the
シーケンシャルライト時及びフルストライプライト時、システムコントローラ20がパリティ演算を行うことにより、システムコントローラ20からデバイスコントローラ60へのデータ転送量の増大を防ぐことができる。これによりライト速度の低下を防ぐことができる。
When the
次に、ライト方法選択処理1403の具体例について説明する。
Next, a specific example of the write
図19は、ライト方法選択処理1403の一例を示す。ライト方法の選択肢は例えば、リードモディファイライト及びフルストライプライトである。まずシステムコントローラ20は、当該IO要求であるライトのIOパターンがランダムライトか否かを判定する(1901)。IOパターンがランダムライトであると判定された場合(1901,Yes)、システムコントローラ20は、ライト方法としてリードモディファイライトを選択し(1902)、この処理のフローを終了する。一方、IOパターンがランダムライトでないと判定された場合(1901,No)、即ちIOパターンがシーケンシャルライトであると判定された場合、システムコントローラ20は、ライト方法としてフルストライプライトを選択し(1903)、この処理のフローを終了する。
FIG. 19 shows an example of the write
次に、パリティ演算実施装置の選択結果とライト方法の選択結果に応じたデータ更新処理1404の幾つかの具体例について説明する。
Next, some specific examples of the
まず、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第1リードモディファイライト処理について説明する。
First, the first read modify write process, which is a specific example of the
図20は、第1リードモディファイライト処理の一例を示す。図21は、第1リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。この例において、4個のFMPK50であるFMPK#0,#1,#2,#3は、一つのストライプライン内のデータD0,D1,D2、パリティPを夫々格納している。ここでシステムコントローラ20が、ライトの命令により、D0の旧データを更新するための新データを受けた状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3のうち、更新されるデータを格納しているFMPK#0をデータFMPKと呼ぶことがある。また、FMPK#0,#1,#2,#3のうち、パリティを格納しているFMPK#3をパリティFMPKと呼ぶことがある。
FIG. 20 shows an example of the first read-modify-write process. FIG. 21 shows an example of the operation of the
まずシステムコントローラ20は、FMPK#0,#1,#2,#3の中からD0に対応するFMPK#0(データFMPK)を選択し、旧データの保持と新データの書き込みとを指示する旧データ保持ライトコマンドをFMPK#0へ発行することにより、新データをFMPK#0へ転送する(2101)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0内の旧データの物理ページと異なる物理ページへ書き込む。通常ライトコマンドでは、論理ページに新物理ページが割り当てられると旧物理ページは無効となり、旧物理ページに格納されている旧データは消去の対象となる。そこで、システムコントローラ20は、パリティの更新が完了するまで旧データが保持されるようにするため、通常ライトコマンドではなく旧データ保持ライトコマンドを利用する。以後の説明において、ライトコマンドとは、通常ライトコマンドを示すものとする。
First, the
次にシステムコントローラ20は、中間パリティを要求する中間パリティリードコマンドをFMPK#0へ発行することにより、FMPK#0から中間パリティを取得する(2102)。中間パリティは、旧パリティのパリティ演算により新パリティを生成するための、中間演算結果である。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内に格納された旧データとFMPK#0内に格納された新データとから中間パリティを計算し、応答として中間パリティをシステムコントローラ20へ送る。ここでFMPK#0のデバイスコントローラ60は、計算された中間パリティを、バッファ66へ書き込んでも良いし、FMPK#0内のFM55の中で旧データの物理ページ及び新データの物理ページの両方と異なる物理ページへ書き込んでも良い。
Next, the
次にシステムコントローラ20は、FMPK#0,#1,#2,#3の中からPに対応するFMPK#3(パリティFMPK)を選択し、パリティの更新を指示するパリティ更新ライトコマンドをFMPK#3へ発行することにより、FMPK#0から受信した中間パリティをFMPK#3へ転送する(2103)。このコマンドを受けたFMPK#3は、FMPK#3内の旧パリティとシステムコントローラ20からの中間パリティから新パリティを計算し、新パリティをFMPK#3へ書き込む。FMPK#3のデバイスコントローラ60は、新パリティをFMPK#3へ書き込んだら、システムコントローラ20に対してパリティ更新ライトの完了応答を通知する。ここでFMPK#3のデバイスコントローラ60は、システムコントローラ20からの中間パリティを、バッファ66へ書き込んでも良いし、FMPK#3内のFM55の中で旧パリティの物理ページ及び新パリティの物理ページの両方と異なる物理ページへ書き込んでも良い。
Next, the
次にシステムコントローラ20は、FMPK#3からの完了応答を受信すると、旧データを無効にすることを指示する旧データ破棄コマンドを、FMPK#0へ発行し(2104)、このフローを終了する。このコマンドを受けたFMPK#0のデバイスコントローラ60は、保持していた旧データを無効とするため、マッピング管理テーブル1100から旧データ破棄コマンドにより特定された論理ページにマッピングされた物理ページを削除する。
Next, when receiving a completion response from
なお、システムコントローラ20は、パリティ更新ライトコマンド発行後、FMPK#3からの完了応答を所定の時間以内に受信しなかった場合は、パリティの更新が失敗したものと判断して、FMPK#0から中間パリティを再取得し、その中間パリティをFMPK#3へ再転送することで、パリティの更新処理を再実行してもよい。
If the
具体的には、システムコントローラ20は、パリティ更新ライトコマンド発行後、FMPK#3からの完了応答を所定の時間以内に受信しなかった場合は、中間パリティリードコマンドをFMPK#0へ再発行し、このコマンドに応じて再計算された中間パリティを受信する。そして、システムコントローラ20は、パリティ更新ライトコマンドをFMPK#3へ再発行することにより、再計算された中間パリティをFMPK#3に書き込む。
Specifically, after issuing the parity update write command, the
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
According to this processing, the data transfer between the
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)中間パリティがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)中間パリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) The updated data is transferred from the
(2) The intermediate parity is transferred from the
(3) The intermediate parity is transferred from the
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。あるいは、システムコントローラ20がパリティ演算を行う場合、システムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
As a result, data transfer between the
(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)更新前のパリティがパリティFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(4)更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) Data before update is transferred from the
(2) The parity before update is transferred from the
(3) The updated data is transferred from the
(4) The updated parity is transferred from the
このようにシステムコントローラ20がパリティ演算を行う場合に比べると、第1リードモディファイライト処理のデータ転送は少ない。
As described above, data transfer in the first read-modify-write process is less than when the
また、データFMPKが更新前のデータと更新後のデータの両方をFM55に保持することにより、データFMPKのデバイスコントローラ60が中間パリティを演算するために使用するバッファ66を削減することができる。
Further, the data FMPK holds both the data before the update and the data after the update in the
更に、新データのライト後も旧データをパリティが更新されるまで保持することで、パリティ更新前に障害が起きた場合にも、データ復旧が可能となる。また、パリティ更新後は旧データを無効にして旧データを消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。 Furthermore, by holding the old data until the parity is updated even after writing the new data, data recovery is possible even if a failure occurs before the parity update. In addition, after the parity update, the old data is invalidated and the old data is targeted for erasure, so that the amount of storage area used by the old data can be reduced.
次に、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合の別のデータ更新処理1404の別の具体例である、第2リードモディファイライト処理について説明する。
Next, a second read-modify-write process, which is another specific example of another
図22は、第2リードモディファイライト処理の一例を示す。図23は、第2リードモディファイライト処理におけるシステムコントローラ20の一例の動作を示す。この例における初期状態は、第1リードモディファイライト処理の初期状態と同様である。まずシステムコントローラ20は、リードコマンドをD0に対応するFMPK#0(データFMPK)へ発行することにより、FMPK#0から旧データを取得する(2301)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内の旧データを読み出し、旧データを応答としてシステムコントローラ20へ送る。
FIG. 22 shows an example of the second read-modify-write process. FIG. 23 shows an example of the operation of the
次にシステムコントローラ20は、パリティ更新ライトコマンドをPに対応するFMPK#3(パリティFMPK)へ発行することにより、新データと旧データをFMPK#3へ転送する(2302)。このコマンドを受けたFMPK#3のデバイスコントローラ60は、システムコントローラ20からの新データとシステムコントローラ20からの旧データとFMPK#3内の旧パリティから新パリティを計算し、この新パリティを、FMPK#3へ書き込む。
Next, the
次にシステムコントローラ20は、ライトコマンドをFMPK#0に発行することにより、新データをFMPK#0に転送する(2303)。このコマンドを受けたFMPK#0のデバイスコントローラ60は新データをFMPK#0へ書き込む。
Next, the
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
According to this processing, the data transfer between the
(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送され、更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60に転送される。
(2)更新前のデータと更新後のデータとがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) Data before update is transferred from the
(2) Data before update and data after update are transferred from the
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
As a result, data transfer between the
2302において、システムコントローラ20は、1回のパリティ更新ライトコマンドで、新データと旧データをパリティFMPKへ転送する。この時の転送データ量は、第1リードモディファイライト処理が中間パリティをシステムコントローラ20からパリティFMPKへ転送する場合の転送データ量に比べて、2倍になる。しかし、転送回数が1回であるため、データ転送のオーバヘッドの増加を防ぐことができる。データ転送が、例えばSAS(Serial Attached Small Computer System Interface)−6GBのような高速インタフェースにより行われる場合、転送データ量が増加するデメリットより転送回数が減少するメリットの方が大きい。
In 2302, the
更に、新データのライト後も旧データをパリティが更新されるまで保持することで、パリティ更新前に障害が起きた場合にもデータ復旧が可能となる。また、パリティ更新後は旧データを無効にして、旧データを消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。 Furthermore, by retaining the old data until the parity is updated even after writing the new data, data recovery is possible even if a failure occurs before the parity update. Further, after the parity update, the old data is invalidated and the old data is targeted for erasure, so that the amount of storage area used by the old data can be reduced.
なお、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合、第1リードモディファイライト処理及び第2リードモディファイライト処理の何れが行われても良い。
Note that when the
次に、パリティ演算実施装置としてシステムコントローラ20が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第3リードモディファイライト処理について説明する。
Next, a third read modify write process, which is a specific example of the
図24は、第3リードモディファイライト処理の一例を示す。図25は、第3リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。この例における初期状態は、第1リードモディファイライト処理の初期状態と同様である。まずシステムコントローラ20は、D0を要求するリードコマンドをD0に対応するFMPK#0へ発行することによりFMPK#0から旧データを取得し、リードコマンドをPに対応するFMPK#3へ発行することによりFMPK#3から旧パリティを取得する(2501)。このリードコマンドを受けたFMPK#0は、FMPK#0内の旧データを読み出し、旧データを応答としてシステムコントローラ20へ送る。また、このリードコマンドを受けたFMPK#3のデバイスコントローラ60は、FMPK#3内の旧パリティを読
み出し、旧パリティを応答としてシステムコントローラ20へ送る。
FIG. 24 shows an example of the third read modify write process. FIG. 25 shows an example of the operation of the
次にシステムコントローラ20は、旧データと旧パリティと新データから新パリティを計算する(2502)。次にシステムコントローラ20は、ライトコマンドをFMPK#0へ発行することによりFMPK#0へ新データを転送し、ライトコマンドをPに対応するFMPK#3へ発行することによりFMPK#3へ新パリティを転送し(2503)、この処理のフローを終了する。このライトコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0へ新データを書き込む。また、このライトコマンドを受けたFMPK#3は、FMPK#3へ新パリティを書き込む。
Next, the
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
According to this processing, the data transfer between the
(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送され、更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60に転送される。
(2)更新前のパリティがパリティFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) Data before update is transferred from the
(2) The parity before update is transferred from the
(3) The updated parity is transferred from the
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
As a result, data transfer between the
次に、フルストライプライトの幾つかの具体例について説明する。 Next, some specific examples of the full stripe light will be described.
まず、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてフルストライプライトが選択された場合の別のデータ更新処理1404の具体例である、第1フルストライプライト処理について説明する。
First, the first full stripe write process, which is a specific example of another
図26は、第1フルストライプライト処理の一例を示す。図27は、第1フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。この例において、FMPK#0,#1,#2,#3は、D0,D1,D2,Pを夫々格納している。ここでシステムコントローラ20が、ライトの命令により、D0,D1,D2の旧データを更新するための新データを受けた状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3のうち、更新されるデータを格納しているFMPK#0,#1,#2をデータFMPKと呼ぶことがある。
FIG. 26 shows an example of the first full stripe write process. FIG. 27 shows an example of the operation of the
まずシステムコントローラ20は、D0,D1,D2に夫々対応するFMPK#0,#1,#2(データFMPK)へライトコマンドを発行することにより、受領データをD0,D1,D2の新データに分割し、D0,D1,D2の新データをFMPK#0,#1,#2へ夫々転送する(2701)。このライトコマンドを受けたFMPK#0,#1,#2のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0,#1,#2へ夫々書き込む。
First, the
次にシステムコントローラ20は、パリティの生成と書き込みを指示するパリティ生成ライトコマンドをPに対応するFMPK#3(パリティFMPK)へ発行することにより、D0,D1,D2の新データをFMPK#3へ転送し(2702)、この処理のフローを終了する。このライトコマンドを受けたFMPK#3のデバイスコントローラ60は、D0,D1,D2の新データから新パリティを計算し、新パリティをFMPK#3へ書き込む。
Next, the
この処理によれば、一つのストライプラインのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
According to this processing, data transfer between the
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)更新後のパリティデータがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) The updated data is transferred from the
(2) The updated parity data is transferred from the
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
As a result, data transfer between the
次に、パリティ演算実施装置としてシステムコントローラ20が選択され、ライト方法としてフルストライプライトが選択された場合の別のデータ更新処理1404の具体例である、第2フルストライプライト処理について説明する。
Next, a second full stripe write process, which is a specific example of another
図28は、第2フルストライプライト処理の一例を示す。図29は、第2フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。この例における初期状態は、第1フルストライプライト処理の初期状態と同様である。まずシステムコントローラ20は、D0,D1,D2の新データから新パリティを計算する(2901)。次にシステムコントローラ20は、D0,D1,D2に夫々対応するFMPK#0,#1,#2へライトコマンドを発行することにより、D0,D1,D2の新データをFMPK#0,#1,#2へ夫々転送し、Pに対応するFMPK#3へライトコマンドを発行することにより、計算された新パリティをFMPK#3へ転送し(2902)、この処理のフローを終了する。ライトコマンドを受けたFMPK#0,#1,#2のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0,#1,#2へ夫々書き込む。また、ライトコマンドを受けたFMPK#3のデバイスコントローラ60は、システムコントローラ20からの新パリティをFMPK#3へ書き込む。
FIG. 28 shows an example of the second full stripe write process. FIG. 29 shows an example of the operation of the
この処理によれば、一つのストライプラインのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
According to this processing, data transfer between the
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)、更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) The updated data is transferred from the
(2) The updated parity is transferred from the
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
As a result, data transfer between the
次に、パリティ演算実施装置の選択結果に応じたデータ復旧処理の幾つかの具体例について説明する。 Next, some specific examples of the data restoration process according to the selection result of the parity operation execution device will be described.
まず、パリティ演算実施装置としてデバイスコントローラ60が選択された場合のデータ復旧処理の具体例である、第1データ復旧処理について説明する。
First, the first data recovery process, which is a specific example of the data recovery process when the
図30は、第1データ復旧処理の一例を示す。図31は、第1データ復旧処理におけるシステムコントローラ20の動作の一例を示す。この例において、FMPK#0,#1,#2,#3は、D0,D1,D2,Pを夫々格納している。ここで、FMPK#1内のFM55に障害が発生し、このFM55が新たなFM55に交換された状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3のうち、復旧されるデータを格納しているFMPK#1を復旧中FMPKと呼ぶことがある。
FIG. 30 shows an example of the first data recovery process. FIG. 31 shows an example of the operation of the
まずシステムコントローラ20は、FMPK#0,#1,#2,#3が所属するRG内の生存しているFMPK#0,#2,#3へリードコマンドを発行することにより、FMPK#0,#2,#3に夫々格納されたD0,D2,Pを取得する(3101)。このリードコマンドを受けたFMPK#0,#2,#3のデバイスコントローラ60は、D0,D2,Pを夫々読み出し、読み出したD0,D2,Pをシステムコントローラ20へ転送する。ここで読み出されるデータであってもパリティであっても良い。
First, the
次にシステムコントローラ20は、復旧中のFMPK#1(復旧中FMPK)へパリティ生成を示すライトコマンドを発行することにより、読み出されたD0,D2,PをFMPK#1へ転送し(3102)、この処理のフローを終了する。このライトコマンドを受けたFMPK#1のデバイスコントローラ60は、D0,D2,PからD1を計算することによりD1の復旧データを生成し、D1の復旧データをFMPK#1へ書き込む。
Next, the
この処理によれば、一つのストライプブロックのデータの復旧におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
According to this processing, data transfer between the
(1)復旧中FMPK以外のFMPK50のデータが対応するデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)転送されたデータがシステムコントローラ20から復旧中FMPKのデバイスコントローラ60へ転送される。
(1) Data of the
(2) The transferred data is transferred from the
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
As a result, data transfer between the
次に、パリティ演算実施装置としてシステムコントローラ20が選択された場合のデータ復旧処理の具体例である、第2データ復旧処理について説明する。
Next, the second data recovery process, which is a specific example of the data recovery process when the
図32は、第2データ復旧処理の一例を示す。図33は、第2データ復旧処理におけるシステムコントローラ20の動作の一例を示す。この例における初期状態は、第1の具体例と同様である。まずシステムコントローラ20は、FMPK#0,#1,#2,#3が所属するRG内の生存しているFMPK#0,#2,#3へリードコマンドを発行することにより、FMPK#0,#2,#3からD0,D2,Pを読み出す(3301)。このリードコマンドを受けたFMPK#0,#2,#3のデバイスコントローラ60は、D0,D2,Pを夫々読み出し、読み出したD0,D2,Pをシステムコントローラ20へ転送する。ここで読み出されるデータであってもパリティであっても良い。
FIG. 32 shows an example of the second data recovery process. FIG. 33 shows an example of the operation of the
次にシステムコントローラ20は、D0,D2,PからD1を計算することにより、D1の復旧データを生成する(3302)。次にシステムコントローラ20は、ライトコマンドをFMPK#1へ発行することにより、復旧されたD1をFMPK#1へ書き込み(3303)、この処理のフローを終了する。このライトコマンドを受けたFMPK#1のデバイスコントローラ60は、受けたD1をFMPK#1へ書き込む。
Next, the
この処理によれば、一つのストライプブロックのデータの復旧におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
According to this processing, data transfer between the
(1)復旧中FMPK以外のFMPK50のデータが対応するデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)転送されたデータがシステムコントローラ20から復旧中FMPKのデバイスコントローラ60へ転送される。
(1) Data of the
(2) The transferred data is transferred from the
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
As a result, data transfer between the
次に、デバイスコントローラ60の動作について説明する。
Next, the operation of the
まず、通常のライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、通常ライト処理について説明する。
First, normal write processing, which is a specific example of processing performed by the
この通常ライト処理において、デバイスコントローラ60は、旧データを保持する必要がない。
In this normal write process, the
図34は、通常ライト処理の一例を示す。まずデバイスコントローラ60は、通常のライトコマンドを受領する(3401)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをライト先論理ページとする(3402)。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページをライト先物理ページとして割り当てる(3403)。次にデバイスコントローラ60は、ライトコマンドにより受領したライトデータをライト先物理ページへ書き込む(3404)。
FIG. 34 shows an example of normal write processing. First, the
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3405)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3406)、この処理のフローを終了する。
Next, the
3403において、デバイスコントローラ60は、未使用の物理ページを確保する、物理ブロックを消去してその物理ブロック内の物理ページを確保する、等の処理を行うことにより、空きの物理ページを取得しても良い。このとき、デバイスコントローラ60は、物理ブロックの消去のために、ページマッピング管理テーブル1100における他の論理ページと旧物理ページの関連付けを解除しても良い。
In 3403, the
次に、旧データ保持ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、旧データ保持ライトコマンド処理について説明する。
Next, an old data holding write command process, which is a specific example of processing of the
この旧データ保持ライト処理は例えば、前述の第1リードモディファイライト処理に用いられる。 This old data holding write process is used, for example, for the first read-modify-write process described above.
図35は、旧データ保持ライト処理の一例を示す。まずデバイスコントローラ60は、旧データ保持ライトコマンドを受領する(3501)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをライト先論理ページとする(3502)。次にデバイスコントローラ60は、ページマッピング管理テーブル1100を参照することにより、ライト先論理ページに物理ページが割り当てられているか否かを判定する(3503)。
FIG. 35 shows an example of the old data holding write process. First, the
ライト先論理ページに物理ページが割り当てられている場合(3503,Yes)、デバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページに関連付けられている物理ページ番号を旧物理ページ番号として登録する(3504)。
If a physical page is assigned to the write destination logical page (3503, Yes), the
ライト先論理ページに物理ページが割り当てられていない場合(3503、No)又は3504の後、デバイスコントローラ60は、新規に空きページを取得し、取得された物理ページをライト先物理ページとして割り当てる(3505)。次にデバイスコントローラ60は、ライトコマンドにより受領したライトデータをライト先物理ページへ書き込む(3506)。
When a physical page is not allocated to the write destination logical page (3503, No) or after 3504, the
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3507)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3508)、この処理のフローを終了する。
Next, the
この処理によれば、データFMPKは、データの更新時に更新前のデータを保持することができる。更に、データFMPKのデバイスコントローラ60は、更新された論理ページと、旧データを格納する旧物理ページと、新データを格納する物理ページとを関連付けることができる。これにより、データFMPKは、データ更新時、更新前のデータと更新後のデータの両方を不揮発メモリに保持することができる。また、データFMPKのデバイスコントローラ60は、揮発メモリを用いることなく、更新前のデータと更新後のデータの両方を読み出すことができる。更に、システムコントローラ20は、データFMPKのデバイスコントローラ60に更新前のデータと更新後のデータの両方を保持させることができる。
According to this process, the data FMPK can hold the data before update when the data is updated. Furthermore, the
次に、中間パリティリードコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、中間パリティリード処理について説明する。
Next, intermediate parity read processing, which is a specific example of processing performed by the
この中間パリティリード処理は、指定されたアドレスの旧データと新データのパリティ演算を行うことにより、中間パリティを生成して返す。この中間パリティリード処理は例えば、前述の第1リードモディファイライト処理に用いられる。 This intermediate parity read process generates and returns an intermediate parity by performing a parity operation on old data and new data at a specified address. This intermediate parity read process is used, for example, in the first read-modify-write process described above.
図36は、中間パリティリード処理の一例を示す。まずデバイスコントローラ60は、中間パリティリードコマンドを受領する(3601)。次にデバイスコントローラ60は、この中間パリティリードコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをリード先論理ページとする(3602)。次にデバイスコントローラ60は、ページマッピング管理テーブル1100を参照することにより、リード先論理ページに対応する旧物理ページが登録されているか否かを判定する(3603)。
FIG. 36 shows an example of intermediate parity read processing. First, the
リード先論理ページに対応する旧物理ページが登録されている場合(3603,Yes)、デバイスコントローラ60は、リード先論理ページに対応する旧物理ページのデータと現在の物理ページのデータとを読み出し、読み出されたデータから中間パリティを計算する(3604)。次にデバイスコントローラ60は、中間パリティをシステムコントローラ20へ転送し(3606)、この処理のフローを終了する。
When the old physical page corresponding to the read destination logical page is registered (3603, Yes), the
3603において、リード先論理ページに対応する旧物理ページが登録されていない場合(3603,No)、デバイスコントローラ60は、リード先論理ページの旧データがないことを示すコマンド結果をシステムコントローラ20へ報告し(3605)、この処理のフローを終了する。
In 3603, when the old physical page corresponding to the read destination logical page is not registered (3603, No), the
3605においてリード先論理ページの旧データがないことを示す結果を受けたシステムコントローラ20は例えば、新データと同一ストライプライン内の全てのデータを読み出し、読み出されたデータから新パリティを計算し、パリティに対応するデバイスコントローラ60へ新パリティを書き込むためのライトコマンドを発行しても良い。或いはこの場合、システムコントローラ20は例えば、新データと同一ストライプライン内の全てのデータを読み出し、パリティに対応するデバイスコントローラ60へ、読み出されたデータから新パリティを計算するためのパリティ生成ライトコマンドを発行しても良い。
Upon receiving the result indicating that there is no old data of the read destination logical page in 3605, for example, the
この処理によれば、データFMPKのデバイスコントローラ60は、システムコントローラ20から中間パリティの演算の指示を受けた場合、更新前のデータと更新後のデータとを読み出し、読み出されたデータから中間パリティを生成することができる。更に、システムコントローラ20は、データFMPKのデバイスコントローラ60に中間パリティを生成させ、デバイスコントローラ60から中間パリティを取得することができる。
According to this process, when the
仮に、データFMPKのデバイスコントローラ60がシステムコントローラ20の動作と非同期で中間パリティを生成したとする。この場合、中間パリティの演算がデバイスコントローラ60のバッファ66をに負担をかけることにより、このデバイスコントローラ60の性能が低下する。また、中間パリティ演算に必要なデータがバッファ66に格納されている状態で電源断が発生した場合、このデータが消失し、データ復旧が不可能になる可能性がある。一方、この実施例によれば、データFMPKのデバイスコントローラ60が中間パリティリードコマンドを受けたタイミングで中間パリティを生成することにより、ストレージシステム30の性能低下を防ぐことができる。また、中間パリティ演算に必要なデータの消失を防ぎ、ストレージシステム30の信頼性を向上させることができる。
Suppose that the
次に、パリティ更新ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、パリティ更新ライト処理について説明する。
Next, a parity update write process, which is a specific example of the process of the
このパリティ更新ライト処理は、転送された中間パリティと指定された旧パリティとのパリティ演算を行うことにより、新パリティを生成して、この新パリティをFM55へ書き込む。このパリティ更新ライトコマンドは例えば、前述の第1リードモディファイライト処理に用いられる。
In the parity update write processing, a new parity is generated by performing a parity operation between the transferred intermediate parity and the designated old parity, and the new parity is written to the
図37は、パリティ更新ライト処理の一例を示す。まずデバイスコントローラ60は、パリティ更新ライトコマンドを受領する(3701)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをリード先論理ページとする(3702)。次にデバイスコントローラ60は、ページマッピング管理テーブル1100を参照することにより、リード先論理ページに対応する物理ページ番号を求め、この物理ページ番号に示された物理ページからデータを読み出す(3703)。読み出されたデータは例えば、旧パリティである。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページを結果格納先物理ページとして割り当てる(3704)。次にデバイスコントローラ60は、読み出されたデータと受領したデータとを用いてパリティ演算を行い、演算結果を結果格納先物理ページへ書き込む(3705)。
FIG. 37 shows an example of parity update write processing. First, the
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページに結果格納先物理ページを関連付け、物理ページ番号として結果格納先物理ページの番号を登録する(3706)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3707)、この処理のフローを終了する。
Next, the
この処理によれば、パリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、パリティFMPKに格納されている更新前のパリティとから更新後のパリティを算出し、更新後のパリティをFM55へ送信することができる。更に、システムコントローラ20は、パリティFMPKのデバイスコントローラ60に更新後のパリティを生成させ保存させることができる。
According to this processing, the parity
次に、パリティ生成ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、パリティ生成ライト処理について説明する。
Next, a parity generation write process, which is a specific example of the process of the
このパリティ生成ライト処理は、複数ストライプブロック分の転送されたデータを用いてパリティを生成し、このパリティを指定アドレスへ書き込むコマンドである。このパリティ生成ライト処理は例えば、前述の第1フルストライプライト処理及びデータ復旧処理に用いられる。 This parity generation write processing is a command for generating parity using data transferred for a plurality of stripe blocks and writing the parity to a specified address. This parity generation write processing is used, for example, in the first full stripe write processing and data recovery processing described above.
図38は、パリティ生成ライトコマンドによるデバイスコントローラ60の処理の一例を示す。まずデバイスコントローラ60は、パリティ生成ライトコマンドを受領する(3801)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをライト先論理ページとする(3802)。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページをライト先物理ページとして割り当てる(3803)。次にデバイスコントローラ60は、ライトコマンドにより受領したライトデータをライト先物理ページへ書き込む(3804)。
FIG. 38 shows an example of processing of the
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3805)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3806)、この処理のフローを終了する。
Next, the
この処理によれば、パリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータから更新後のパリティを算出し、更新後のパリティをパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、パリティFMPKのデバイスコントローラ60に更新後のパリティを生成させ保存させることがでる。
According to this processing, the
図39は、デバイスコントローラ60による、旧データ破棄処理の一例を示す。まず、デバイスコントローラ60は、システムコントローラ20から旧データ破棄コマンドを受領する(3901)。次に、デバイスコントローラ60は、この旧データ破棄コマンドで指定された論理アドレスから論理ページ番号を求め、この論理ページ番号に対応する旧物理ページ番号をページマッピング管理テーブル1100から削除する(3902)。デバイスコントローラ60は、旧データ破棄コマンドを受領するまで、旧データを無効にしない。つまり、デバイスコントローラ60は、新データをライトした後であっても、パリティが更新される(旧データ破棄コマンドを受領する)まで旧データを確実に保持することができる。このように、パリティが更新されるまで旧データを維持することにより、パリティ更新前に障害が起きた場合であっても、データ復旧が可能となる。また、パリティ更新後は旧データを無効にして消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。
FIG. 39 shows an example of old data discard processing by the
この実施例では、システムコントローラ20がRAID6の制御を行う場合について説明する。
In this embodiment, a case where the
この実施例における計算機システムの構成は、実施例1の計算機システムの構成と同様である。そこで、実施例1との違いについて以下に説明する。 The configuration of the computer system in this embodiment is the same as the configuration of the computer system in the first embodiment. Therefore, differences from the first embodiment will be described below.
システムコントローラ20は、RAID6の制御を行う。そこで、まずRAID5とRAID6の違いについて説明する。
The
前述のRAID5をRAID6へ拡張するために、パリティ演算回路25又はパリティ演算回路65は、更に係数付きパリティ演算を行う。ここで、5個のFMPK50が、データD0,D1,D2、パリティP,Qを夫々格納しているとする。Qの生成のための係数としてA0,A1,A2が使用される場合、P,Qは次式により生成される。
In order to extend the above-described RAID5 to RAID6, the
P = D0+D1+D2
Q = A0・D0+A1・D1+A2・D2
P = D0 + D1 + D2
Q = A0 · D0 + A1 · D1 + A2 · D2
図40は、Qパリティの生成方法の一例を示す。パリティ演算実施装置は、A0,A1,A2を予めメモリに格納している。Qは、D0,D1,D2,A0,A1,A2から計算される。図中に黒の菱形で示された演算器は、それに付された係数を乗算する。 FIG. 40 shows an example of a Q parity generation method. The parity calculation execution apparatus stores A0, A1, and A2 in a memory in advance. Q is calculated from D0, D1, D2, A0, A1, and A2. An arithmetic unit indicated by a black diamond in the figure multiplies the coefficient attached thereto.
また、P生成式及びQ生成式を連立方程式として解くことにより、データロスト時に任意のデータ又はパリティを復旧することができる。例えばD0,Pを復旧する場合、次式によりこれらを生成することができる。 Further, by solving the P generation equation and the Q generation equation as simultaneous equations, it is possible to restore any data or parity at the time of data lost. For example, when D0 and P are restored, they can be generated by the following equation.
D0 = A1/A0・D1+A2/A0・D2+1/A0・Q
P = D0+D1+D2
D0 = A1 / A0 · D1 + A2 / A0 · D2 + 1 / A0 · Q
P = D0 + D1 + D2
また、例えばD0,D1を復旧する場合、次式によりこれらを生成することができる。 For example, when D0 and D1 are restored, these can be generated by the following equation.
D0 = (A1+A2)/(A0+A1)・D2+A1/(A0+A1)・P
+1/(A0+A1)・Q
D1 = (A0+A2)/(A0+A1)・D2+A0/(A0+A1)・P
+1/(A0+A1)・Q
D0 = (A1 + A2) / (A0 + A1) · D2 + A1 / (A0 + A1) · P
+ 1 / (A0 + A1) · Q
D1 = (A0 + A2) / (A0 + A1) · D2 + A0 / (A0 + A1) · P
+ 1 / (A0 + A1) · Q
図41は、D0,D1の復旧方法の一例を示す。上に示すように、D0,D1はそれぞれ、D2、P、Qの線形式αD2+βP+γQと表現することが出来る。
ここで係数α、β、γはA0、A1、A2に基づく値である。
パリティ演算実施装置は、A0,A1、A2に基づくα、β、γを予めメモリに格納していても良い。D0は、D2,P,Q,及びA0,A1、A2に基づく値である α、β、γから計算される。
本例はあくまでも概念を示すための一例であり、実際には、処理が高速化されるよう、またメモリ使用量が削減されるような設計がなされる。
FIG. 41 shows an example of a recovery method for D0 and D1. As shown above, D0 and D1 can be expressed as D2, P, and Q linear forms αD2 + βP + γQ, respectively.
Here, the coefficients α, β, and γ are values based on A0, A1, and A2.
The parity calculation execution device may store α, β, and γ based on A0, A1, and A2 in a memory in advance. D0 is calculated from α, β, and γ, which are values based on D2, P, Q, and A0, A1, and A2.
This example is merely an example to show the concept, and in actuality, the design is made so as to increase the processing speed and reduce the memory usage.
次に、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第4リードモディファイライト処理について説明する。
Next, a fourth read-modify-write process, which is a specific example of the
図42は、第4リードモディファイライト処理の一例を示す。図42は、第4リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。この例において、FMPK#0,#1,#2,#3,#4は、D0,D1,D2,P,Qを夫々格納している。ここでシステムコントローラ20が、ライトの命令により、D0の旧データを更新するための新データを受けた状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3,#4のうち、更新されるデータであるD0を格納しているFMPK#0をデータFMPKと呼ぶことがある。また、FMPK#0,#1,#2,#3,#4のうち、Pを格納しているFMPK#3をPパリティFMPKと呼ぶことがある。また、FMPK#0,#1,#2,#3,#4のうち、Qを格納しているFMPK#4をQパリティFMPKと呼ぶことがある。
FIG. 42 shows an example of the fourth read-modify-write process. FIG. 42 shows an example of the operation of the
まずシステムコントローラ20は、旧データ保持ライトコマンドをD0に対応するFMPK#0(データFMPK)へ発行することにより、新データをFMPK#0へ書き込む(4101)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0内の旧データの物理ページと異なる物理ページへ書き込む。
First, the
次にシステムコントローラ20は、中間パリティリードコマンドをFMPK#0へ発行することにより、FMPK#0から中間パリティを取得する(4102)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内に格納された旧データと新データから中間パリティを計算し、中間パリティを応答としてシステムコントローラ20へ送る。
Next, the
次にシステムコントローラ20は、RAID5の場合と同様のパリティ更新ライトコマンドを、Pに対応するFMPK#3(PパリティFMPK)へ発行することにより、中間パリティをFMPK#3へ送信する(4103)。このコマンドを受けたFMPK#3のデバイスコントローラ60は、FMPK#3内の旧パリティとシステムコントローラ20からの中間パリティから新パリティを計算し、新パリティをFMPK#3へ書き込む。
Next, the
iが0,1,2の何れか一つであって、当該RG内のデータDiをDi_newへ更新する場合の新パリティP_newの計算について説明する。RAID5と同様、パリティ更新ライトコマンドを受けたデバイスコントローラ60は、中間パリティ(Di+Di_new)と旧パリティPとから、P_newを次式により計算する。
The calculation of the new parity P_new when i is any one of 0, 1, and 2 and the data Di in the RG is updated to Di_new will be described. Similar to
P_new = P+(Di+Di_new) P_new = P + (Di + Di_new)
データFMPKのデバイスコントローラ60は、中間パリティリードコマンドに応じて(Di+Di_new)を計算する。PパリティFMPKのデバイスコントローラ60は、パリティ更新ライトコマンドに応じてP+(Di+Di_new)を計算する。
The
次にシステムコントローラ20は、Qを更新するためのパリティ更新コマンドであるQパリティ更新ライトコマンドをQに対応するFMPK#4へ発行することにより、中間パリティをFMPK#4(QパリティFMPK)へ転送し(4104)、この処理のフローを終了する。このコマンドを受けたFMPK#4のデバイスコントローラ60は、FMPK#4内の旧パリティとシステムコントローラ20からの中間パリティと係数から新パリティを計算し、新パリティをFMPK#3へ書き込む。
Next, the
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
According to this processing, the data transfer between the
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)中間パリティがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)中間パリティがシステムコントローラ20からPパリティFMPKのデバイスコントローラ60とQパリティFMPKのデバイスコントローラ60とへ転送される。
(1) The updated data is transferred from the
(2) The intermediate parity is transferred from the
(3) The intermediate parity is transferred from the
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
As a result, data transfer between the
Qパリティ更新ライトコマンドを受けたデバイスコントローラ60の処理は、パリティ更新ライトコマンドの場合と比較して、予めデバイスコントローラ60に設定された係数Aiを用いる点が異なる。当該RG内のデータDiをDi_newへ更新する場合、Qパリティ更新ライトコマンドを受けたデバイスコントローラ60は、中間パリティ(Di+Di_new)と旧パリティQとAiとから、新パリティQ_newを次式により計算する。
The process of the
Q_new = Q+Ai・(Di+Di_new) Q_new = Q + Ai · (Di + Di_new)
データFMPKのデバイスコントローラ60は、中間パリティリードコマンドに応じて(Di+Di_new)を計算する。QパリティFMPKのデバイスコントローラ60は、Qパリティ更新ライトコマンドに応じてQ+Ai・(Di+Di_new)を計算する。
The
パリティ更新ライトコマンドによれば、PパリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、PパリティFMPKに格納されている更新前のPパリティとから更新後のPパリティを算出し、更新後のPパリティをPパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、PパリティFMPKのデバイスコントローラ60に更新後のPパリティを生成させ保存させることができる。
According to the parity update write command, the
Qパリティ更新ライトコマンドによれば、QパリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、QパリティFMPKに格納されている更新前のQパリティと、所定の係数から更新後のQパリティを算出し、更新後のQパリティをQパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、QパリティFMPKのデバイスコントローラ60に更新後のQパリティを生成させ保存させることができる。
According to the Q parity update write command, the
この実施例では、システムコントローラ20がパリティ演算機能を有していない場合のストレージシステム30の適用例である、計算機システムについて説明する。
In this embodiment, a computer system, which is an application example of the
図44は、実施例3に係る計算機システムの構成の一例を示す。この実施例の計算機システムにおいて、ストレージシステム30の要素と同一の符号が付された要素は、ストレージシステム30の要素と同一物又は相当物を示す。この実施例の計算機システムは、ホスト計算機41aと、ホスト計算機41bと、ホスト計算機41bに接続された複数のFMPK50とを有する。ホスト計算機41aとホスト計算機41bとは、例えば、LAN(Local Area Network)2を介して接続される。
FIG. 44 illustrates an example of a configuration of a computer system according to the third embodiment. In the computer system of this embodiment, the elements denoted by the same reference numerals as the elements of the
ホスト計算機41aは、ホストコントローラ42aと、ホストコントローラ42aに接続されている複数のFMPK50とを有する。ホストコントローラ42aは、LAN2等の通信ネットワークに接続するためのNIC(Network Interface Card)13と、メモリ12と、CPU11と、バッファ26とを有する。
The
ホスト計算機41bは、LAN2等の通信ネットワークに接続するためのNIC13と、FMPK50に接続するためのHBA(Host Bus Adapter)15と、メモリ12と、CPU11と、バッファ26とを有する。
The
ホストコントローラ42a及びホスト計算機41bにおいて、メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。ホストコントローラ42aとホスト計算機41bの夫々は、自身に接続されている複数のFMPK50を用いるRAIDの制御を行っても良い。
In the
ホストコントローラ42a及びホスト計算機41bの一方は、LAN2を介して他方へIO要求を行っても良いし、自身のFMPK50へIO要求を行っても良い。
One of the
この実施例において、システムコントローラ20は、ホストコントローラ42aとホスト計算機41bの何れの形態であっても良い。
In this embodiment, the
ホストコントローラ42a及びホスト計算機41bの夫々は、パリティ演算実施装置の決定方法1300におけるケース#3又はケース#4に該当する。
Each of the
次に、システムコントローラ20がパリティ演算機能を有している場合のストレージシステム30の適用例である、第3計算機システムについて説明する。
Next, a third computer system, which is an application example of the
図45は、実施例4に係る計算機システムの構成の一例を示す。この実施例の計算機システムにおいて、実施例3の計算機システムの要素と同一の符号が付された要素は、実施例3の計算機システムの要素と同一物又は相当物を示す。この実施例の計算機システムは、ホスト計算機41cと、ホスト計算機41dと、ホスト計算機41dに接続された複数のFMPK50とを有する。ホスト計算機41cとホスト計算機41dとは、通信ネットワーク、例えば、LAN2を介して接続される。
FIG. 45 illustrates an example of a configuration of a computer system according to the fourth embodiment. In the computer system of this embodiment, the elements denoted by the same reference numerals as those of the computer system of the third embodiment are the same as or equivalent to the elements of the computer system of the third embodiment. The computer system of this embodiment includes a
ホスト計算機41cは、ホストコントローラ42cと、ホストコントローラ42cに接続されている複数のFMPK50とを有する。ホストコントローラ42cは、ホストコントローラ42aの要素に加えて、パリティ演算回路25を有する。
The
ホスト計算機41dは、ホスト計算機41bの要素に加えて、パリティ演算回路25を有する。
The
ホストコントローラ42c及びホスト計算機41dにおいて、メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。ホストコントローラ42cとホスト計算機41dの夫々は、自身に接続されている複数のFMPK50を用いるRAIDの制御を行っても良い。
In the
ホストコントローラ42c及びホスト計算機41dの一方は、LAN2を介して他方へIO要求を行っても良いし、自身のFMPK50のデバイスコントローラ60へIO要求を行っても良い。
One of the
ホストコントローラ42a及びホスト計算機41bの夫々は、パリティ演算実施装置の決定方法1300におけるケース#1又はケース#2に該当する。
Each of the
この実施例において、システムコントローラ20は、ホストコントローラ42cとホスト計算機41dの何れの形態であっても良い。
In this embodiment, the
なお、計算機システムは、前述の実施例の何れかの要素の組み合わせであっても良い。また、一つの計算機システム内に、パリティ演算機能を有しているシステムコントローラ20とパリティ演算機能を有していないシステムコントローラ20とが混在していても良い。
Note that the computer system may be a combination of any of the above-described embodiments. Further, a
以上に述べられた各実施例によれば、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。これにより、ストレージシステム30の速度を向上させることができる。データ転送は例えば、データの転送回数や転送量等で表される。
According to each embodiment described above, data transfer between the
また、以上に述べられた各実施例によれば、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えると共に、デバイスコントローラ60における揮発メモリの使用量を削減することができる。
Further, according to each embodiment described above, data transfer between the
また、システムコントローラ20の動作における各工程の順序は、交換されることがある。例えば、1402と1403は交換可能である。また、デバイスコントローラ60の動作における各工程の順序は、交換されることがある。例えば、3703と3704は交換可能である。
In addition, the order of each process in the operation of the
10:ホスト計算機、20:システムコントローラ、25:パリティ演算回路、26:バッファ、30:ストレージシステム、41a,41b,41c,41d:ホスト計算機42a,42c:ホストコントローラ、50:FMPK(フラッシュメモリパッケージ)、55:FM(フラッシュメモリ)、60:デバイスコントローラ、65:パリティ演算回路、66:バッファ
10: Host computer, 20: System controller, 25: Parity operation circuit, 26: Buffer, 30: Storage system, 41a, 41b, 41c, 41d:
Claims (11)
前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスを制御するよう構成されるプロセッサと、
を有し、
前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データを有効な状態に維持したまま、前記旧データと前記旧データを更新する新データとに基づき、第1の中間パリティを生成し、
前記プロセッサは、前記第2の記憶デバイスに、第1の新パリティの生成を指示するためのパリティ更新コマンド及び前記第1の中間パリティを送信し、
前記第2の記憶デバイスの第2のデバイスコントローラは前記パリティ更新コマンドに従って、前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティとに基づき、前記第1の新パリティを生成し、前記生成した第1の新パリティを前記第2の記憶デバイスに格納し、
前記プロセッサは、前記第1の記憶デバイスに前記旧データを無効化するための無効化コマンドを送信し、
前記第1のデバイスコントローラは前記無効化コマンドの受領に応じて、前記旧データを無効化する、
ことを特徴とする、情報処理システム。 A plurality of storage devices each including a plurality of nonvolatile memory chips that are write-once memories and a device controller connected to the plurality of nonvolatile memory chips;
A processor connected to the plurality of storage devices and configured to control the plurality of storage devices including a first storage device storing old data and a second storage device storing old parity;
Have
The first device controller of the first storage device maintains the old data stored in a physical storage area of the plurality of nonvolatile memory chips of the first storage device in a valid state while maintaining the old data And a first intermediate parity based on the old data and the new data for updating the old data,
The processor sends a parity update command for instructing the second storage device to generate a first new parity and the first intermediate parity;
The second device controller of the second storage device, based on the first intermediate parity and the old parity stored in the second storage device, in accordance with the parity update command, And storing the generated first new parity in the second storage device,
The processor sends an invalidation command to invalidate the old data to the first storage device;
The first device controller invalidates the old data upon receipt of the invalidation command.
An information processing system characterized by that.
前記第1のデバイスコントローラは、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、前記プロセッサから前記新データを受信した際、前記旧データを有効な状態に維持するために、前記第1の物理ページの前記第1の論理ページへの関連付けを維持したままにする、
ことを特徴とする、請求項1に記載の情報処理システム。 The physical storage area is a physical page of the nonvolatile memory chip, and the first device controller manages the physical page in association with a logical page,
The first device controller associates a first physical page storing the old data with a first logical page, and maintains the old data in a valid state when the new data is received from the processor. To maintain the association of the first physical page to the first logical page,
The information processing system according to claim 1, wherein:
前記第1のデバイスコントローラは、
前記プロセッサから前記新データを受信した際、前記旧データを有効な状態に維持するために、前記ページマッピング管理テーブル上で前記第1の物理ページの前記第1の論理ページへの関連付けを維持したままにし、
前記旧データを無効化するために、前記ページマッピング管理テーブルから、前記第1の物理ページの情報を削除する、
ことを特徴とする、請求項2に記載の情報処理システム。 The first device controller has a page mapping management table that associates the physical page with the logical page, and associates the first physical page with the first logical page on the page mapping management table. ,
The first device controller is
When the new data is received from the processor, the association of the first physical page with the first logical page is maintained on the page mapping management table in order to maintain the old data in a valid state. Leave
Deleting the information of the first physical page from the page mapping management table in order to invalidate the old data;
The information processing system according to claim 2, wherein:
前記ページマッピング管理テーブルから前記第1の物理ページの情報を削除した後に、前記旧データを削除する、
ことを特徴とする、請求項3記載の情報処理システム。 The first device controller is
Deleting the old data after deleting the information of the first physical page from the page mapping management table;
The information processing system according to claim 3, wherein:
ことを特徴とする、請求項1に記載の情報処理システム。 The processor transmits the invalidation command to the first storage device after receiving the first intermediate parity from the first device controller.
The information processing system according to claim 1, wherein:
前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスを制御するよう構成されるプロセッサと、
を有し、
前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データを有効な状態に維持したまま、前記旧データと前記旧データを更新する新データとに基づき、第1の中間パリティを生成し、
前記第2の記憶デバイスの第2のデバイスコントローラは、
前記第1のデバイスコントローラで生成された前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティに基づき、第1の新パリティを生成し、前記生成した第1の新パリティを前記第2の記憶デバイスに格納する、
ことを特徴とする、情報処理システム。 A plurality of storage devices each including a plurality of nonvolatile memory chips that are write-once memories and a device controller connected to the plurality of nonvolatile memory chips;
A processor connected to the plurality of storage devices and configured to control the plurality of storage devices including a first storage device storing old data and a second storage device storing old parity;
Have
The first device controller of the first storage device maintains the old data stored in a physical storage area of the plurality of nonvolatile memory chips of the first storage device in a valid state while maintaining the old data And a first intermediate parity based on the old data and the new data for updating the old data,
The second device controller of the second storage device is
Based on the first intermediate parity generated by the first device controller and the old parity stored in the second storage device, a first new parity is generated, and the generated first new parity is generated. Storing the parity in the second storage device;
An information processing system characterized by that.
前記第1のデバイスコントローラは、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、前記プロセッサから前記新データを受信した際、前記旧データを有効な状態に維持するために、前記第1の物理ページの前記第1の論理ページへの関連付けを維持したままにする、
ことを特徴とする、請求項6に記載の情報処理システム。 The physical storage area is a physical page of the nonvolatile memory chip, and the first device controller manages the physical page in association with a logical page,
The first device controller associates a first physical page storing the old data with a first logical page, and maintains the old data in a valid state when the new data is received from the processor. To maintain the association of the first physical page to the first logical page,
The information processing system according to claim 6 , wherein:
前記第1の記憶デバイスは、前記無効化コマンドの受領に応じて前記旧データを無効化する、
ことを特徴とする、請求項6に記載の情報処理システム。 The processor transmits an invalidation command for invalidating the old data to the first storage device after receiving the first intermediate parity from the first device controller;
The first storage device invalidates the old data in response to receipt of the invalidation command;
The information processing system according to claim 6 , wherein:
前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスを制御するよう構成されるプロセッサと、
を有し、
前記プロセッサまたは前記複数の記憶デバイスは、パリティを生成するパリティ演算部を有し、
前記第1の記憶デバイス及び前記第2の記憶デバイスがパリティ演算部を有する場合、
前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データを有効な状態に維持したまま、前記旧データと前記旧データを更新する新データとに基づき、第1の中間パリティを生成し、
前記プロセッサは、前記第2の記憶デバイスに、第1の新パリティの生成を指示するためのパリティ更新コマンド及び前記第1の中間パリティを送信し、
前記第2の記憶デバイスの第2のデバイスコントローラは前記パリティ更新コマンドに従って、前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティとに基づき、前記第1の新パリティを生成し、前記生成した第1の新パリティを前記第2の記憶デバイスに格納し、
前記プロセッサは、前記第1の記憶デバイスに前記旧データを無効化するための無効化コマンドを送信し、
前記第1のデバイスコントローラは前記無効化コマンドの受領に応じて、前記旧データを無効化し、
前記第1のデバイスコントローラ及び前記第2のデバイスコントローラが前記パリティ演算部を有さず、前記プロセッサが前記パリティ演算部を有する場合、
前記プロセッサが第3の新パリティを生成する、
ことを特徴とする、情報処理システム。 A plurality of storage devices each including a plurality of nonvolatile memory chips that are write-once memories and a device controller connected to the plurality of nonvolatile memory chips;
A processor connected to the plurality of storage devices and configured to control the plurality of storage devices including a first storage device storing old data and a second storage device storing old parity;
Have
The processor or the plurality of storage devices include a parity calculation unit that generates parity;
When the first storage device and the second storage device have a parity calculation unit,
The first device controller of the first storage device maintains the old data stored in a physical storage area of the plurality of nonvolatile memory chips of the first storage device in a valid state while maintaining the old data And a first intermediate parity based on the old data and the new data for updating the old data,
The processor sends a parity update command for instructing the second storage device to generate a first new parity and the first intermediate parity;
The second device controller of the second storage device, based on the first intermediate parity and the old parity stored in the second storage device, in accordance with the parity update command, And storing the generated first new parity in the second storage device,
The processor sends an invalidation command to invalidate the old data to the first storage device;
In response to receiving the invalidation command, the first device controller invalidates the old data,
When the first device controller and the second device controller do not have the parity operation unit, and the processor has the parity operation unit,
The processor generates a third new parity;
An information processing system characterized by that.
前記第1のデバイスコントローラは、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、前記プロセッサから前記新データを受信した際、前記旧データを有効な状態に維持するために、前記第1の物理ページの前記第1の論理ページへの関連付けを維持したままにする、
ことを特徴とする、請求項9に記載の情報処理システム。 The physical storage area is a physical page of the nonvolatile memory chip, and the first device controller manages the physical page in association with a logical page,
The first device controller associates a first physical page storing the old data with a first logical page, and maintains the old data in a valid state when the new data is received from the processor. To maintain the association of the first physical page to the first logical page,
The information processing system according to claim 9 .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016095199A JP6163588B2 (en) | 2016-05-11 | 2016-05-11 | Storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016095199A JP6163588B2 (en) | 2016-05-11 | 2016-05-11 | Storage system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014550959A Division JP5937697B2 (en) | 2012-04-27 | 2012-04-27 | Storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016194928A JP2016194928A (en) | 2016-11-17 |
JP6163588B2 true JP6163588B2 (en) | 2017-07-12 |
Family
ID=57322910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016095199A Expired - Fee Related JP6163588B2 (en) | 2016-05-11 | 2016-05-11 | Storage system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6163588B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110383251B (en) | 2017-03-28 | 2023-04-07 | 株式会社日立制作所 | Storage system, computer-readable recording medium, and method for controlling system |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07261946A (en) * | 1994-03-22 | 1995-10-13 | Hitachi Ltd | Array type storage device |
US6839826B2 (en) * | 2002-02-06 | 2005-01-04 | Sandisk Corporation | Memory device with pointer structure to map logical to physical addresses |
JP5137413B2 (en) * | 2006-11-28 | 2013-02-06 | 株式会社日立製作所 | Semiconductor memory device |
JP5245472B2 (en) * | 2008-03-13 | 2013-07-24 | 富士通株式会社 | Control method, disk array device |
JP5242264B2 (en) * | 2008-07-07 | 2013-07-24 | 株式会社東芝 | Data control apparatus, storage system, and program |
-
2016
- 2016-05-11 JP JP2016095199A patent/JP6163588B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2016194928A (en) | 2016-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5937697B2 (en) | Storage system | |
US9483404B2 (en) | Write admittance policy for a memory cache | |
US10133663B2 (en) | Systems and methods for persistent address space management | |
US9262265B2 (en) | Storage system and storage control apparatus | |
US9251052B2 (en) | Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer | |
US8578127B2 (en) | Apparatus, system, and method for allocating storage | |
JP6328335B2 (en) | Storage apparatus and control method thereof | |
JP6007332B2 (en) | Storage system and data write method | |
US20150212752A1 (en) | Storage system redundant array of solid state disk array | |
US20150378613A1 (en) | Storage device | |
US20130346689A1 (en) | Storage system and management method of control information therein | |
JP6062060B2 (en) | Storage device, storage system, and storage device control method | |
WO2015114744A1 (en) | Storage device | |
US9606734B2 (en) | Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays | |
US20180275894A1 (en) | Storage system | |
JP6817340B2 (en) | calculator | |
CN112346658B (en) | Improving data heat trace resolution in a storage device having a cache architecture | |
JP6163588B2 (en) | Storage system | |
US8935488B2 (en) | Storage system and storage control method | |
JP6605762B2 (en) | Device for restoring data lost due to storage drive failure | |
US11221790B2 (en) | Storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170310 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170328 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170510 |
|
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: 20170606 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170619 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6163588 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |