JP2016194928A - Storage system - Google Patents

Storage system Download PDF

Info

Publication number
JP2016194928A
JP2016194928A JP2016095199A JP2016095199A JP2016194928A JP 2016194928 A JP2016194928 A JP 2016194928A JP 2016095199 A JP2016095199 A JP 2016095199A JP 2016095199 A JP2016095199 A JP 2016095199A JP 2016194928 A JP2016194928 A JP 2016194928A
Authority
JP
Japan
Prior art keywords
parity
data
controller
page
old
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.)
Granted
Application number
JP2016095199A
Other languages
Japanese (ja)
Other versions
JP6163588B2 (en
Inventor
上原 剛
Takeshi Uehara
剛 上原
繁雄 本間
Shigeo Honma
繁雄 本間
誉史行 登川
Yoshiyuki Noborikawa
誉史行 登川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2016095199A priority Critical patent/JP6163588B2/en
Publication of JP2016194928A publication Critical patent/JP2016194928A/en
Application granted granted Critical
Publication of JP6163588B2 publication Critical patent/JP6163588B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Detection And Correction Of Errors (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a technique for calculating a redundant code.SOLUTION: A storage system 30 includes: a first controller 20; and multiple storage devices 50 constituting RAID. Each one of the storage devices includes non-volatile memory chips 55 and a controller 60. When the controller 20 receives a request to update first data to second data, the controller 60 of the first storage device stores the second data in an area different from the area where the first data is stored, and generates an intermediate parity from the first and second data. The controller 60 of the second storage device storing a first parity corresponding to the first data receives the intermediate parity, generates a second parity from the intermediate parity and the first parity, and stores the second parity in the second storage device. The controller 60 of the first storage device defines the area where the first data is stored as a deletion target area after the storage of the second parity.SELECTED DRAWING: Figure 1

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 5, a storage system controller, which is a host device of a storage device, generates parity from a plurality of data blocks.

前述のようなパリティ生成に伴うストレージシステムのコントローラの処理を軽減するため、下位装置にあたる各記憶装置が、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 Patent Document 1, when there is a data update request for pre-update data (old data), the HDD controller generates an intermediate value for generating parity from the update data (new data) and pre-update data (old data). After generating (intermediate parity), the old data is updated with the new data. The HDD controller transfers the generated intermediate parity to the HDD in which the old parity corresponding to the old data is stored. In the HDD that has received the intermediate parity, the HDD controller generates a new parity from the intermediate parity and the old parity, and updates the old parity with the generated new parity.

近年のフラッシュメモリの低価格化に伴い、記憶装置として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.

US5,191,584US 5,191,584

特許文献1では、中間パリティを生成した後に新データで旧データを上書きするため、中間パリティを生成した後は、旧データが存在しなくなる。そのため、パリティの更新前(例えば、中間パリティを、旧パリティを格納しているHDDに対して転送する前)に障害が発生し、中間パリティが消失した場合、旧データが存在しないため、中間パリティを再度、生成することができない。   In Patent Document 1, since the old data is overwritten with the new data after the intermediate parity is generated, the old data does not exist after the generation of the intermediate parity. Therefore, if a failure occurs before the parity is updated (for example, before the intermediate parity is transferred to the HDD storing the old parity) and the intermediate parity is lost, the old data does not exist. Cannot be generated again.

一方、記憶装置を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 Cited Document 1, in which case intermediate parity cannot be generated.

本発明の一態様であるストレージシステムは、第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.

図1は、ストレージシステムの構成の一例を示す。FIG. 1 shows an example of the configuration of a storage system. 図2は、システムコントローラ20の構成の一例を示す。FIG. 2 shows an example of the configuration of the system controller 20. 図3は、実施例1に係る計算機システムの構成の一例を示す。FIG. 3 illustrates an example of a configuration of the computer system according to the first embodiment. 図4は、RG及びLUの構成の一例を示す。FIG. 4 shows an example of the configuration of the RG and LU. 図5は、RG管理テーブル600の一例を示す。FIG. 5 shows an example of the RG management table 600. 図6は、LU管理テーブル700の一例を示す。FIG. 6 shows an example of the LU management table 700. 図7は、FMPK管理テーブル800の一例を示す。FIG. 7 shows an example of the FMPK management table 800. 図8は、RG上のアドレス空間の一例を示す。FIG. 8 shows an example of an address space on the RG. 図9は、RGに所属するFMPK50上のアドレス空間の一例を示す。FIG. 9 shows an example of an address space on the FMPK 50 belonging to the RG. 図10は、FMPK50におけるページマッピングの一例を示す。FIG. 10 shows an example of page mapping in the FMPK50. 図11は、ページマッピング管理テーブル1100の一例を示す。FIG. 11 shows an example of the page mapping management table 1100. 図12は、パリティ演算機能登録処理の一例を示す。FIG. 12 shows an example of the parity operation function registration process. 図13は、パリティ演算実施装置の決定方法1300の一例を示す。FIG. 13 shows an example of a method 1300 for determining the parity operation execution apparatus. 図14は、システムコントローラ20のライト処理の一例を示す。FIG. 14 shows an example of the write process of the system controller 20. 図15は、第1パリティ演算選択処理の一例を示す。FIG. 15 shows an example of the first parity calculation selection process. 図16は、第2パリティ演算選択処理の一例を示す。FIG. 16 shows an example of the second parity calculation selection process. 図17は、第3パリティ演算選択処理の一例を示す。FIG. 17 shows an example of the third parity calculation selection process. 図18は、第4パリティ演算選択処理の一例を示す。FIG. 18 shows an example of the fourth parity calculation selection process. 図19は、ライト方法選択処理1403の一例を示す。FIG. 19 shows an example of the write method selection processing 1403. 図20は、第1リードモディファイライト処理の一例を示す。FIG. 20 shows an example of the first read-modify-write process. 図21は、第1リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。FIG. 21 shows an example of the operation of the system controller 20 in the first read-modify-write process. 図22は、第2リードモディファイライト処理の一例を示す。FIG. 22 shows an example of the second read-modify-write process. 図23は、第2リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。FIG. 23 shows an example of the operation of the system controller 20 in the second read-modify-write process. 図24は、第3リードモディファイライト処理の一例を示す。FIG. 24 shows an example of the third read modify write process. 図25は、第3リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。FIG. 25 shows an example of the operation of the system controller 20 in the third read-modify-write process. 図26は、第1フルストライプライト処理の一例を示す。FIG. 26 shows an example of the first full stripe write process. 図27は、第1フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。FIG. 27 shows an example of the operation of the system controller 20 in the first full stripe write process. 図28は、第2フルストライプライト処理の一例を示す。FIG. 28 shows an example of the second full stripe write process. 図29は、第2フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。FIG. 29 shows an example of the operation of the system controller 20 in the second full stripe write process. 図30は、第1データ復旧処理の一例を示す。FIG. 30 shows an example of the first data recovery process. 図31は、第1データ復旧処理におけるシステムコントローラ20の動作の一例を示す。FIG. 31 shows an example of the operation of the system controller 20 in the first data recovery process. 図32は、第2データ復旧処理の一例を示す。FIG. 32 shows an example of the second data recovery process. 図33は、第2データ復旧処理におけるシステムコントローラ20の動作の一例を示す。FIG. 33 shows an example of the operation of the system controller 20 in the second data recovery process. 図34は、通常のライトコマンドによるデバイスコントローラ60の処理の一例を示す。FIG. 34 shows an example of processing of the device controller 60 by a normal write command. 図35は、旧データ保持ライトコマンドによるデバイスコントローラ60の処理の一例を示す。FIG. 35 shows an example of processing of the device controller 60 by the old data holding write command. 図36は、中間パリティリードコマンドによるデバイスコントローラ60の処理の一例を示す。FIG. 36 shows an example of processing of the device controller 60 by the intermediate parity read command. 図37は、パリティ更新ライトコマンドによるデバイスコントローラ60の処理の一例を示す。FIG. 37 shows an example of processing of the device controller 60 by the parity update write command. 図38は、パリティ生成ライトコマンドによるデバイスコントローラ60の処理の一例を示す。FIG. 38 shows an example of processing of the device controller 60 by the parity generation write command. 図39は、デバイスコントローラ60による、旧データ破棄処理の一例を示す。FIG. 39 shows an example of old data discard processing by the device controller 60. 図40は、Qパリティの生成方法の一例を示す。FIG. 40 shows an example of a Q parity generation method. 図41は、D0,D1の復旧方法の一例を示す。FIG. 41 shows an example of a recovery method for D0 and D1. 図42は、第4リードモディファイライト処理の一例を示す。FIG. 42 shows an example of the fourth read-modify-write process. 図43は、第4リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。FIG. 43 shows an example of the operation of the system controller 20 in the fourth read-modify-write process. 図44は、実施例3に係る計算機システムの構成の一例を示す。FIG. 44 illustrates an example of a configuration of a computer system according to the third embodiment. 図45は、実施例4に係る計算機システムの構成の一例を示す。FIG. 45 illustrates an example of a configuration of a computer system according to the fourth embodiment.

幾つかの実施例を説明する。なお、本発明の技術的範囲は各実施例に限定されない。   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 storage system 30. The storage system 30 includes a plurality of storage devices 50 that store data, and a system controller 20 that is connected to the plurality of storage devices. The storage device is, for example, an FMPK (Flash Memory Package) 50.

FMPK50は、データを格納する不揮発メモリと、不揮発メモリ及びシステムコントローラ20に接続されているデバイスコントローラ60とを有する。不揮発メモリは例えば、NAND型のFM(Flash Memory)55である。不揮発メモリはフラッシュメモリに限定されず、追記型のメモリ(例えば、相変化メモリ)でも良い。デバイスコントローラ60は、通信インタフェースデバイス、記憶デバイス及びそれらに接続された制御デバイスを有する。通信インタフェースデバイスは例えば、システムインタフェース53とFMインタフェース54である。以下の説明において、インタフェースをI/Fと示すことがある。システムI/F53は、システムコントローラ20に接続される。FM I/F54は、FM55に接続される。   The FMPK 50 includes a nonvolatile memory that stores data, and a device controller 60 that is connected to the nonvolatile memory and the system controller 20. The nonvolatile memory is, for example, a NAND type FM (Flash Memory) 55. The nonvolatile memory is not limited to the flash memory, and may be a write-once memory (for example, a phase change memory). The device controller 60 includes a communication interface device, a storage device, and a control device connected to them. The communication interface devices are, for example, the system interface 53 and the FM interface 54. In the following description, the interface may be indicated as I / F. The system I / F 53 is connected to the system controller 20. The FM I / F 54 is connected to the FM 55.

記憶デバイスは例えば、メモリ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 memory 52 and the buffer 66. The control device is, for example, the CPU 51. The control device may include a dedicated hardware circuit that performs predetermined processing (for example, compression, expansion, encryption, or decryption) in addition to a processor such as the CPU 51. The dedicated hardware circuit is, for example, a parity calculation circuit 65 that calculates parity or intermediate parity. The memory 52 stores a program for controlling the FM 55 and various information. The CPU 51 implements various functions by executing programs stored in the memory 52. The buffer 66 is, for example, a volatile memory such as a DRAM (Dynamic Random Access Memory). The buffer 66 temporarily stores data to be written to the FM 55, data read from the FM 55, data being subjected to parity calculation, and the like.

FMPK50は、複数のFM55を有していても良い。複数のFM55は、異種の記憶媒体を含んでも良いし、同種の記憶媒体であっても良い。例えば、FM55は、複数の物理ブロックで構成されている。各物理ブロックは複数の物理ページで構成されている。FM55内の各セルは、SLC(Single Level Cell)であってもMLC(Multiple LevelCell)であっても良い。また、不揮発メモリは、他の不揮発メモリであっても良いし、相変化メモリ等の記録可能なメモリであっても良い。   The FMPK50 may have a plurality of FM55. The plurality of FMs 55 may include different types of storage media or the same type of storage media. For example, the FM 55 is composed of a plurality of physical blocks. Each physical block is composed of a plurality of physical pages. Each cell in the FM 55 may be an SLC (Single Level Cell) or an MLC (Multiple Level Cell). The nonvolatile memory may be another nonvolatile memory or a recordable memory such as a phase change memory.

図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 system controller 20. The system controller 20 includes a communication interface device, a storage device, and a control device connected to them. The communication interface device is, for example, a communication I / F 18 for connecting to a communication network and a disk I / F 19 for connecting to the FMPK 50. The storage device is, for example, the memory 12 and the buffer 26. The control device is, for example, the CPU 11. The control device may include a dedicated hardware circuit that performs predetermined processing (for example, compression, expansion, encryption, or decryption) in addition to a processor such as the CPU 11. The dedicated hardware circuit is, for example, a parity operation circuit 25 that calculates either parity or intermediate parity. The memory 12 stores a program for controlling the FMPK 50 and various information. The CPU 11 realizes various functions by executing programs based on information stored in the memory 12. The buffer 26 is a volatile memory such as a DRAM. The buffer 26 temporarily stores data to be written to the FMPK 50, data read from the FMPK 50, data being subjected to parity calculation, and the like. When all the FMPKs 50 connected to the system controller 20 have the parity calculation circuit 65, the system controller 20 may not have the parity calculation circuit 25.

システムコントローラ20に相当する従来のシステムコントローラが提供していた機能として、パリティ演算、スナップショット、データ圧縮、重複排除などがあるが、これらの機能をFMPK50等の記憶媒体が実現できる。この実施例では、パリティ演算機能を説明する。   Functions provided by a conventional system controller corresponding to the system controller 20 include parity calculation, snapshot, data compression, deduplication, and the like. A storage medium such as the FMPK 50 can realize these functions. In this embodiment, a parity calculation function will be described.

システムコントローラ20とデバイスコントローラ60が階層を形成していることから、システムコントローラ20を上位コントローラ、デバイスコントローラ60を下位コントローラ、と定義することもできる。   Since the system controller 20 and the device controller 60 form a hierarchy, the system controller 20 can be defined as an upper controller and the device controller 60 as a lower controller.

次に、システムコントローラ20がRAID(Redundant Array of Independent Disks)機能をサポートしているコントローラである場合のストレージシステム30の適用例である、計算機システムについて説明する。   Next, a computer system, which is an application example of the storage system 30 when the system controller 20 is a controller that supports a RAID (Redundant Array of Independent Disks) function, will be described.

図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 host computer 10 and a storage system 30. The host computer 10 and the storage system 30 are connected via a communication network such as a SAN (Storage Area Network) 1. Note that the computer system may include a plurality of host computers 10. In this case, the storage system 30 is connected to a plurality of host computers 10 via the SAN 1.

ストレージシステム30は、複数のFMPK50と、これらのFMPK50を制御するシステムコントローラ20とを有する。ストレージ装置は例えば、FMPK50である。この例においてシステムコントローラ20は例えば、RAIDコントローラである。また、この例において、ストレージシステム30は、複数のシステムコントローラ20を有する。各システムコントローラ20は、SAN1を介してホスト計算機10に接続されている。複数のFMPK50の夫々は、複数のシステムコントローラ20に接続されている。なお、ストレージシステム30は、一つのシステムコントローラ20だけを有していても良い。   The storage system 30 includes a plurality of FMPKs 50 and a system controller 20 that controls these FMPKs 50. The storage device is, for example, FMPK50. In this example, the system controller 20 is, for example, a RAID controller. In this example, the storage system 30 includes a plurality of system controllers 20. Each system controller 20 is connected to the host computer 10 via the SAN 1. Each of the plurality of FMPKs 50 is connected to a plurality of system controllers 20. Note that the storage system 30 may have only one system controller 20.

システムコントローラ20の構成は、図2に示された構成と同様である。メモリ12には更に、複数のFMPK50を用いるRAID機能のためのプログラム及び各種情報が記憶される。この例において、システムコントローラ20は、パリティ演算回路25を有しているが、パリティ演算回路25を有していなくても良い。   The configuration of the system controller 20 is the same as the configuration shown in FIG. The memory 12 further stores a program for a RAID function using a plurality of FMPKs 50 and various information. In this example, the system controller 20 includes the parity calculation circuit 25, but may not include the parity calculation circuit 25.

ホスト計算機10は、管理システムであっても良い。   The host computer 10 may be a management system.

以下、システムコントローラ20がRAID5の制御を行う場合について説明する。   Hereinafter, a case where the system controller 20 performs RAID5 control will be described.

システムコントローラ20は、RG(RAID Group)とLU(Logical Unit、論理ボリュームと呼ばれることもある)とFMPK50と関連付けられている。図4は、RG及びLUの構成の一例を示す。システムコントローラ20は、FMPK50の幾つかをRGに割り当て、RGの記憶領域の一部又は全部をLUに割り当てる。なお、論理ボリュームは、シンプロビジョニング技術によりボリュームの容量が仮想化された仮想ボリュームであってもよい。仮想ボリュームには予めデータを格納するための物理的な記憶領域が割当てられていない。当該仮想ボリュームへのライト要求に応じて所定の単位で、当該仮想ボリュームに対して、物理的な記憶領域が割当てられる。   The system controller 20 is associated with an RG (RAID Group), an LU (Logical Unit, sometimes called a logical volume), and an FMPK 50. FIG. 4 shows an example of the configuration of the RG and LU. The system controller 20 allocates some of the FMPKs 50 to the RG and allocates a part or all of the storage area of the RG to the LU. The logical volume may be a virtual volume in which the volume capacity is virtualized by thin provisioning technology. A physical storage area for storing data is not allocated in advance to the virtual volume. In response to a write request to the virtual volume, a physical storage area is allocated to the virtual volume in a predetermined unit.

図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 system controller 20 writes the relationship among the RG (RAID Group), LU (Logical Unit), and FMPK 50 to the RG management table 600, LU management table 700, and FMPK management table 800 in the memory 12.

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 RG number 601 indicating the RG, an FMPK number 602 indicating the FMPK 50 allocated to the RG, and a RAID level 603 of the RG.

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 LU number 701 indicating the LU, an RG number 702 indicating the RG allocated to the LU, a stripe size 703 which is the size of the stripe block allocated to the LU, and the LU An LU start address 704 that is a start logical address, an LU size 705 that is the size of this LU, and an IO characteristic 706 of this LU are shown. The IO characteristic 706 is the tendency of the IO pattern performed on this LU, and indicates whether the sequential tendency is strong or the random tendency is strong.

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 system controller 20. Further, by combining these, the initial value of the IO characteristic 706 may be designated in advance by the user, and the system controller 20 may optimize the initial value by determination after a predetermined time has elapsed. Further, as a method for determining the IO characteristic 706, for example, the system controller 20 takes a statistics of a command for a certain LU for each unit time, and selects the higher one of the random I / O pattern and the sequential I / O pattern. The IO characteristic 706 may be determined. Command types include random write and sequential write. The comparison of the ratio of the random write and the ratio of the sequential write may be made by comparing the frequency of these commands or by comparing the amount of data written by these commands. In addition, the system controller 20 may monitor the IO characteristics 706 at a constant cycle by the above-described determination method, and update the LU management table 700 if necessary.

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 certain FMPK 50 indicates an FMPK number 801 indicating the FMPK 50, an RG number 802 indicating an RG to which the FMPK 50 belongs, and parity calculation function support information 803 indicating a parity calculation function of the FMPK 50. The parity calculation function support information 803 is, for example, a flag indicating whether or not the FMPK 50 has a parity calculation function such as the parity calculation circuit 65.

図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 FMPK 50 belonging to the RG. In this example, the system controller 20 allocates FMPK # 0 to FMPK # 3, which are four FMPK50, for RG # 0 of RAID5. Further, the system controller 20 assigns a continuous area to LU # 0 from the address space on RG # 0, and assigns another continuous area to LU # 1. The system controller 20 assigns stripe lines over the address spaces on FMPK # 0 to FMPK # 3, and assigns stripe blocks and parity in the order of stripe lines and FMPK numbers. Here, the system controller 20 shifts the FMPK number to which the stripe block and the parity are assigned for each stripe line. At this time, the system controller 20 writes information on RG # 0, LU # 0, and LU # 1 to the RG management table 600, LU management table 700, and FMPK management table 800.

図10は、FMPK50におけるページマッピングの一例を示す。FMPK50上の論理アドレス空間は、複数の論理ページに分割されている。一方、FMPK50上の物理アドレス空間は、複数の物理ブロックに分割されており、更に各物理ブロックは、所定のブロックサイズを有し、複数の物理ページに分割されている。各論理ページ及び各物理ページは、所定のページサイズを有する。   FIG. 10 shows an example of page mapping in the FMPK50. The logical address space on the FMPK 50 is divided into a plurality of logical pages. On the other hand, the physical address space on the FMPK 50 is divided into a plurality of physical blocks, and each physical block has a predetermined block size and is divided into a plurality of physical pages. Each logical page and each physical page has a predetermined page size.

なお、物理ページの代わりに、物理ブロック等、他の物理領域が用いられても良い。また、論理ページの代わりに、論理ユニット等、他の論理領域が用いられても良い。   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 device controller 60 associates the logical page with the physical page and writes the association to the page mapping management table 1100 in the memory 52. The page mapping management table 1100 has a record for each logical page. A record of a certain logical page includes a logical page number 1101 indicating this logical page, a physical page number 1102 indicating the current physical page that is the physical page currently allocated to this logical page, and the record immediately before the current physical page. An old physical page number 1103 indicating an old physical page that is a physical page allocated to the logical page is shown. That is, the old physical page associated with a certain logical page indicates the current physical page associated with this logical page one generation before. The old physical page associated with the logical page is a valid page, and the relationship is maintained until the association with the logical page is released. Since the old physical page whose association has been canceled becomes an invalid page, data in the old physical page is erased at a predetermined timing by a reclamation process or the like. Reclamation is a state in which invalid data (data stored in an invalid page) can be erased in a flash memory where data cannot be overwritten due to memory characteristics, and the page where the invalid data is stored can be rewritten. Say the process. Since data is erased in units of blocks in the flash memory, the device controller 60 moves the data in the valid page to another block and stores it in the target block when both the valid page and invalid page exist in the target block. Delete invalid data. In the present embodiment, the device controller 60 determines that the physical page 1102 and the old physical page 1103 associated with the logical page are valid pages, and executes reclamation processing.

旧物理ページの管理方法の具体例について説明する。デバイスコントローラ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 device controller 60 determines whether or not the old physical page shown in the page mapping management table 1100 is unnecessary. If it is determined that a certain old physical page is not required, the device controller 60 associates the old physical page with the logical page. You may cancel. For example, the upper limit of the number of old physical pages managed by the device controller 60 is set in advance, and the device controller 60 deletes old physical pages from the page mapping management table 1100 in order of oldness. Further, the device controller 60 may delete the old physical page from the page mapping management table 1100 according to an instruction from the system controller 20. As an example of the determination criterion, the parity update accompanying the data update is completed. Further, the system controller 20 determines whether or not the data of the old physical page is necessary, and if it is determined that the old physical page is not necessary, the page mapping is performed to the device controller 60 corresponding to the old physical page. It may be instructed to delete the old physical page from the management table 1100. Further, the system controller 20 or the device controller 60 may delete the old physical page from the page mapping management table 1100 when the used capacity of the FM 55 becomes a certain value or more. Further, when the reading of the old physical page data is requested and the old physical page remains in the page mapping management table 1100, the device controller 60 can read the old physical page data.

次に、システムコントローラ20の動作について説明する。   Next, the operation of the system controller 20 will be described.

まず、データ更新時のライト方法について説明する。   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 parity calculation circuit 25 and the parity calculation circuit 65, and calculates an exclusive OR between the data of two stripe blocks in one stripe line as a parity. The parity calculation function calculates an exclusive OR between the old data and the new data as an intermediate parity. Further, the parity calculation function calculates an exclusive OR between the old parity and the intermediate parity as a new parity. If the old data is Di, the new data is Di_new, and the old parity is P, the new parity P_new is expressed by the following equation.

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 system controller 20 registers the parity calculation function support information 803 in the FMPK management table 800 will be described.

図12は、パリティ演算機能登録処理の一例を示す。システムコントローラ20は、新規のFMPK50をインストールする時や、システムコントローラ20の立ち上げ時等に、パリティ演算機能登録処理を行う。   FIG. 12 shows an example of the parity operation function registration process. The system controller 20 performs a parity operation function registration process when installing a new FMPK 50 or starting up the system controller 20.

まずシステムコントローラ20は、パリティ演算機能サポート確認コマンドをFMPK50のデバイスコントローラ60へ発行し、その応答を受領する(1201)。このときパリティ演算機能サポート確認コマンドを受けたデバイスコントローラ60は、デバイスコントローラ60自身がパリティ演算機能を有しているか否かを示す応答をシステムコントローラ20へ送る。次にシステムコントローラ20は、応答に基づいて、デバイスコントローラ60がパリティ演算機能を有しているか否かを示す情報を、FMPK管理テーブル800のパリティ演算機能サポート情報803へ登録し(1202)、この処理のフローを終了する。   First, the system controller 20 issues a parity operation function support confirmation command to the device controller 60 of the FMPK 50 and receives a response (1201). At this time, the device controller 60 that has received the parity operation function support confirmation command sends a response indicating whether or not the device controller 60 itself has a parity operation function to the system controller 20. Next, based on the response, the system controller 20 registers information indicating whether or not the device controller 60 has a parity calculation function in the parity calculation function support information 803 of the FMPK management table 800 (1202). The process flow ends.

なお、パリティ演算機能登録処理を行う代わりに、ユーザが予めパリティ演算機能サポート情報803を登録しても良い。   Instead of performing the parity operation function registration process, the user may register the parity operation function support information 803 in advance.

次に、パリティ演算を行うパリティ演算実施装置の決定方法について説明する。   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 method 1300 for determining the parity operation execution apparatus. The system controller 20 determines the system controller 20 or the device controller 60 as the parity operation execution device according to the determination method 1300. Based on the information indicating whether or not the system controller 20 has a parity calculation function such as the parity calculation circuit 25 and the parity calculation function support information 803 of the FMPK management table 800, the system controller 20 and the device controller Any one of 60 is determined as the parity operation execution device. Four cases are defined for determining the parity operation execution device. Each case has a case number 1301, system function information 1302 indicating whether the system controller 20 has a parity calculation function, device function information 1303 indicating whether the device controller 60 has a parity calculation function, and a parity calculation. Parity calculation execution information 1304 indicating an execution apparatus and an option 1305 are shown.

ケース#1は、システムコントローラ20がパリティ演算機能を有しており、且つデバイスコントローラ60もパリティ演算機能を有しているケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20とデバイスコントローラ60の何れも選択することができる。この場合、システムコントローラ20は、オプション1305に基づいて後述のライト処理を行う。   Case # 1 is a case where the system controller 20 has a parity operation function, and the device controller 60 also has a parity operation function. According to the parity calculation execution information 1304, in this case, the system controller 20 can select either the system controller 20 or the device controller 60 as the parity calculation execution device. In this case, the system controller 20 performs a later-described write process based on the option 1305.

ケース#2は、システムコントローラ20がパリティ演算機能を有しており、且つデバイスコントローラ60がパリティ演算機能を有していないケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択する。   Case # 2 is a case where the system controller 20 has a parity operation function and the device controller 60 does not have a parity operation function. According to the parity calculation execution information 1304, in this case, the system controller 20 selects the system controller 20 as the parity calculation execution device.

ケース#3は、システムコントローラ20がパリティ演算機能を有しておらず、且つデバイスコントローラ60がパリティ演算機能を有しているケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてデバイスコントローラ60を選択する。   Case # 3 is a case where the system controller 20 does not have a parity calculation function and the device controller 60 has a parity calculation function. According to the parity operation execution information 1304, in this case, the system controller 20 selects the device controller 60 as the parity operation execution device.

ケース#4は、システムコントローラ20がパリティ演算機能を有しておらず、且つデバイスコントローラ60もパリティ演算機能を有していないケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20とデバイスコントローラ60の何れも選択することができない。   Case # 4 is a case where the system controller 20 does not have a parity operation function, and the device controller 60 does not have a parity operation function. According to the parity calculation execution information 1304, in this case, the system controller 20 cannot select either the system controller 20 or the device controller 60 as the parity calculation execution device.

なお、パリティ演算機能登録処理及びパリティ演算実施装置の決定は、省かれても良い。例えば、システムコントローラ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 system controller 20 and all the device controllers 60 have a parity calculation function, the system controller 20 omits the parity calculation function registration process and the determination of the parity calculation execution device, and the write process in case # 1 described later I do. Also, when the parity calculation execution device is set in advance by an administrator or the like, these processes can be omitted.

次に、ケース#1〜#3におけるシステムコントローラ20のライト処理について説明する。   Next, the write process of the system controller 20 in cases # 1 to # 3 will be described.

図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 system controller 20. First, the system controller 20 receives a write request as an IO request from an external host (1401). The external host is, for example, the host computer 10 connected to the system controller 20 via the SAN 1. Next, the system controller 20 performs a parity calculation selection process for selecting one of the system controller 20 and the device controller 60 as a parity calculation execution apparatus that performs the parity calculation (1402). In case # 2 and case # 3, since the parity operation execution device has been selected, the processing in step 1402 is omitted. Next, the system controller 20 performs a write method selection process for selecting a write method based on the received command (1403). The write method is one of a read modify write and a full stripe write. Next, the system controller 20 performs a data update process in which the device controller 60 updates data and parity according to the selected write method (1404).

次に、パリティ演算選択処理1402の幾つかの具体例について説明する。   Next, some specific examples of the parity operation selection processing 1402 will be described.

まず、システムコントローラ20がLU毎のIO特性706に基づいてパリティ演算実施装置を選択する処理の具体例である、第1パリティ演算選択処理について説明する。   First, a first parity calculation selection process, which is a specific example of a process in which the system controller 20 selects a parity calculation execution device based on the IO characteristic 706 for each LU, will be described.

図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 system controller 20 determines whether or not the IO characteristic 706 of the write target LU indicates random (1501). If the IO characteristic 706 of the LU indicates random (1501, Yes), the system controller 20 determines to instruct the device controller 60 to perform parity calculation by selecting the device controller 60 as the parity calculation execution device ( 1502), the flow of this processing is terminated. On the other hand, when the IO characteristic 706 of the LU does not indicate randomness (1501, No), that is, in the case of a sequential write described later, the system controller 20 selects the system controller 20 as the parity calculation execution device, thereby 20 decides to execute the parity operation (1503), and ends this processing flow.

即ち、システムコントローラ20は、IO契機で、LU管理テーブル700のIO特性706を参照し、IO特性706が、当該LUへの書き込みにおいてランダムライトがシーケンシャルライトより多いことを示す場合、デバイスコントローラ60にパリティ生成を指示する。一方、IO特性706が、当該LUへの書き込みにおいてランダムライトがシーケンシャルライトより少ないことを示す場合、システムコントローラ20がパリティ生成を実施する。   In other words, the system controller 20 refers to the IO characteristic 706 of the LU management table 700 at the IO opportunity, and if the IO characteristic 706 indicates that there are more random writes than sequential writes in writing to the LU, the system controller 20 Instructs parity generation. On the other hand, when the IO characteristic 706 indicates that there are fewer random writes than sequential writes in writing to the LU, the system controller 20 performs parity generation.

次に、システムコントローラ20がシステムコントローラ20のハードウェアの負荷を検出し、この負荷に基づいてパリティ演算実施装置を選択する処理の具体例である、第2パリティ演算選択処理について説明する。   Next, a second parity calculation selection process, which is a specific example of a process in which the system controller 20 detects a hardware load of the system controller 20 and selects a parity calculation execution apparatus based on the load, will be described.

図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 CPU 11, the memory 12, and the parity calculation circuit 25. First, the system controller 20 determines whether or not its hardware load is higher than the reference (1601). When it is determined that the hardware load is higher than the reference (1601, Yes), the system controller 20 selects the device controller 60 as the parity calculation execution device, and instructs the device controller 60 to perform the parity calculation (1602). The process flow ends. On the other hand, when it is determined that the hardware load is not higher than the reference (No in 1601), the system controller 20 selects the system controller 20 as the parity operation execution device (1603), and ends this processing flow.

ここで、システムコントローラ20は例えば、システムコントローラ20のハードウェアの負荷を計測し、計測結果が所定の閾値を超えた場合に、ハードウェアの負荷が高いと判定する。計測結果は例えば、CPU11の利用率、メモリ12の使用量、パリティ演算回路25へ入力されたデータ量等である。   Here, for example, the system controller 20 measures the hardware load of the system controller 20, and determines that the hardware load is high when the measurement result exceeds a predetermined threshold. The measurement results are, for example, the usage rate of the CPU 11, the usage amount of the memory 12, the data amount input to the parity calculation circuit 25, and the like.

次に、システムコントローラ20が当該ライトのIOパターンに基づいてパリティ演算実施装置を選択する処理の具体例である、第3パリティ演算選択処理について説明する。   Next, a third parity calculation selection process, which is a specific example of a process in which the system controller 20 selects a parity calculation execution device based on the write IO pattern, will be described.

図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 system controller 20 determines whether or not the IO pattern of the IO request is a random write (1701). If it is determined that the IO pattern is a random write (1701, Yes), the system controller 20 selects the device controller 60 as the parity operation execution device, and instructs the device controller 60 to perform the parity operation (1702). End the flow. On the other hand, when it is determined that the IO pattern is not a random write, that is, when it is determined that the IO pattern is a sequential write (1701, No), the system controller 20 selects the system controller 20 as a parity operation execution device ( 1703), the process flow ends.

次に、システムコントローラ20が当該ライトのIOパターンとシステムコントローラ20のハードウェアの負荷とに基づいてパリティ演算実施装置を選択する処理の具体例である、第4パリティ演算選択処理について説明する。   Next, a fourth parity calculation selection process, which is a specific example of a process in which the system controller 20 selects a parity calculation execution device based on the write IO pattern and the hardware load of the system controller 20, will be described.

図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 system controller 20 determines whether the IO pattern of the write is a random write (1801). When it is determined that the IO pattern is a random write (1801, Yes), the system controller 20 selects the device controller 60 as the parity operation execution device, and instructs the device controller 60 to perform the parity operation (1802). End the flow. On the other hand, if it is determined that the IO pattern is not a random write (1801, No), the system controller 20 determines whether the hardware load is high (1803). When it is determined that the hardware load is high (1803, Yes), the system controller 20 shifts the processing flow to 1802. On the other hand, if it is determined that the hardware load is not high (1803, No), the system controller 20 selects the system controller 20 as the parity operation execution device (1804), and ends this processing flow.

なお、システムコントローラ20は、以上に示された複数の種類のパリティ演算選択処理1402を組み合わせることにより、パリティ演算実施装置を選択しても良い。   Note that the system controller 20 may select a parity calculation execution device by combining the plurality of types of parity calculation selection processing 1402 described above.

シーケンシャルライト時及びフルストライプライト時、システムコントローラ20がパリティ演算を行うことにより、システムコントローラ20からデバイスコントローラ60へのデータ転送量の増大を防ぐことができる。これによりライト速度の低下を防ぐことができる。   When the system controller 20 performs a parity operation at the time of sequential write or full stripe write, an increase in the amount of data transfer from the system controller 20 to the device controller 60 can be prevented. This can prevent a decrease in write speed.

次に、ライト方法選択処理1403の具体例について説明する。   Next, a specific example of the write method selection processing 1403 will be described.

図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 method selection processing 1403. Options for the write method are, for example, read modify write and full stripe write. First, the system controller 20 determines whether or not the IO pattern of the write that is the IO request is a random write (1901). If it is determined that the IO pattern is random write (1901, Yes), the system controller 20 selects read-modify-write as the write method (1902), and ends this processing flow. On the other hand, if it is determined that the IO pattern is not a random write (1901, No), that is, if it is determined that the IO pattern is a sequential write, the system controller 20 selects full stripe write as the write method (1903). Then, the process flow ends.

次に、パリティ演算実施装置の選択結果とライト方法の選択結果に応じたデータ更新処理1404の幾つかの具体例について説明する。   Next, some specific examples of the data update processing 1404 according to the selection result of the parity calculation execution device and the selection result of the write method will be described.

まず、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第1リードモディファイライト処理について説明する。   First, the first read modify write process, which is a specific example of the data update process 1404 when the device controller 60 is selected as the parity calculation execution apparatus and the read modify write is selected as the write method, will be described.

図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 system controller 20 in the first read-modify-write process. In this example, FMPKs # 0, # 1, # 2, and # 3, which are four FMPKs 50, store data D0, D1, D2, and parity P in one stripe line, respectively. Here, the state in which the system controller 20 receives new data for updating the old data of D0 by the write command is set as the initial state. In the following description, among FMPK # 0, # 1, # 2, and # 3, FMPK # 0 that stores data to be updated may be referred to as data FMPK. Of FMPK # 0, # 1, # 2, and # 3, FMPK # 3 storing parity may be referred to as parity FMPK.

まずシステムコントローラ20は、FMPK#0,#1,#2,#3の中からD0に対応するFMPK#0(データFMPK)を選択し、旧データの保持と新データの書き込みとを指示する旧データ保持ライトコマンドをFMPK#0へ発行することにより、新データをFMPK#0へ転送する(2101)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0内の旧データの物理ページと異なる物理ページへ書き込む。通常ライトコマンドでは、論理ページに新物理ページが割り当てられると旧物理ページは無効となり、旧物理ページに格納されている旧データは消去の対象となる。そこで、システムコントローラ20は、パリティの更新が完了するまで旧データが保持されるようにするため、通常ライトコマンドではなく旧データ保持ライトコマンドを利用する。以後の説明において、ライトコマンドとは、通常ライトコマンドを示すものとする。   First, the system controller 20 selects FMPK # 0 (data FMPK) corresponding to D0 from FMPK # 0, # 1, # 2, and # 3, and designates old data holding and new data writing. By issuing a data holding write command to FMPK # 0, new data is transferred to FMPK # 0 (2101). Upon receiving this command, the device controller 60 of FMPK # 0 writes the new data from the system controller 20 into a physical page different from the physical page of the old data in FMPK # 0. In the normal write command, when a new physical page is assigned to a logical page, the old physical page becomes invalid, and the old data stored in the old physical page is to be erased. Therefore, the system controller 20 uses the old data holding write command instead of the normal write command in order to hold the old data until the parity update is completed. In the following description, the write command indicates a normal write command.

次にシステムコントローラ20は、中間パリティを要求する中間パリティリードコマンドをFMPK#0へ発行することにより、FMPK#0から中間パリティを取得する(2102)。中間パリティは、旧パリティのパリティ演算により新パリティを生成するための、中間演算結果である。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内に格納された旧データとFMPK#0内に格納された新データとから中間パリティを計算し、応答として中間パリティをシステムコントローラ20へ送る。ここでFMPK#0のデバイスコントローラ60は、計算された中間パリティを、バッファ66へ書き込んでも良いし、FMPK#0内のFM55の中で旧データの物理ページ及び新データの物理ページの両方と異なる物理ページへ書き込んでも良い。   Next, the system controller 20 obtains the intermediate parity from FMPK # 0 by issuing an intermediate parity read command for requesting the intermediate parity to FMPK # 0 (2102). The intermediate parity is an intermediate calculation result for generating a new parity by the parity calculation of the old parity. Upon receiving this command, the FMPK # 0 device controller 60 calculates the intermediate parity from the old data stored in the FMPK # 0 and the new data stored in the FMPK # 0, and uses the intermediate parity as a response to the system controller. Send to 20. Here, the device controller 60 of the FMPK # 0 may write the calculated intermediate parity into the buffer 66, or is different from both the physical page of the old data and the physical page of the new data in the FM55 in the FMPK # 0. You may write to a physical page.

次にシステムコントローラ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 system controller 20 selects FMPK # 3 (parity FMPK) corresponding to P from FMPK # 0, # 1, # 2, and # 3, and issues a parity update write command for instructing parity update to FMPK #. The intermediate parity received from FMPK # 0 is transferred to FMPK # 3 (2103). Upon receiving this command, FMPK # 3 calculates a new parity from the old parity in FMPK # 3 and the intermediate parity from the system controller 20, and writes the new parity to FMPK # 3. When the device controller 60 of FMPK # 3 writes the new parity to FMPK # 3, it notifies the system controller 20 of a parity update write completion response. Here, the device controller 60 of the FMPK # 3 may write the intermediate parity from the system controller 20 into the buffer 66, or both the physical page of the old parity and the physical page of the new parity in the FM 55 in the FMPK # 3. You may write to a different physical page.

次にシステムコントローラ20は、FMPK#3からの完了応答を受信すると、旧データを無効にすることを指示する旧データ破棄コマンドを、FMPK#0へ発行し(2104)、このフローを終了する。このコマンドを受けたFMPK#0のデバイスコントローラ60は、保持していた旧データを無効とするため、マッピング管理テーブル1100から旧データ破棄コマンドにより特定された論理ページにマッピングされた物理ページを削除する。   Next, when receiving a completion response from FMPK # 3, the system controller 20 issues an old data discard command instructing invalidation of old data to FMPK # 0 (2104), and ends this flow. Upon receiving this command, the device controller 60 of FMPK # 0 deletes the physical page mapped to the logical page specified by the old data discard command from the mapping management table 1100 in order to invalidate the retained old data. .

なお、システムコントローラ20は、パリティ更新ライトコマンド発行後、FMPK#3からの完了応答を所定の時間以内に受信しなかった場合は、パリティの更新が失敗したものと判断して、FMPK#0から中間パリティを再取得し、その中間パリティをFMPK#3へ再転送することで、パリティの更新処理を再実行してもよい。   If the system controller 20 does not receive a completion response from the FMPK # 3 within a predetermined time after issuing the parity update write command, the system controller 20 determines that the parity update has failed, and starts from the FMPK # 0. The parity update process may be re-executed by re-acquiring the intermediate parity and retransferring the intermediate parity to FMPK # 3.

具体的には、システムコントローラ20は、パリティ更新ライトコマンド発行後、FMPK#3からの完了応答を所定の時間以内に受信しなかった場合は、中間パリティリードコマンドをFMPK#0へ再発行し、このコマンドに応じて再計算された中間パリティを受信する。そして、システムコントローラ20は、パリティ更新ライトコマンドをFMPK#3へ再発行することにより、再計算された中間パリティをFMPK#3に書き込む。   Specifically, after issuing the parity update write command, the system controller 20 reissues the intermediate parity read command to FMPK # 0 if the completion response from FMPK # 3 is not received within a predetermined time. The intermediate parity recalculated in response to this command is received. Then, the system controller 20 reissues the parity update write command to FMPK # 3, thereby writing the recalculated intermediate parity in FMPK # 3.

この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。   According to this processing, the data transfer between the system controller 20 and the device controller 60 in updating the data of one stripe block is as follows.

(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)中間パリティがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)中間パリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) The updated data is transferred from the system controller 20 to the device controller 60 of the data FMPK.
(2) The intermediate parity is transferred from the device controller 60 of the data FMPK to the system controller 20.
(3) The intermediate parity is transferred from the system controller 20 to the device controller 60 of the parity FMPK.

これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。あるいは、システムコントローラ20がパリティ演算を行う場合、システムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。   As a result, data transfer between the system controller 20 and the device controller 60 can be suppressed. Alternatively, when the system controller 20 performs a parity operation, data transfer between the system controller 20 and the device controller 60 is as follows.

(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)更新前のパリティがパリティFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(4)更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) Data before update is transferred from the device controller 60 of the data FMPK to the system controller 20.
(2) The parity before update is transferred from the device controller 60 of the parity FMPK to the system controller 20.
(3) The updated data is transferred from the system controller 20 to the device controller 60 of the data FMPK.
(4) The updated parity is transferred from the system controller 20 to the device controller 60 of the parity FMPK.

このようにシステムコントローラ20がパリティ演算を行う場合に比べると、第1リードモディファイライト処理のデータ転送は少ない。   As described above, data transfer in the first read-modify-write process is less than when the system controller 20 performs the parity calculation.

また、データFMPKが更新前のデータと更新後のデータの両方をFM55に保持することにより、データFMPKのデバイスコントローラ60が中間パリティを演算するために使用するバッファ66を削減することができる。   Further, the data FMPK holds both the data before the update and the data after the update in the FM 55, so that the buffer 66 used by the device controller 60 of the data FMPK to calculate the intermediate parity can be reduced.

更に、新データのライト後も旧データをパリティが更新されるまで保持することで、パリティ更新前に障害が起きた場合にも、データ復旧が可能となる。また、パリティ更新後は旧データを無効にして旧データを消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。   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 data update process 1404 when the device controller 60 is selected as the parity calculation execution apparatus and the read-modify-write is selected as the write method, will be described. .

図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 system controller 20 in the second read-modify-write process. The initial state in this example is the same as the initial state of the first read modify write process. First, the system controller 20 obtains old data from FMPK # 0 by issuing a read command to FMPK # 0 (data FMPK) corresponding to D0 (2301). Upon receiving this command, the device controller 60 of FMPK # 0 reads out the old data in FMPK # 0 and sends the old data to the system controller 20 as a response.

次にシステムコントローラ20は、パリティ更新ライトコマンドをPに対応するFMPK#3(パリティFMPK)へ発行することにより、新データと旧データをFMPK#3へ転送する(2302)。このコマンドを受けたFMPK#3のデバイスコントローラ60は、システムコントローラ20からの新データとシステムコントローラ20からの旧データとFMPK#3内の旧パリティから新パリティを計算し、この新パリティを、FMPK#3へ書き込む。   Next, the system controller 20 issues a parity update write command to FMPK # 3 (parity FMPK) corresponding to P, thereby transferring new data and old data to FMPK # 3 (2302). Upon receiving this command, the FMPK # 3 device controller 60 calculates a new parity from the new data from the system controller 20, the old data from the system controller 20, and the old parity in FMPK # 3. Write to # 3.

次にシステムコントローラ20は、ライトコマンドをFMPK#0に発行することにより、新データをFMPK#0に転送する(2303)。このコマンドを受けたFMPK#0のデバイスコントローラ60は新データをFMPK#0へ書き込む。   Next, the system controller 20 issues a write command to FMPK # 0 to transfer new data to FMPK # 0 (2303). Upon receiving this command, the device controller 60 of FMPK # 0 writes new data into FMPK # 0.

この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。   According to this processing, the data transfer between the system controller 20 and the device controller 60 in updating the data of one stripe block is as follows.

(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送され、更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60に転送される。
(2)更新前のデータと更新後のデータとがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) Data before update is transferred from the device controller 60 of data FMPK to the system controller 20, and data after update is transferred from the system controller 20 to the device controller 60 of data FMPK.
(2) Data before update and data after update are transferred from the system controller 20 to the device controller 60 of the parity FMPK.

これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。   As a result, data transfer between the system controller 20 and the device controller 60 can be suppressed.

2302において、システムコントローラ20は、1回のパリティ更新ライトコマンドで、新データと旧データをパリティFMPKへ転送する。この時の転送データ量は、第1リードモディファイライト処理が中間パリティをシステムコントローラ20からパリティFMPKへ転送する場合の転送データ量に比べて、2倍になる。しかし、転送回数が1回であるため、データ転送のオーバヘッドの増加を防ぐことができる。データ転送が、例えばSAS(Serial Attached Small Computer System Interface)−6GBのような高速インタフェースにより行われる場合、転送データ量が増加するデメリットより転送回数が減少するメリットの方が大きい。   In 2302, the system controller 20 transfers new data and old data to the parity FMPK by one parity update write command. The transfer data amount at this time is twice as large as the transfer data amount when the first read-modify-write process transfers the intermediate parity from the system controller 20 to the parity FMPK. However, since the number of transfers is one, an increase in data transfer overhead can be prevented. When data transfer is performed by a high-speed interface such as, for example, SAS (Serial Attached Small Computer System Interface) -6 GB, the merit of reducing the number of transfers is greater than the demerit of increasing the amount of transfer data.

更に、新データのライト後も旧データをパリティが更新されるまで保持することで、パリティ更新前に障害が起きた場合にもデータ復旧が可能となる。また、パリティ更新後は旧データを無効にして、旧データを消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。   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 device controller 60 is selected as the parity operation execution device and the read modify write is selected as the write method, either the first read modify write process or the second read modify write process may be performed.

次に、パリティ演算実施装置としてシステムコントローラ20が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第3リードモディファイライト処理について説明する。   Next, a third read modify write process, which is a specific example of the data update process 1404 when the system controller 20 is selected as the parity calculation execution apparatus and the read modify write is selected as the write method, will be described.

図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 system controller 20 in the third read-modify-write process. The initial state in this example is the same as the initial state of the first read modify write process. First, the system controller 20 obtains old data from FMPK # 0 by issuing a read command requesting D0 to FMPK # 0 corresponding to D0, and issues a read command to FMPK # 3 corresponding to P. The old parity is acquired from FMPK # 3 (2501). Receiving this read command, FMPK # 0 reads the old data in FMPK # 0 and sends the old data to the system controller 20 as a response. Upon receiving this read command, the device controller 60 of FMPK # 3 reads out the old parity in FMPK # 3 and sends the old parity to the system controller 20 as a response.

次にシステムコントローラ20は、旧データと旧パリティと新データから新パリティを計算する(2502)。次にシステムコントローラ20は、ライトコマンドをFMPK#0へ発行することによりFMPK#0へ新データを転送し、ライトコマンドをPに対応するFMPK#3へ発行することによりFMPK#3へ新パリティを転送し(2503)、この処理のフローを終了する。このライトコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0へ新データを書き込む。また、このライトコマンドを受けたFMPK#3は、FMPK#3へ新パリティを書き込む。   Next, the system controller 20 calculates a new parity from the old data, the old parity, and the new data (2502). Next, the system controller 20 transfers new data to FMPK # 0 by issuing a write command to FMPK # 0, and issues a new parity to FMPK # 3 by issuing a write command to FMPK # 3 corresponding to P. Transfer (2503), and the flow of this process is terminated. Upon receiving this write command, the device controller 60 of FMPK # 0 writes new data to FMPK # 0. In response to this write command, FMPK # 3 writes a new parity to FMPK # 3.

この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。   According to this processing, the data transfer between the system controller 20 and the device controller 60 in updating the data of one stripe block is as follows.

(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送され、更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60に転送される。
(2)更新前のパリティがパリティFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) Data before update is transferred from the device controller 60 of data FMPK to the system controller 20, and data after update is transferred from the system controller 20 to the device controller 60 of data FMPK.
(2) The parity before update is transferred from the device controller 60 of the parity FMPK to the system controller 20.
(3) The updated parity is transferred from the system controller 20 to the device controller 60 of the parity FMPK.

これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。   As a result, data transfer between the system controller 20 and the device controller 60 can be suppressed.

次に、フルストライプライトの幾つかの具体例について説明する。   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 data update process 1404 when the device controller 60 is selected as the parity calculation execution apparatus and the full stripe write is selected as the write method, will be described.

図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 system controller 20 in the first full stripe write process. In this example, FMPK # 0, # 1, # 2, and # 3 store D0, D1, D2, and P, respectively. Here, the state in which the system controller 20 has received new data for updating the old data of D0, D1, and D2 in accordance with a write command is set as an initial state. In the following description, among FMPKs # 0, # 1, # 2, and # 3, FMPKs # 0, # 1, and # 2 storing updated data may be referred to as data FMPK.

まずシステムコントローラ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 system controller 20 divides the received data into new data of D0, D1, and D2 by issuing a write command to FMPK # 0, # 1, and # 2 (data FMPK) corresponding to D0, D1, and D2, respectively. Then, the new data of D0, D1, and D2 are transferred to FMPK # 0, # 1, and # 2, respectively (2701). Upon receiving this write command, the device controllers 60 of FMPK # 0, # 1, and # 2 write new data from the system controller 20 to FMPK # 0, # 1, and # 2, respectively.

次にシステムコントローラ20は、パリティの生成と書き込みを指示するパリティ生成ライトコマンドをPに対応するFMPK#3(パリティFMPK)へ発行することにより、D0,D1,D2の新データをFMPK#3へ転送し(2702)、この処理のフローを終了する。このライトコマンドを受けたFMPK#3のデバイスコントローラ60は、D0,D1,D2の新データから新パリティを計算し、新パリティをFMPK#3へ書き込む。   Next, the system controller 20 issues a parity generation write command instructing the generation and writing of parity to FMPK # 3 (parity FMPK) corresponding to P, whereby the new data of D0, D1, and D2 is sent to FMPK # 3. Transfer (2702), the flow of this processing is terminated. Upon receiving this write command, the device controller 60 of FMPK # 3 calculates a new parity from the new data of D0, D1, and D2, and writes the new parity to FMPK # 3.

この処理によれば、一つのストライプラインのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。   According to this processing, data transfer between the system controller 20 and the device controller 60 in updating data of one stripe line is as follows.

(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)更新後のパリティデータがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) The updated data is transferred from the system controller 20 to the device controller 60 of the data FMPK.
(2) The updated parity data is transferred from the system controller 20 to the device controller 60 of the parity FMPK.

これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。   As a result, data transfer between the system controller 20 and the device controller 60 can be suppressed.

次に、パリティ演算実施装置としてシステムコントローラ20が選択され、ライト方法としてフルストライプライトが選択された場合の別のデータ更新処理1404の具体例である、第2フルストライプライト処理について説明する。   Next, a second full stripe write process, which is a specific example of another data update process 1404 when the system controller 20 is selected as the parity calculation execution apparatus and the full stripe write is selected as the write method, will be described.

図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 system controller 20 in the second full stripe write process. The initial state in this example is the same as the initial state of the first full stripe write process. First, the system controller 20 calculates a new parity from the new data of D0, D1, and D2 (2901). Next, the system controller 20 issues new commands of D0, D1, and D2 to FMPK # 0, # 1, and # 2 by issuing a write command to FMPK # 0, # 1, and # 2 corresponding to D0, D1, and D2, respectively. Transfer to # 2 and issue a write command to FMPK # 3 corresponding to P, thereby transferring the calculated new parity to FMPK # 3 (2902) and end this processing flow. Upon receiving the write command, the device controllers 60 of FMPK # 0, # 1, and # 2 write new data from the system controller 20 to FMPK # 0, # 1, and # 2, respectively. In response to the write command, the device controller 60 of FMPK # 3 writes the new parity from the system controller 20 to FMPK # 3.

この処理によれば、一つのストライプラインのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。   According to this processing, data transfer between the system controller 20 and the device controller 60 in updating data of one stripe line is as follows.

(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)、更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
(1) The updated data is transferred from the system controller 20 to the device controller 60 of the data FMPK.
(2) The updated parity is transferred from the system controller 20 to the device controller 60 of the parity FMPK.

これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。   As a result, data transfer between the system controller 20 and the device controller 60 can be suppressed.

次に、パリティ演算実施装置の選択結果に応じたデータ復旧処理の幾つかの具体例について説明する。   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 device controller 60 is selected as the parity calculation execution apparatus, will be described.

図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 system controller 20 in the first data recovery process. In this example, FMPK # 0, # 1, # 2, and # 3 store D0, D1, D2, and P, respectively. Here, a failure occurs in the FM 55 in the FMPK # 1, and the state in which the FM 55 is replaced with a new FM 55 is defined as an initial state. In the following description, among FMPKs # 0, # 1, # 2, and # 3, FMPK # 1 storing data to be recovered may be referred to as a recovering FMPK.

まずシステムコントローラ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 system controller 20 issues a read command to the surviving FMPKs # 0, # 2, and # 3 in the RG to which the FMPKs # 0, # 1, # 2, and # 3 belong, whereby the FMPK # 0, D0, D2, and P stored in # 2 and # 3, respectively, are acquired (3101). Upon receiving this read command, the device controllers 60 of FMPK # 0, # 2, and # 3 read D0, D2, and P, respectively, and transfer the read D0, D2, and P to the system controller 20. Data read here or parity may be used.

次にシステムコントローラ20は、復旧中のFMPK#1(復旧中FMPK)へパリティ生成を示すライトコマンドを発行することにより、読み出されたD0,D2,PをFMPK#1へ転送し(3102)、この処理のフローを終了する。このライトコマンドを受けたFMPK#1のデバイスコントローラ60は、D0,D2,PからD1を計算することによりD1の復旧データを生成し、D1の復旧データをFMPK#1へ書き込む。   Next, the system controller 20 transfers the read D0, D2, and P to FMPK # 1 by issuing a write command indicating parity generation to the FMPK # 1 being restored (FMPK being restored) (3102). Then, the process flow ends. Upon receiving this write command, the device controller 60 of FMPK # 1 generates D1 recovery data by calculating D1 from D0, D2, and P, and writes the recovery data of D1 into FMPK # 1.

この処理によれば、一つのストライプブロックのデータの復旧におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。   According to this processing, data transfer between the system controller 20 and the device controller 60 in the restoration of data of one stripe block is as follows.

(1)復旧中FMPK以外のFMPK50のデータが対応するデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)転送されたデータがシステムコントローラ20から復旧中FMPKのデバイスコントローラ60へ転送される。
(1) Data of the FMPK 50 other than the FMPK being restored is transferred from the corresponding device controller 60 to the system controller 20.
(2) The transferred data is transferred from the system controller 20 to the device controller 60 of the FMPK being restored.

これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。   As a result, data transfer between the system controller 20 and the device controller 60 can be suppressed.

次に、パリティ演算実施装置としてシステムコントローラ20が選択された場合のデータ復旧処理の具体例である、第2データ復旧処理について説明する。   Next, the second data recovery process, which is a specific example of the data recovery process when the system controller 20 is selected as the parity calculation execution device, will be described.

図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 system controller 20 in the second data recovery process. The initial state in this example is the same as in the first specific example. First, the system controller 20 issues a read command to the surviving FMPKs # 0, # 2, and # 3 in the RG to which the FMPKs # 0, # 1, # 2, and # 3 belong, whereby the FMPK # 0, D0, D2, and P are read from # 2 and # 3 (3301). Upon receiving this read command, the device controllers 60 of FMPK # 0, # 2, and # 3 read D0, D2, and P, respectively, and transfer the read D0, D2, and P to the system controller 20. Data read here or parity may be used.

次にシステムコントローラ20は、D0,D2,PからD1を計算することにより、D1の復旧データを生成する(3302)。次にシステムコントローラ20は、ライトコマンドをFMPK#1へ発行することにより、復旧されたD1をFMPK#1へ書き込み(3303)、この処理のフローを終了する。このライトコマンドを受けたFMPK#1のデバイスコントローラ60は、受けたD1をFMPK#1へ書き込む。   Next, the system controller 20 generates D1 recovery data by calculating D1 from D0, D2, and P (3302). Next, the system controller 20 issues a write command to FMPK # 1, writes the restored D1 into FMPK # 1 (3303), and ends this processing flow. Upon receiving this write command, the device controller 60 of FMPK # 1 writes the received D1 to FMPK # 1.

この処理によれば、一つのストライプブロックのデータの復旧におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。   According to this processing, data transfer between the system controller 20 and the device controller 60 in the restoration of data of one stripe block is as follows.

(1)復旧中FMPK以外のFMPK50のデータが対応するデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)転送されたデータがシステムコントローラ20から復旧中FMPKのデバイスコントローラ60へ転送される。
(1) Data of the FMPK 50 other than the FMPK being restored is transferred from the corresponding device controller 60 to the system controller 20.
(2) The transferred data is transferred from the system controller 20 to the device controller 60 of the FMPK being restored.

これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。   As a result, data transfer between the system controller 20 and the device controller 60 can be suppressed.

次に、デバイスコントローラ60の動作について説明する。   Next, the operation of the device controller 60 will be described.

まず、通常のライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、通常ライト処理について説明する。   First, normal write processing, which is a specific example of processing performed by the device controller 60 when a normal write command is received, will be described.

この通常ライト処理において、デバイスコントローラ60は、旧データを保持する必要がない。   In this normal write process, the device controller 60 does not need to hold old data.

図34は、通常ライト処理の一例を示す。まずデバイスコントローラ60は、通常のライトコマンドを受領する(3401)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをライト先論理ページとする(3402)。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページをライト先物理ページとして割り当てる(3403)。次にデバイスコントローラ60は、ライトコマンドにより受領したライトデータをライト先物理ページへ書き込む(3404)。   FIG. 34 shows an example of normal write processing. First, the device controller 60 receives a normal write command (3401). Next, the device controller 60 obtains a logical page number from the logical address designated by this write command, and sets the logical page of this logical page number as the write destination logical page (3402). Next, the device controller 60 newly acquires a free page and allocates the acquired physical page as a write destination physical page (3403). Next, the device controller 60 writes the write data received by the write command to the write destination physical page (3404).

次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3405)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3406)、この処理のフローを終了する。   Next, the device controller 60 associates the write destination physical page with the write destination logical page in the page mapping management table 1100, and registers the number of the write destination physical page as the physical page number (3405). Next, the device controller 60 sends a response indicating the completion of the command to the system controller 20 (3406), and ends this processing flow.

3403において、デバイスコントローラ60は、未使用の物理ページを確保する、物理ブロックを消去してその物理ブロック内の物理ページを確保する、等の処理を行うことにより、空きの物理ページを取得しても良い。このとき、デバイスコントローラ60は、物理ブロックの消去のために、ページマッピング管理テーブル1100における他の論理ページと旧物理ページの関連付けを解除しても良い。   In 3403, the device controller 60 acquires a free physical page by performing processing such as securing an unused physical page, erasing a physical block, and securing a physical page in the physical block, and the like. Also good. At this time, the device controller 60 may cancel the association between another logical page and the old physical page in the page mapping management table 1100 in order to erase the physical block.

次に、旧データ保持ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、旧データ保持ライトコマンド処理について説明する。   Next, an old data holding write command process, which is a specific example of processing of the device controller 60 when an old data holding write command is received, will be described.

この旧データ保持ライト処理は例えば、前述の第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 device controller 60 receives an old data holding write command (3501). Next, the device controller 60 obtains a logical page number from the logical address designated by this write command, and sets the logical page of this logical page number as the write destination logical page (3502). Next, the device controller 60 refers to the page mapping management table 1100 to determine whether a physical page is assigned to the write destination logical page (3503).

ライト先論理ページに物理ページが割り当てられている場合(3503,Yes)、デバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページに関連付けられている物理ページ番号を旧物理ページ番号として登録する(3504)。   If a physical page is assigned to the write destination logical page (3503, Yes), the device controller 60 registers the physical page number associated with the write destination logical page in the page mapping management table 1100 as the old physical page number. (3504).

ライト先論理ページに物理ページが割り当てられていない場合(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 device controller 60 newly acquires a free page and allocates the acquired physical page as a write destination physical page (3505). ). Next, the device controller 60 writes the write data received by the write command to the write destination physical page (3506).

次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3507)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3508)、この処理のフローを終了する。   Next, the device controller 60 associates the write destination physical page with the write destination logical page in the page mapping management table 1100, and registers the number of the write destination physical page as the physical page number (3507). Next, the device controller 60 sends a response indicating completion of the command to the system controller 20 (3508), and ends this processing flow.

この処理によれば、データ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 device controller 60 of the data FMPK can associate the updated logical page, the old physical page that stores the old data, and the physical page that stores the new data. Thereby, the data FMPK can hold both the data before update and the data after update in the nonvolatile memory at the time of data update. Further, the device controller 60 of the data FMPK can read both the data before update and the data after update without using a volatile memory. Furthermore, the system controller 20 can cause the device controller 60 of the data FMPK to hold both the data before update and the data after update.

次に、中間パリティリードコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、中間パリティリード処理について説明する。   Next, intermediate parity read processing, which is a specific example of processing performed by the device controller 60 when an intermediate parity read command is received, will be described.

この中間パリティリード処理は、指定されたアドレスの旧データと新データのパリティ演算を行うことにより、中間パリティを生成して返す。この中間パリティリード処理は例えば、前述の第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 device controller 60 receives an intermediate parity read command (3601). Next, the device controller 60 obtains a logical page number from the logical address designated by this intermediate parity read command, and sets the logical page of this logical page number as the read destination logical page (3602). Next, the device controller 60 refers to the page mapping management table 1100 to determine whether or not the old physical page corresponding to the read destination logical page is registered (3603).

リード先論理ページに対応する旧物理ページが登録されている場合(3603,Yes)、デバイスコントローラ60は、リード先論理ページに対応する旧物理ページのデータと現在の物理ページのデータとを読み出し、読み出されたデータから中間パリティを計算する(3604)。次にデバイスコントローラ60は、中間パリティをシステムコントローラ20へ転送し(3606)、この処理のフローを終了する。   When the old physical page corresponding to the read destination logical page is registered (3603, Yes), the device controller 60 reads the data of the old physical page and the current physical page corresponding to the read destination logical page, An intermediate parity is calculated from the read data (3604). Next, the device controller 60 transfers the intermediate parity to the system controller 20 (3606), and ends this processing flow.

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 device controller 60 reports to the system controller 20 a command result indicating that there is no old data of the read destination logical page. (3605), and the flow of this process is terminated.

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 system controller 20 reads all the data in the same stripe line as the new data, calculates the new parity from the read data, A write command for writing a new parity to the device controller 60 corresponding to the parity may be issued. Alternatively, in this case, for example, the system controller 20 reads all data in the same stripe line as the new data, and writes a parity generation write command for calculating the new parity from the read data to the device controller 60 corresponding to the parity. May be issued.

この処理によれば、データFMPKのデバイスコントローラ60は、システムコントローラ20から中間パリティの演算の指示を受けた場合、更新前のデータと更新後のデータとを読み出し、読み出されたデータから中間パリティを生成することができる。更に、システムコントローラ20は、データFMPKのデバイスコントローラ60に中間パリティを生成させ、デバイスコントローラ60から中間パリティを取得することができる。   According to this process, when the device controller 60 of the data FMPK receives an instruction to calculate an intermediate parity from the system controller 20, the device controller 60 reads the data before update and the data after update, and reads the intermediate parity from the read data Can be generated. Further, the system controller 20 can cause the device controller 60 of the data FMPK to generate an intermediate parity and acquire the intermediate parity from the device controller 60.

仮に、データFMPKのデバイスコントローラ60がシステムコントローラ20の動作と非同期で中間パリティを生成したとする。この場合、中間パリティの演算がデバイスコントローラ60のバッファ66をに負担をかけることにより、このデバイスコントローラ60の性能が低下する。また、中間パリティ演算に必要なデータがバッファ66に格納されている状態で電源断が発生した場合、このデータが消失し、データ復旧が不可能になる可能性がある。一方、この実施例によれば、データFMPKのデバイスコントローラ60が中間パリティリードコマンドを受けたタイミングで中間パリティを生成することにより、ストレージシステム30の性能低下を防ぐことができる。また、中間パリティ演算に必要なデータの消失を防ぎ、ストレージシステム30の信頼性を向上させることができる。   Suppose that the device controller 60 of the data FMPK generates an intermediate parity asynchronously with the operation of the system controller 20. In this case, the performance of the device controller 60 is deteriorated because the calculation of the intermediate parity places a burden on the buffer 66 of the device controller 60. In addition, when a power interruption occurs while data necessary for the intermediate parity calculation is stored in the buffer 66, this data may be lost and data recovery may be impossible. On the other hand, according to this embodiment, it is possible to prevent the performance degradation of the storage system 30 by generating the intermediate parity at the timing when the device controller 60 of the data FMPK receives the intermediate parity read command. Further, loss of data necessary for the intermediate parity calculation can be prevented and the reliability of the storage system 30 can be improved.

次に、パリティ更新ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、パリティ更新ライト処理について説明する。   Next, a parity update write process, which is a specific example of the process of the device controller 60 when a parity update write command is received, will be described.

このパリティ更新ライト処理は、転送された中間パリティと指定された旧パリティとのパリティ演算を行うことにより、新パリティを生成して、この新パリティを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 FM 55. This parity update write command is used, for example, in the first read-modify-write process described above.

図37は、パリティ更新ライト処理の一例を示す。まずデバイスコントローラ60は、パリティ更新ライトコマンドを受領する(3701)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをリード先論理ページとする(3702)。次にデバイスコントローラ60は、ページマッピング管理テーブル1100を参照することにより、リード先論理ページに対応する物理ページ番号を求め、この物理ページ番号に示された物理ページからデータを読み出す(3703)。読み出されたデータは例えば、旧パリティである。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページを結果格納先物理ページとして割り当てる(3704)。次にデバイスコントローラ60は、読み出されたデータと受領したデータとを用いてパリティ演算を行い、演算結果を結果格納先物理ページへ書き込む(3705)。   FIG. 37 shows an example of parity update write processing. First, the device controller 60 receives a parity update write command (3701). Next, the device controller 60 obtains a logical page number from the logical address designated by this write command, and sets the logical page of this logical page number as the read destination logical page (3702). Next, the device controller 60 obtains a physical page number corresponding to the read destination logical page by referring to the page mapping management table 1100, and reads data from the physical page indicated by the physical page number (3703). The read data is, for example, old parity. Next, the device controller 60 newly acquires a free page and allocates the acquired physical page as a result storage destination physical page (3704). Next, the device controller 60 performs a parity operation using the read data and the received data, and writes the operation result to the result storage destination physical page (3705).

次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページに結果格納先物理ページを関連付け、物理ページ番号として結果格納先物理ページの番号を登録する(3706)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3707)、この処理のフローを終了する。   Next, the device controller 60 associates the result storage destination physical page with the write destination logical page in the page mapping management table 1100, and registers the number of the result storage destination physical page as the physical page number (3706). Next, the device controller 60 sends a response indicating the completion of the command to the system controller 20 (3707), and ends this processing flow.

この処理によれば、パリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、パリティFMPKに格納されている更新前のパリティとから更新後のパリティを算出し、更新後のパリティをFM55へ送信することができる。更に、システムコントローラ20は、パリティFMPKのデバイスコントローラ60に更新後のパリティを生成させ保存させることができる。   According to this processing, the parity FMPK device controller 60 calculates the updated parity from the updated data from the system controller 20 and the updated parity stored in the parity FMPK, and the updated parity. Can be transmitted to FM55. Furthermore, the system controller 20 can cause the parity FMPK device controller 60 to generate and store updated parity.

次に、パリティ生成ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、パリティ生成ライト処理について説明する。   Next, a parity generation write process, which is a specific example of the process of the device controller 60 when a parity generation write command is received, will be described.

このパリティ生成ライト処理は、複数ストライプブロック分の転送されたデータを用いてパリティを生成し、このパリティを指定アドレスへ書き込むコマンドである。このパリティ生成ライト処理は例えば、前述の第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 device controller 60 by the parity generation write command. First, the device controller 60 receives a parity generation write command (3801). Next, the device controller 60 obtains the logical page number from the logical address designated by this write command, and sets the logical page of this logical page number as the write destination logical page (3802). Next, the device controller 60 newly acquires a free page and allocates the acquired physical page as a write destination physical page (3803). Next, the device controller 60 writes the write data received by the write command to the write destination physical page (3804).

次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3805)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3806)、この処理のフローを終了する。   Next, the device controller 60 associates the write destination physical page with the write destination logical page in the page mapping management table 1100, and registers the number of the write destination physical page as the physical page number (3805). Next, the device controller 60 sends a response indicating the completion of the command to the system controller 20 (3806), and ends this processing flow.

この処理によれば、パリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータから更新後のパリティを算出し、更新後のパリティをパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、パリティFMPKのデバイスコントローラ60に更新後のパリティを生成させ保存させることがでる。   According to this processing, the device controller 60 of the parity FMPK can calculate the updated parity from the updated data from the system controller 20 and write the updated parity to the parity FMPK. Further, the system controller 20 can cause the parity FMPK device controller 60 to generate and store the updated parity.

図39は、デバイスコントローラ60による、旧データ破棄処理の一例を示す。まず、デバイスコントローラ60は、システムコントローラ20から旧データ破棄コマンドを受領する(3901)。次に、デバイスコントローラ60は、この旧データ破棄コマンドで指定された論理アドレスから論理ページ番号を求め、この論理ページ番号に対応する旧物理ページ番号をページマッピング管理テーブル1100から削除する(3902)。デバイスコントローラ60は、旧データ破棄コマンドを受領するまで、旧データを無効にしない。つまり、デバイスコントローラ60は、新データをライトした後であっても、パリティが更新される(旧データ破棄コマンドを受領する)まで旧データを確実に保持することができる。このように、パリティが更新されるまで旧データを維持することにより、パリティ更新前に障害が起きた場合であっても、データ復旧が可能となる。また、パリティ更新後は旧データを無効にして消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。   FIG. 39 shows an example of old data discard processing by the device controller 60. First, the device controller 60 receives an old data discard command from the system controller 20 (3901). Next, the device controller 60 obtains a logical page number from the logical address specified by this old data discard command, and deletes the old physical page number corresponding to this logical page number from the page mapping management table 1100 (3902). The device controller 60 does not invalidate the old data until the old data discard command is received. That is, even after writing new data, the device controller 60 can reliably hold the old data until the parity is updated (the old data discard command is received). In this way, by maintaining the old data until the parity is updated, data can be recovered even if a failure occurs before the parity update. In addition, after the parity update, the old data is invalidated to be erased, so that the amount of storage area used by the old data can be reduced.

この実施例では、システムコントローラ20がRAID6の制御を行う場合について説明する。   In this embodiment, a case where the system controller 20 performs RAID 6 control will be described.

この実施例における計算機システムの構成は、実施例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 system controller 20 controls RAID6. First, the difference between RAID 5 and RAID 6 will be described.

前述の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 parity calculation circuit 25 or the parity calculation circuit 65 further performs a parity calculation with a coefficient. Here, it is assumed that five FMPKs 50 store data D0, D1, D2, and parities P, Q, respectively. When A0, A1, and A2 are used as coefficients for generating Q, P and Q are generated by the following equations.

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 data update process 1404 when the device controller 60 is selected as the parity calculation execution apparatus and the read-modify-write is selected as the write method, will be described.

図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 system controller 20 in the fourth read modify write process. In this example, FMPK # 0, # 1, # 2, # 3, and # 4 store D0, D1, D2, P, and Q, respectively. Here, the state in which the system controller 20 receives new data for updating the old data of D0 by the write command is set as the initial state. In the following description, among FMPK # 0, # 1, # 2, # 3, and # 4, FMPK # 0 that stores D0 that is data to be updated may be referred to as data FMPK. Of FMPK # 0, # 1, # 2, # 3, and # 4, FMPK # 3 storing P may be referred to as P parity FMPK. Of FMPK # 0, # 1, # 2, # 3, and # 4, FMPK # 4 storing Q may be referred to as Q parity FMPK.

まずシステムコントローラ20は、旧データ保持ライトコマンドをD0に対応するFMPK#0(データFMPK)へ発行することにより、新データをFMPK#0へ書き込む(4101)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0内の旧データの物理ページと異なる物理ページへ書き込む。   First, the system controller 20 writes new data to FMPK # 0 by issuing an old data holding write command to FMPK # 0 (data FMPK) corresponding to D0 (4101). Upon receiving this command, the device controller 60 of FMPK # 0 writes the new data from the system controller 20 into a physical page different from the physical page of the old data in FMPK # 0.

次にシステムコントローラ20は、中間パリティリードコマンドをFMPK#0へ発行することにより、FMPK#0から中間パリティを取得する(4102)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内に格納された旧データと新データから中間パリティを計算し、中間パリティを応答としてシステムコントローラ20へ送る。   Next, the system controller 20 obtains the intermediate parity from FMPK # 0 by issuing an intermediate parity read command to FMPK # 0 (4102). Upon receiving this command, the device controller 60 of FMPK # 0 calculates an intermediate parity from the old data and the new data stored in FMPK # 0, and sends the intermediate parity to the system controller 20 as a response.

次にシステムコントローラ20は、RAID5の場合と同様のパリティ更新ライトコマンドを、Pに対応するFMPK#3(PパリティFMPK)へ発行することにより、中間パリティをFMPK#3へ送信する(4103)。このコマンドを受けたFMPK#3のデバイスコントローラ60は、FMPK#3内の旧パリティとシステムコントローラ20からの中間パリティから新パリティを計算し、新パリティをFMPK#3へ書き込む。   Next, the system controller 20 issues a parity update write command similar to that in RAID 5 to FMPK # 3 (P parity FMPK) corresponding to P, thereby transmitting intermediate parity to FMPK # 3 (4103). Upon receiving this command, the device controller 60 of FMPK # 3 calculates a new parity from the old parity in FMPK # 3 and the intermediate parity from the system controller 20, and writes the new parity to FMPK # 3.

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 RAID 5, the device controller 60 that has received the parity update write command calculates P_new from the intermediate parity (Di + Di_new) and the old parity P by the following equation.

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 device controller 60 of the data FMPK calculates (Di + Di_new) according to the intermediate parity read command. The device controller 60 of P parity FMPK calculates P + (Di + Di_new) according to the parity update write command.

次にシステムコントローラ20は、Qを更新するためのパリティ更新コマンドであるQパリティ更新ライトコマンドをQに対応するFMPK#4へ発行することにより、中間パリティをFMPK#4(QパリティFMPK)へ転送し(4104)、この処理のフローを終了する。このコマンドを受けたFMPK#4のデバイスコントローラ60は、FMPK#4内の旧パリティとシステムコントローラ20からの中間パリティと係数から新パリティを計算し、新パリティをFMPK#3へ書き込む。   Next, the system controller 20 transfers the intermediate parity to FMPK # 4 (Q parity FMPK) by issuing a Q parity update write command, which is a parity update command for updating Q, to FMPK # 4 corresponding to Q. (4104), and the flow of this process is terminated. Upon receiving this command, the device controller 60 of FMPK # 4 calculates a new parity from the old parity in FMPK # 4, the intermediate parity and coefficient from the system controller 20, and writes the new parity to FMPK # 3.

この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。   According to this processing, the data transfer between the system controller 20 and the device controller 60 in updating the data of one stripe block is as follows.

(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)中間パリティがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)中間パリティがシステムコントローラ20からPパリティFMPKのデバイスコントローラ60とQパリティFMPKのデバイスコントローラ60とへ転送される。
(1) The updated data is transferred from the system controller 20 to the device controller 60 of the data FMPK.
(2) The intermediate parity is transferred from the device controller 60 of the data FMPK to the system controller 20.
(3) The intermediate parity is transferred from the system controller 20 to the device controller 60 of P parity FMPK and the device controller 60 of Q parity FMPK.

これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。   As a result, data transfer between the system controller 20 and the device controller 60 can be suppressed.

Qパリティ更新ライトコマンドを受けたデバイスコントローラ60の処理は、パリティ更新ライトコマンドの場合と比較して、予めデバイスコントローラ60に設定された係数Aiを用いる点が異なる。当該RG内のデータDiをDi_newへ更新する場合、Qパリティ更新ライトコマンドを受けたデバイスコントローラ60は、中間パリティ(Di+Di_new)と旧パリティQとAiとから、新パリティQ_newを次式により計算する。   The process of the device controller 60 that has received the Q parity update write command is different from the case of the parity update write command in that the coefficient Ai preset in the device controller 60 is used. When updating the data Di in the RG to Di_new, the device controller 60 that has received the Q parity update write command calculates a new parity Q_new from the intermediate parity (Di + Di_new), the old parity Q, and Ai by the following equation.

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 device controller 60 of the data FMPK calculates (Di + Di_new) according to the intermediate parity read command. The device controller 60 of the Q parity FMPK calculates Q + Ai · (Di + Di_new) according to the Q parity update write command.

パリティ更新ライトコマンドによれば、PパリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、PパリティFMPKに格納されている更新前のPパリティとから更新後のPパリティを算出し、更新後のPパリティをPパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、PパリティFMPKのデバイスコントローラ60に更新後のPパリティを生成させ保存させることができる。   According to the parity update write command, the device controller 60 of the P parity FMPK calculates the updated P parity from the updated data from the system controller 20 and the pre-updated P parity stored in the P parity FMPK. Then, the updated P parity can be written to the P parity FMPK. Further, the system controller 20 can cause the device controller 60 of the P parity FMPK to generate and store the updated P parity.

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 device controller 60 of the Q parity FMPK updates the updated data from the system controller 20, the pre-update Q parity stored in the Q parity FMPK, and a predetermined coefficient. Q parity can be calculated, and the updated Q parity can be written to the Q parity FMPK. Further, the system controller 20 can cause the device controller 60 of the Q parity FMPK to generate and store the updated Q parity.

この実施例では、システムコントローラ20がパリティ演算機能を有していない場合のストレージシステム30の適用例である、計算機システムについて説明する。   In this embodiment, a computer system, which is an application example of the storage system 30 when the system controller 20 does not have a parity operation function, will be described.

図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 storage system 30 indicate the same or equivalent elements as the elements of the storage system 30. The computer system of this embodiment has a host computer 41a, a host computer 41b, and a plurality of FMPKs 50 connected to the host computer 41b. The host computer 41a and the host computer 41b are connected via a LAN (Local Area Network) 2, for example.

ホスト計算機41aは、ホストコントローラ42aと、ホストコントローラ42aに接続されている複数のFMPK50とを有する。ホストコントローラ42aは、LAN2等の通信ネットワークに接続するためのNIC(Network Interface Card)13と、メモリ12と、CPU11と、バッファ26とを有する。   The host computer 41a has a host controller 42a and a plurality of FMPKs 50 connected to the host controller 42a. The host controller 42 a includes a NIC (Network Interface Card) 13 for connecting to a communication network such as LAN 2, a memory 12, a CPU 11, and a buffer 26.

ホスト計算機41bは、LAN2等の通信ネットワークに接続するためのNIC13と、FMPK50に接続するためのHBA(Host Bus Adapter)15と、メモリ12と、CPU11と、バッファ26とを有する。   The host computer 41 b includes a NIC 13 for connecting to a communication network such as LAN 2, an HBA (Host Bus Adapter) 15 for connecting to the FMPK 50, a memory 12, a CPU 11, and a buffer 26.

ホストコントローラ42a及びホスト計算機41bにおいて、メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。ホストコントローラ42aとホスト計算機41bの夫々は、自身に接続されている複数のFMPK50を用いるRAIDの制御を行っても良い。   In the host controller 42a and the host computer 41b, the memory 12 stores a program for controlling the FMPK 50 and various types of information. The CPU 11 realizes various functions by executing programs based on information stored in the memory 12. Each of the host controller 42a and the host computer 41b may perform RAID control using a plurality of FMPKs 50 connected to itself.

ホストコントローラ42a及びホスト計算機41bの一方は、LAN2を介して他方へIO要求を行っても良いし、自身のFMPK50へIO要求を行っても良い。   One of the host controller 42a and the host computer 41b may make an IO request to the other via the LAN 2, or may make an IO request to its own FMPK 50.

この実施例において、システムコントローラ20は、ホストコントローラ42aとホスト計算機41bの何れの形態であっても良い。   In this embodiment, the system controller 20 may be in any form of the host controller 42a and the host computer 41b.

ホストコントローラ42a及びホスト計算機41bの夫々は、パリティ演算実施装置の決定方法1300におけるケース#3又はケース#4に該当する。   Each of the host controller 42a and the host computer 41b corresponds to case # 3 or case # 4 in the determination method 1300 of the parity operation execution device.

次に、システムコントローラ20がパリティ演算機能を有している場合のストレージシステム30の適用例である、第3計算機システムについて説明する。   Next, a third computer system, which is an application example of the storage system 30 when the system controller 20 has a parity calculation function, will be described.

図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 host computer 41c, a host computer 41d, and a plurality of FMPKs 50 connected to the host computer 41d. The host computer 41c and the host computer 41d are connected via a communication network, for example, LAN2.

ホスト計算機41cは、ホストコントローラ42cと、ホストコントローラ42cに接続されている複数のFMPK50とを有する。ホストコントローラ42cは、ホストコントローラ42aの要素に加えて、パリティ演算回路25を有する。   The host computer 41c has a host controller 42c and a plurality of FMPKs 50 connected to the host controller 42c. The host controller 42c has a parity calculation circuit 25 in addition to the elements of the host controller 42a.

ホスト計算機41dは、ホスト計算機41bの要素に加えて、パリティ演算回路25を有する。   The host computer 41d has a parity calculation circuit 25 in addition to the elements of the host computer 41b.

ホストコントローラ42c及びホスト計算機41dにおいて、メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。ホストコントローラ42cとホスト計算機41dの夫々は、自身に接続されている複数のFMPK50を用いるRAIDの制御を行っても良い。   In the host controller 42c and the host computer 41d, the memory 12 stores a program for controlling the FMPK 50 and various types of information. The CPU 11 realizes various functions by executing programs based on information stored in the memory 12. Each of the host controller 42c and the host computer 41d may perform RAID control using a plurality of FMPKs 50 connected to itself.

ホストコントローラ42c及びホスト計算機41dの一方は、LAN2を介して他方へIO要求を行っても良いし、自身のFMPK50のデバイスコントローラ60へIO要求を行っても良い。   One of the host controller 42c and the host computer 41d may make an IO request to the other via the LAN 2, or may make an IO request to the device controller 60 of its own FMPK 50.

ホストコントローラ42a及びホスト計算機41bの夫々は、パリティ演算実施装置の決定方法1300におけるケース#1又はケース#2に該当する。   Each of the host controller 42a and the host computer 41b corresponds to case # 1 or case # 2 in the determination method 1300 of the parity operation execution device.

この実施例において、システムコントローラ20は、ホストコントローラ42cとホスト計算機41dの何れの形態であっても良い。   In this embodiment, the system controller 20 may be in any form of the host controller 42c and the host computer 41d.

なお、計算機システムは、前述の実施例の何れかの要素の組み合わせであっても良い。また、一つの計算機システム内に、パリティ演算機能を有しているシステムコントローラ20とパリティ演算機能を有していないシステムコントローラ20とが混在していても良い。   Note that the computer system may be a combination of any of the above-described embodiments. Further, a system controller 20 having a parity calculation function and a system controller 20 not having a parity calculation function may be mixed in one computer system.

以上に述べられた各実施例によれば、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。これにより、ストレージシステム30の速度を向上させることができる。データ転送は例えば、データの転送回数や転送量等で表される。   According to each embodiment described above, data transfer between the system controller 20 and the device controller 60 can be suppressed. Thereby, the speed of the storage system 30 can be improved. Data transfer is represented by, for example, the number of data transfers or the transfer amount.

また、以上に述べられた各実施例によれば、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えると共に、デバイスコントローラ60における揮発メモリの使用量を削減することができる。   Further, according to each embodiment described above, data transfer between the system controller 20 and the device controller 60 can be suppressed, and the amount of volatile memory used in the device controller 60 can be reduced.

また、システムコントローラ20の動作における各工程の順序は、交換されることがある。例えば、1402と1403は交換可能である。また、デバイスコントローラ60の動作における各工程の順序は、交換されることがある。例えば、3703と3704は交換可能である。   In addition, the order of each process in the operation of the system controller 20 may be exchanged. For example, 1402 and 1403 are interchangeable. In addition, the order of each step in the operation of the device controller 60 may be exchanged. For example, 3703 and 3704 are interchangeable.

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: Host computer 42a, 42c: Host controller, 50: FMPK (flash memory package) 55: FM (flash memory), 60: device controller, 65: parity operation circuit, 66: buffer

Claims (18)

それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスをRAIDグループとして制御するよう構成されるシステムコントローラと、
を有し、
前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データと前記旧データを更新する新データとを有効な状態に維持したまま、前記旧データと前記新データとに基づき、第1の中間パリティを生成し、
前記システムコントローラは、前記第2の記憶デバイスに、第1の新パリティの生成を指示するために、パリティ更新コマンド及び前記第1の中間パリティを送信し、
前記第2の記憶デバイスの第2のデバイスコントローラは前記パリティ更新コマンドに従って、前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティとに基づき、前記第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 system controller connected to the plurality of storage devices and configured to control the plurality of storage devices as a RAID group, the first storage device storing old data and the second storage device storing old parity When,
Have
The first device controller of the first storage device validates the old data stored in the physical storage area of the plurality of nonvolatile memory chips of the first storage device and new data for updating the old data A first intermediate parity is generated based on the old data and the new data,
The system controller transmits a parity update command and the first intermediate parity to instruct the second storage device to generate a first new 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, Produces
When the system controller receives a completion response to the parity update command from the second storage device, the system controller transmits an invalidation command for invalidating the old data to the first storage device,
The first device controller invalidates the old data upon receipt of the invalidation command.
A system characterized by that.
前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けるページマッピング管理テーブルを有し、
前記第1のデバイスコントローラは、前記ページマッピング管理テーブル上で、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、
前記第1のデバイスコントローラは、
前記第1の記憶デバイスの前記不揮発メモリチップに前記新データを格納する際、前記旧データと前記新データとを有効な状態に維持するために、前記ページマッピング管理テーブル上で前記第1の物理ページの前記第1の論理ページへの関連付けを維持したまま、前記新データが格納され前記第1の物理ページとは異なる第2の物理ページを、前記第1の論理ページへ関連付け、
前記旧データを無効化するために、前記ページマッピング管理テーブルから、前記第1の物理ページの情報を削除する、
ことを特徴とする、請求項1に記載のシステム。
The physical storage area is a physical page of the nonvolatile memory chip, and the first device controller has a page mapping management table that associates the physical page with a logical page,
The first device controller associates a first physical page storing the old data with a first logical page on the page mapping management table,
The first device controller is
When the new data is stored in the nonvolatile memory chip of the first storage device, the first physical data is stored on the page mapping management table in order to maintain the old data and the new data in a valid state. While maintaining the association of the page with the first logical page, the second physical page stored with the new data and different from the first physical page is associated with the first logical page;
Deleting the information of the first physical page from the page mapping management table in order to invalidate the old data;
The system according to claim 1, wherein:
前記第1のデバイスコントローラは、
前記ページマッピング管理テーブルから前記第1の物理ページの情報を削除した後に、前記旧データを削除する、
ことを特徴とする、請求項2記載のシステム。
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 system according to claim 2, wherein:
前記システムコントローラが前記完了応答を前記第2の記憶デバイスから所定時間内に受信しない場合、前記システムは、
前記旧データと前記新データに基づき、前記第1のデバイスコントローラにより第2の中間パリティを生成し、
前記第2の中間パリティを前記第1のデバイスコントローラから前記第2のデバイスコントローラへ転送し、
前記第2の中間パリティと前記旧パリティに基づき、前記第2のデバイスコントローラにより第2の新パリティを生成する、
ことを特徴とする、請求項1記載のシステム。
If the system controller does not receive the completion response from the second storage device within a predetermined time, the system
Generating a second intermediate parity by the first device controller based on the old data and the new data;
Transferring the second intermediate parity from the first device controller to the second device controller;
Generating a second new parity by the second device controller based on the second intermediate parity and the old parity;
The system of claim 1, wherein:
それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスをRAIDグループとして制御するよう構成されるシステムコントローラと、
を有し、
前記第1の記憶デバイスの第1のデバイスコントローラは、
前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納されていた前記旧データを有効な状態に維持したまま、前記システムコントローラから受信する新データを格納し、
前記システムコントローラから受信した前記新データと前記物理記憶領域に格納された前記旧データに基づき、前記第2の記憶デバイスに転送されるべき第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 system controller connected to the plurality of storage devices and configured to control the plurality of storage devices as a RAID group, the first storage device storing old data and the second storage device storing old parity When,
Have
The first device controller of the first storage device is
Storing new data received from the system controller while maintaining the old data stored in the physical storage areas of the plurality of nonvolatile memory chips of the first storage device in a valid state;
Generating a first intermediate parity to be transferred to the second storage device based on the new data received from the system controller and the old data stored in the physical storage area;
The old data transmitted from the system controller after recognizing that the first new parity has been generated based on the old parity and the first intermediate parity stored in the second storage device are invalidated. Invalidating the old data in response to receiving an invalidation command for
A system characterized by that.
前記第2の記憶デバイスは、前記第1の新パリティの生成後に、前記システムコントローラへ完了応答を送信し、
前記システムコントローラは、前記完了応答の受領に応じて、前記第1の記憶デバイスへ前記無効化コマンドを送信する、
ことを特徴とする、請求項5に記載のシステム。
The second storage device transmits a completion response to the system controller after the generation of the first new parity,
The system controller transmits the invalidation command to the first storage device in response to receiving the completion response.
The system according to claim 5, wherein:
前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けるページマッピング管理テーブルを有し、
前記第1のデバイスコントローラは、前記ページマッピング管理テーブル上で、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、
前記第1のデバイスコントローラは、
前記第1の記憶デバイスの前記不揮発メモリチップに前記新データを格納する際、前記旧データと前記新データとを有効な状態に維持するために、前記ページマッピング管理テーブル上で前記第1の物理ページの前記第1の論理ページへの関連付けを維持したまま、前記新データが格納され前記第1の物理ページとは異なる第2の物理ページを、前記第1の論理ページへ関連付け、
前記旧データを無効化するために、前記ページマッピング管理テーブルから、前記第1の物理ページの情報を削除する、
ことを特徴とする、請求項6に記載のシステム。
The physical storage area is a physical page of the nonvolatile memory chip, and the first device controller has a page mapping management table that associates the physical page with a logical page,
The first device controller associates a first physical page storing the old data with a first logical page on the page mapping management table,
The first device controller is
When the new data is stored in the nonvolatile memory chip of the first storage device, the first physical data is stored on the page mapping management table in order to maintain the old data and the new data in a valid state. While maintaining the association of the page with the first logical page, the second physical page stored with the new data and different from the first physical page is associated with the first logical page;
Deleting the information of the first physical page from the page mapping management table in order to invalidate the old data;
The system according to claim 6, wherein:
前記第1のデバイスコントローラは、
前記ページマッピング管理テーブルから前記第1の物理ページの情報を削除した後に、前記旧データを削除する、
ことを特徴とする、請求項7記載のシステム。
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 system according to claim 7, wherein:
前記システムコントローラが前記完了応答を前記第2の記憶デバイスから所定時間内に受信しない場合、前記システムは、
前記旧データと前記新データに基づき、前記第1のデバイスコントローラにより第2の中間パリティを生成し、
前記第2の中間パリティを前記第1のデバイスコントローラから前記第2の記憶デバイスの第2のデバイスコントローラへ転送し、
前記第2の中間パリティと前記旧パリティに基づき、前記第2のデバイスコントローラにより第2の新パリティを生成する、
ことを特徴とする、請求項6記載のシステム。
If the system controller does not receive the completion response from the second storage device within a predetermined time, the system
Generating a second intermediate parity by the first device controller based on the old data and the new data;
Transferring the second intermediate parity from the first device controller to a second device controller of the second storage device;
Generating a second new parity by the second device controller based on the second intermediate parity and the old parity;
The system according to claim 6, wherein:
それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスをRAIDグループとして制御するよう構成されるシステムコントローラと、
を有し、
前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データと前記旧データを更新する新データとを有効な状態に維持したまま、前記旧データと前記新データとに基づき、第1の中間パリティを生成し、
前記第2の記憶デバイスの第2のデバイスコントローラは、
前記第1のデバイスコントローラで生成された前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティに基づき、第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 system controller connected to the plurality of storage devices and configured to control the plurality of storage devices as a RAID group, the first storage device storing old data and the second storage device storing old parity When,
Have
The first device controller of the first storage device validates the old data stored in the physical storage area of the plurality of nonvolatile memory chips of the first storage device and new data for updating the old data A first intermediate parity is generated based on the old data and the new 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,
Sending a completion response from the second storage device to the system controller;
A system characterized by that.
前記システムコントローラは、前記完了応答の受領に応じて、前記第1の記憶デバイスへ前記旧データを無効化するための無効化コマンドを送信し、
前記第1の記憶デバイスは、前記無効化コマンドの受領に応じて前記旧データを無効化する、
ことを特徴とする、請求項10に記載のシステム。
In response to receiving the completion response, the system controller transmits an invalidation command for invalidating the old data to the first storage device,
The first storage device invalidates the old data in response to receipt of the invalidation command;
The system according to claim 10, wherein:
前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けるページマッピング管理テーブルを有し、
前記第1のデバイスコントローラは、前記ページマッピング管理テーブル上で、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、
前記第1のデバイスコントローラは、
前記第1の記憶デバイスの前記不揮発メモリチップに前記新データを格納する際、前記旧データと前記新データとを有効な状態に維持するために、前記ページマッピング管理テーブル上で前記第1の物理ページの前記第1の論理ページへの関連付けを維持したまま、前記新データが格納され前記第1の物理ページとは異なる第2の物理ページを、前記第1の論理ページへ関連付け、
前記旧データを無効化するために、前記ページマッピング管理テーブルから、前記第1の物理ページの情報を削除する、
ことを特徴とする、請求項11に記載のシステム。
The physical storage area is a physical page of the nonvolatile memory chip, and the first device controller has a page mapping management table that associates the physical page with a logical page,
The first device controller associates a first physical page storing the old data with a first logical page on the page mapping management table,
The first device controller is
When the new data is stored in the nonvolatile memory chip of the first storage device, the first physical is stored on the page mapping management table in order to maintain the old data and the new data in a valid state. While maintaining the association of the page with the first logical page, the second physical page stored with the new data and different from the first physical page is associated with the first logical page;
Deleting the information of the first physical page from the page mapping management table in order to invalidate the old data;
The system according to claim 11, wherein:
前記第1のデバイスコントローラは、
前記ページマッピング管理テーブルから前記第1の物理ページの情報を削除した後に、前記旧データを削除する、
ことを特徴とする、請求項12記載のシステム。
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 system according to claim 12, wherein:
前記システムコントローラが前記完了応答を前記第2の記憶デバイスから所定時間内に受信しない場合、前記システムは、
前記旧データと前記新データに基づき、前記第1のデバイスコントローラにより第2の中間パリティを生成し、
前記第2の中間パリティを前記第1のデバイスコントローラから前記第2のデバイスコントローラへ転送し、
前記第2の中間パリティと前記旧パリティに基づき、前記第2のデバイスコントローラにより第2の新パリティを生成する、
ことを特徴とする、請求項11記載のシステム。
If the system controller does not receive the completion response from the second storage device within a predetermined time, the system
Generating a second intermediate parity by the first device controller based on the old data and the new data;
Transferring the second intermediate parity from the first device controller to the second device controller;
Generating a second new parity by the second device controller based on the second intermediate parity and the old parity;
The system according to claim 11, wherein:
それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスをRAIDグループとして制御するよう構成されるシステムコントローラと、
を有し、
前記システムコントローラまたは前記複数の記憶デバイスは、パリティを生成するパリティ演算部を有し、
前記第1の記憶デバイス及び前記第2の記憶デバイスがパリティ演算部を有する場合、
前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データと前記旧データを更新する新データとを有効な状態に維持したまま、前記旧データと前記新データとに基づき第1の中間パリティを生成し、
前記システムコントローラは、前記第2の記憶デバイスに、第1の新パリティの生成を指示するために、パリティ更新コマンド及び前記第1の中間パリティを送信し、
前記第2の記憶デバイスの第2のデバイスコントローラは前記パリティ更新コマンドに従って、前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティとに基づき、前記第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 system controller connected to the plurality of storage devices and configured to control the plurality of storage devices as a RAID group, the first storage device storing old data and the second storage device storing old parity When,
Have
The system controller or the plurality of storage devices have 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 validates the old data stored in the physical storage area of the plurality of nonvolatile memory chips of the first storage device and new data for updating the old data A first intermediate parity is generated based on the old data and the new data,
The system controller transmits a parity update command and the first intermediate parity to instruct the second storage device to generate a first new 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, Produces
When the system controller receives a completion response to the parity update command from the second storage device, the system controller transmits an invalidation command for invalidating 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 system controller has the parity operation unit,
The system controller generates a third new parity;
A system characterized by that.
前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けるページマッピング管理テーブルを有し、
前記第1のデバイスコントローラは、前記ページマッピング管理テーブル上で、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、
前記第1のデバイスコントローラは、
前記第1の記憶デバイスの前記不揮発メモリチップに前記新データを格納する際、前記旧データと前記新データとを有効な状態に維持するために、前記ページマッピング管理テーブル上で前記第1の物理ページの前記第1の論理ページへの関連付けを維持したまま、前記新データが格納され前記第1の物理ページとは異なる第2の物理ページを、前記第1の論理ページへ関連付け、
前記旧データを無効化するために、前記ページマッピング管理テーブルから、前記第1の物理ページの情報を削除する、
ことを特徴とする、請求項15に記載のシステム。
The physical storage area is a physical page of the nonvolatile memory chip, and the first device controller has a page mapping management table that associates the physical page with a logical page,
The first device controller associates a first physical page storing the old data with a first logical page on the page mapping management table,
The first device controller is
When the new data is stored in the nonvolatile memory chip of the first storage device, the first physical data is stored on the page mapping management table in order to maintain the old data and the new data in a valid state. While maintaining the association of the page with the first logical page, the second physical page stored with the new data and different from the first physical page is associated with the first logical page;
Deleting the information of the first physical page from the page mapping management table in order to invalidate the old data;
The system according to claim 15, wherein:
前記第1のデバイスコントローラは、
前記ページマッピング管理テーブルから前記第1の物理ページの情報を削除した後に、前記旧データを削除する、
ことを特徴とする、請求項16記載のシステム。
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 system of claim 16, wherein:
前記システムコントローラが前記完了応答を前記第2の記憶デバイスから所定時間内に受信しない場合、前記システムは、
前記第1のデバイスコントローラにより、前記旧データと前記新データとから第2の中間パリティを生成し、
前記第2の中間パリティを前記第1のデバイスコントローラから前記第2のデバイスコントローラへ転送し、
前記第2のデバイスコントローラにより、前記第2の中間パリティと前記旧パリティとから第2の新パリティを生成する、
ことを特徴とする、請求項15記載のシステム。
If the system controller does not receive the completion response from the second storage device within a predetermined time, the system
The first device controller generates a second intermediate parity from the old data and the new data,
Transferring the second intermediate parity from the first device controller to the second device controller;
A second new parity is generated from the second intermediate parity and the old parity by the second device controller;
The system according to claim 15, wherein:
JP2016095199A 2016-05-11 2016-05-11 Storage system Expired - Fee Related JP6163588B2 (en)

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 true JP2016194928A (en) 2016-11-17
JP6163588B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2018179073A1 (en) * 2017-03-28 2019-07-11 株式会社日立製作所 Storage system, computer readable recording medium, control method of system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07261946A (en) * 1994-03-22 1995-10-13 Hitachi Ltd Array type storage device
JP2005517260A (en) * 2002-02-06 2005-06-09 サンディスク コーポレイション Memory mapping device using sector pointer
JP2008159013A (en) * 2006-11-28 2008-07-10 Hitachi Ltd Semiconductor memory device
JP2009223367A (en) * 2008-03-13 2009-10-01 Fujitsu Ltd Control method and disk array device
JP2010015516A (en) * 2008-07-07 2010-01-21 Toshiba Corp Data controller, storage system, and program

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07261946A (en) * 1994-03-22 1995-10-13 Hitachi Ltd Array type storage device
JP2005517260A (en) * 2002-02-06 2005-06-09 サンディスク コーポレイション Memory mapping device using sector pointer
JP2008159013A (en) * 2006-11-28 2008-07-10 Hitachi Ltd Semiconductor memory device
JP2009223367A (en) * 2008-03-13 2009-10-01 Fujitsu Ltd Control method and disk array device
JP2010015516A (en) * 2008-07-07 2010-01-21 Toshiba Corp Data controller, storage system, and program

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2018179073A1 (en) * 2017-03-28 2019-07-11 株式会社日立製作所 Storage system, computer readable recording medium, control method of system
US11150846B2 (en) 2017-03-28 2021-10-19 Hitachi, Ltd. Storage system, computer-readable recording medium, and control method for system that reconstructs and distributes data

Also Published As

Publication number Publication date
JP6163588B2 (en) 2017-07-12

Similar Documents

Publication Publication Date Title
JP5937697B2 (en) Storage system
US9483404B2 (en) Write admittance policy for a memory cache
US9262265B2 (en) Storage system and storage control apparatus
US10133663B2 (en) Systems and methods for persistent address space management
US9292431B2 (en) Allocating storage using calculated physical storage capacity
JP6007332B2 (en) Storage system and data write method
JP6328335B2 (en) Storage apparatus and control method thereof
US20150212752A1 (en) Storage system redundant array of solid state disk array
US9606734B2 (en) Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays
WO2015114744A1 (en) Storage device
JP6062060B2 (en) Storage device, storage system, and storage device control method
JP6677740B2 (en) Storage system
CN112346658A (en) Increasing data heat trace resolution in storage devices with cache architectures
JP6163588B2 (en) Storage system
JP6817340B2 (en) calculator
US8935488B2 (en) Storage system and storage control method
KR20210142863A (en) Apparatus and method for increasing operation efficiency in a memory system
US11221790B2 (en) Storage system
JP6605762B2 (en) Device for restoring data lost due to storage drive failure

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