Raid storage device, host and raid system

By using a counting table and hash modulation technology in a RAID system, data reconstruction is performed by identifying and accessing only the used areas of non-faulty storage devices, thus solving the problem of long reconstruction time in existing technologies and improving system performance.

CN113918088BActive Publication Date: 2026-05-22SAMSUNG ELECTRONICS CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
SAMSUNG ELECTRONICS CO LTD
Filing Date
2021-06-30
Publication Date
2026-05-22

AI Technical Summary

Technical Problem

Existing 5-level or 6-level RAID systems require a significant amount of time to rebuild in the event of a data failure, impacting overall I/O performance.

Method used

By employing a counting table and hash modulation techniques, the system identifies the used areas of non-faulty storage devices and performs data reconstruction only in these areas, reducing the number of I/O operations and the time required for reconstruction.

Benefits of technology

This effectively reduces the execution time and number of I/O operations during the rebuild process, thus improving the overall performance of the RAID system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113918088B_ABST
    Figure CN113918088B_ABST
Patent Text Reader

Abstract

A redundant array of independent disks (RAID) storage device includes a storage apparatus including a first storage device configured to store at least one of data blocks and corresponding parity data (data blocks / parity data) and a second storage device configured to serve as a spare storage area, and a RAID controller including a RAID internal memory configured to store a count table and configured to control execution of a rebuild operation in response to a command received from a host, wherein, upon identifying a failed first storage device, the RAID controller accesses used areas of non-failed first storage devices based on the count table and rebuilds data of the failed first storage device using the second storage device.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention generally relates to a redundant array of independent disk (RAID) storage device, a host operating with the RAID storage device, and a RAID system. Background Technology

[0002] RAID systems and methods are commonly used in storage media such as servers storing critical data. Various configurations are possible, such as methods that simply distribute data across storage media during data input / output or data replication / storage. In addition to payload data, RAID systems and methods can also store parity information (hereinafter referred to as "parity data") across one or more storage media. Therefore, if an error occurs in the stored data (whether stored on that storage medium or on other storage media), the data can be appropriately recovered. As a result, RAID improves overall server performance by enhancing data stability and preventing data loss while balancing input / output (I / O) operations.

[0003] As those skilled in the art will understand, many RAID configurations are widely used. For example, in so-called Level 5 or Level 6 RAID systems, data is distributed and stored across the storage medium, and parity bits are used in the system to ensure data integrity. That is, in Level 5 RAID, each data chunk has one parity bit distributed and stored; in Level 6 RAID, each data chunk has two parity bits distributed and stored. However, when using a Level 5 or Level 6 RAID system, because it includes one or two spare storage areas, a rebuild process must be performed on the corresponding spare storage area in the event of a data failure.

[0004] Here, the reconstruction process can generate the lost data by accessing the parity bits and data throughout the RAID system. Therefore, the reconstruction process takes a significant amount of time, and the use of system resources during reconstruction can severely impact the overall I / O performance of the RAID system. Summary of the Invention

[0005] Embodiments of the present invention provide a standalone redundant array of hard disks (RAID) storage device, host device, and RAID system that can reduce the execution time of the reconstruction process and reduce the total number of input / output (I / O) required for reconstruction operations by accessing and reconstructing data only in the areas actually in use.

[0006] However, the inventive concept is not limited to these effects, and other aspects of the inventive concept will become more apparent to those skilled in the art when considering the following detailed description and drawings.

[0007] According to one aspect of the present invention, a Redundant Array of Independent Hard Disks (RAID) storage device is provided, comprising: a storage device including a first storage device and a second storage device, the first storage device being configured to store at least one of data blocks and corresponding parity data (data block / parity data), the second storage device being configured to serve as a spare storage area; and a RAID controller including RAID internal memory configured to store a counter table and configured to control the execution of a rebuild operation in response to a command received from a host, wherein, once a faulty first storage device is identified, the RAID controller accesses the used area of ​​a non-faulty first storage device based on the counter table and rebuilds the data of the faulty first storage device using the second storage device.

[0008] According to one aspect of the present invention, a host device is provided connected to a non-volatile storage device including a first storage device and a second storage device, the first storage device being configured to store at least one of data blocks and corresponding parity data (data block / parity data), and the second storage device being configured to serve as a spare storage region. The host device includes: a host internal memory configured to store a counter table indicating the used regions of each of the first storage devices; and a host processing unit configured to control independent redundant array (RAID) operations on the first storage devices, update the counter table in response to the RAID operations, and further configured to control a rebuild operation of a failed first storage device using the second storage device.

[0009] According to one aspect of the present invention, a Redundant Array of Independent Hard Disks (RAID) system is provided, comprising: a host and solid-state drives (SSDs) connected to the host. Each SSD includes: a first storage device, a second storage device, and a memory controller. The first storage device is configured for RAID and is also configured to store at least one of data and corresponding parity data (data / parity data). The second storage device is configured to serve as a spare storage device. The memory controller is configured to perform data access operations on the first storage device and the second storage device. The RAID system stores a counter table indicating the used area of ​​each first storage device, and, upon identifying a failed first storage device, the RAID system accesses only the data / parity data in the used area of ​​a non-failed first storage device by referring to the counter table to perform a rebuild operation on the failed first storage device using the second storage device.

[0010] According to one aspect of the present invention, a standalone redundant array of hard disks (RAID) control module is provided, the RAID control module being connected to a plurality of SSDs operating according to 5-level RAID or 6-level RAID, wherein when a rebuild operation is performed on at least one second SSD due to the failure of at least any one of the first SSDs, the RAID control module only accesses the used areas of the other first SSDs and performs the rebuild operation on the second SSD. Attached Figure Description

[0011] Some embodiments of the inventive concept are shown in all or relevant portions of the accompanying drawings.

[0012] Figure 1 This is a block diagram of a RAID system 20 according to an embodiment of the present invention.

[0013] Figure 2 This is further illustrated in one example. Figure 1 Block diagram of the RAID controller 200.

[0014] Figure 3 This is a block diagram illustrating an embodiment of a RAID system according to a concept of the present invention.

[0015] Figure 4 This is further illustrated in one example. Figure 1 Block diagram of host device 100.

[0016] Figure 5 This is a conceptual diagram illustrating a reconstruction operation that can be performed by a RAID control module according to an embodiment of the present invention.

[0017] Figure 6This is a flowchart outlining, in one example, a reconstruction operation that can be performed by a RAID system according to an embodiment of the present invention.

[0018] Figure 7 It is a table listing exemplary hash modulations that can be performed by a RAID system according to an embodiment of the present invention.

[0019] Figure 8 This is a flowchart outlining, in one example, a method for updating a counter table when data is written to a RAID system, according to an embodiment of the present invention.

[0020] Figure 9 It is shown in Figure 8 The method uses a concept map of a counting table.

[0021] Figure 10 It shows the reflection Figure 8 A conceptual diagram of an exemplary counting table representing the result of hash modulation.

[0022] Figure 11 In another example, a flowchart is provided outlining a method for updating a counter table when data is discarded from a RAID system, according to an embodiment of the present invention.

[0023] Figure 12 It is shown in Figure 10 The method uses a concept map of a counting table.

[0024] Figure 13 and Figure 14 These are flowcharts outlining the various methods of operating a RAID system according to embodiments of the present invention.

[0025] Figure 15 This is a block diagram illustrating an embodiment of a data center 1000 that may include a RAID storage device according to a concept of the present invention. Detailed Implementation

[0026] In the following written description, terms such as “unit” or “module” refer to one or more functional blocks, some of which may be shown in the accompanying drawings. One or more functional blocks may be implemented in hardware, software or a combination of hardware and software and may be configured in various ways to perform one or more functions.

[0027] Now refer to Figures 1 to 15 An exemplary standalone redundant hard disk array (RAID) system is described according to an embodiment of the concept of the present invention.

[0028] Figure 1 This is a block diagram illustrating a RAID system 20 according to an embodiment of the present invention. Figure 2 This is further illustrated in one example. Figure 1 Block diagram of the RAID controller 200.

[0029] Reference Figure 1 and Figure 2 RAID system 20 may typically include storage device 300 and RAID controller 200 connected via connection network 30 to one or more hosts (e.g., hosts 100 and 10). In the following text, the terms “host” and “host device” may be used interchangeably.

[0030] Here, storage device 300 may include non-volatile storage devices, wherein each non-volatile storage device communicates with RAID controller 200 through at least one of a plurality of channels. In some embodiments, storage device 300 may include non-volatile semiconductor memory devices (e.g., NAND flash memory devices) and / or one or more solid-state drives (SSDs).

[0031] In some embodiments, the storage device 300 may include: a first storage device for storing data blocks and at least one parity data corresponding to the data blocks, and a second storage device for providing a spare memory area.

[0032] The RAID controller 200 can be implemented as a separate hardware card to manage the storage device 300 as hardware, and / or implemented as a chipset to manage the storage device 300 as firmware.

[0033] exist Figure 1 In the example shown, RAID controller 200 is connected between first host 100 and second host 10 and storage device 300. RAID controller 200 can be configured to access storage device 300 in response to requests from hosts 100 and 10. For example, RAID controller 200 can be configured to control various data access operations (e.g., data read, data write, and data discard operations) performed by storage device 300. In this regard, one or more data access operations can be referred to as RAID operations, wherein storage device 300 can be a controller for performing various RAID operations during foreground and / or background operation modes. Therefore, in some embodiments, a rebuild operation can be performed as a foreground or background operation.

[0034] Despite Figure 1 As specifically shown in the diagram, the RAID controller 200 can also be configured to provide an interface between the storage device 300 and the first host 100. Additionally, the RAID controller 200 can be configured to drive firmware for controlling the storage device 300.

[0035] Reference Figure 2The RAID controller 200 may also include a host interface 210, a RAID processing unit 220, a random access memory (RAM) 230, an internal memory 240, and a memory interface 250 in the relevant parts.

[0036] The host interface 210 can facilitate data exchange between the first host 100 and the RAID controller 200 using one or more protocols. For example, the RAID controller 200 can be configured to communicate with the host via at least one of the following interface protocols: Universal Serial Bus (USB) protocol, Multimedia Card (MMC) protocol, Peripheral Component Interconnect (PCI) protocol, Fast PCI (PCI-E) protocol, Advanced Technology Attachment (ATA) protocol, Serial ATA protocol, Parallel ATA protocol, Small Computer System Interface (SCSI) protocol, Serial Attached SCSI (SAS) protocol, Enhanced Small Disk Interface (ESDI) protocol, and Integrated Drive Electronic Devices (IDE) protocol.

[0037] The RAID processing unit 220 can be used to control the overall operation of the RAID controller 200. In some embodiments, the RAID processing unit 220 can perform RAID operations or background operations on the storage device 300.

[0038] RAM 230 can be used as the working memory of RAID controller 200 and can be implemented using various types of volatile and / or non-volatile memory. For example, RAM 230 can be implemented using at least one of dynamic RAM (DRAM), static RAM (SRAM), phase-change RAM (PRAM), magnetic RAM (MRAM), resistive RAM (RRAM), and flash memory.

[0039] Internal memory 240 can be used as buffer memory. In some embodiments, internal memory 240 may include read-only memory (ROM), programmable read-only memory (PROM), erasable PROM (EPROM), electrically erasable programmable read-only memory (EEPROM), PRAM, flash memory, SRAM, or DRAM. Memory 240 may store preset information, programs, or commands related to the operation or status of RAID controller 200.

[0040] Internal memory 240 may also include a counting table 500 associated with certain embodiments of the inventive concept, hereinafter referred to as... Figure 5 Let me describe one example.

[0041] RAID controller 200 can be used to control the execution (or operation) of RAID rebuild operations on storage device 300. For example, RAID controller 200 can perform RAID rebuild operations on storage device 300 on a stripe-by-stripe basis. Examples of possible rebuild operations performed by RAID controller 200 on storage device 300 will be described below in some additional details.

[0042] The memory interface 250 may include a protocol for exchanging data between the storage device 300 and the RAID controller 200.

[0043] In some embodiments, the RAID controller 200 and storage device 300 may be integrated into a single semiconductor device, such as (e.g.) a memory card used as an SSD. When the RAID controller 200 and storage device 300 are integrated into a single semiconductor device used as an SSD, the operating speed of the host connected to the RAID system 20 can be significantly improved. However, the inventive concept is not limited thereto, and the RAID controller 200 and storage device 300 may optionally be implemented as physically separated (e.g., mechanically connectable / removable) components.

[0044] In this embodiment where the RAID controller 200 and storage device 300 are integrated into the memory card, the memory card can be configured to function as a personal computer (PC) card (PCMCIA International Association) card, compact flash (CF) card, smart media card (SM or SMC) card, memory stick, multimedia card (MMC, RS-MMC or MMCmicro) card, SD card (SD, miniSD, microSD or SDHC) card, or universal flash memory (UFS).

[0045] It should be further noted that various packaging techniques such as one or more of the following can be used to package the memory device 300: PoP, Ball Grid Array (BGA), Chip Scale Package (CSP), Plastic Leaded Chip Carrier (PLCC), Plastic Dual In-line Package (PDIP), Waffle Pack die, wafer die, Chip on Board (COB), Ceramic Dual In-line Package (CERDIP), Plastic Metric Quad Flat Package (MQFP), Thin Quad Flat Package (TQFP), Small Outline Integrated Circuit (SOIC), Shrink Small Outline Package (SSOP), Thin Small Outline Package (TSOP), System-in-Package (SIP), Multi-Chip Package (MCP), Wafer-Scale Fabrication Package (WFP), and Wafer-Scale Fabrication Stacked Package (WSP).

[0046] Figure 3This is a block diagram illustrating another RAID system according to an embodiment of the concept of the present invention. Figure 4 This is further illustrated in one example. Figure 1 and Figure 3 Block diagram of host device 100.

[0047] Here, Figure 3 The RAID system does not include a RAID controller (such as...) Figure 1 and Figure 2 The RAID controller 200). Instead, Figure 3 The RAID system includes a first host 100 and a second host 10 connected to the storage device 300 via a connection network 30, wherein at least one non-volatile storage device in the non-volatile storage device 300 stores RAID software. That is, the host device 100 can configure at least one non-volatile storage device in the non-volatile storage device 300 into a RAID array by running software started by the operating system (e.g., when the RAID system is powered on).

[0048] For example, refer to Figure 4 The first host device 100 may include a host processing unit 110, RAM 120, internal memory 130 and RAID interface 140.

[0049] The host processing unit 110 can be used to control the overall operation of the host 100. For example, the first host 100 can perform RAID operations or rebuild operations on the storage device 300.

[0050] RAM 120 can be used as working memory of the first host device 100, and RAM 120 can be implemented differently using volatile memory and / or non-volatile memory as described above.

[0051] The internal memory 130 can be used as a buffer memory, and can be implemented in various ways using cache, ROM, PROM, EPROM, EEPROM, PRAM, flash memory, SRAM and / or DRAM. In some embodiments, the memory 130 can store preset information, programs, commands, etc. related to the operation or operating state of the first host device 100.

[0052] In some embodiments, the internal memory 130 may include a counter table 400 according to an embodiment of the present invention. (See, for example) Figure 5 ).

[0053] The RAID interface 140 can enable protocols that facilitate data exchange between the storage device 300 and the first host 100.

[0054] The RAID control module will be described in the following written description. The RAID control module can be about... Figure 1 and Figure 2 The RAID controller 200 described, or it could be about Figure 3 and Figure 4 The first host device 100 is described.

[0055] Figure 5 This is a conceptual diagram illustrating a reconstruction operation that can be performed by a RAID control module according to an embodiment of the present invention.

[0056] In this illustrative example, it is assumed that storage device 300 includes: a first storage device Disk 0, a second storage device Disk 1, a third storage device Disk 2, and a fourth storage device Disk 3 (collectively referred to as "Disk 0 to Disk 3"), and a spare storage device Spare Disk. Each of Disk 0 to Disk 3 is configured as a first storage device to store data blocks and parity data, and the Spare Disk is configured as a second storage device to provide spare storage space. It is further assumed that a data access operation to the second storage device Disk 1 (the first storage device) fails. Therefore, the RAID system according to an embodiment of the present invention will use the Spare Disk to rebuild the data stored on the failed storage device (i.e., Disk 1).

[0057] However, those skilled in the art will recognize that the number of first storage devices storing data and / or parity data, and the number of second storage devices providing spare storage space, can vary depending on the RAID system design.

[0058] In some embodiments, P-parity data relating to the data stored in the first storage device may be stored, and Q-parity data relating to the data stored in the first storage device (in addition to the P-parity data) may also be stored. However, the Q-parity data may be parity data generated in a different manner than the P-parity data.

[0059] In some embodiments, the first storage device (Disk 0 to Disk 3) included in the RAID system may include so-called "stripes" that are divided into rows. Each stripe may include multiple data blocks and one or two parity data corresponding to the data blocks belonging to the same stripe. The parity data may be, for example, parity data generated by performing an XOR operation on the data blocks belonging to the same stripe.

[0060] exist Figure 5In the illustrated embodiment, for illustrative purposes, it is assumed that there are three (3) data blocks and one parity data, wherein the data blocks and the parity data are indistinguishably indicated by A to D, respectively.

[0061] As mentioned above, a spare area had been allocated to the second storage device (Spare Disk) before the rebuild operation was performed. Therefore, the Spare Disk could be entirely or partially empty data areas before the rebuild operation.

[0062] In some embodiments, where the storage device 300 is integrated into a single semiconductor device as described above, the first and second storage devices can be implemented using storage cells provided by a semiconductor package.

[0063] Once the faulty first storage device (Disk 1) is identified, a rebuild operation can be performed, wherein the rebuild operation is performed by... Figure 1 RAID controller 200 or Figure 3 The host device 100 executes.

[0064] In some more specific embodiments, an XOR operation can be performed on a stripe-based basis on a non-faulty first storage device (e.g., Disk 0, Disk 2, and Disk 3), and the result of the XOR operation can be stored in a second storage device (Spare Disk). Therefore, during a rebuild operation, an XOR operation can be performed on A0, A2, and A3 stored in the respective first rows of the non-faulty first storage devices (Disk 0, Disk 2, and Disk 3), and the value As obtained by performing the XOR operation can be stored in the first row of the second storage device (Spare Disk). Similarly, the corresponding results Bs, Cs, and Ds obtained by performing the XOR operation can be stored in the corresponding rows of the second storage device (Spare Disk).

[0065] However, when data blocks are only stored in a portion of each first storage device ( Figure 5 In the example shown (Disk 0 to Disk 3, including rows 1 to 4), Figure 1 RAID controller 200 or Figure 3 The host device 100 may have difficulty identifying (or distinguishing) the "used areas" and "unused areas" of each first storage device (Disk 0 to Disk 3).

[0066] In this regard, count table 400 or 500 can be used to store information associated with the used areas of the first storage device. For example, in some embodiments, count table 400 or 500 can be implemented using a Bloom filter method, wherein a data structure is used to check for the presence of data blocks in the storage device. If a data block is determined to exist in a specific area of ​​the storage device according to the Bloom filter method, a false positive may occur that the data block does not actually exist; however, conversely, a false negative may occur that a data block is determined not to exist even though it exists in a specific area of ​​the storage device. That is, there is no risk of missing data blocks when checking the used areas of the storage device.

[0067] Accordingly, Figure 1 RAID controller 200 or Figure 3 The host device 100 can be used to identify the used areas of the first storage device by checking the corresponding counter table 400 or 500, and can access only the identified used areas, thereby reducing the time required to perform the reconstruction operation compared to methods that require accessing the entire first storage device during the reconstruction operation. In addition to reducing reconstruction time, the number of I / O operations that must be performed during the reconstruction operation can also be reduced, thereby improving the overall performance of the RAID system.

[0068] In some embodiments, the counter table 400 or 500 may include a “bucket”, wherein the bucket may be implemented as an array of rows, and each row of the bucket may be a position corresponding to the used area of ​​the first storage device.

[0069] Therefore, the RAID control module can generate a hash value by performing at least one hash modulation based on the logical block address (LBA) in each of the first storage devices Disk 0 to Disk 3, or based on a data block or at least one parity data storage, and can store the count in the storage area corresponding to the hash value in count table 400 or 500. This will be targeted at... Figure 8 This exemplary method is described in some other details.

[0070] Figure 6 This is a flowchart outlining an example of a rebuild operation that can be performed by a RAID system according to an embodiment of the present invention. (Here, for purposes of description, it is assumed that...) Figure 5 (The same exemplary RAID system).

[0071] Therefore, the RAID control module can reconstruct the data of the failed first storage device (Disk 1) in the second storage device (Spare Disk) (S30).

[0072] To reconstruct the data, the RAID control module can perform hash modulation (S31) based on the LBA of the used areas of the non-faulty first storage devices (Disk 0, Disk 2, and Disk 3). In some embodiments, hash modulation can be performed multiple times using different types of hash functions. In some embodiments, the number of hash modulation operations can be further increased to generate different, non-redundant hash values. Figure 7 An exemplary method is described with some additional details.

[0073] Therefore, when one of the first storage devices fails, the RAID control module can begin the reconstruction process using hash modulation based on the LBA associated with each first storage device (S30). Then, if the values ​​of all storage areas corresponding to the LBA are zero (S32 = Yes), the LBA is excluded from the XOR operation because it is an LBA to which data has never been written before (S34). However, if the values ​​of the storage areas corresponding to the LBA are not all zero in the count table 400 or 500 due to hash modulation based on the LBA in operation S31 (S32 = No), it can be determined that data has been previously written to that LBA. Therefore, the data of the failed first storage device reconstructed in the second storage device can be allocated to the spare area (S33). That is, when data is reconstructed in the second storage device, the RAID control module can calculate the hash value using the second storage device (Spare Disk) for the LBA of each non-failed first storage device (Disk0, Disk 2, and Disk 3), and can also update the count table by increasing or decreasing the count in the storage area corresponding to the hash value (S35).

[0074] Figure 7 This is a table listing examples of hash modulation that can be performed by a RAID system according to embodiments of the present invention.

[0075] Here, we further assume that the data is stored in the first storage device (e.g., Disk0) according to eight (8) component stripes. For example, we assume that in Figure 5 In Disk 0, the LBAs of the data blocks are 11, 34, 242, 167, 24, 47, 96 and 100 respectively.

[0076] It is also arbitrarily assumed that four (4x) hash modulations are performed on the LBA of each row. As shown in the table, different hash functions f1(x) to f4(x) can be used to perform hash modulation. In some embodiments, f1(x) can generate the remainder of LBA divided by 10 as the first hash value, f2(x) can generate the value obtained by adding the remainder of LBA divided by 3 to the first hash value as the second hash value, f3(x) can generate the value obtained by adding the remainder of LBA divided by 7 to the second hash value as the third hash value, and f4(x) can generate the value obtained by adding 2 to the third hash value as the fourth hash value.

[0077] Therefore, in the case of the first row, since f1(x) = 11%10 = 1, the first hash value is 1; since f2(x) = 1 + 11%3 = 1 + 2 = 3, the second hash value is 3; since f3(x) = 3 + 11%7 = 3 + 4 = 7, the third hash value is 7; since f4(x) = 7 + 2 = 9, the fourth hash value is 9. In the case of the second row, since f1(x) = 34%10 = 4, the first hash value is 4; since f2(x) = 4 + 34%3 = 4 + 1 = 5, the second hash value is 5; since f3(x) = 5 + 34%7 = 5 + 6 = 11, the third hash value is 11; since f4(x) = 11 + 2 = 13, the fourth hash value is 13.

[0078] Similarly, the values ​​of f1(x) to f4(x) can be calculated for each row to generate the first to fourth hash values, such as... Figure 7 Each row is shown.

[0079] For each hash value in each column, the first hash values ​​are 1, 4, 2, 7, 4, 7, 6, and 0, where 4 and 7 (i.e., two hash values) are redundant. However, the fourth hash values ​​are 9, 13, 10, 17, 9, 16, 13, and 5, where 13 (i.e., only one hash value) is redundant. By applying different hash functions consecutively as shown in the example, the number of redundant hash values ​​in the same column (at the same time) can be gradually reduced.

[0080] Figure 8 This is a flowchart outlining an embodiment of a method for updating a counter table when data is written to a RAID system, according to a concept based on the present invention. Figure 9 It is to further demonstrate Figure 8 A conceptual diagram of the method. Figure 10 It reflects Figure 8 An exemplary count table of the results of hash modulation.

[0081] Reference Figure 8When a data block (DATA) is written to at least one first storage device (S10), the LBA corresponding to the used area of ​​the first storage device where the data block has been written has specific data. The RAID control module performs hash modulation on the LBA at least once (S11), and increments the count at the corresponding storage area position in the counter table by one (e.g., adds+1) using the hash value calculated by hash modulation (S12). Furthermore, when performing hash modulation multiple times, the step of increasing the count at the storage area position corresponding to the hash value can be repeated to appropriately update the counter table (S13).

[0082] Reference Figure 7 , Figure 8 and Figure 9 When LBA is 11, the first to fourth hash values ​​are 1, 3, 7 and 9, and when LBA is 34, the first to fourth hash values ​​are 4, 5, 11 and 13.

[0083] Therefore, each hash value can correspond to the location information of the storage area in the counting table. That is, whenever data is written to or discarded from the first storage device, the RAID control module can recalculate the corresponding hash value and appropriately change (increase or decrease) the count in the storage area corresponding to that hash value.

[0084] Extending the working example in this regard, when a data block or parity data is written to the first row of the first storage device (Disk 0), the LBA of the first row has a specific value. If the LBA is 11, the first to fourth hash values ​​can be calculated as 1, 3, 7 and 9 respectively, and the counter table 400 or 500 can increment the count at the storage locations [1], [3], [7] and [9] corresponding to the first to fourth hash values ​​by 1.

[0085] Similarly, when a data block or parity data is written to the second row of the first storage device (Disk 0), if the LBA of the second row is 34, the first to fourth hash values ​​can be calculated as 4, 5, 11, and 13. In this case, the counter table 400 or 500 will increment the count at the storage locations [4], [5],

[11] , and

[13] corresponding to the first to fourth hash values ​​by 1.

[0086] Similarly, when writing data blocks or parity data to other rows of the first storage device (Disk 0) (e.g., rows three through eight), the first through fourth hash values ​​can be calculated for the LBA (242, 167, 24, 47, 96, or 100) of each row, such as... Figure 7As shown. When the count in counter table 400 or 500 at the storage location corresponding to the first to fourth hash values ​​(f1(x) to f4(x)) of each calculated row is increased by 1, the counter table can be updated as follows. Figure 10 As shown.

[0087] In some embodiments, the number of counting tables may be equal to the number of first storage devices. Alternatively, a counting table for the used area of ​​written data may be created for each of the first storage devices Disk 1 through Disk 3. Or, in some other embodiments, the number of counting tables may be less than the number of first storage devices because the data associated with the multiple first storage devices can be divided into blocks and used after being load-balanced at the same ratio according to the RAID configuration.

[0088] The above Figure 7 , Figure 8 , Figure 9 and Figure 10 The example illustrates hash modulation of any first storage device (e.g., Disk 0) among a plurality of storage devices, using data blocks and / or parity data in multiple (e.g., 8) stripes. However, this is merely an example, and the number of stripes in the used area, the number of first storage devices, and the number of counting tables can vary depending on the design.

[0089] Figure 11 This is a flowchart outlining an embodiment of the present invention that outlines a method for updating a counter table when data is discarded from a RAID system. Figure 12 It is shown in Figure 11 A conceptual diagram of the counting table during the method.

[0090] Reference Figure 11When a data block is discarded from at least one first storage device (S20), the used area of ​​the first storage device may be changed. Therefore, the host device 100 or RAID controller 200 may perform hash modulation on the LBAs of the changed used areas (S21). If the count of the storage area corresponding to all LBAs of the first storage device to which hash modulation has been performed is zero (S23 = Yes), the first storage device can be identified as a first storage device that has never been used before, and the method can jump to updating the count table (S25). However, if the count of at least one storage area corresponding to the LBAs of the first storage device to which hash modulation has been performed is not zero (S23 = No), the count in the count table can be changed (increased or decreased) by determining that a used area exists. That is, a hash value can be calculated by hash modulation of the LBAs whose data state has changed, and the count in the storage area at the position corresponding to the hash value in the count table is decreased by 1 (S24). According to some embodiments, when hash modulation is performed multiple times, the RAID control module can calculate the hash value each time and update the count table by repeating the following operation each time: increasing or decreasing the count at the storage location corresponding to each hash value by 1 (S25).

[0091] Reference Figure 8 , Figure 9 and Figure 12 In the illustrated embodiment, when LBA is 11, the first to fourth hash values ​​are 1, 3, 7, and 9. When LBA is 34, the first to fourth hash values ​​are 4, 5, 11, and 13.

[0092] exist Figure 9 In the example shown, when hash modulation is performed on the LBA of the first and second rows of the first storage device (e.g., Disk 0), the counts of storage areas [0] to

[17] in the count table 400 or 500 are 010111010101010000.

[0093] If a data block stored in the second row of the first storage device (e.g., Disk 0) is discarded, the first to fourth hash values ​​of the second row with LBA 34 should be subtracted from the previous count table. That is, when LBA is 34, 1 is subtracted from the storage areas [4], [5],

[11] ,

[13] corresponding to the first to fourth hash values ​​4, 5, 11, and 13, as shown below. Figure 12 As shown.

[0094] In this way, whenever data is discarded from the first storage device, the host 100 or RAID controller 200 can check (or verify) the used area of ​​the first storage device by updating the count table based on the LBA of the location from which data has been discarded.

[0095] Figure 13 This is a flowchart outlining a method for operating a RAID system according to an embodiment of the present invention.

[0096] Here, the host device can send commands for RAID operation to the RAID system (S100). The RAID system can perform RAID operation (e.g., data read, data write, or data discard operation) as a foreground or background operation on at least one first storage device (S200), and the host device can update the counter table for at least one first storage device by reflecting the result of the RAID operation (S101).

[0097] If at least one first storage device fails during RAID operation (S201), the RAID system indicates the failure status of the first storage device to the host device. Then, the host device checks the used area of ​​the first storage device based on the last updated counter table (S102) and sends a rebuild command to the RAID system based on the checked used area (S103).

[0098] The RAID system reads data blocks or parity data by accessing only the used areas of at least two first storage devices according to the rebuild command from the host device, and sends the read data blocks or parity data to the host device (S202); and the host device performs a rebuild operation on the read data blocks or parity data (S104). For example, the rebuild operation can be performed using XOR operations.

[0099] When the host device sends the operation result to the second storage device in the RAID system, the second storage device can store (write) the XOR operation value of each row received in the corresponding row (S203).

[0100] Since the data storage state of the second storage device has been changed according to the result of the XOR operation, the host device updates the count table by performing hash modulation on the LBA based on the changed used area (S105). The count table can reflect the changes in the used area of ​​the first storage device (excluding the faulty first storage device) and the used area of ​​the second storage device in real time. When the XOR operation on all used areas is completed, the host device ends the reconstruction operation (S106).

[0101] Figure 14 This is a flowchart that summarizes an embodiment of a method for operating a RAID system according to a concept of the present invention.

[0102] Reference Figure 14The host device can send commands for RAID operation to the RAID system (S110). The RAID system can perform RAID operation (e.g., data read, data write, or data discard operation) as a foreground or background operation on at least one first storage device (S210) and update the counter table of at least one first storage device (S211).

[0103] In some embodiments, the host device may request the RAID system to send a counter table based on system settings or user instructions (S111). The RAID system may then send the last updated counter table to the host device based on this request (S212).

[0104] The host device can send commands for RAID operation to the RAID system by referring to the counter table received in operation S212 (S112). For example, the host device can send a read command by referring to the counter table. The RAID system can perform RAID operation according to the received command (S213), and the host device can continuously update the counter table based on the operation results of the RAID system (S113). If at least one first storage device fails during RAID operation (S215), the RAID system notifies the host device of the failure status of the first storage device. The host device checks the used area of ​​the first storage device based on the last updated counter table (S114) and sends a rebuild command to the RAID system based on the checked used area (S115).

[0105] The RAID system reads data blocks or parity data by accessing only the used areas of at least two first storage devices according to the previously received rebuild command (S115) (S216), and sends the read data blocks or parity data to the host device. The host device then performs a rebuild operation on the read data blocks or parity data (S116). For example, the rebuild operation can be performed using an XOR operation.

[0106] When the host device sends the operation result to the second storage device in the RAID system, the second storage device can store (write) the XOR operation value of each row received in the corresponding row (S217).

[0107] According to some embodiments, after the XOR operation, the RAID system can update the counting table by performing hash modulation on the used area of ​​the second storage device (S218). Alternatively, according to some embodiments, the RAID system can update the counting table by receiving an updated counting table stored in the host device in real time or after the XOR operation (S113). Therefore, the counting table can reflect the changes in the used area of ​​the first storage device (excluding the faulty first storage device) and the used area of ​​the second storage device. When the XOR operation on all used areas is completed, the host device terminates the reconstruction operation (S117).

[0108] Alternatively, the host device can request the counter table only when necessary, rather than continuously updating it. Therefore, the host device can operate at a low cost.

[0109] Figure 15 This is a block diagram illustrating a data center 1000 that may include RAID storage devices according to an embodiment of the present invention.

[0110] Reference Figure 15 Data center 1000 can be a facility that collects various types of data and provides services, and may also be referred to as a data storage center. Data center 1000 can be a system for operating search engines and databases, and can be a computing system used by companies such as banks or government agencies. Data center 1000 may include application servers 1100 to 1100n and storage servers 1200 to 1200m. The number of application servers 1100 to 1100n and the number of storage servers 1200 to 1200m can be selected differently depending on the embodiment. The number of application servers 1100 to 1100n may differ from the number of storage servers 1200 to 1200m.

[0111] Application server 1100 may include processor 1110 and memory 1120, or storage server 1200 may include processor 1210 and memory 1220. For example, in the case of storage server 1200, processor 1210 may control the overall operation of storage server 1200 and access memory 1220 to execute commands and / or data loaded in memory 1220. According to some embodiments, memory 1220 may include a counting table. Memory 1220 may be double data rate synchronous DRAM (DDR SDRAM), high bandwidth memory (HBM), hybrid memory cube (HMC), dual in-line memory module (DIMM), Optane DIMM, or non-volatile DIMM (NV[M]DIMM).

[0112] According to embodiments, the number of processors 1210 and the number of memories 1220 included in the storage server 1200 can be selected differently. In embodiments, the processors 1210 and memories 1220 can provide processor-memory pairs. In embodiments, the number of processors 1210 can be different from the number of memories 1220. The processor 1210 can include a single-core processor or a multi-core processor. The above description of the storage server 1200 can be similarly applied to the application server 1100.

[0113] According to an embodiment, application server 1100 may not include storage device 1150. Storage server 1200 may include one or more storage devices 1250. The number of storage devices 1250 included in storage server 1200 may be selected differently depending on the embodiment.

[0114] Application servers 1100 to 1100n and storage servers 1200 to 1200m can communicate with each other via network 1300. Network 1300 can be implemented using Fibre Channel (FC) or Ethernet. Here, FC can be a medium for relatively high-speed data transmission and can use an optical switch that provides high performance / high availability. Depending on the access method of network 1300, storage servers 1200 to 1200m can be provided as file storage, block storage, or object storage.

[0115] In this embodiment, network 1300 may be a storage-specific network such as a Storage Area Network (SAN). For example, the SAN may be an FC-SAN implemented using an FC network and according to the FC protocol (FCP). As another example, the SAN may be an IP-SAN implemented using a TCP / IP network and according to the SCSI over TCP / IP or Internet SCSI (iSCSI) protocol. In yet another embodiment, network 1300 may be a general-purpose network such as a TCP / IP network. For example, network 1300 may be implemented according to protocols such as FC over Ethernet (FCoE), Network Attached Storage (NAS), or NVMe over Fabrics (NVMe-oF).

[0116] The following will primarily describe application server 1100 and storage server 1200. The description of application server 1100 can also be applied to another application server 1100n, and the description of storage server 1200 can also be applied to another storage server 1200m.

[0117] Application server 1100 can store data requested by users or clients in one of storage servers 1200 to 1200m via network 1300. Additionally, application server 1100 can retrieve data requested by users or clients from one of storage servers 1200 to 1200m via network 1300. For example, application server 1100 can be implemented as a web server or a database management system (DBMS). According to some embodiments, application server 1100 may be... Figure 3 The host.

[0118] Application server 1100 can access the memory 1120n or storage device 1150n included in another application server 1100n via network 1300, or access the memory 1220 to 1220m or storage device 1250 to 1250m included in storage servers 1200 to 1200m via network 1300. Therefore, application server 1100 can perform various operations on the data stored in application servers 1100 to 1100n and / or storage servers 1200 to 1200m.

[0119] For example, application server 1100 can execute commands for transferring or copying data between application servers 1100 to 1100n and / or storage servers 1200 to 1200m. Here, data can be transferred from storage devices 1250 to 1250m of storage servers 1200 to 1200m to storage devices 1120 to 1120n of application servers 1100 to 1100n, either via storage devices 1220 to 1220m of storage servers 1200 to 1200m or directly. Data transmitted over network 1300 may be encrypted for security or privacy purposes.

[0120] For example, application server 1100 can configure application servers 1100 to 1100n and / or storage servers 1200 to 1200m as RAID. Therefore, when any one of these servers fails, application server 1100 can execute commands to rebuild data among the other application servers 1100 to 1100n and / or storage servers 1200 to 1200m. In this example, application server 1100 can include the counting table as metadata in storage 1120, or it can request the counting table from other application servers 1100 to 1100n and / or storage servers 1200 to 1200m configured in the RAID to perform the rebuild operation.

[0121] For example, in storage server 1200, interface (I / F) 1254 can provide physical connections between processor 1210 and controller (CTRL) 1251, and between NIC 1240 and controller 1251. For example, interface 1254 can be implemented as a Direct Attached Storage (DAS) interface that directly connects storage device 1250 to a dedicated cable. Alternatively, interface 1254 can be implemented as various interfaces such as: Advanced Technology Attachment (ATA), Serial ATA (SATA), External SATA (e-SATA), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Peripheral Component Interconnect (PCI), Fast PCI (PCIe), Fast NVM (NVMe), IEEE 1394, Universal Serial Bus (USB), Secure Digital (SD) card, Multimedia Card (MMC), Embedded Multimedia Card (eMMC), Universal Flash (UFS), Embedded Universal Flash (eUFS), Compact Flash (CF), and card interfaces.

[0122] Storage server 1200 may also include switch 1230 and NIC 1240. Under the control of processor 1210, switch 1230 can selectively connect processor 1210 and storage device 1250, or selectively connect NIC 1240 and storage device 1250.

[0123] In this embodiment, NIC 1240 may include a network interface card, a network adapter, etc. NIC 1240 can connect to network 1300 via a wired interface, wireless interface, Bluetooth interface, optical interface, etc. NIC 1240 may include internal memory, a digital signal processor (DSP), a host bus interface, etc., and can connect to processor 1210 and / or switch 1230 via the host bus interface. The host bus interface can be implemented as one of the above examples of interface 1254. In this embodiment, NIC 1240 may be integrated with at least one of processor 1210, switch 1230, and storage device 1250.

[0124] In some embodiments, the processor 1210, memory 1220, switch 1230, and NIC 1240 may be included. Figure 1 and Figure 2 The RAID controller 200 described herein or included therein Figure 3 and Figure 4 In the host 100 described in the text.

[0125] In storage servers (1200-1200m) or application servers (1100-1100n), the processor can send commands to storage devices (1150-1150n, 1250-1250m) or memory (1120-1120n, 1220-1220m) to program or retrieve data. Here, the data can be data that has already been corrected using an error-correcting code (ECC) engine. The data can be data processed via data bus inversion (DBI) or data masking (DM) and can include cyclic redundancy check (CRC) information. The data can be encrypted for security or privacy purposes.

[0126] Storage devices (1150-1150n, 1250-1250m) can send control signals and command / address signals to NAND flash memory devices (1252-1252m) in response to read commands received from the processor. Therefore, when reading data from NAND flash memory devices (1252-1252m), a read enable (RE) signal can be input as a data output control signal, thereby outputting data to the DQ bus. The RE signal can be used to generate a data strobe (DQS). Command and address signals can be latched in the page buffer based on the rising or falling edge of the write enable (WE) signal.

[0127] Controller 1251 can control the overall operation of storage device 1250. In embodiments, controller 1251 may include SRAM. Controller 1251 may write data to NAND flash memory device 1252 in response to a write command, or may read data from NAND flash memory device 1252 in response to a read command. For example, write and / or read commands may be provided from processor 1210 in storage server 1200, processor 1210m in another storage server 1200m, or processors 1110 and 1110n in application servers 1100 and 1100n. DRAM 1253 may temporarily store (buffer) data to be written to or read from NAND flash memory device 1252. Additionally, DRAM 1253 may store metadata. Here, metadata is user data or data generated by controller 1251 to manage NAND flash memory device 1252. Storage device 1250 may include a security element (SE) for security or privacy. According to some embodiments, metadata may include a counting table.

[0128] Although the inventive concept has been specifically shown and described with reference to embodiments thereof, it will be understood that various changes in form and detail may be made without departing from the spirit and scope of the appended claims.

Claims

1. A redundant array (RAID) storage device with independent hard drives, comprising: A storage device, the storage device including a first storage device and a second storage device, the first storage device being configured to store at least one of a data block and corresponding parity data, and the second storage device being configured to serve as a spare storage area; as well as A RAID controller, comprising an internal RAID memory configured to store a counter table and configured to control the execution of a rebuild operation in response to a command received from a host. Once a faulty first storage device is identified from the first storage devices, the RAID controller accesses only the used area of ​​the non-faulty first storage devices based on the counter table, and reconstructs the data of the faulty first storage device using the second storage device. The counting table stores counting table information indicating at least one used area in the first storage device. In response to a RAID operation on the first storage device, the RAID controller generates a hash value by performing hash modulation based on the address of a logical block that stores at least one of the data block and the corresponding parity data, and stores a count corresponding to the number of times the hash modulation is performed on the logical block address in multiple storage areas of the count table.

2. The RAID storage device according to claim 1, wherein, When the RAID operation is a write operation, the RAID controller increments the counter in the counter table corresponding to the area of ​​the first storage device in the first storage device where at least one of the data block and the corresponding parity data has been written.

3. The RAID storage device according to claim 1, wherein, When the RAID operation is a drop operation, the RAID controller decrements the count in the count table of the region of the first storage device that corresponds to the region of the first storage device from which at least one of the data block and the corresponding parity data was dropped.

4. The RAID storage device according to claim 1, wherein, The RAID controller does not perform the rebuild operation when all counts in the storage area of ​​the counting table are zero.

5. A host device connected to a non-volatile storage device including a first storage device and a second storage device, the first storage device being configured to store at least one of data blocks and corresponding parity data, the second storage device being configured to serve as a spare storage region, the host device comprising: The host internal memory is configured to store a count table indicating the used areas of each of the first storage devices; as well as A host processing unit is configured to: control independent hard disk redundant array (RAID) operations on the first storage device, update the counter table in response to the RAID operations, and further configure to control a reconstruction operation of the first storage device using the second storage device based on the counter table for a failed first storage device. The host processing unit generates a hash value by performing hash modulation on a logical block address in a non-faulty first storage device based on at least one of the data block and the corresponding parity data, and stores a count corresponding to the number of times the hash modulation is performed on the logical block address in multiple storage areas of the count table.

6. The host device according to claim 5, wherein, When the RAID operation is a write operation, the host processing unit increments the count in the counter table corresponding to the first storage device area where at least one of the data block and the corresponding parity data has been written.

7. The host device according to claim 5, wherein, When the RAID operation is a drop operation, the host processing unit reduces the count in the counter table corresponding to the first storage device region from which at least one of the data block and the corresponding parity data was dropped.

8. The host device according to claim 5, wherein, When the host processing unit identifies the faulty first storage device, it initiates the reconstruction operation, checks the used area of ​​the non-faulty first storage device based on the counter table, performs an XOR operation by reading data from the used area of ​​the non-faulty first storage device, and writes the result of the XOR operation into the area of ​​the second storage device.

9. The host device according to claim 8, wherein, The host processing unit updates the counter table in part based on the used area of ​​the first storage device.

10. The host device according to claim 8, wherein, When all counts in the storage area of ​​the counter table are zero, the host processing unit terminates the reconstruction operation without performing the XOR operation.

11. A redundant array RAID system with independent hard drives, comprising: A host computer and a solid-state drive (SSD), wherein the SSD is connected to the host computer, Each of the solid-state drives includes: a first storage device configured for RAID and further configured to store at least one of data and corresponding parity data; a second storage device configured to serve as a backup storage device; and a memory controller configured to perform data access operations on the first storage device and the second storage device. The RAID system stores a counter table, which indicates the used area of ​​each of the first storage devices. Once a faulty first storage device is identified from the first storage devices, the RAID system accesses at least one of the data and the corresponding parity data in the used area of ​​the non-faulty first storage devices within the first storage devices, referring to the counter table, to perform a reconstruction operation on the faulty first storage device using the second storage device. The counting table includes a storage area indicating the location information of the used and unused areas of each of the first and second storage devices. The RAID system generates a hash value by performing hash modulation based on the logical block address of the used area of ​​each of the non-faulty first storage devices, and stores a count corresponding to the number of times the hash modulation is performed on the logical block address in each storage area of ​​the count table.

12. The RAID system according to claim 11, wherein, When at least one of the data and the corresponding parity data is written to one of the first storage devices, the counter table is updated to increase the count in each storage area corresponding to the location of the first storage device where at least one of the data and the corresponding parity data has been written.

13. The RAID system according to claim 11, wherein, When at least one of the data and the corresponding parity data is discarded from one of the first storage devices, the count table is updated to decrease the count in each storage area corresponding to the location of the first storage device from which at least one of the data and the corresponding parity data was discarded.

14. The RAID system according to claim 11, wherein, When the reconstruction operation is performed, the count in each storage area corresponding to the position of the used area in the used area of ​​each of the non-faulty first storage device and the second storage device is changed.

15. The RAID system according to claim 11, wherein, The host includes internal host memory configured to store the counter table, which is updated whenever at least one of the data and the corresponding parity data is written to or discarded from the first storage device.