JP2007087062A - Array type storage device - Google Patents

Array type storage device Download PDF

Info

Publication number
JP2007087062A
JP2007087062A JP2005274413A JP2005274413A JP2007087062A JP 2007087062 A JP2007087062 A JP 2007087062A JP 2005274413 A JP2005274413 A JP 2005274413A JP 2005274413 A JP2005274413 A JP 2005274413A JP 2007087062 A JP2007087062 A JP 2007087062A
Authority
JP
Japan
Prior art keywords
data
storage
array
unit
write
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.)
Pending
Application number
JP2005274413A
Other languages
Japanese (ja)
Inventor
智行 ▲高▼田
Satoyuki Takada
Noriyuki Suzuki
範之 鈴木
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2005274413A priority Critical patent/JP2007087062A/en
Publication of JP2007087062A publication Critical patent/JP2007087062A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1061Parity-single bit-RAID4, i.e. RAID 4 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide an array type storage device, in which data writing speed can be improved in writing data to a storage device array comprising a RAID 4 or RAID 5. <P>SOLUTION: An array controller 20 refers to a data storage status table storing data storage status information showing storage of data for each block in association with each of stripes containing a plurality of blocks configured on a disk array 300, and assigns a block contained in a stripe in which data is not stored in all blocks as a storage area for writing data. The array controller 200 generates parity data corresponding to the writing data, and assigns, as an area for the parity data, another block of a stripe containing a block assigned as an area for writing the writing data. <P>COPYRIGHT: (C)2007,JPO&INPIT

Description

本発明は、複数の記憶装置がアレイ化されている記憶装置アレイを有し、外部装置から受領した命令に応じて記憶装置アレイへのアクセスを制御するアレイ型記憶装置に関する。   The present invention relates to an array type storage device that has a storage device array in which a plurality of storage devices are arrayed and controls access to the storage device array in accordance with an instruction received from an external device.

近年、情報機器の処理能力の向上、および通信ネットワークの広帯域化に伴い、動画、静止画などの大容量のマルチメディアデータが取り扱われるようになっている。このようなマルチメディアデータの蓄積に好適なストレージとして、高速、大容量で、かつ高い信頼性を有するストレージが要求されている。特に、広帯域ネットワークを介した高品位動画配信を扱う市場は、今後、急速な拡大が強く見込まれており、マルチメディアデータの蓄積に好適なストレージソリューションの提供は、急務である。   2. Description of the Related Art In recent years, large-capacity multimedia data such as moving images and still images have been handled with the improvement of processing capability of information devices and the widening of communication networks. As a storage suitable for storing such multimedia data, a storage having high speed, large capacity, and high reliability is required. In particular, the market dealing with high-definition video distribution via broadband networks is expected to rapidly expand in the future, and it is an urgent need to provide a storage solution suitable for storing multimedia data.

高速、大容量、高信頼性のストレージを実現する技術のひとつとして、D. Pattersonなどにより提案されたRAIDが広く知られている(例えば非特許文献1参照)。   As one of technologies for realizing high-speed, large-capacity, and high-reliability storage, RAID proposed by D. Patterson and the like is widely known (for example, see Non-Patent Document 1).

上記文献では、RAIDレベル4(以下、RAID4という)またはRAIDレベル5(以下、RAID5という)として、データを複数のブロックに分割し、上記複数のブロックに分割したデータからパリティデータを生成する。そして、上記複数のブロックに分割したデータと上記パリティデータを複数のディスク装置に分散して格納することにより、冗長性を確保しながら、容量的に効率よくデータを格納する方法が提案されている。   In the above-mentioned document, data is divided into a plurality of blocks at RAID level 4 (hereinafter referred to as RAID 4) or RAID level 5 (hereinafter referred to as RAID 5), and parity data is generated from the data divided into the plurality of blocks. A method of storing data efficiently in terms of capacity while ensuring redundancy is proposed by distributing and storing the data divided into the plurality of blocks and the parity data in a plurality of disk devices. .

RAID4またはRAID5にて構成されたディスクアレイに新しいデータを書き込むとき、リードモディファイライト動作を行う。すなわち、(1)新データの書き込み先ブロックに現在、記録されている旧データと、上記新データの書き込み先ブロックに対応するパリティブロックに現在記録されている旧パリティデータを読み出す。(2)上記新データと上記旧データと上記旧パリティデータの排他的論理和を取ることにより、新パリティデータを計算する。(3)新データと新パリティデータをそれぞれの書き込み先ブロックに書き込む、という動作が行われる。すなわち、新しいデータを書き込むために、2回の読み出し処理が必要である。   When new data is written to a disk array configured with RAID 4 or RAID 5, a read-modify-write operation is performed. That is, (1) the old data currently recorded in the new data write destination block and the old parity data currently recorded in the parity block corresponding to the new data write destination block are read. (2) The new parity data is calculated by taking an exclusive OR of the new data, the old data, and the old parity data. (3) The operation of writing new data and new parity data in the respective write destination blocks is performed. That is, in order to write new data, two reading processes are required.

また、データ書き込み速度の向上を図るためのディスクアレイ装置が提案されている(特許文献1参照)。このディスクアレイ装置は、ディスクアレイを構成する各ブロックの使用状態を記憶する使用状態記憶部を有する。このディスクアレイ装置は、データを書き込むときに、上記使用状態記憶部を参照し、データの書き込み先ブロックが未使用である場合、上記データの書き込み先ブロックからの読み出し処理を省略してパリティデータを生成する。これにより、ライトペナルティが低減され、データ書き込み速度の向上が図られる。
特開平6−75708号公報 D. Patterson et al. A Case for Redundant Arrays of Inexpensive Disks (RAID), inACM, SIGMOD Conference, Chicago, IL, June 1988
Further, a disk array device for improving the data writing speed has been proposed (see Patent Document 1). This disk array device has a use state storage unit for storing the use state of each block constituting the disk array. When writing data, the disk array device refers to the use state storage unit, and when the data write destination block is unused, the read processing from the data write destination block is omitted and the parity data is stored. Generate. As a result, the write penalty is reduced and the data writing speed is improved.
JP-A-6-75708 D. Patterson et al. A Case for Redundant Arrays of Inexpensive Disks (RAID), inACM, SIGMOD Conference, Chicago, IL, June 1988

しかしながら、上述した従来の技術においては、RAID4またはRAID5にて構成されたディスクアレイにデータを書き込むとき、リードモディファイライト動作のために、書き込み速度が著しく低下する、いわゆるライトペナルティが発生する。   However, in the above-described conventional technology, when data is written to a disk array configured with RAID 4 or RAID 5, a so-called write penalty occurs in which the writing speed is remarkably reduced due to a read-modify-write operation.

また、上述したディスクアレイ装置においては、データの書き込み先ブロックが未使用である場合、上記データの書き込み先ブロックからの読み出し処理を省略してパリティデータを生成することにより、ライトペナルティが低減される。しかしながら、データ書き込み先ブロックに既にデータが格納されている場合、またはデータ書き込み先ブロックを含むストライプの少なくとも1つのブロックに既にデータが格納されている場合、依然、ライトペナルティが発生する。よって、このディスクアレイ装置は、あらゆる場合に対応して、データ書き込み速度の向上を図ることはできない。   In the disk array device described above, when the data write destination block is unused, the write penalty is reduced by generating the parity data by omitting the read process from the data write destination block. . However, when data is already stored in the data write destination block, or when data is already stored in at least one block of the stripe including the data write destination block, a write penalty still occurs. Therefore, this disk array device cannot improve the data writing speed in all cases.

本発明の目的は、RAID4またはRAID5により構成された記憶装置アレイへのデータ書き込みにおいて、データ書き込み速度を向上させることができるアレイ型記憶装置を提供することにある。   An object of the present invention is to provide an array type storage device capable of improving the data writing speed in data writing to a storage device array constituted by RAID4 or RAID5.

本発明は、上記目的を達成するため、複数の記憶装置がアレイ化されている記憶装置アレイを有し、外部装置から受領した命令に応じて前記記憶装置アレイへのアクセスを制御するアレイ型記憶装置であって、前記記憶装置アレイ上に構成される複数の記憶単位を含む冗長グループのそれぞれに対応付けて、記憶単位毎のデータ格納の有無を示すデータ格納状態情報を記憶するデータ格納状態情報記憶手段と、前記データ格納状態情報記憶手段を参照し、書き込みデータの記憶領域となる記憶単位の割り当てと、該書き込みデータに対応する冗長データの記憶領域となる記憶単位の割り当てとを行う記憶領域割り当て手段と、前記書き込みデータに対応する冗長データを生成する冗長データ生成手段と、前記書き込みデータと上記冗長データとをそれぞれ対応する前記記憶領域割り当て手段により割り当てられた記憶単位に書き込む手段とを備え、前記記憶領域割り当て手段は、書き込みデータの記憶領域として、全ての記憶単位にデータが格納されていない冗長グループに含まれる記憶単位を割り当て、前記冗長データを書き込む領域として、前記書き込みデータを書き込む領域として割り当てられた記憶単位を含む冗長グループの他の記憶単位を割り当てることを特徴とするアレイ型記憶装置を提供する。   In order to achieve the above object, the present invention has an array type storage that has a storage device array in which a plurality of storage devices are arrayed and controls access to the storage device array in accordance with an instruction received from an external device. Data storage status information for storing data storage status information indicating presence or absence of data storage for each storage unit in association with each of redundancy groups including a plurality of storage units configured on the storage device array A storage area that refers to the storage means and the data storage state information storage means, and performs storage unit allocation as a storage area for write data and storage unit allocation as a redundant data storage area corresponding to the write data Allocating means, redundant data generating means for generating redundant data corresponding to the write data, the write data and the redundant data For each of the storage units allocated by the corresponding storage area allocation unit, the storage area allocation unit as a storage area for the write data in a redundant group in which no data is stored in all the storage units. Provided is an array type storage device in which a storage unit is allocated and another storage unit including a storage unit assigned as an area for writing the write data is assigned as an area for writing the redundant data. .

本発明によれば、RAID4またはRAID5により構成された記憶装置アレイへのデータ書き込みにおいて、リードモディファイライト動作が発生せず、ライトペナルティの発生を解消することができ、データ書き込み速度を向上させることができる。   According to the present invention, a read-modify-write operation does not occur when data is written to a storage device array configured by RAID 4 or RAID 5, the occurrence of a write penalty can be eliminated, and the data writing speed can be improved. it can.

以下、本発明の実施の形態について図面を参照しながら説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

(第1の実施の形態)
図1は本発明の第1の実施の形態に係るディスクアレイ装置の構成を示すブロック図である。
(First embodiment)
FIG. 1 is a block diagram showing the configuration of the disk array device according to the first embodiment of the present invention.

ディスクアレイ装置は、図1に示すように、ホスト装置100、アレイコントローラ200、およびディスクアレイ(記憶装置アレイ)300を備える。ホスト装置100は、CPU101、ROM102、RAM103、および記憶装置I/F(インタフェース)回路104を有する。アレイコントローラ200は、MPU201、ROM202、RAM203、パリティー演算回路204、ホスト装置I/F回路205、およびハードディスクドライブI/F回路(HDD I/F回路)206〜209を有する。ディスクアレイ300は、RAID4またはRAID5を実現可能なに構成された複数のハードディスクドライブ(以下、HDD)301〜304からなる。   As shown in FIG. 1, the disk array device includes a host device 100, an array controller 200, and a disk array (storage device array) 300. The host device 100 includes a CPU 101, a ROM 102, a RAM 103, and a storage device I / F (interface) circuit 104. The array controller 200 includes an MPU 201, a ROM 202, a RAM 203, a parity operation circuit 204, a host device I / F circuit 205, and hard disk drive I / F circuits (HDD I / F circuits) 206 to 209. The disk array 300 includes a plurality of hard disk drives (hereinafter referred to as HDDs) 301 to 304 configured to be able to implement RAID4 or RAID5.

なお、本実施の形態においては、ディスクアレイを構成する記憶装置をHDDとした形態を説明するが、ディスクアレイを構成する記憶装置は、HDDに限定されることはない。光ディスクドライブ、光磁気ディスクドライブ、さらには半導体記憶装置など、他の種類の記憶装置でもよい。   In the present embodiment, a description will be given of an embodiment in which the storage device constituting the disk array is an HDD, but the storage device constituting the disk array is not limited to the HDD. Other types of storage devices such as optical disk drives, magneto-optical disk drives, and semiconductor storage devices may be used.

ホスト装置100は、アレイコントローラ200にディスクアレイ300のコンフィグレーションに関する命令、ディスクアレイ300へ/からのデータの書き込み/読み出しに関する命令を発行する。また、アレイコントローラ200にディスクアレイ300への書き込みデータを転送する。   The host apparatus 100 issues to the array controller 200 an instruction related to the configuration of the disk array 300 and an instruction related to writing / reading data to / from the disk array 300. Also, write data to the disk array 300 is transferred to the array controller 200.

アレイコントローラ200は、ホスト装置100からの命令を受領すると、それを解釈して、ディスクアレイ300のコンフィグレーション、ディスクアレイ300へ/からのデータの書き込み/読み出しを行う。アレイコントローラ200は、ホスト装置100からディスクアレイ300へのデータ書き込み命令と書き込みデータを受領すると、上記受領した書き込みデータをディスクアレイ300の構成に基づいて再構成し、上記再構成されたデータに対してパリティデータを生成する。そして、アレイコントローラ200は、ディスクアレイ300を構成するHDD301〜304の一部または全部にデータ書き込み命令を発行して、上記再構成されたデータと上記パリティデータとを分散して書き込む。   When the array controller 200 receives a command from the host device 100, the array controller 200 interprets the command and configures the disk array 300 and writes / reads data to / from the disk array 300. When the array controller 200 receives a data write command and write data from the host device 100 to the disk array 300, the array controller 200 reconfigures the received write data based on the configuration of the disk array 300, and performs the reconfiguration on the reconfigured data. To generate parity data. Then, the array controller 200 issues a data write command to some or all of the HDDs 301 to 304 constituting the disk array 300, and writes the reconfigured data and the parity data in a distributed manner.

また、アレイコントローラ200は、ホスト装置100からディスクアレイ300からのデータ読み出し命令を受領すると、ディスクアレイ300を構成するHDD301〜304の一部または全部にデータ読み出し命令を発行して、データを読み出す。この読み出したデータは、ディスクアレイ300の構成に基づいて再構成され、ホスト装置100に転送される。   When the array controller 200 receives a data read command from the disk array 300 from the host device 100, the array controller 200 issues a data read command to some or all of the HDDs 301 to 304 constituting the disk array 300 to read data. The read data is reconfigured based on the configuration of the disk array 300 and transferred to the host device 100.

各HDD301〜304は、アレイコントローラ200からデータ書き込み命令と書き込みデータを受領すると、この受領した書き込みデータを磁気ディスク記録媒体に記録する。また、各HDD301〜304は、アレイコントローラ200からデータ読み出し命令を受領すると、磁気ディスク記録媒体からデータを再生し、この再生されたデータをアレイコントローラ200に転送する。   Upon receiving a data write command and write data from the array controller 200, each of the HDDs 301 to 304 records the received write data on a magnetic disk recording medium. Further, upon receiving a data read command from the array controller 200, each of the HDDs 301 to 304 reproduces data from the magnetic disk recording medium, and transfers the reproduced data to the array controller 200.

次に、本実施の形態のディスクアレイ装置の特徴的な動作について図2を参照しながら説明する。図2は図1のディスクアレイ装置において、ディスクアレイ300へデータを書き込むときのアレイコントローラ200の動作手順を示すフローチャートである。この図2のフローチャートに示す手順は、アレイコントローラ200のMPU201により実行されるものである。   Next, a characteristic operation of the disk array device according to the present embodiment will be described with reference to FIG. FIG. 2 is a flowchart showing an operation procedure of the array controller 200 when writing data to the disk array 300 in the disk array apparatus of FIG. The procedure shown in the flowchart of FIG. 2 is executed by the MPU 201 of the array controller 200.

アレイコントローラ200は、図2に示すように、ステップS201において、ホスト装置100からデータ書き込み命令と書き込みデータを受領すると、ステップS202で、上記受領した書き込みデータをディスクアレイ300の構成に基づいて再構成する。そして、後述の方法で、上記再構成したデータと上記再構成したデータから生成されるパリティデータに対してディスクアレイ300上のブロックを割り当て、上記再構成したデータからパリティデータを生成する。そして、アレイコントローラ200は、ステップS203において、上記割り当てたブロックに上記再構成したデータと上記パリティデータを書き込む。   As shown in FIG. 2, when the array controller 200 receives a data write command and write data from the host device 100 in step S201, the array controller 200 reconfigures the received write data based on the configuration of the disk array 300 in step S202. To do. Then, a block on the disk array 300 is assigned to the reconstructed data and the parity data generated from the reconstructed data by a method described later, and parity data is generated from the reconstructed data. In step S203, the array controller 200 writes the reconstructed data and the parity data in the allocated block.

次に、上記再構成したデータと上記パリティデータにディスクアレイ300上のブロックを割り当て、上記パリティデータを生成する方法について図3〜図8を参照しながら説明する。図3は図2のステップS202のブロック割り当て・パリティデータ生成処理の手順を示すフローチャート、図4はフォーマット時のディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図、図5はホスト装置からLBA=L0〜L1に2ブロック分のサイズを有するデータD0〜D1の書き込み命令が発行されたきのディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図、図6は図5の状態においてホスト装置からLBA=L2への1ブロック分のサイズを有するデータD2の書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図、図7は図6の状態においてホスト装置からLBA=L3〜L6への4ブロック分のサイズを有するデータD3〜D6の書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図、図8は図7の状態においてホスト装置からLBA=L2への1ブロック分のサイズを有するデータD7の書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。ここでは、ディスクアレイ300は、RAID5により構成されているものとして説明するが、RAID4により構成されていても本発明は適用可能である。また、HDDの台数は4台に限定されることはない。   Next, a method for allocating blocks on the disk array 300 to the reconstructed data and the parity data and generating the parity data will be described with reference to FIGS. 3 is a flowchart showing the procedure of block allocation / parity data generation processing in step S202 of FIG. 2, and FIG. 4 is a disk array at the time of formatting, a data storage state table, and an LBA-disk array block conversion table. FIG. 5 shows a disk array, a data storage state table, and an LBA-disk array when a write command for data D0 to D1 having a size of 2 blocks is issued from the host device to LBA = L0 to L1. FIG. 6 is a diagram showing each state of the block conversion table. FIG. 6 shows a disk array when a write command for data D2 having a size of one block from the host device to LBA = L2 is issued in the state of FIG. , Data storage state table, and LBA-disk array block FIG. 7 is a diagram showing the state of each conversion table. FIG. 7 shows a state where a write command for data D3 to D6 having a size of 4 blocks from the host device to LBA = L3 to L6 is issued in the state of FIG. FIG. 8 is a diagram showing the status of each of the disk array, data storage status table, and LBA-disk array block conversion table, and FIG. 8 is the size of one block from the host device to LBA = L2 in the status of FIG. FIG. 7 is a diagram showing a state of each of a disk array, a data storage state table, and an LBA-disk array / block conversion table when a write command for data D7 having a data is issued. Here, the disk array 300 will be described as being configured by RAID 5, but the present invention is applicable even if it is configured by RAID 4. Further, the number of HDDs is not limited to four.

アレイコントローラ200は、電源投入時に、図4(a),(b)に示すようなデータ格納状態テーブル(以下、格納状態テーブル)203a、およびLBA−ディスクアレイ・ブロック変換テーブル(以下、変換テーブル)203bをHDD301〜304またはその他の不揮発性記憶媒体から読み出し、RAM203上に展開する。格納状態テーブル203aは、ブロックにデータが格納されているか否かの情報を保持するビットマップテーブルである。変換テーブル203bは、ホスト装置100が認識する論理アドレス(以下、LBA)と、ディスクアレイ300上のブロック位置との対応を示す情報を保持するテーブルである。   When the array controller 200 is turned on, the data storage state table (hereinafter referred to as storage state table) 203a and the LBA-disk array block conversion table (hereinafter referred to as conversion table) as shown in FIGS. 203b is read from the HDDs 301 to 304 or other non-volatile storage media and expanded on the RAM 203. The storage state table 203a is a bitmap table that holds information indicating whether data is stored in a block. The conversion table 203b is a table that holds information indicating a correspondence between a logical address (hereinafter referred to as LBA) recognized by the host apparatus 100 and a block position on the disk array 300.

アレイコントローラ200は、図3に示すように、まずステップS301において、格納状態テーブル203aを参照して、いずれのブロックにもデータが格納されていないストライプを探し出す。続くステップS302において、格納状態テーブル203aと変換テーブル203bを更新することによって、上記再構成したデータと上記パリティデータにディスクアレイ300上のブロックを割り当てる。ここで、RAM203上で更新された格納状態テーブル203aと変換テーブル203bは、例えば、電源遮断時など、任意のタイミングで、HDD301〜304またはその他の不揮発性記憶媒体に複写される。そして、アレイコントローラ200は、ステップS303において、パリティー演算回路204により上記再構成したデータから上記パリティデータを生成する。   As shown in FIG. 3, first, the array controller 200 refers to the storage state table 203a in step S301 to search for a stripe in which no data is stored in any block. In subsequent step S302, the storage state table 203a and the conversion table 203b are updated to allocate blocks on the disk array 300 to the reconstructed data and the parity data. Here, the storage state table 203a and the conversion table 203b updated on the RAM 203 are copied to the HDDs 301 to 304 or other nonvolatile storage medium at an arbitrary timing, for example, when the power is shut off. In step S303, the array controller 200 generates the parity data from the data reconstructed by the parity calculation circuit 204.

具体的には、ディスクアレイ300がフォーマットされると、図4(a)に示すような状態になる。この状態は、ディスクアレイ300にデータが格納されていない状態であるので、格納状態テーブル203aは、図4(b)に示すように、それぞれのブロックに対応する全てのビットに対して、データが格納されていないことを示す「0」が書き込まれている。また、変換テーブル203bには、図4(c)に示すように、有効な情報が書き込まれていない。   Specifically, when the disk array 300 is formatted, the state shown in FIG. Since this state is a state in which no data is stored in the disk array 300, the storage state table 203a stores data for all bits corresponding to each block, as shown in FIG. “0” indicating that the data is not stored is written. Further, as shown in FIG. 4C, valid information is not written in the conversion table 203b.

図4のフォーマットされた状態において、ホスト装置100から、LBA=L0〜L1への2ブロック分のサイズを有するデータD0〜D1の書き込み命令が発行されると、ディスクアレイは、図5(a)に示す状態になる。ここでは、本発明の理解を容易にするために、ホスト装置100が管理するデータクラスタサイズとディスクアレイ300のブロックサイズとが等しいものとして説明するが、もちろんこれらが異なる場合でもよい。また、格納状態テーブル203aと変換テーブル203bのそれぞれのフォーマットが図示するものに限定されることはない。さらには、テーブルの構成が図示するものに限定されることはない。   In the formatted state of FIG. 4, when a write command for data D0 to D1 having a size of two blocks to LBA = L0 to L1 is issued from the host device 100, the disk array is transferred to FIG. It will be in the state shown in. Here, in order to facilitate understanding of the present invention, the data cluster size managed by the host apparatus 100 and the block size of the disk array 300 are described as being equal, but of course, they may be different. Further, the formats of the storage state table 203a and the conversion table 203b are not limited to those shown in the figure. Furthermore, the configuration of the table is not limited to that illustrated.

アレイコントローラ200は、上記書き込み命令を受領すると、格納状態テーブル203aを参照して、2ブロック分のデータが格納可能な、いずれのブロックにもデータが格納されていないストライプとしてストライプS0を探し出す。そして、ストライプS0において、2ブロック分の領域としてHDD301〜302を選択する。ここで、ストライプS0に対するパリティデータP0に対しては、RAID5のフォーマットに従って自動的にHDD304が選択される。次いで、格納状態テーブル203a上の上記選択領域に対応するビット(ストライプ番号,HDD番号)=(S0,301)、(S0,302)が「1」に書き換えられる。また、変換テーブル203bに対して、ホスト装置100が認識するLBAとディスクアレイ300上のブロック位置との対応、すなわち(LBA,HDD番号,ストライプ番号)=(L0,301,S0)、(L1,302、S0)が書き加えられる。このようにして、ホスト装置100から受領したデータD0〜D1とパリティデータP0に対してディスクアレイ300のブロックが割り当てられる。   When the array controller 200 receives the write command, the array controller 200 refers to the storage state table 203a to find the stripe S0 as a stripe in which data for two blocks can be stored and no data is stored in any block. In the stripe S0, the HDDs 301 to 302 are selected as areas for two blocks. Here, for the parity data P0 for the stripe S0, the HDD 304 is automatically selected according to the RAID5 format. Next, bits (strip number, HDD number) = (S0, 301) and (S0, 302) corresponding to the selected area on the storage state table 203a are rewritten to “1”. Also, for the conversion table 203b, the correspondence between the LBA recognized by the host device 100 and the block position on the disk array 300, that is, (LBA, HDD number, stripe number) = (L0, 301, S0), (L1, 302, S0) is added. In this way, blocks of the disk array 300 are allocated to the data D0 to D1 and the parity data P0 received from the host device 100.

次いで、パリティデータP0が
P0=D0 xor D1
に基づいて生成され、生成されたパリティデータP0は、データD0およびD1とともに、それぞれに割り当てられたブロックに書き込まれる。
Next, the parity data P0 is P0 = D0 xor D1
The generated parity data P0 is written together with the data D0 and D1 to the blocks assigned to them.

この図5(a)に示す状態において、ホスト装置100から、LBA=L2への1ブロック分のサイズを有するデータD2の書き込み命令が発行されると、ディスクアレイ300は、図6(a)に示す状態になる。   In the state shown in FIG. 5A, when a write command for data D2 having a size of one block to LBA = L2 is issued from the host device 100, the disk array 300 is transferred to FIG. 6A. It will be in the state shown.

アレイコントローラ200は、上記書き込み命令を受領すると、格納状態テーブル203aを参照して、1ブロック分のデータが格納可能な、いずれのブロックにもデータが格納されていないストライプとしてストライプS1を探し出す。ストライプS1において、1ブロック分の領域としてHDD301を選択する。このストライプS1に対するパリティデータP1に対しては、RAID5のフォーマットに従って自動的にHDD303が選択される。そして、図5(b)に示すように、格納状態テーブル203a上の上記選択領域に対応するビット(ストライプ番号,HDD番号)=(S1,301)が「1」に書き換えられる。また、図5(c)に示すように、変換テーブル203bに対して、ホスト装置100の認識するLBAとディスクアレイ300上のブロック位置との対応、すなわち(LBA,HDD番号,ストライプ番号)=(L2,301,S1)が書き加えられる。このようにして、ホスト装置100から受領したデータD2とパリティデータP1に対して、ディスクアレイ300のブロックが割り当てられる。   When the array controller 200 receives the write command, the array controller 200 refers to the storage state table 203a and searches for the stripe S1 as a stripe in which data for one block can be stored and no data is stored in any block. In the stripe S1, the HDD 301 is selected as an area for one block. For the parity data P1 for the stripe S1, the HDD 303 is automatically selected according to the RAID5 format. Then, as shown in FIG. 5B, the bit (stripe number, HDD number) = (S1, 301) corresponding to the selected area on the storage state table 203a is rewritten to “1”. Further, as shown in FIG. 5C, for the conversion table 203b, the correspondence between the LBA recognized by the host device 100 and the block position on the disk array 300, that is, (LBA, HDD number, stripe number) = ( L2, 301, S1) is added. In this way, blocks of the disk array 300 are allocated to the data D2 and parity data P1 received from the host device 100.

次いで、パリティデータP1が、
P1=D2
に基づいて生成され、生成されたパリティデータP1は、データD2とともに、それぞれに割り当てられたブロックに書き込まれる。
Next, the parity data P1 is
P1 = D2
The generated parity data P1 is written to the blocks allocated to the data D2 together with the data D2.

図6の状態において、ホスト装置100からLBA=L3〜L6への4ブロック分のサイズを有するデータD3〜D6の書き込み命令が発行されると、ディスクアレイ300は、図7(a)に示す状態になる。   In the state of FIG. 6, when a write command for data D3 to D6 having a size of 4 blocks from the host device 100 to LBA = L3 to L6 is issued, the disk array 300 is in the state shown in FIG. become.

アレイコントローラ200は、上記書き込み命令を受領すると、格納状態テーブル203aを参照して、4ブロック分のデータが格納可能な、いずれのブロックにもデータが格納されていないストライプとしてストライプS2とS3を探し出す。そして、アレイコントローラ200は、ストライプS2において、3ブロック分の領域としてHDD301とHDD303,304を選択し、ストライプS3において、1ブロック分の領域としてHDD302を選択する。ここで、ストライプS2に対するパリティデータP2に対しては、RAID5のフォーマットに従って自動的にHDD302が選択される。また、ストライプS3に対するパリティデータP3に対しては、RAID5のフォーマットに従って自動的にHDD301が選択される。   Upon receiving the write command, the array controller 200 refers to the storage state table 203a and searches for the stripes S2 and S3 as stripes that can store data for four blocks and no data is stored in any block. . The array controller 200 selects the HDD 301 and the HDDs 303 and 304 as an area for three blocks in the stripe S2, and selects the HDD 302 as an area for one block in the stripe S3. Here, for the parity data P2 for the stripe S2, the HDD 302 is automatically selected according to the RAID5 format. For the parity data P3 for the stripe S3, the HDD 301 is automatically selected according to the RAID5 format.

そして、図7(b)に示すように、格納状態テーブル203a上の上記選択領域に対応するビット(ストライプ番号,HDD番号)=(S2,301)、(S2,303)、(S2、304)および(S3、302)は、「1」に書き換えられる。また、図7(c)に示すように、変換テーブル203bに対して、ホスト装置100が認識するLBAとディスクアレイ300上のブロック位置との対応が追加される。すなわち(LBA,HDD番号,ストライプ番号)=(L3,301,S2)、(L4,303、S2)、(L5,304、S2)および(L6,302、S3)が書き加えられる。このようにして、ホスト装置100から受領したデータD3〜D6とパリティデータP2,P3に対して、ディスクアレイ300のブロックが割り当てられる。   Then, as shown in FIG. 7B, bits (stripes number, HDD number) corresponding to the selected area on the storage state table 203a = (S2, 301), (S2, 303), (S2, 304). And (S3, 302) are rewritten to “1”. Further, as shown in FIG. 7C, the correspondence between the LBA recognized by the host apparatus 100 and the block position on the disk array 300 is added to the conversion table 203b. That is, (LBA, HDD number, stripe number) = (L3, 301, S2), (L4, 303, S2), (L5, 304, S2) and (L6, 302, S3) are added. In this way, blocks of the disk array 300 are assigned to the data D3 to D6 and the parity data P2 and P3 received from the host device 100.

その後、パリティデータP2,P3が、それぞれ
P2=D3xorD4xorD5
P3=D6
に基づいて生成され、生成されたパリティデータP2,P3は、データD3〜D6とともに、それぞれに割り当てられたブロックに書き込まれる。
After that, the parity data P2 and P3 are respectively P2 = D3xorD4xorD5
P3 = D6
The generated parity data P2 and P3 are written in the blocks assigned to the data D3 to D6.

図7の状態において、ホスト装置100から、LBA=L2への1ブロック分のサイズを有するデータD7の書き込み命令、すなわちLBA=L2への上書き命令が発行されると、ディスクアレイ300は、図8(a)に示す状態になる。   In the state shown in FIG. 7, when the host device 100 issues a write instruction for data D7 having a size of one block to LBA = L2, that is, an overwrite instruction to LBA = L2, the disk array 300 is changed to FIG. The state shown in FIG.

この場合、アレイコントローラ200は、図4〜図7の場合と同様となる。すなわち、上記書き込み命令を受領すると、格納状態テーブル203aを参照して、1ブロック分のデータが格納可能な、いずれのブロックにもデータが格納されていないストライプとしてストライプS4を探し出す。そして、ストライプS4において、1ブロック分の領域としてHDD301を選択する。ここで、ストライプS4に対するパリティデータP4に対しては、RAID5のフォーマットに従って自動的にHDD304が選択される。そして、図8(b)に示すように、格納状態テーブル203a上の上記選択領域に対応するビット(ストライプ番号,HDD番号)=(S4,301)が「1」に書き換えられる。また、図8(c)に示すように、変換テーブル203b上のホスト装置100が認識するLBA=L2とディスクアレイ300上のブロック位置との対応が(LBA,HDD番号,ストライプ番号)=(L2,301,S4)に書き換えられる。このようにして、ホスト装置100から受領したデータD7とパリティデータP4に対して、ディスクアレイ300のブロックが割り当てられる。   In this case, the array controller 200 is the same as in the case of FIGS. That is, when the write command is received, the storage state table 203a is referred to search for the stripe S4 as a stripe in which data for one block can be stored and no data is stored in any block. Then, the HDD 301 is selected as an area for one block in the stripe S4. Here, for the parity data P4 for the stripe S4, the HDD 304 is automatically selected according to the RAID5 format. Then, as shown in FIG. 8B, the bit (stripe number, HDD number) = (S4, 301) corresponding to the selected area on the storage state table 203a is rewritten to “1”. Further, as shown in FIG. 8C, the correspondence between LBA = L2 recognized by the host apparatus 100 on the conversion table 203b and the block position on the disk array 300 is (LBA, HDD number, stripe number) = (L2 , 301, S4). In this way, blocks of the disk array 300 are allocated to the data D7 and parity data P4 received from the host device 100.

次いで、パリティデータP4が
P4=D7
に基づいて生成され、生成されたパリティデータP4は、データD7とともに、それぞれに割り当てられたブロックに書き込まれる。
Next, the parity data P4 is P4 = D7
The generated parity data P4 is written together with the data D7 to the blocks assigned to each.

本実施の形態においては、アレイコントローラ200により、ホスト装置100が上書き命令を発行したときのLBAの管理を行うようにしている。これに代えて、ホスト装置100が、ディスクアレイ300へのデータ書き込み命令において、既にデータが格納されているLBAを指定しないように、例えばオペレーティングシステムまたはデバイスドライバにより、LBAを管理するような形態を採用してもよい。   In this embodiment, the array controller 200 manages the LBA when the host device 100 issues an overwrite command. Instead of this, the host device 100 manages the LBA by, for example, an operating system or a device driver so as not to specify an LBA in which data is already stored in a data write command to the disk array 300. It may be adopted.

次に、上述した手順でデータが書き込まれたディスクアレイ300からデータを読み出すときのアレイコントローラ200の動作について図9を参照しながら説明する。図9はディスクアレイ300からデータを読み出すときのアレイコントローラ200の動作手順を示すフローチャートである。図9のフローチャートで示す手順は、MPU201により実行されるものである。   Next, the operation of the array controller 200 when reading data from the disk array 300 into which data has been written in the above-described procedure will be described with reference to FIG. FIG. 9 is a flowchart showing an operation procedure of the array controller 200 when reading data from the disk array 300. The procedure shown in the flowchart of FIG. 9 is executed by the MPU 201.

アレイコントローラ200は、図9に示すように、ステップS901において、ホスト装置100からデータ読み出し命令を受領する。続いて、アレイコントローラ200は、ステップS902において、変換テーブル203bを参照して,ホスト装置100から指定されたLBAに対応するディスクアレイ300上のブロックを探し出す。次いで、アレイコントローラ200は、ステップS903において、上記LBAに対応するブロックを含むHDDにデータ読み出し命令を発行する。そして、アレイコントローラ200は、ステップS904において、指定されたデータの読み出しが失敗したか否かを判定する。ここで、指定されたデータの読み出しが成功すると、アレイコントローラ200は、ステップS906において、読み出されたデータをホスト装置100に転送する。   As shown in FIG. 9, the array controller 200 receives a data read command from the host device 100 in step S901. Subsequently, in step S902, the array controller 200 refers to the conversion table 203b and searches for a block on the disk array 300 corresponding to the LBA designated by the host device 100. Next, the array controller 200 issues a data read command to the HDD including the block corresponding to the LBA in step S903. In step S904, the array controller 200 determines whether reading of the designated data has failed. If the reading of the designated data is successful, the array controller 200 transfers the read data to the host device 100 in step S906.

これに対し、上記ステップS904において指定されたデータの読み出しが失敗したと判定された場合、アレイコントローラ200は、ステップS905に進む。このステップおいて、アレイコントローラ200は、上記読み出しが失敗したデータを、同一ストライプ上にある他のデータとパリティデータから後述の方法により復元する。そして、アレイコントローラ200は、ステップS906において、復元されたデータをホスト装置100に転送する。   On the other hand, when it is determined in step S904 that reading of the designated data has failed, the array controller 200 proceeds to step S905. In this step, the array controller 200 restores the data that has failed to be read from other data and parity data on the same stripe by a method described later. In step S906, the array controller 200 transfers the restored data to the host device 100.

ここで、読み出しに失敗したデータを同一ストライプ上にある他のデータとパリティデータから復元する方法について図10を参照しながら説明する。図10は図9のステップS905のデータ復元処理の手順を示すフローチャートである。   Here, a method for restoring data that has failed to be read from other data and parity data on the same stripe will be described with reference to FIG. FIG. 10 is a flowchart showing the procedure of the data restoration process in step S905 of FIG.

上記データ復元処理を行う場合、図10に示すように、アレイコントローラ200は、ステップS1001において、格納状態テーブル203aを参照して、読み出しが失敗したデータと同一ストライプ上において、データが格納されているブロックを探索する。そして、アレイコントローラ200は、ステップS1002において、データが格納されているブロックが発見されたか否かを判定する。ここで、データが格納されているブロックが発見された場合、ステップS1003に進む。アレイコントローラ200は、ステップS1003において、上記データが格納されているブロックを含むHDDと、上記読み出しが失敗したデータに対応するパリティデータが格納されているブロックを含むHDDにデータ読み出し命令を発行する。そして、上記読み出しが失敗したデータと同一ストライプ上のブロックに格納されているデータとパリティデータを読み出す。そして、アレイコントローラ200は、ステップS1004において、これら読み出した全てのデータの排他的論理和を取ることにより、読み出しが失敗したデータを復元する。   When performing the data restoration processing, as shown in FIG. 10, the array controller 200 refers to the storage state table 203a in step S1001, and stores data on the same stripe as the data that failed to be read. Search for a block. In step S1002, the array controller 200 determines whether a block storing data is found. If a block in which data is stored is found, the process proceeds to step S1003. In step S1003, the array controller 200 issues a data read command to the HDD including the block storing the data and the HDD including the block storing the parity data corresponding to the data that has failed to be read. Then, the data and parity data stored in the block on the same stripe as the data that has failed to be read are read. In step S1004, the array controller 200 restores the data that failed to be read by taking an exclusive OR of all the read data.

これに対し、上記ステップS1002において、データが格納されているブロックが発見されないと判定された場合、ステップS1005に進む。アレイコントローラ200は、ステップS1005において、上記読み出しが失敗したデータに対応するパリティデータが格納されているブロックを含むHDDのみにデータ読み出し命令を発行し、上記読み出しが失敗したデータに対応するパリティデータのみを読み出す。これは、上記読み出しが失敗したデータに対応するパリティデータが、上記読み出しが失敗したデータと同じ値を有するからである。そして、アレイコントローラ200は、上記読み出されたパリティデータを上記読み出しが失敗したデータとすることにより、読み出しに失敗したデータの復元を行う。   On the other hand, if it is determined in step S1002 that a block storing data is not found, the process proceeds to step S1005. In step S1005, the array controller 200 issues a data read command only to the HDD including the block storing the parity data corresponding to the data that failed to be read, and only the parity data corresponding to the data that failed to be read. Is read. This is because the parity data corresponding to the data that failed to be read has the same value as the data that failed to be read. Then, the array controller 200 restores the data that failed to be read by setting the read parity data as data that failed to be read.

例えば、図7の状態において、データD0の読み出しが失敗した場合、データD0と同一ストライプS0上にあるデータD1とパリティデータP0が読み出され、
D0=D1 xor P0
の演算が行われる。この演算により、読み出しが失敗したデータD0の復元が行われることになる。
For example, in the state of FIG. 7, when reading of data D0 fails, data D1 and parity data P0 on the same stripe S0 as data D0 are read,
D0 = D1 xor P0
Is calculated. By this calculation, the data D0 that has failed to be read is restored.

また、データD2の読み出しが失敗した場合、同一ストライプS1上に格納されているデータとしては、データD2のみであるので、パリティデータP1が読み出される。そして、
D2=P1
の演算により、データD2の復元が行われることになる。
Further, when the reading of the data D2 fails, since the data D2 is the only data stored on the same stripe S1, the parity data P1 is read. And
D2 = P1
Thus, the data D2 is restored.

図10を用いて説明したデータ復元処理に代わるデータ復元処理として、図11のフローチャートで示すデータ復元処理を採用することも可能である。この代替のデータ復元処理について図11を参照しながら説明する。図11は図10のデータ復元処理に代わる他のデータ復元処理の手順を示すフローチャートである。   As a data restoration process that replaces the data restoration process described with reference to FIG. 10, the data restoration process shown in the flowchart of FIG. 11 may be employed. This alternative data restoration process will be described with reference to FIG. FIG. 11 is a flowchart showing the procedure of another data restoration process instead of the data restoration process of FIG.

この代替データ復元処理が適用されるディスクアレイ300に対しては、フォーマット時に、RAID4またはRAID5として使用する全てのブロックに「0」が書き込まれている。この代替データ復元処理においては、図11に示すように、まず、アレイコントローラ200が、ステップS1101において、読み出しが失敗したデータを格納するブロックを含むHDDを除く、残り全てのHDDにデータ読み出し命令を発行する。これにより、上記読み出しが失敗したデータが格納されているブロックと同一のストライプ上にある他の全てのブロックに格納された値を読み出す。そして、アレイコントローラ200は、ステップS1102において、上記他の全てのブロックから読み出された値の排他的論理和を取ることにより、読み出しが失敗したデータを復元する。すなわち、このデータ復元処理は、図10に示すデータ復元処理のように、格納状態テーブル203aを参照して、読み出しが失敗したデータの格納されているブロックと同一ストライプ上において、有効なデータが格納されているブロックを探索する処理を行うことなく、読み出しが失敗したデータを復元することができる。   For the disk array 300 to which this alternative data restoration processing is applied, “0” is written in all blocks used as RAID 4 or RAID 5 at the time of formatting. In this alternative data restoration process, as shown in FIG. 11, the array controller 200 first issues a data read command to all remaining HDDs except for the HDD including the block that stores the data that failed to be read in step S1101. Issue. As a result, the values stored in all other blocks on the same stripe as the block storing the data for which the read failed are read. In step S1102, the array controller 200 restores data that has failed to be read by calculating an exclusive OR of the values read from all the other blocks. That is, in this data restoration process, as in the data restoration process shown in FIG. 10, valid data is stored on the same stripe as the block in which the data that has failed to be read is stored with reference to the storage state table 203a. The data that has failed to be read can be restored without performing the process of searching for the block being read.

例えば、図7の状態において、データD0の読み出しが失敗した場合、データD0が格納されているブロックと同一ストライプS0上にある他の全てのブロックに格納された値、すなわち、データD1、HDD303上の「0」とパリティデータP0が読み出され、
D0=D1 xor ‘0’ xor P0
の演算(この演算の結果はD1 xor P0と同値である)が行われる。この演算により、読み出しが失敗したデータD0の復元が行われる。
For example, in the state of FIG. 7, when reading of data D0 fails, the values stored in all other blocks on the same stripe S0 as the block storing data D0, that is, data D1, on HDD 303 "0" and parity data P0 are read out,
D0 = D1 xor '0' xor P0
(The result of this calculation is the same value as D1 xor P0). By this calculation, data D0 that has failed to be read is restored.

また、データD2の読み出しが失敗した場合も同様に、データD2が格納されているブロックと同一ストライプS1上にある他の全てのブロックに格納された値、すなわち、HDD302上の「0」、HDD303上の「0」とパリティデータP1が読み出され、
D2=‘0’ xor ‘0’ xor P1
の演算(この演算の結果はP1と同値である)が行われる。これにより、読み出しが失敗したデータD2の復元が行われる。
Similarly, when the reading of the data D2 fails, the values stored in all other blocks on the same stripe S1 as the block storing the data D2, that is, “0” on the HDD 302, HDD 303 The upper “0” and parity data P1 are read,
D2 = '0' xor '0' xor P1
(The result of this calculation is the same value as P1). As a result, the data D2 that has failed to be read is restored.

以上説明したように、本実施の形態によれば、RAID4またはRAID5にて構成されたディスクアレイ300へのデータの書き込みにおいて、リードモディファイライト動作が発生せず、ライトペナルティが解消される。これにより、データ書き込み速度を向上させることが可能となる。   As described above, according to the present embodiment, a read-modify-write operation does not occur in writing data to the disk array 300 configured with RAID 4 or RAID 5, and the write penalty is eliminated. Thereby, the data writing speed can be improved.

(第2の実施の形態)
次に、本発明の第2の実施の形態について図12および図13を参照しながら説明する。図12は本発明の第2の実施の形態に係るディスクアレイ装置におけるブロック割り当て・パリティデータ生成処理の手順を示すフローチャートである。図13は本発明の第2の実施の形態におけるデータ書き込み時のディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
(Second Embodiment)
Next, a second embodiment of the present invention will be described with reference to FIGS. FIG. 12 is a flowchart showing a procedure of block allocation / parity data generation processing in the disk array device according to the second embodiment of the present invention. FIG. 13 is a diagram showing the states of the disk array, the data storage state table, and the LBA-disk array / block conversion table at the time of data writing in the second embodiment of the present invention.

本実施の形態は、上記第1の実施の形態と異なるブロック割り当て・パリティデータ生成処理を行う。ここで、図12中、図3と同じ符号が付してあるステップは、図3の同符号のステップと同様の処理を行うことを意味する。   In the present embodiment, block allocation / parity data generation processing different from that of the first embodiment is performed. Here, in FIG. 12, the steps denoted by the same reference numerals as those in FIG. 3 mean that the same processing as the steps having the same reference numerals in FIG. 3 is performed.

アレイコントローラ200は、ブロック割り当て処理において、まずステップS1201において、ホスト装置100から受領したデータ書き込み命令を解析する。続くステップS1202において、上記データ書き込み命令がストリーミング命令であるか否かを判定する。ここで、上記データ書き込み命令がストリーミング命令である場合、上記第1の実施の形態と同じブロック割り当て・パリティデータ生成処理すなわちステップS301〜S303が実行される。   In the block allocation process, the array controller 200 first analyzes the data write command received from the host device 100 in step S1201. In a succeeding step S1202, it is determined whether or not the data write command is a streaming command. Here, when the data write command is a streaming command, the same block allocation / parity data generation processing as in the first embodiment, that is, steps S301 to S303 are executed.

ここで、ストリーミング命令とは、標準的なデータ・インテグリティ・クリティカルな命令というよりも、むしろタイム・クリティカルなデータ転送に関する命令ということを意味している。例えば、ストリーミング命令は、HDDのAV(Audio Visual/Audio Video)タイプの応用におけるストリーム要求を保証するような命令である。さらに具体的には、ATA/ATAPI-7(AT Attachiment with Packet Interface-7) Working Draft Revision 3c において、Streaming feature set中にWRITE STREAM PIO、WRITE STREAM DMAとして規定される命令などである。   Here, the streaming instruction means an instruction relating to time critical data transfer rather than a standard data integrity critical instruction. For example, the streaming command is a command that guarantees a stream request in an AV (Audio Visual / Audio Video) type application of the HDD. More specifically, in ATA / ATAPI-7 (AT Attachiment with Packet Interface-7) Working Draft Revision 3c, there are instructions defined as WRITE STREAM PIO and WRITE STREAM DMA in the streaming feature set.

上記ステップS1202において上記データ書き込み命令がストリーミング命令でないと判定された場合、アレイコントローラ200は、RAID4またはRAID5にて構成されたディスクアレイにおいて従来から一般的に行われているように、ブロックを割り当て、パリティデータを生成する。すなわち、アレイコントローラ200は、ステップS1203〜S1204において、変換テーブル203bを参照して、ホスト装置100から指定されたLBAに対応するブロックを探し出す。   If it is determined in step S1202 that the data write command is not a streaming command, the array controller 200 allocates blocks as conventionally performed in a disk array configured with RAID 4 or RAID 5, Generate parity data. That is, the array controller 200 searches for a block corresponding to the LBA designated by the host device 100 with reference to the conversion table 203b in steps S1203 to S1204.

但し、ホスト装置100から指定されたLBAに対応するブロックが存在しない場合(ステップS1204)、アレイコントローラ200は、ステップS1205において、格納状態テーブル203aを参照してデータが格納されていないブロックを探し出す。そして、アレイコントローラ200は、ステップS302において、格納状態テーブル203aと変換テーブル203bを更新することによって、ディスクアレイ300の構成に基づいて再構成したデータにディスクアレイ300上のブロックを割り当てる。   However, if there is no block corresponding to the LBA designated by the host device 100 (step S1204), the array controller 200 searches for a block in which no data is stored with reference to the storage state table 203a in step S1205. In step S302, the array controller 200 updates the storage state table 203a and the conversion table 203b, thereby allocating blocks on the disk array 300 to data reconfigured based on the configuration of the disk array 300.

次いで、アレイコントローラ200は、必要であれば、ステップS1206において、従来技術と同様の方法で、HDD301〜304から書き込み先ブロックに格納された旧データと上記旧データに対応する旧パリティデータを読み出し、新しいパリティデータを生成する。   Next, if necessary, the array controller 200 reads the old data stored in the write destination block and the old parity data corresponding to the old data from the HDDs 301 to 304 in the same manner as in the prior art in step S1206. Generate new parity data.

例えば図7の状態において、ホスト装置100から、LBA=L2への1ブロック分のサイズを有するデータD7の書き込み命令、すなわちLBA=L2への上書き命令が発行されると、ディスクアレイ300は、図13(a)に示す状態になる。   For example, in the state of FIG. 7, when the host device 100 issues a write instruction for data D7 having a size of one block to LBA = L2, that is, an overwrite instruction to LBA = L2, the disk array 300 It will be in the state shown to 13 (a).

アレイコントローラ200は、上記書き込み命令を受領すると、上記書き込み命令を解析し、上記書き込み命令がストリーミング命令であるか否かを判別する。ここで、上記書き込み命令がストリーミング命令である場合、アレイコントローラ200は、上記第1の実施の形態において図8を用いて説明したのと同様に動作する。   Upon receiving the write command, the array controller 200 analyzes the write command and determines whether or not the write command is a streaming command. Here, when the write command is a streaming command, the array controller 200 operates in the same manner as described with reference to FIG. 8 in the first embodiment.

これに対し、上記書き込み命令がストリーミング命令でない場合、アレイコントローラ200は、変換テーブル203bを参照して、LBA=L2に対応するブロックとして、(HDD番号,ストライプ番号)=(301,S1)を探し出す。続いて、上記ブロックに格納されていたデータD0と、上記ブロックに対応するパリティデータP1がそれぞれHDD301、HDD303から読み出され、新たなパリティデータP1’が
P1’=D0 xor D7 xor P1
に基づいて生成される。そして、データD7がHDD301に、パリティデータP0’がHDD304にそれぞれ書き込まれる。
On the other hand, when the write command is not a streaming command, the array controller 200 refers to the conversion table 203b and searches for (HDD number, stripe number) = (301, S1) as a block corresponding to LBA = L2. . Subsequently, the data D0 stored in the block and the parity data P1 corresponding to the block are read from the HDD 301 and the HDD 303, respectively, and new parity data P1 ′ is P1 ′ = D0 xor D7 xor P1.
Is generated based on Then, the data D7 is written to the HDD 301 and the parity data P0 ′ is written to the HDD 304.

本実施の形態においては、アレイコントローラ200が、ホスト装置100からデータ書き込み命令を受領する度に、上記データ書き込み命令の属性を判別し、ブロック割り当て・パリティー生成方法を選択するものとした。これに限らず、ホスト装置100がアレイコントローラ200のブロック割り当て・パリティー生成方法を選択する命令を用意し、データ書き込み命令をアレイコントローラ200に発行する前に、予め上記ブロック割り当て・パリティー生成方法選択命令を発行することにより、アレイコントローラ200のブロック割り当て・パリティー生成方法を選択する形態を採用することも可能である。   In the present embodiment, every time the array controller 200 receives a data write command from the host device 100, it determines the attribute of the data write command and selects a block allocation / parity generation method. Not limited to this, the host device 100 prepares an instruction for selecting the block allocation / parity generation method of the array controller 200, and before issuing a data write command to the array controller 200, the block allocation / parity generation method selection instruction in advance. Can be adopted to select the block allocation / parity generation method of the array controller 200.

以上、本実施の形態によれば、RAID4またはRAID5にて構成されたディスクアレイ300へのデータの書き込みにおいて、ホスト装置100が発行したデータ書き込み命令の属性に基づいて、書き込み動作を変えることにより、データ書き込み速度を向上させることが可能となるとともに、ディスクアレイ300の容量を効率的に利用することが可能となる。   As described above, according to the present embodiment, when data is written to the disk array 300 configured with RAID 4 or RAID 5, the write operation is changed based on the attribute of the data write command issued by the host device 100. The data writing speed can be improved and the capacity of the disk array 300 can be used efficiently.

(第3の実施の形態)
次に、本発明の第3の実施の形態について図14を参照しながら説明する。図14は本発明の第3の実施の形態に係るディスクアレイ装置におけるブロック割り当て・パリティデータ生成処理の手順を示すフローチャートである。
(Third embodiment)
Next, a third embodiment of the present invention will be described with reference to FIG. FIG. 14 is a flowchart showing a procedure of block allocation / parity data generation processing in the disk array device according to the third embodiment of the present invention.

本実施の形態は、上記第2の実施の形態と異なるブロック割り当て・パリティー生成方法選択処理を行う。そこで、本実施の形態においては、上記第2の実施の形態と異なる部分を中心に説明する。ここで、図14中、図3および図12と同じステップには、同一の符号が付されている。   In the present embodiment, block allocation / parity generation method selection processing different from that of the second embodiment is performed. Therefore, in the present embodiment, a description will be given centering on differences from the second embodiment. Here, in FIG. 14, the same steps as those in FIGS. 3 and 12 are denoted by the same reference numerals.

ブロック割り当て処理においてアレイコントローラ200は、図14に示すように、まずステップS1401において、ホスト装置100から受領したデータ書き込み命令を解析する。続いて、アレイコントローラ200は、ステップS1402において、上記データ書き込み命令の指定するデータ書き込み先LBAが高速書き込み領域であるか否かを判定する。ここで、上記データ書き込み命令の指定するデータ書き込み先LBAが高速書き込み領域である場合、上記第1の実施の形態と同じブロック割り当て・パリティデータ生成処理すなわちステップS301〜S303が実行される。   In the block allocation process, the array controller 200 first analyzes the data write command received from the host device 100 in step S1401, as shown in FIG. Subsequently, in step S1402, the array controller 200 determines whether or not the data write destination LBA specified by the data write command is a high-speed write area. Here, when the data write destination LBA designated by the data write instruction is a high-speed write area, the same block allocation / parity data generation processing as in the first embodiment, that is, steps S301 to S303 are executed.

但し、ここで、ホスト装置100は、ディスクアレイ300が高速データ書き込み領域と通常データ書き込み領域に分割され、LBAの指定により一方の領域を選択することができることを既知であるものとする。しかし、実際には、ディスクアレイ300が予め上記のように物理的に領域分割されている必要はない。   However, here, the host apparatus 100 is assumed to know that the disk array 300 is divided into a high-speed data writing area and a normal data writing area, and one area can be selected by specifying an LBA. However, in practice, the disk array 300 does not have to be physically divided in advance as described above.

上記ステップS1402において、上記データ書き込み命令の指定するデータ書き込み先LBAが通常書き込み領域でないと判定された場合、第2の実施の形態で説明したステップS1203〜S1206が実行される。   If it is determined in step S1402 that the data write destination LBA specified by the data write instruction is not a normal write area, steps S1203 to S1206 described in the second embodiment are executed.

以上、本実施の形態によれば、RAID4またはRAID5にて構成されたディスクアレイ300へのデータの書き込みにおいて、ホスト装置100が発行したデータ書き込み命令の指定するデータ書き込み先LBAに基づいて、書き込み動作を変える。これにより、データ書き込み速度を向上させることが可能となるとともに、ディスクアレイ300の容量を効率的に使用することが可能となる。   As described above, according to the present embodiment, in the data write to the disk array 300 configured with RAID 4 or RAID 5, the write operation is performed based on the data write destination LBA designated by the data write command issued by the host device 100. change. As a result, the data writing speed can be improved and the capacity of the disk array 300 can be used efficiently.

(第4の実施の形態)
次に、本発明の第4の実施の形態について図15〜図17を参照しながら説明する。図15は本発明の第4の実施の形態に係るディスクアレイ装置におけるデータ消去処理の手順を示すフローチャートである。図16は本発明の第4の実施の形態におけるデータ消去処理実行前のディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。図17は本発明の第4の実施の形態におけるデータ消去処理実行後のディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
(Fourth embodiment)
Next, a fourth embodiment of the present invention will be described with reference to FIGS. FIG. 15 is a flowchart showing a procedure of data erasure processing in the disk array device according to the fourth embodiment of the present invention. FIG. 16 is a diagram showing the states of the disk array, the data storage state table, and the LBA-disk array / block conversion table before execution of the data erasing process according to the fourth embodiment of the present invention. FIG. 17 is a diagram showing the states of the disk array, the data storage state table, and the LBA-disk array / block conversion table after execution of the data erasing process according to the fourth embodiment of the present invention.

本実施の形態は、上記第1〜第3の実施の形態のようにして、ディスクアレイ300に書き込まれたデータのうち、所定の保存時間を超過したデータを消去する処理を行う。   In the present embodiment, as in the first to third embodiments, processing for erasing data that has exceeded a predetermined storage time among data written to the disk array 300 is performed.

ディスクアレイ300に書き込まれたデータのうち、所定の保存時間を超過したデータを消去する際、図15に示すように、アレイコントローラ200は、ステップS1501において、格納状態テーブル203cを参照する。ここで、格納状態テーブル203cには、ストライプ毎に、そのストライプを構成するブロックに最新のデータが書き込まれた時間が記録されている。この最新データ書き込み時間は、アレイコントローラ200内のタイマ回路(図示せず)により計測され、上記ストライプを構成するブロックへのデータ書き込み時に更新される。   When erasing data that has exceeded a predetermined storage time from data written to the disk array 300, the array controller 200 refers to the storage state table 203c in step S1501, as shown in FIG. Here, in the storage state table 203c, for each stripe, the time when the latest data is written in the blocks constituting the stripe is recorded. The latest data write time is measured by a timer circuit (not shown) in the array controller 200 and updated when data is written to the blocks constituting the stripe.

次いで、アレイコントローラ200は、ステップS1502〜S1503、ステップS1507〜S1508において、データが格納されているストライプを探し出す。そして、データが格納されているストライプがあると、アレイコントローラ200は、ステップS1504〜S1505において、上記ストライプの最新データ書き込み時間を、所定のデータ保存時間と比較し、この比較結果に応じて、保存期限が超過しているか否かを判定する。ここで、上記最新データ書き込み時間が上記データ保存時間以前の時間を示すと、アレイコントローラ200は、保存期限が超過していると判定する。上記データ保存時間は、例えば、HDD301〜304またはその他の不揮発性記憶媒体に記憶されており、データ消去処理時に、RAM203上に呼び出される。   Next, the array controller 200 searches for a stripe in which data is stored in steps S1502 to S1503 and steps S1507 to S1508. If there is a stripe in which data is stored, the array controller 200 compares the latest data write time of the stripe with a predetermined data storage time in steps S1504 to S1505, and saves according to the comparison result. Determine whether the deadline has been exceeded. Here, if the latest data write time indicates a time before the data storage time, the array controller 200 determines that the storage time limit has been exceeded. The data storage time is stored in, for example, the HDDs 301 to 304 or other non-volatile storage media, and is called on the RAM 203 during the data erasing process.

保存期限が超過している場合、アレイコントローラ200は、ステップS1506において、格納状態テーブル203cと変換テーブル203bを更新することにより、格納状態テーブル203cと変換テーブル203b上から上記ストライプ上のデータの存在を消去する。また、例えば、上記ストライプを構成するすべてのブロックに「0」を書き込むなどして、上記ストライプを初期化するようにしてもよい。   If the storage time limit has been exceeded, the array controller 200 updates the storage state table 203c and the conversion table 203b in step S1506, thereby confirming the presence of data on the stripe from the storage state table 203c and the conversion table 203b. to erase. Further, for example, the stripe may be initialized by writing “0” in all the blocks constituting the stripe.

次に、例えば図16に示すようにディスクアレイ300にデータが書き込まれているとし、書き込まれたデータのうち、所定の保存時間を超過したデータを消去する場合について説明する。ここで、データ保存時間は50日とする。   Next, for example, assuming that data is written in the disk array 300 as shown in FIG. 16, a case will be described in which data that has exceeded a predetermined storage time is erased. Here, the data storage time is 50 days.

アレイコントローラ200は、格納状態テーブル203cを参照し、データが格納されているストライプとして、まずストライプS0を探し出す。このストライプS0に関しては、最新データ書き込み時間40日4時間18分(40:04:18と表記)がデータ保存時間50日以前の時間を示しているので、格納状態テーブル203cのストライプ番号S0の列が初期状態(図4を参照)に戻される(図17を参照)。また、変換テーブル203b上のストライプ番号S0が記録されている列、すなわち(LBA,HDD番号,ストライプ番号)=(L0,301,S0)、(L1、302S0)が削除される(図17を参照)。   The array controller 200 refers to the storage state table 203c and first searches for the stripe S0 as the stripe in which data is stored. Regarding this stripe S0, the latest data write time 40 days 4 hours 18 minutes (indicated as 40:04:18) indicates the time before the data storage time 50 days, so the column of the stripe number S0 in the storage state table 203c Is returned to the initial state (see FIG. 4) (see FIG. 17). Also, the column in which the stripe number S0 is recorded on the conversion table 203b, that is, (LBA, HDD number, stripe number) = (L0, 301, S0), (L1, 302S0) is deleted (see FIG. 17). ).

次いで、データが格納されているストライプとして、ストライプS1が探し出される。このストライプS1に関しては、最新データ書き込み時間40日4時間20分が所定データ保存時間50日以前の時間を示しているので、格納状態テーブル302cのストライプS1に関する部分は初期状態に戻される(図17を参照)。但し、変換テーブル203bには、ストライプ番号S1が記録されている列はないので、変換テーブル203bの書き換えは行われない(図17を参照)。   Next, the stripe S1 is found as a stripe in which data is stored. Regarding the stripe S1, since the latest data writing time 40 days 4 hours 20 minutes indicates the time before the predetermined data storage time 50 days, the portion relating to the stripe S1 in the storage state table 302c is returned to the initial state (FIG. 17). See). However, since there is no column in which the stripe number S1 is recorded in the conversion table 203b, the conversion table 203b is not rewritten (see FIG. 17).

次いで、データの格納されているストライプとして、ストライプS2が探し出される。このストライプS2に関しては、最新データ書き込み時間51日12時間8分が所定データ保存期限50日以降の時間を示しているので、格納状態テーブル302cおよび変換テーブル203bの書き換えは行われない(図17を参照)。以降、同様に、データが格納されているストライプが探し出され、同様の処理が行われる。   Next, the stripe S2 is found as a stripe in which data is stored. Regarding the stripe S2, since the latest data writing time 51 days 12 hours 8 minutes indicates the time after the predetermined data storage deadline 50 days, the storage state table 302c and the conversion table 203b are not rewritten (see FIG. 17). reference). Thereafter, similarly, a stripe in which data is stored is found and the same processing is performed.

上記データ消去処理は、アレイコントローラ200が所定のタイミング、例えば、ホスト装置100からアクセスがないとき、所定時間経過時、電源投入時などに行うようにしてもよい。また、ホスト装置100がアレイコントローラ200に上記データ消去処理を行わせる命令を用意し、アレイコントローラ200がホスト装置100から上記データ消去命令を受領したときに行うようにしてもよい。   The data erasing process may be performed at a predetermined timing when the array controller 200 is not accessed from the host device 100, for example, when a predetermined time elapses or when the power is turned on. Alternatively, the host apparatus 100 may prepare an instruction for causing the array controller 200 to perform the data erasure process, and may be performed when the array controller 200 receives the data erasure instruction from the host apparatus 100.

以上、本実施の形態によれば、RAID4またはRAID5にて構成されたディスクアレイ300において、上記第1〜第3の実施の形態のようにしてディスクアレイ300に書き込まれたデータのうち、所定の保存時間を超過したデータを消去する。これにより、ディスクアレイ300の容量を効率的に使用することが可能となる。   As described above, according to the present embodiment, in the disk array 300 configured with RAID 4 or RAID 5, among the data written to the disk array 300 as in the first to third embodiments, a predetermined number of data is written. Erase data that exceeds the storage time. As a result, the capacity of the disk array 300 can be used efficiently.

(第5の実施の形態)
次に、本発明の第5の実施の形態について図18および図19を参照しながら説明する。図18は本発明の第5の実施の形態に係るディスクアレイ装置におけるデータ消去処理の手順を示すフローチャートである。図19は本発明の第5の実施の形態におけるデータ消去処理実行後のディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
(Fifth embodiment)
Next, a fifth embodiment of the present invention will be described with reference to FIGS. FIG. 18 is a flowchart showing a procedure of data erasure processing in the disk array device according to the fifth embodiment of the present invention. FIG. 19 is a diagram showing a state of each of the disk array, the data storage state table, and the LBA-disk array / block conversion table after execution of the data erasing process according to the fifth embodiment of the present invention.

本実施の形態は、上記第4の形態に対して、第1〜第3の実施の形態のようにしてディスクアレイ300に書き込まれたデータのうち、未割り当てストライプに格納されているデータを消去する点で異なる。   In this embodiment, the data stored in the unallocated stripe is erased from the data written to the disk array 300 as in the first to third embodiments, compared to the fourth embodiment. It is different in point to do.

アレイコントローラ200は、図18に示すように、ステップS1801において、変換テーブル203bを参照する。続いて、アレイコントローラ200は、ステップS1802において、未割り当てストライプ、すなわちホスト装置100が認識するLBAのいずれのブロックも割り当てられていないストライプを抽出する。   As shown in FIG. 18, the array controller 200 refers to the conversion table 203b in step S1801. Subsequently, in step S1802, the array controller 200 extracts an unallocated stripe, that is, a stripe to which any block of the LBA recognized by the host device 100 is not allocated.

次いで、アレイコントローラ200は、ステップS1803およびS1804において、抽出された未割り当てストライプについて、格納状態テーブル203cを参照し、データが格納されているか否かを判別する。そして、アレイコントローラ200は、ステップS1805において、上記ステップS1804の判別結果に基づいて未割り当てストライプにデータが格納されているか否かを判定する。ここで、未割り当てストライプにデータが格納されている場合、アレイコントローラ200は、ステップS1806において、格納状態テーブル203cを更新することにより、格納状態テーブル203a上から上記ストライプ上のデータの存在を消去する。また、このとき、例えば、上記ストライプを構成するすべてのブロックに「1」を書き込むなどして、上記ストライプを初期化するようにしてもよい。   Next, in steps S1803 and S1804, the array controller 200 refers to the storage state table 203c for the extracted unallocated stripe and determines whether data is stored. In step S1805, the array controller 200 determines whether data is stored in an unallocated stripe based on the determination result in step S1804. If data is stored in an unallocated stripe, the array controller 200 erases the presence of data on the stripe from the storage state table 203a by updating the storage state table 203c in step S1806. . At this time, for example, the stripe may be initialized by writing “1” in all the blocks constituting the stripe.

次いで、アレイコントローラ200は、ステップS1807において、全ての未割り当てストライプについて、上記S1803〜S1806の処理を実施したか否かを判別する。まだ全ての未割り当てストライプについて、上記処理が実施されていない場合、アレイコントローラ200は、ステップS1808において、まだ処理が実施されていない次の未割り当てストライプについての処理を開始する。   Next, in step S1807, the array controller 200 determines whether or not the processing of S1803 to S1806 has been performed for all unallocated stripes. If the above processing has not been performed for all unallocated stripes, the array controller 200 starts processing for the next unallocated stripe that has not yet been processed in step S1808.

上記ステップS1807において全ての未割り当てストライプについて処理を完了したと判別された場合、アレイコントローラ200は、データ消去処理を終了する。   If it is determined in step S1807 that the processing has been completed for all unallocated stripes, the array controller 200 ends the data erasure processing.

次に、例えば図8に示すような状態にあるディスクアレイ300に対して、未割り当てストライプに格納されているデータを消去する場合について説明する。   Next, for example, a case where data stored in an unallocated stripe is erased from the disk array 300 in the state shown in FIG.

アレイコントローラ200は、変換テーブル203bを参照し、未割り当てストライプとして、ストライプS0,S1,S5,…を抽出する。まず、ストライプS1について、格納状態テーブル203aを参照し、データが格納されているか否かの判別が行われる。ここでは、データが格納されているので、格納状態テーブル203aのストライプS1に関する部分が初期状態(図4を参照)に戻される(図19を参照)。続いて、ストライプS5について、格納状態テーブル203aを参照するが、データが格納されていないので、格納状態テーブル203aの書き換えは行われない(図19を参照)。以降、全ての未割り当てストライプについて同様の処理が行われる。   The array controller 200 refers to the conversion table 203b and extracts stripes S0, S1, S5,... As unassigned stripes. First, for the stripe S1, it is determined whether or not data is stored with reference to the storage state table 203a. Here, since the data is stored, the portion related to the stripe S1 in the storage state table 203a is returned to the initial state (see FIG. 4) (see FIG. 19). Subsequently, the storage state table 203a is referred to for the stripe S5. However, since no data is stored, the storage state table 203a is not rewritten (see FIG. 19). Thereafter, the same processing is performed for all unallocated stripes.

上記データ消去処理は、アレイコントローラ200が所定のタイミング、例えば、ホスト装置100からアクセスがないとき、所定時間経過時、電源投入時などに行われるようにしてもよい。または、ホスト装置100がアレイコントローラ200に上記データ消去処理を行わせる命令を用意し、アレイコントローラ200がホスト装置100から上記データ消去命令を受領したときに上記データ消去処理を行うようにしてもよい。   The data erasing process may be performed at a predetermined timing when the array controller 200 is not accessed from the host device 100, for example, when a predetermined time elapses or when the power is turned on. Alternatively, the host apparatus 100 may prepare an instruction for causing the array controller 200 to perform the data erasure process, and the array controller 200 may perform the data erasure process when receiving the data erasure instruction from the host apparatus 100. .

以上、本実施の形態によれば、RAID4またはRAID5にて構成されたディスクアレイ300において、第1〜第3の実施の形態のようにしてディスクアレイ300に書き込まれたデータのうち、ホスト装置100が不要であると認識したデータを消去する。これにより、ディスクアレイ300の容量を効率的に使用することが可能となる。   As described above, according to the present embodiment, in the disk array 300 configured with RAID 4 or RAID 5, the host device 100 among the data written to the disk array 300 as in the first to third embodiments. Delete data that is recognized as unnecessary. As a result, the capacity of the disk array 300 can be used efficiently.

本発明の第1の実施の形態に係るディスクアレイ装置の構成を示すブロック図である。1 is a block diagram showing a configuration of a disk array device according to a first exemplary embodiment of the present invention. 図1のディスクアレイ装置において、ディスクアレイ300へデータを書き込むときのアレイコントローラ200の動作手順を示すフローチャートである。2 is a flowchart showing an operation procedure of the array controller 200 when data is written to the disk array 300 in the disk array apparatus of FIG. 図2のステップS202のブロック割り当て・パリティデータ生成処理の手順を示すフローチャートである。It is a flowchart which shows the procedure of the block allocation and parity data generation process of step S202 of FIG. フォーマット時のディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。It is a figure which shows each state of the disk array at the time of a format, a data storage state table, and a LBA-disk array block conversion table. 2ブロック分のデータの書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。It is a figure which shows each state of a disk array, a data storage state table, and an LBA-disk array block conversion table when a data write command for two blocks is issued. 1ブロック分のデータの書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。It is a figure which shows each state of a disk array, a data storage state table, and an LBA-disk array block conversion table when a data write command for one block is issued. 4ブロック分のデータの書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。It is a figure which shows each state of a disk array, a data storage state table, and a LBA-disk array block conversion table when a data write command for 4 blocks is issued. 1ブロック分のデータの書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。It is a figure which shows each state of a disk array, a data storage state table, and an LBA-disk array block conversion table when a data write command for one block is issued. ディスクアレイ300からデータを読み出すときのアレイコントローラ200の動作手順を示すフローチャートである。4 is a flowchart showing an operation procedure of the array controller 200 when reading data from the disk array 300. 図9のステップS905のデータ復元処理の手順を示すフローチャートである。10 is a flowchart illustrating a procedure of data restoration processing in step S905 of FIG. 9. 図10のデータ復元処理に代わる他のデータ復元処理の手順を示すフローチャートである。It is a flowchart which shows the procedure of the other data restoration process replaced with the data restoration process of FIG. 本発明の第2の実施の形態に係るディスクアレイ装置におけるブロック割り当て・パリティデータ生成処理の手順を示すフローチャートである。It is a flowchart which shows the procedure of the block allocation and parity data generation process in the disk array apparatus concerning the 2nd Embodiment of this invention. 本発明の第2の実施の形態におけるデータ書き込み時のディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。It is a figure which shows each state of the disk array at the time of the data writing in the 2nd Embodiment of this invention, a data storage state table, and an LBA-disk array block conversion table. 本発明の第3の実施の形態に係るディスクアレイ装置におけるブロック割り当て・パリティデータ生成処理の手順を示すフローチャートである。It is a flowchart which shows the procedure of the block allocation and parity data generation process in the disk array apparatus concerning the 3rd Embodiment of this invention. 本発明の第4の実施の形態に係るディスクアレイ装置におけるデータ消去処理の手順を示すフローチャートである。It is a flowchart which shows the procedure of the data erasure | elimination process in the disk array apparatus based on the 4th Embodiment of this invention. 本発明の第4の実施の形態におけるデータ消去処理実行前のディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。It is a figure which shows each state of the disk array before a data erasing process execution in the 4th Embodiment of this invention, a data storage state table, and a LBA-disk array block conversion table. 本発明の第4の実施の形態におけるデータ消去処理実行後のディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。It is a figure which shows each state of the disk array after a data erasing process execution in the 4th Embodiment of this invention, a data storage state table, and a LBA-disk array block conversion table. 本発明の第5の実施の形態に係るディスクアレイ装置におけるデータ消去処理の手順を示すフローチャートである。It is a flowchart which shows the procedure of the data erasure | elimination process in the disk array apparatus concerning the 5th Embodiment of this invention. 本発明の第5の実施の形態におけるデータ消去処理実行後のディスクアレイ、データ格納状態テーブル、およびLBA−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。It is a figure which shows each state of the disk array after a data erasing process execution in the 5th Embodiment of this invention, a data storage state table, and a LBA-disk array block conversion table.

符号の説明Explanation of symbols

100 ホスト装置
101 CPU
102 ROM
103 RAM
104 記憶装置I/F回路
200 アレイコントローラ
201 MPU
202 ROM
203 RAM
204 パリティー演算回路
205 ホスト装置I/F回路
206〜209 HDD I/F回路
300 ディスクアレイ
301〜304 HDD
100 Host device 101 CPU
102 ROM
103 RAM
104 Storage device I / F circuit 200 Array controller 201 MPU
202 ROM
203 RAM
204 Parity arithmetic circuit 205 Host device I / F circuit 206 to 209 HDD I / F circuit 300 Disk array 301 to 304 HDD

Claims (8)

複数の記憶装置がアレイ化されている記憶装置アレイを有し、外部装置から受領した命令に応じて前記記憶装置アレイへのアクセスを制御するアレイ型記憶装置であって、
前記記憶装置アレイ上に構成される複数の記憶単位を含む冗長グループのそれぞれに対応付けて、記憶単位毎のデータ格納の有無を示すデータ格納状態情報を記憶するデータ格納状態情報記憶手段と、
前記データ格納状態情報記憶手段を参照し、書き込みデータの記憶領域となる記憶単位の割り当てと、該書き込みデータに対応する冗長データの記憶領域となる記憶単位の割り当てとを行う記憶領域割り当て手段と、
前記書き込みデータに対応する冗長データを生成する冗長データ生成手段と、
前記書き込みデータと上記冗長データとをそれぞれ対応する前記記憶領域割り当て手段により割り当てられた記憶単位に書き込む手段とを備え、
前記記憶領域割り当て手段は、書き込みデータの記憶領域として、全ての記憶単位にデータが格納されていない冗長グループに含まれる記憶単位を割り当て、前記冗長データを書き込む領域として、前記書き込みデータを書き込む領域として割り当てられた記憶単位を含む冗長グループの他の記憶単位を割り当てることを特徴とするアレイ型記憶装置。
An array type storage device having a storage device array in which a plurality of storage devices are arrayed, and controlling access to the storage device array according to an instruction received from an external device,
Data storage state information storage means for storing data storage state information indicating the presence or absence of data storage for each storage unit in association with each of the redundancy groups including a plurality of storage units configured on the storage device array;
A storage area allocating unit that refers to the data storage state information storage unit and performs storage unit allocation as a storage area for write data and storage unit allocation as a redundant data storage area corresponding to the write data;
Redundant data generating means for generating redundant data corresponding to the write data;
Means for writing the write data and the redundant data to the storage units allocated by the corresponding storage area allocation means,
The storage area allocating means allocates a storage unit included in a redundancy group in which data is not stored in all storage units as a storage area for write data, and writes the write data as an area for writing the redundant data. An array type storage device characterized by assigning another storage unit of a redundancy group including the assigned storage unit.
前記外部装置から受領する命令には、前記記憶領域割り当て手段および前記冗長データ生成手段を有効する有効にする有効命令または前記記憶領域割り当て手段および前記冗長データ生成手段を無効にする無効命令が含まれ、
前記有効命令を受領すると、前記記憶領域割り当て手段および前記冗長データ生成手段を有効化し、前記無効命令を受領すると、前記記憶領域割り当て手段および前記冗長データ生成手段を無効化する切換手段を備えることを特徴とする請求項1記載のアレイ型記憶装置。
The instruction received from the external device includes a valid instruction for validating the storage area allocation means and the redundant data generation means or an invalid instruction for invalidating the storage area allocation means and the redundant data generation means. ,
When the valid command is received, the storage area allocating unit and the redundant data generating unit are validated. When the invalid command is received, the storage area allocating unit and the redundant data generating unit are invalidated. The array type storage device according to claim 1, wherein:
前記外部装置から受領する命令には、データインテグリティクリティカルなデータ書き込み命令またはタイムクリティカルなデータ書き込み命令が含まれ、
前記データインテグリティクリティカルなデータ書き込み命令を受領すると、前記記憶領域割り当て手段および前記冗長データ生成手段を有効化し、前記タイムクリティカルなデータ書き込み命令を受領すると、前記記憶領域割り当て手段および前記冗長データ生成手段を無効化する切換手段を備えることを特徴とする請求項1記載のアレイ型記憶装置。
The command received from the external device includes a data integrity critical data write command or a time critical data write command,
When the data integrity critical data write command is received, the storage area allocation unit and the redundant data generation unit are enabled. When the time critical data write command is received, the storage area allocation unit and the redundant data generation unit are activated. 2. The array type storage device according to claim 1, further comprising switching means for invalidation.
前記外部装置から、データ書き込み先アドレスが指示されたデータ書き込み命令を受領すると、該受領したデータ書き込み命令により指示されたデータ書き込み先アドレスに基づき前記記憶領域割り当て手段および前記冗長データ生成手段を有効化するか無効化するかを切り換える切換手段を備えることを特徴とする請求項1記載のアレイ型記憶装置。   Upon receipt of a data write command instructed by the data write destination address from the external device, the storage area allocation unit and the redundant data generation unit are validated based on the data write destination address instructed by the received data write command 2. The array type memory device according to claim 1, further comprising switching means for switching between performing and invalidating. 時間を計時する時計手段と、
前記記憶装置アレイ上に構成される複数の記憶単位を含む冗長グループのそれぞれに対応付けて、記憶単位毎にデータが格納された時間を記憶するデータ格納時間記憶手段と、
前記データ格納時間記憶手段を参照し、少なくとも1つの記憶単位にデータが格納されている冗長グループに対して、該データが格納されている記憶単位に対して記憶されている時間から現在までの経過時間と所定時間とを比較し、前記経過時間が前記所定時間を超過しているか否かを判別する所定時間超過判別手段と、
前記所定時間超過判別手段により前記経過時間が前記所定時間を超過していると判別されたデータが格納されている記憶単位に対応する前記データ格納状態情報記憶手段のデータ格納状態情報を、データが格納されていないことを示すデータ格納状態情報に書き換えるデータ格納状態情報書換え手段と
を備えることを特徴とする請求項1記載のアレイ型記憶装置。
A clock means for measuring time;
Data storage time storage means for storing the time at which data is stored for each storage unit in association with each of the redundant groups including a plurality of storage units configured on the storage device array;
Referring to the data storage time storage means, for a redundancy group in which data is stored in at least one storage unit, the time from the time stored for the storage unit storing the data to the present A predetermined time excess determining means for comparing a time with a predetermined time and determining whether or not the elapsed time exceeds the predetermined time;
The data storage state information of the data storage state information storage unit corresponding to the storage unit in which the data determined that the elapsed time exceeds the predetermined time by the predetermined time excess determination unit is stored in the data. 2. The array type storage device according to claim 1, further comprising data storage state information rewriting means for rewriting data storage state information indicating that the data is not stored.
前記所定時間超過判別手段により前記経過時間が前記所定時間を超過していると判別されたデータが格納されている記憶単位を含む冗長グループに対してその記憶単位の全てを初期化する記憶単位初期化手段を備えることを特徴とする請求項5記載のアレイ型記憶装置。   A storage unit initializing all of the storage units for a redundant group including a storage unit storing data for which the elapsed time has been determined to exceed the predetermined time by the predetermined time excess determining means 6. The array type storage device according to claim 5, further comprising: 前記外部装置から受領したデータアクセス命令に含まれるデータアクセス先アドレスと前記記憶装置アレイ上における記憶単位の位置とを対応付ける情報を記憶するアドレス対応情報記憶手段と、
前記アドレス対応情報記憶手段を参照し、前記データアクセス命令に含まれるデータアクセス先アドレスに対応する記憶単位が含まれていない冗長グループを探索するアドレス未対応冗長グループ探索手段と、
前記アドレス未対応冗長グループ探索手段により探し出された冗長グループの記憶単位のそれぞれに対応する前記データ格納情報記憶手段のデータ格納状態情報をデータが格納されていないことを示すデータ格納状態情報に書き換えるデータ格納状態情報書換え手段と
を備えることを特徴とする請求項1記載のアレイ型記憶装置。
Address correspondence information storage means for storing information associating a data access destination address included in a data access command received from the external device and a position of a storage unit on the storage device array;
An address non-corresponding redundant group search means for searching for a redundant group that does not include a storage unit corresponding to a data access destination address included in the data access instruction with reference to the address corresponding information storage means;
Rewrite the data storage status information of the data storage information storage means corresponding to each of the storage units of the redundant group found by the address uncorresponding redundant group search means to data storage status information indicating that no data is stored. 2. The array type storage device according to claim 1, further comprising data storage state information rewriting means.
前記アドレス未対応冗長グループ探索手段により探し出された冗長グループに含まれる記憶単位の全てを初期化する記憶単位初期化手段を備えることを特徴とする請求項7記載のアレイ型記憶装置。   8. The array type storage device according to claim 7, further comprising storage unit initialization means for initializing all of the storage units included in the redundancy group found by said address uncorresponding redundancy group search means.
JP2005274413A 2005-09-21 2005-09-21 Array type storage device Pending JP2007087062A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005274413A JP2007087062A (en) 2005-09-21 2005-09-21 Array type storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005274413A JP2007087062A (en) 2005-09-21 2005-09-21 Array type storage device

Publications (1)

Publication Number Publication Date
JP2007087062A true JP2007087062A (en) 2007-04-05

Family

ID=37973989

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005274413A Pending JP2007087062A (en) 2005-09-21 2005-09-21 Array type storage device

Country Status (1)

Country Link
JP (1) JP2007087062A (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1976243A2 (en) 2007-03-29 2008-10-01 NTT DoCoMo, Inc. Communication terminal and program
JP2008293307A (en) * 2007-05-25 2008-12-04 Nippon Telegr & Teleph Corp <Ntt> Distributed multimedia server system, multimedia information accumulation-delivery method
JP2010282635A (en) * 2010-07-09 2010-12-16 Nippon Telegr & Teleph Corp <Ntt> Distributed multimedia server system and multimedia information storage-distribution method therefor
JP2011028314A (en) * 2009-07-21 2011-02-10 Fujitsu Ltd Tally file generation program and method, and data restoration program and method
JP2011076175A (en) * 2009-09-29 2011-04-14 Nec Corp Storage device and data deletion method for the same
JP2014137758A (en) * 2013-01-17 2014-07-28 Toshiba Corp Storage device and store method

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1976243A2 (en) 2007-03-29 2008-10-01 NTT DoCoMo, Inc. Communication terminal and program
JP2008293307A (en) * 2007-05-25 2008-12-04 Nippon Telegr & Teleph Corp <Ntt> Distributed multimedia server system, multimedia information accumulation-delivery method
JP4667419B2 (en) * 2007-05-25 2011-04-13 日本電信電話株式会社 Distributed multimedia server system and multimedia information storage and distribution method
JP2011028314A (en) * 2009-07-21 2011-02-10 Fujitsu Ltd Tally file generation program and method, and data restoration program and method
JP2011076175A (en) * 2009-09-29 2011-04-14 Nec Corp Storage device and data deletion method for the same
JP2010282635A (en) * 2010-07-09 2010-12-16 Nippon Telegr & Teleph Corp <Ntt> Distributed multimedia server system and multimedia information storage-distribution method therefor
JP2014137758A (en) * 2013-01-17 2014-07-28 Toshiba Corp Storage device and store method

Similar Documents

Publication Publication Date Title
JP4744569B2 (en) Recording method and reproducing method suitable for recording / reproducing AV data, recording drive and reproducing drive thereof, information recording system, information reproducing system, and information recording medium
JP4688584B2 (en) Storage device
JP4859837B2 (en) Information recording medium access device and data recording method
KR100644602B1 (en) Method for driving remapping for flash memory and flash memory architecture thereto
JP4931810B2 (en) FAT analysis for optimized sequential cluster management
JP4372134B2 (en) Storage system with data comparison function
JP2008204041A (en) Storage device and data arrangement control method
US7373477B2 (en) Fragmentation executing method and storage device
JP2008015769A (en) Storage system and writing distribution method
JP2007184015A (en) Method for assigning track for disk device
JP2010020431A (en) Storage system and method for changing storage capacity related to device designated by host device
JP2009087021A (en) Storage device and data deduplication method
US7062605B2 (en) Methods and structure for rapid background initialization of a RAID logical unit
US6272085B1 (en) Data recording/reproducing method and device
JP2007193883A (en) Data recording device and method, data reproducing device and method, and data recording and reproducing device and method
JP2007184021A (en) Address assigning method, disk device, and data writing method
JP2007087062A (en) Array type storage device
JP4012791B2 (en) Sector rearrangement method of information recording medium and information storage device
JP4130808B2 (en) Formatting method
JP2010237907A (en) Storage device and recording method
JP5378604B2 (en) Mainframe storage device to which Thin Provisioning is applied
US20110022774A1 (en) Cache memory control method, and information storage device comprising cache memory
US7293193B2 (en) Array controller for disk array, and method for rebuilding disk array
JP2010055247A (en) Storage system and configuration management method
US11989457B2 (en) System and method for performing data read-write operations in zoned storage devices

Legal Events

Date Code Title Description
RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20070626