Apparatus and method for storing and assigning error checking and correcting processing of data to storage arrays
22 claims: 5 independent, 17 dependent
- 1ネットワークインターフェースと、 N個のストレージアレイと、 データ処理モジュールと 前記データ処理モジュールと前記N個のストレージアレイとの間、および、前記N個のストレージアレイの間でデータを切り替えるスイッチモジュールと を備え、 前記N個のストレージアレイのそれぞれは、 ターゲット処理モジュールと、 1個からM個のハードディスクドライブと を有し、 MおよびNは1よりも大きい整数であり、 前記データ処理モジュールは、第1のデータブロックに対する第1のデータ格納要求を、前記第1のデータブロックに対するエラー検出訂正(ECC)データ処理のために、複数の前記ターゲット処理モジュールのうちの1つのターゲット処理モジュールに割り当て、 前記複数のターゲット処理モジュールのうちの前記1つのターゲット処理モジュールは、 前記第1のデータブロックの一部を格納し、 前記第1のデータブロックの第1の部分および前記第1のデータブロックに対応付けられているECCデータを、前記複数のターゲット処理モジュールのうちの別の1つのターゲット処理モジュールに送信し、 前記別の1つのターゲット処理モジュールは、前記第1のデータブロックの前記第1の部分及び前記ECCデータを受信および格納し、 前記データ処理モジュールおよび前記スイッチモジュールは前記N個のストレージアレイと前記ネットワークインターフェースとの間に接続され、 前記N個のストレージアレイは前記データ処理モジュールおよび前記スイッチモジュールを介して前記ネットワークインターフェースと通信するRAIDシステム。
- 2前記複数のターゲット処理モジュールのうち前記別の1つのターゲット処理モジュールが受信する前記ECCデータは、前記第1の部分に対応する請求項1に記載のRAIDシステム。
- 3前記ネットワークインターフェースは、前記第1のデータブロックを受信して、前記第1のデータブロックを前記データ処理モジュールに転送する請求項1または2に記載のRAIDシステム。
- 4前記ネットワークインターフェースは、ギガビットイーサネットネットワークインターフェース、およびデータバスのうち少なくとも1つを有する請求項3に記載のRAIDシステム。
- 5前記スイッチモジュールは、マルチポート高速スイッチを有する 請求項1から4の何れか1項に記載のRAIDシステム。
- 6前記データ処理モジュールは、第2のデータブロックに対する第2のデータ格納要求を、前記第2のデータブロックに対するECCデータ処理のために、第2のターゲット処理モジュールに割り当て、前記第2のターゲット処理モジュールは、前記第2のデータブロックのうち第1の部分および前記第2のデータブロックに対応付けられているECCデータを前記複数のターゲット処理モジュールのうち第3のターゲット処理モジュールに送信する請求項1から5の何れか1項に記載のRAIDシステム。
- 7前記第1および第2のデータブロックはそれぞれ、前記複数のターゲット処理モジュールのうち前記1つのターゲット処理モジュールおよび前記第2のターゲット処理モジュールにおいて 並列に 処理される請求項6に記載のRAIDシステム。
- 8前記データ処理モジュールは、前記第1のデータブロックに対してファイルシステム(FS)プロトコル機能を実行し、 前記FSプロトコルは、ネットワークファイルサーバ(NFS)および共通インターネットファイルサーバ(CIFS)のうち少なくとも1つを含む請求項1から7の何れか1項に記載のRAIDシステム。
- 9前記データ処理モジュールは、前記第1のデータブロックに適用されるRAIDストレージレベルを決定する請求項1から8の何れか1項に記載のRAIDシステム。
- 10前記データ処理モジュールは、前記N個のストレージアレイのうち選択される複数のストレージアレイに前記第1のデータブロックをマッピングして、前記N個のストレージアレイに対するストレージマップを更新する請求項1から9の何れか1項に記載のRAIDシステム。
- 11前記データ処理モジュールは、データ取得要求を受信すると、前記データ取得要求を前記複数のターゲット処理モジュールのうち第1のターゲット処理モジュールに割り当て、 前記複数のターゲット処理モジュールのうち前記第1のターゲット処理モジュールは、前記複数のターゲット処理モジュールのうちの他の複数のターゲット処理モジュールから前記データ取得要求に対応するデータを取得すると共に、前記データのうちエラーを含む部分に関連するECCデータを取得し、 前記複数のターゲット処理モジュールのうち前記第1のターゲット処理モジュールは、前記ECCデータを用いて前記部分に対してデータ復元を実行する請求項1から10の何れか1項に記載のRAIDシステム。
- 12前記データ処理モジュールは、データ取得要求を受信すると、前記データ取得要求に対応するデータを含む前記複数のターゲット処理モジュールにデータ取得メッセージを送信し、 前記複数のターゲット処理モジュールは、前記データ取得要求に対応する前記データおよび前記データのうちエラーを含む部分に関連するECCデータを取得し、 前記複数のターゲット処理モジュールは、前記データ取得要求に対応する取得された前記データおよび前記ECCデータを、前記データ処理モジュールに送信し、前記データ処理モジュールは前記ECCデータを用いて前記部分に対してデータ復元を実行する請求項1から11の何れか1項に記載のRAIDシステム。
- 13前記データ処理モジュールは、データ取得要求を受信すると、前記データ取得要求に対応するデータを含む前記複数のターゲット処理モジュールにデータ取得メッセージを送信し、 前記複数のターゲット処理モジュールは、前記データ取得要求に対応する前記データおよび前記データのうちエラーを含む部分に関連するECCデータを取得し、 前記複数のターゲット処理モジュールは、前記ECCデータを用いて前記部分に対してデータ復元を実行する請求項1から12の何れか1項に記載のRAIDシステム。
- 14前記データ処理モジュールは、前記スイッチモジュールと前記ネットワークインターフェースとの間に接続される請求項1から13の何れか1項に記載のRAIDシステム。
- 15前記ターゲット処理モジュールとは別物である前記データ処理モジュールは、前記RAIDシステムとは別物のホストデバイスから前記第1のデータブロックを受信する請求項1から14の何れか1項に記載のRAIDシステム。
- 16前記データ処理モジュールは、オペレーティングシステム、ファイルシステムプロトコルファンクションのうち少なくとも1つを用いて前記第1のデータブロックを処理し、選択された前記ターゲット処理モジュールの1つにRAID冗長処理および復元処理を割り当てる請求項1から15の何れか1項に記載のRAIDシステム。
- 17前記データ処理モジュールは、前記N個のストレージアレイに格納されたデータブロックのマップを管理し、前記ターゲット処理モジュールに前記マップを割り当てる請求項1から16の何れか1項に記載のRAIDシステム。
- 18前記データ処理モジュールは、前記ターゲット処理モジュールのうちの1つを選択し、 選択された前記ターゲット処理モジュールのうちの1つにRAID冗長処理および復元処理を割り当てる請求項1から17の何れか1項に記載のRAIDシステム。
- 19前記データ処理モジュールは、エラー訂正コード処理を実行し、前記N個のストレージアレイへの格納後、前記第1のデータブロックがリカバーされる請求項1から18の何れか1項に記載のRAIDシステム。
- 20前記RAIDストレージのレベルは、前記RAIDシステムが分散化、ディスクミラーリング、およびパリティーストレージを実行するか否かを識別する請求項9に記載のRAIDシステム。
- 21前記データ処理モジュールは、要求されたデータに対するデータ要求信号を生成する、 請求項1に記載のRAIDシステム。
- 22前記1つのターゲット処理モジュールが、前記第1のデータブロックに対してECCデータを生成する間、前記データ処理モジュールは、第2のデータブロックを受信し、前記第2のデータブロックを他の前記ターゲット処理モジュールに割り当て、 前記他のターゲット処理モジュールは、前記第2のデータブロックに対してECCデータを生成する 請求項1から21のいずれか1項に記載のRAIDシステム。
Independent claims22
59 paragraphs, as filed
Related application
This application includes U.S. Provisional Patent Application No. 60 / 820,180 (Filing Date: July 24, 2006), U.S. Patent Application No. 11 / 724,549 (Filing Date: March 15, 2007), and U.S. Patent Application No. 11. Claim the benefits of / 591,325 (filed on November 1, 2006). All disclosures of the above applications are incorporated herein by reference.
The present disclosure relates to a RAID (Redundant Array of Independent Disks) system.
The description of "background techniques" herein is made to generally explain under what circumstances the disclosure is devised. The work by the inventor named at this time does not meet the criteria of prior art at the time of filing, to the extent described in this "Background Art" section. As with aspects, prior art to this disclosure, express or implied, is not permitted.
RAID (Redundant Array of Independent Disks) systems store data redundantly on multiple hard disks. At some RAID levels, data blocks are split and stored on multiple different disks to reduce data storage and search latency. Also, when multiple discs are used, the mean time between failures (MTBF) tends to increase and the fault tolerance tends to increase.
The RAID system looks like a single logical hard disk drive to the device or host device you are accessing. RAID systems may employ disk striping, which involves dividing the storage space of each drive into multiple units. The unit size is selected from a sector (512 bytes) to a few megabytes, depending on the application. All disk stripes are usually interleaved and addressed in sequence.
There are many types of RAID systems in addition to non-redundant arrays (RAID-0). RAID-0 employs striping without data redundancy. Best performance, but no fault tolerance. RAID-1 uses disk mirroring without striping and requires at least two drives to allow replication when storing data. Since each disc can be read at the same time, the reading performance is improved. Write performance is the same as for a single disk storage. RAID-1 has the highest performance and fault tolerance in multi-user systems.
RAID-2 uses striping across multiple disks. Some discs store error detection and correction (ECC) information. RAID-3 uses striping to dedicate one drive to store parity information. Detect errors using embedded error detection and correction (ECC) information. Data recovery is performed by calculating the logical exclusive-or (XOR) of the information stored on the remaining drives. Since I / O operation specifies addresses for all drives at the same time, RAID-3 cannot perform duplicate I / O. For this reason, RAID-3 is best used in single-user systems for long-recorded applications.
RAID4 uses large stripes. The recorded content can be read from any one drive. Therefore, in the read operation, I / O can be duplicated and executed. Since the parity drive is updated in the write operation, I / O cannot be duplicated. RAID-5 uses a rotary parity array to address the restrictions on the write operation of RAID-4. Therefore, both the read operation and the write operation can be duplicated. RAID-5 stores parity information, but does not use redundant data. However, the data can be reconstructed using the parity information. RAID-5 requires at least three, typically five, disks for an array. RAID-5 is ideal for multi-user systems where performance is not important or where write operations are rarely performed.
RAID-6 is similar to RAID-5, but uses a second parity that is distributed across multiple different drives. RAID-6 has high fault tolerance and drive failure tolerance. RAID-7 uses a real-time embedded operating system and controller. RAID-7 takes advantage of other characteristics of caching and standalone computers over highway buses.
RAID-10 is a combination of RAID-0 and RAID-1. RAID-10 can be further divided into two, one of which, RAID-0 + 1, organizes the data as stripes across multiple disks, mirroring the striped disks. The other RAID-1 + 0 mirrors the data and strips the mirrored result.
RAID-50 (or RAID-5 + 0) uses a series of RAID-5 groups. The RAID-5 group is striped according to the RAID-0 method to improve the performance of RAID-5 without lowering the data protection level. In RAID-53 (or RAID-5 + 3), striping (RAID-0 method) is used for the virtual disk block of RAID-3. As a result, the performance is higher than that of RAID-3, but the cost is also higher.
When the host device sends a block of data to the storage, RAID processing is performed for the selected RAID method. Such RAID processing may include redundant processing and restoration processing (eg, Error Detection and Correction (ECC)) for the selected RAID level and / or other processing.
In one way, a single central processing unit (CPU) receives a block of data from another device. The CPU performs all RAID processing, including ECC. According to this method, ECC-related processing is not constant and can take a long time, so that the speed of data storage can often be limited by the CPU. In other words, processing by the CPU may cause a bottleneck and increase the latency. With one CPU, RAID reconfiguration of one data block must be completed before processing subsequent data blocks.
<p> The RAID (Redundant Array of Independent Disks) system has N storage arrays, each of which has a target processing module and 1 to M hard disk drives, where M and N are. An integer greater than 1. The data processing module is one of a plurality of target processing modules for processing the first data storage request for the first data block and error detection correction (ECC) data processing for the first data block. Assign to. One of the multiple target processing modules has the ECC data associated with the first part of the first data block and the first data block as another of the multiple target processing modules. Send to one target processing module.</p><p> According to another feature, the ECC data received by one of the multiple target processing modules corresponds to the first part. The interface receives the first data block and transfers the first data block to the data processing module. The interface has at least one of a network interface, a Gigabit Ethernet network interface, and a data bus. The switch module switches data between the data processing module and N storage arrays and between N storage arrays. The switch module has a multi-port high speed switch. The data processing module allocates a second data storage request for the second data block to the second target processing module for ECC data processing for the second data block, and the second target processing module is the second. The ECC data associated with the first part of the two data blocks and the second data block is transmitted to the third target processing module of the plurality of target processing modules. The first and second data blocks are duplicated in one target processing module and the second target processing module of the plurality of target processing modules, respectively.</p><p> According to another feature, the data processing module has an interface, memory, and at least one processor. The data processing module performs file system (FS) protocol functions on the first data block. The FS protocol includes at least one of a Network File Server (NFS) and a Common Internet File Server (CIFS). The data processing module determines the RAID storage level applied to the first data block. The data processing module maps the first data block to a plurality of storage arrays selected from the N storage arrays and updates the storage map for the N storage arrays.</p><p> According to another feature, when the data processing module receives the data acquisition request, the data processing module assigns the data acquisition request to the first target processing module among the plurality of target processing modules. The first target processing module among the multiple target processing modules acquires the data corresponding to the data acquisition request from the other multiple target processing modules of the multiple target processing modules, and is related to the part of the data containing the error. Acquire ECC data.</p><p> According to another feature, the first target processing module of the plurality of target processing modules uses ECC data to perform data restoration on a portion. When the data processing module receives the data acquisition request, the data processing module sends a data acquisition message to a plurality of target processing modules including the data corresponding to the data acquisition request. The plurality of target processing modules acquire ECC data related to the data corresponding to the data acquisition request and the portion of the data containing the error. The plurality of target processing modules transmit the acquired data and ECC data corresponding to the data acquisition request to the data processing module, and the data processing module performs data restoration on the part using the ECC data. Multiple target processing modules use ECC data to perform data restoration on parts.</p><p> A RAID (Redundant Array of Independent Disks) system has N storage arrays, each of which has a target processing module and 1 to M hard disk drives, M and N. Is an integer greater than 1. The data processing module selectively allocates error detection and correction (ECC) processing for a plurality of data blocks to a plurality of target processing modules selected from the plurality of target processing modules so as not to be duplicated. The switch module provides a communication path between the data processing module and the N storage arrays, and between each of the N storage arrays and the other storage arrays of the N storage arrays.</p><p> According to another feature, the data processing module assigns a data storage request for the first data block to one of the target processing modules for ECC data processing for the first data block. One of the multiple target processing modules has the ECC data associated with the first part of the first data block and the first data block in another one of the multiple target processing modules. Send to one target processing module. The ECC data received by another target processing module among the multiple target processing modules corresponds to the first part. The interface receives the plurality of data blocks and transfers the plurality of data blocks to the data processing module. The interface has at least one of a network interface, a Gigabit Ethernet network interface, and a data bus.</p><p> According to another feature, the switch module has a multi-port high speed switch. The switch module has a multi-port switch that operates at speeds of over 1 gigabit per second. The switch module has a multi-port Gigabit Ethernet switch. The data processing module allocates a second data storage request for the second data block to the second target processing module for ECC data processing for the second data block. The second target processing module transmits the ECC data associated with the first part of the second data block and the second data block to the third target processing module of the plurality of target processing modules. ..</p><p> According to another feature, the first and second data blocks are duplicated in one target processing module and the second target processing module of the plurality of target processing modules, respectively. The data processing module has an interface, memory, and at least one processor, and the data processing module performs file system (FS) protocol functions on the first data block. The FS protocol includes at least one of a network file server (NFS) and a common internet file server (CIFS). The data processing module determines the RAID storage level applied to multiple data blocks. The data processing module maps multiple data blocks to a plurality of storage arrays selected from the N storage arrays and updates the storage map for the N storage arrays.</p><p> According to another feature, when the data processing module receives the data acquisition request, the data processing module assigns the data acquisition request to the first target processing module among the plurality of target processing modules. The first target processing module among the plurality of target processing modules requests the data corresponding to the data acquisition request from the other target processing modules of the plurality of target processing modules and is related to the part of the data containing the error. Request ECC data. The first target processing module among the plurality of target processing modules performs data restoration on a part using ECC data.</p><p> According to another feature, when the data processing module receives the data acquisition request, it sends a data acquisition message to a plurality of target processing modules including the data corresponding to the data acquisition request. The plurality of target processing modules acquire ECC data related to the data corresponding to the data acquisition request and the portion of the data containing the error. The plurality of target processing modules transmit the acquired data and ECC data corresponding to the data acquisition request to the data processing module, and the data processing module performs data restoration on the part using the ECC data. Multiple target processing modules use ECC data to perform data restoration on parts.</p><p> The contents of the present disclosure can be applied to further different fields, which will become clear from the detailed description below. Detailed descriptions and specific examples will be given to explain preferred embodiments of the present disclosure, but these are for the purpose of explanation only and do not limit the scope of the present disclosure. I want to be understood.</p>
The contents of the present disclosure will be described in more detail with reference to the following detailed description and accompanying drawings. The attached drawings are as follows.
<figref num="1">It is a functional block diagram which shows the RAID system which concerns on this disclosure.</figref>
<figref num="2A">It is a functional block diagram which shows the data processing module.</figref>
<figref num="2B">It is a functional block diagram which shows the target processing module.</figref>
<figref num="2C">It is a more detailed functional block diagram which shows an example of a target processing module.</figref>
<figref num="3">It is a functional block diagram which shows the processing of a data block.</figref>
<figref num="4">It is a functional block diagram which shows the processing of a data block.</figref>
<figref num="5">It is a functional block diagram which shows the processing of a data block.</figref>
<figref num="6">It is a figure which shows the timing of processing of a data block.</figref>
<figref num="7">It is a flowchart which shows the processing method of the data block to be stored.</figref>
<figref num="8A">It is a flowchart which shows an example of the method of acquiring the data block which ECC processing is performed by a data processing module.</figref><figref num="8B">It is a flowchart which shows an example of the method of acquiring the data block which ECC processing is performed by a data processing module.</figref>
<figref num="9A">It is a flowchart which shows an example of the method of acquiring the data block which ECC processing is performed by each of the target processing modules.</figref><figref num="9B">It is a flowchart which shows an example of the method of acquiring the data block which ECC processing is performed by each of the target processing modules.</figref>
<figref num="10">It is a flowchart which shows an example of the method of acquiring the data block which ECC processing is performed by one target processing module selected from the target processing module.</figref>
The following description is merely exemplary in nature and is by no means limiting to the content of this disclosure, its use or use. In order to clearly explain the contents of the present disclosure, the same reference number is used across a plurality of drawings when similar components are specified in the drawings. As used herein, the terms modules, circuits and / or devices are application-specific integrated circuits (ASICs), electronic circuits, processors (shared, dedicated or grouped) and memory that run one or more software or firmware programs. , Combined logic circuits, and / or other suitable components that provide the functionality described herein. As referred herein, the expression "at least one of A, B and C" should be construed to mean a logical operation (A or B or C), a non-exclusive OR. It should be noted that the steps included in the method may be performed in a different order without changing the principles of the present disclosure.
Figure 1 shows a RAID (Redundant Array of Independent Disks) system 100. Interface 104 receives a block of data to be stored in the RAID system 100. For example, the interface 104 may be a high-speed interface such as a Gigabit Ethernet (registered trademark) network interface or a data bus, but any other type of interface may be used. The data processing module 108 performs part of the RAID processing. That is, the data processing module 108 receives the data block from the interface 104 and executes the operating system (OS) and file system (FS) protocol functions on the data. For example, the FS protocol may include a network file server (NFS), a common internet file server (CIFS), and / or other suitable protocols. The data processing module 108 distributes redundant processing and restoration processing (for example, error detection correction (ECC)) to other target processing devices as described later.
The data processing module 108 communicates with the switch module 112. As an example, the switch module 112 may be a multiport high speed switch such as a crossbar switch, a gigabit switch or a gigabit Ethernet switch. The switch module 112 may switch the data organized as a data packet. As you can imagine, the switch module 112 provides expandability and flexibility compared to hard-wired connections.
The switch module 112 communicates with two or more storage arrays 120-1, 120-2, ... And 120-X (collectively referred to as storage array 120). Where X is an integer greater than 1. The storage array 120 includes target processing modules 122-1, 122-2, ... and 122-X (collectively referred to as target processing modules 122) and one or more hard disk drives (HDD) 124-11, 124-12, respectively. , ... and 124-XY (collectively referred to as HDD124). Where Y is an integer greater than 0. As you can imagine, scaling may be possible by varying the number of storage arrays 120 and the number of HDDs 124 that each storage array 120 has.
FIG. 2A is a diagram showing an example of the data processing module 108 in more detail. The data processing module 108 receives a data block to be stored data via the interface 104. The data processing module 108 may have an interface 150, a memory 154, and one or more processors 156.
Data processing module 108 determines the RAID storage level to apply, performs FS-related processing, maps data blocks to the storage array, and performs RAID redundancy processing and restore processing (eg, error detection and correction (eg, error detection and correction). ECC)) may be assigned to the selected target processing module to update the storage map, and so on.
The target processing module 122, which is assigned to perform RAID redundancy processing and restoration processing, receives an instruction from the data processing module 108. Selective target processing module 122 generates error detection and correction (ECC) for the allocated data block. Upon completion, the target processing module 122 selectively causes another target processing module to store a block of data and / or a portion of ECC data for storage in another array based on the RAID instructions given by the data processing module 108. Performs data spreading processing by sending to. Some data and ECC data may be stored locally.
At the same time, the other target processing module 122 may be assigned RAID redundancy processing and restoration processing for other data blocks. The other target processing module 122 duplicates and processes ECC for other data blocks. The data processing module 108 does not process ECC for any of the data blocks to be stored, so it does not create a bottleneck. The memory 154 associated with the data processing module 108 may store and update the global drive map 158 of the data in the storage array 120.
Explaining with reference to FIG. 2B, each target processing module 122 may have a RAID configuration module 170 and a RAID acquisition module 168. RAID configuration module 170 handles ECC. The RAID acquisition module 168 processes a RAID acquisition request, as will be described later.
The RAID configuration module 170 processes ECC for a portion of the data block to be stored on the local drive 124 associated with the select target processing module 122. In addition, the RAID configuration module 170 handles ECC for the remote drive associated with the remote storage array 120. The RAID instruction module 172 may generate a RAID instruction for another target processing and process the RAID instruction received from the other target processing module 122. The RAID instruction module 172 may be integrated with the RAID configuration module 170.
The remote storage array 120 associated with a target processing module other than the selected target processing module stores data and / or ECC data received from the selected target processing module. The remote storage array 120 may simply follow the RAID instructions sent by the selective target processing module 122.
As you can imagine, the amount of processing performed by the remote storage array 120 is much less than the RAID configuration processing performed by the selective target processing module 122. Therefore, the target processing module 122 of the remote storage array 120 can be used to handle RAID configurations of other data blocks in duplicate.
FIG. 2C is a diagram showing an example of the target processing module 122 in more detail. The target processing module 122 receives a RAID configuration execution request from the data processing module and / or a RAID instruction transmitted by the remote target processing module via the switch module 112. The target processing module 122 has an interface 178, a memory 182, and one or more processors 184.
Explaining the use with reference to FIG. 3, the first data block 200-1 is received by the data processing module 108 via the interface 104. The data processing module 108 executes OS and FS protocol functions on the data block. The data processing module 108 allocates the data block to the target processing module 122 associated with one of the storage arrays 120. Further, the data processing module 108 may determine the RAID storage level to be applied, map the data blocks to the storage array, update the storage map, and so on.
For example, the first data block 200-1 may be assigned to the target processing module 122-1 of the first storage array 120-1. The selection target processing module 122-1 generates ECC for the data block. The data processing module 108 receives the second data block 200-2 through the interface 104 while the storage array 120-1 is generating ECC for the first data block. The data processing module 108 allocates a second data block to the target processing module 122-2 associated with the storage array 120-2 for ECC generation.
In this way, the RAID configuration process for the data block is executed in duplicate, but this can be continued up to the data block 200-P until all the target processing modules process the data block. Therefore, the throughput can be significantly improved as compared with other methods.
4 and 5 are diagrams showing the processing of data block 200-1 in more detail. When the processing is completed, the data processing module 108 transmits the data block 200-1 to the target processing module 122-1 of the storage array 120-1. The data processing module 108 may also update the drive map. Target processing module 122-1 processes ECC for the data block. The target processing module 122-1 may store a part of the data associated with the data block 200-1 in the local drive 124 associated with the storage array 120-1. Further, as the target processing module 122-1 transmits RAID instructions, data, and / or ECC data to the target processing modules 122-2, ..., And 122-X associated with other storage arrays. May be good. The other target processing modules 122-2, ..., And 122-X of the remote storage arrays 120-2, ..., And 120-X simply obey the RAID instructions, limiting the processing load. Therefore, the target processing modules 122-2, ..., And 122-X included in the remote storage arrays 120-2, ..., And 120-X can process ECC for other data blocks.
In FIG. 5, the data processing module 108 receives the second data block 200-2 while the target processing module 122-1 is processing the ECC for the first data block 200-1. The data processing module 108 allocates the second data block 200-2 to the target processing module 122-2 associated with the storage array 120-2. Additional data blocks 200-P may be assigned to the target processing module 122 of the other storage array 120.
FIG. 6 is a diagram generally showing an example of RAID processing 250 of a data block. This type of RAID processing can create bottlenecks, resulting in shorter data access and data acquisition times. Data processing according to some embodiments of the present disclosure is shown as 252. The time required for the RAID configuration for each data block may not be constant. The RAID system according to the present disclosure can continue to process data blocks even if the time to process one of the storage requests becomes significantly longer.
FIG. 7 is a diagram showing a RAID system operation method when a data storage request is made. Start from step 300. In step 302, it is determined whether or not the data block to be stored has been received by the data processing module 108. If step 302 is true, in step 304, the data processing module 108 assigns ECC processing for the data block to one of the plurality of target processing modules 122. The data processing module 108 may further update the global drive map to perform other functions described above. In step 306, the selected target processing module processes ECC for the data block. The selective target processing module may send RAID instructions, data, and / or ECC data to the remote target processing module associated with the remote storage array. Step 310 ends.
8A to 10 show various examples of data acquisition methods. Explaining data acquisition, ECC processing may be executed when an error is detected at the time of acquisition. The error may be detected by the hard disk drive containing the subblock associated with the error. If an error is detected, ECC restore is performed locally by multiple target processing modules of the same type, one target processing module selected from among the target processing modules, and / or the data processing module. Good.
8A and 8B are flowcharts showing an example of a method of acquiring a data block. According to this embodiment, the ECC process for the data including the ECC error is executed by the data processing module. The method shown in FIG. 8A starts at step 320 and proceeds to step 322 to determine if the data processing module has received a data acquisition request. If step 322 is true, in step 324 the data processing module sends a broadcast message to all target processing modules that have the data associated with the data acquisition request. Alternatively, the data processing module may use a map to individually send individual messages to each target processing module.
In step 326, the data processing module determines whether it has received a data block (and the corresponding ECC data for the data with the error) from the target processing module with the error. If step 326 is true, the data processing module uses the ECC data to restore the data. Steps 326 and 327 proceed to step 328, where the data processing module sends the modified data to the requester. If the error cannot be corrected, the data processing module may send an error message and / or retry the retrieval. End at step 329.
The method shown in FIG. 8B starts at step 330 and proceeds to step 332. In step 332, the target processing module determines whether or not a data acquisition request has been received from the data processing module. In step 334, the target processing module acquires the data related to the acquisition request and sends it to the data processing module. At step 336, the target processing module determines if an error is detected in the subblock. If step 336 is true, the target processing module sends ECC data about the subblock to the data processing module. Steps 336 and 337 proceed to step 338 to determine if all the data related to the data acquisition request has been transmitted. If not sent, return to step 334. If step 338 is true, step 339 ends.
9A and 9B are flowcharts showing an example of a method of acquiring a data block. According to this embodiment, the ECC process is executed by each target processing module that stores the data. The method shown in FIG. 9A begins at step 340. In step 342, the data processing module determines whether or not a data acquisition request has been received. If step 342 is true, in step 344 the data processing module sends a broadcast message to all target processing modules. Alternatively, the data processing module may send a separate message to the target processing module based on the map. In step 348, the data processing module receives the data and transfers it to the requester. End at step 349.
The method shown in FIG. 9B begins at step 350. In step 352, the target processing module determines whether or not a data acquisition request has been received. If step 352 is true, in step 354, the target processing module sends data about the acquisition request in subblocks to the data processing module. In step 356, it is determined whether an error has been detected in the subblock. If step 356 is true, go to step 357 to process the ECC to restore the data and send the restored data. If the data cannot be restored, you may send an error message and / or retry. From steps 356 and 357 to step 358, it is determined whether or not all the subblocks associated with the data acquisition request have been transmitted. If not sent, return to step 354. If it has been sent, it ends in step 359.
FIG. 10 is a flowchart showing an example of a method of acquiring a data block in which ECC processing is performed. According to this embodiment, the data restoration may be performed by one target processing module selected from the target processing modules. Start at step 360 and proceed to step 361. In step 361, the data processing module determines whether or not a data acquisition request has been received. If step 361 is true, in step 362 the data processing module assigns the data acquisition to one of the target processing modules. The selected target processing module and / or the data processing module requests data from the remote target processing module.
In step 364, the remote target processing module sends a data subblock associated with the acquisition request to the selected target processing module. Similarly, the selected target processing module retrieves the data associated with the fetch request from the local drive. Alternatively, the remote target processing module may send the data directly to the data processing module if there are no errors in the data. If there is an error, the remote target processing module may send data to the selected target processing module to restore the data.
Explaining each of the remote target processing modules, in step 366, the remote target processing module determines whether an error has been detected in any of the data subblocks. If step 366 is true, the remote target processing module sends the ECC data associated with the subblock with the error to the selected target processing module. The error-free data subblock may be sent to the target processing module or the data processing module.
From steps 366 and 367 to step 368, it is determined whether all of the data subblocks have been transmitted in the control associated with the remote target processing module. In step 370, the selection target processing module uses ECC data for data recovery, that is, corrects the error. The selected target processing module transfers data to the data processing module. In step 372, the data processing module transfers the restored data to the requesting device.
One of ordinary skill in the art can conceive that the broad teaching content of the present disclosure can be implemented in various forms based on the above description. Therefore, although specific examples have been introduced in the present disclosure, it is clear that those skilled in the art can propose other modifications by referring to the drawings, the specification and the scope of claims of the present application. The true scope is not limited to the specific examples described.
18 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18
Every citation, both ways
| Document | Relation | Office |
|---|---|---|
| JP08263224A | Cites | Japan |
| JP07200187A | Cites | Japan |
| JP06067814A | Cites | Japan |
| JP2004192483A | Cites | Japan |
| JP2005275829A | Cites | Japan |
| JP2004334706A | Cites | Japan |
| EP00730229A1 | Cites | European Patent Office (EPO) |
| JP05504431A | Cites | Japan |
| JP2004514968A | Cites | Japan |
| US20050022052A1 | Cites | United States of America |
| US04989206A | Cites | United States of America |
18 members in 4 offices
Priority claims19
| Document | Office | Kind | Date |
|---|---|---|---|
| 60820180 | United States of America | – | |
| 82018006 | United States of America | P | |
| 82018006 | United States of America | P | |
| 11591325 | United States of America | – | |
| 59132506 | United States of America | A | |
| 59132506 | United States of America | A | |
| 11724549 | United States of America | – | |
| 72454907 | United States of America | A | |
| 72454907 | United States of America | A | |
| 2007016159 | United States of America | W | |
| 2007016159 | United States of America | W | |
| 2006591325 | – | – | – |
| 2006820180 | – | – | – |
| 2007724549 | – | – | – |
| 2007016159 | – | – | – |
| US20060591325 | – | – | – |
| US20060820180P | – | – | – |
| US20070724549 | – | – | – |
| WO2007US16159 | – | – | – |
Members18
| Document | Office | Kind | |
|---|---|---|---|
| US2008022156A1 | United States of America | A1 | |
| WO2008013695A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2008013695A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2008013695A4 | World Intellectual Property Organization (WIPO) | A4 | |
| US7634686B2 | United States of America | B2 | |
| JP2009545062A | Japan | A | |
| CN101652752A | China | A | |
| US2010095187A1 | United States of America | A1 | |
| US8006127B2 | United States of America | B2 | |
| US8046629B1 | United States of America | B1 | |
| US2012041992A1 | United States of America | A1 | |
| CN101652752B | China | B | |
| CN102880525A | China | A | |
| JP5124792B2This record | Japan | B2 | |
| US8495416B2 | United States of America | B2 | |
| US2013305122A1 | United States of America | A1 | |
| US8862931B2 | United States of America | B2 | |
| CN102880525B | China | B |
35 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Written notification of registration of transferJAPANESE INTERMEDIATE CODE: R350R350 | R350 | |
| Request for change of ownership or part of ownershipJAPANESE INTERMEDIATE CODE: R313113S111 | S111 | |
| Written notification for declining of transfer of rightsJAPANESE INTERMEDIATE CODE: R360R360 | R360 | |
| Transfer withdrawnWithdrawnJAPANESE INTERMEDIATE CODE: R371R371 | R371 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Written notification for declining of transfer of rightsJAPANESE INTERMEDIATE CODE: R360R360 | R360 | |
| Written notification of registration of transferJAPANESE INTERMEDIATE CODE: R350R350 | R350 | |
| Request for change of ownership or part of ownershipJAPANESE INTERMEDIATE CODE: R313113S111 | S111 | |
| Written request for registration of change of domicileJAPANESE INTERMEDIATE CODE: R313531S531 | S531 | |
| Written notification of registration of transferJAPANESE INTERMEDIATE CODE: R350R350 | R350 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Request for change of ownership or part of ownershipJAPANESE INTERMEDIATE CODE: R313113S111 | S111 | |
| Transfer withdrawnWithdrawnJAPANESE INTERMEDIATE CODE: R371R371 | R371 | |
| Request for change of ownership or part of ownershipJAPANESE INTERMEDIATE CODE: R313113S111 | S111 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Renewal fee payment (event date is renewal date of database)FPAY | FPAY | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| First payment of annual fees (during grant procedure)JAPANESE INTERMEDIATE CODE: A61A61 | A61 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Decision of grant or rejection writtenTRDD | TRDD | |
| Request for written amendment filedJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Notification of reasons for refusalJAPANESE INTERMEDIATE CODE: A131A131 | A131 | |
| Report on retrievalJAPANESE INTERMEDIATE CODE: A971007A977 | A977 | |
| Request for written amendment filedJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Written request for application examinationJAPANESE INTERMEDIATE CODE: A621A621 | A621 |
Numbers
- Publication
- 5124792
- Publication, DOCDB
- 5124792
- Publication, EPODOC
- JP5124792B
- Application
- 2009521760
- Application, DOCDB
- 2009521760
- Application, EPODOC
- JP20090521760
Titles2
- Japanese
- RAID(RedundantArrayofIndependentDisks)システム用のファイルサーバ
- English
- File server for RAID (Redundant Array of Independent Disks) systems
Classification
- CPC, 6
- G06F11/1076
- G06F3/0643
- G06F2211/109
- G06F3/0604
- G06F3/067
- G06F11/08
- IPC, 1
- G06F3 06
