Storage system and method of operating the same
By introducing master and slave storage devices into the storage system and implementing RAID operations using a controller hub, the problem of requiring a separate RAID controller in existing technologies is solved, thereby improving the reliability and performance of the storage system.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- SK HYNIX INC
- Filing Date
- 2021-12-30
- Publication Date
- 2026-05-01
AI Technical Summary
In existing technologies, storage systems require a separate RAID controller when performing RAID operations, which increases system complexity and cost, and does not fully utilize the potential of existing storage devices.
By introducing master and slave storage devices into the storage system, RAID operation is implemented using a controller hub. The master storage device distributes commands according to the RAID level determined by the host and transmits the commands to the slave storage devices through P2P routing. After completing the RAID operation, it transmits the completion queue to the host.
It enables efficient RAID operations without the need for a separate RAID controller, improving the reliability and performance of the storage system and simplifying the system architecture.
Smart Images

Figure CN115202568B_ABST
Abstract
Description
[0001] Cross-reference to related applications
[0002] This application claims priority to Korean Patent Application No. 10-2021-0044873, filed on April 6, 2021, which is incorporated herein by reference in its entirety. Technical Field
[0003] The various embodiments of this disclosure generally relate to an electronic device, and more particularly to a storage system and a method of operating the same. Background Technology
[0004] Redundant Array of Independent Disks (RAID) is a technology that distributes and stores data across multiple hard drives, and is also known as a disk array. RAID includes various schemes for distributing and storing data according to levels. Depending on the level, the reliability of the storage device can be increased, or the overall performance of the storage device can be improved.
[0005] Storage devices can store data in response to control by a host device such as a computer or smartphone. A storage device may include a memory device for storing data and a memory controller for controlling the memory device. Generally, memory devices are of two types: volatile memory devices and non-volatile memory devices.
[0006] Volatile memory devices can store data only while power is supplied to them, and may lose the data stored therein when power is not supplied. Examples of volatile memory devices include static random access memory (SRAM) devices, dynamic random access memory (DRAM) devices, and so on.
[0007] Even when the power supply is interrupted or cut off, non-volatile memory devices can retain stored data. Examples of non-volatile memory devices include read-only memory (ROM) devices, programmable ROM (PROM) devices, electrically programmable ROM (EPROM) devices, electrically erasable programmable ROM (EEPROM) devices, flash memory devices, etc. Summary of the Invention
[0008] Various embodiments of this disclosure relate to a storage system capable of storing data according to a RAID method without the need for a separate RAID controller, and a method of operating the storage system.
[0009] According to embodiments of this disclosure, a storage system may include: a primary storage device configured to store data based on a RAID level determined by a host; a secondary storage device configured to store data according to commands distributed from the primary storage device; and a controller hub configured to connect the secondary storage device to the primary storage device, wherein the primary storage device is further configured to transmit commands to the secondary storage device via the controller hub when the primary storage device receives a command processing request from the host, and to transmit a completion queue (CQ) to the host when operations of the primary storage device and the secondary storage device are completed in response to the command processing request.
[0010] According to embodiments of this disclosure, a method for operating a storage system including a primary storage device, a secondary storage device, and a controller hub connecting the primary storage device to the secondary storage device may include: receiving a command processing request from a host by the primary storage device; distributing the command processing request by the primary storage device through the controller hub according to a predetermined Redundant Array of Independent Disks (RAID) level; performing an operation corresponding to the command processing request by the primary storage device and the secondary storage device; and transmitting a completion queue (CQ) to the host by the primary storage device when the operation is completed.
[0011] According to embodiments of this disclosure, a method of operating a storage device may include: distributing a Redundant Array of Independent Disks (RAID) request from a host to one or more slave storage devices via a hub, performing a RAID operation in response to the RAID request, and transmitting a completion queue (CQ) to the host upon receiving a response from a slave storage device, the response indicating that each slave storage device has completed the RAID operation in response to the RAID request. Attached Figure Description
[0012] Figure 1 This is a diagram illustrating a computing system according to an embodiment of the present disclosure;
[0013] Figure 2 This is a diagram illustrating a storage system according to an embodiment of the present disclosure;
[0014] Figure 3 This is a diagram illustrating a solid-state drive (SSD) according to an embodiment of the present disclosure;
[0015] Figure 4 This is a diagram illustrating a memory controller according to an embodiment of the present disclosure;
[0016] Figure 5 This is a diagram illustrating RAID levels 0 and RAID level 1 according to embodiments of the present disclosure;
[0017] Figure 6This is a diagram illustrating RAID levels 4 and RAID levels 5 according to embodiments of the present disclosure;
[0018] Figure 7 This is a diagram illustrating nested RAID levels according to embodiments of the present disclosure;
[0019] Figure 8 This is a diagram illustrating a method of operating a storage system according to an embodiment of the present disclosure;
[0020] Figure 9 This is a diagram illustrating a method of operating a storage system according to an embodiment of the present disclosure;
[0021] Figure 10 This is a diagram illustrating the operation of a storage system including multiple functional modules according to embodiments of the present disclosure; and
[0022] Figure 11 This is a diagram illustrating a method of operating a storage system according to an embodiment of the present disclosure. Detailed Implementation
[0023] The specific structural and functional features of this disclosure are disclosed in the context of the following embodiments. However, this disclosure may be configured, arranged, or implemented differently from those disclosed herein. Therefore, this disclosure is not limited to any particular embodiment or any particular detail. Moreover, throughout the specification, references to “embodiment,” “another embodiment,” etc., are not necessarily directed to only one embodiment, and different references to any such phrases are not necessarily directed to the same embodiment. Furthermore, unless explicitly stated that there is only one, the use of indefinite articles (i.e., “a” or “an”) indicates one or more. Similarly, the terms “comprising,” “including,” “having,” etc., as used herein do not exclude the presence or addition of one or more other elements besides those described.
[0024] It should also be noted that, without departing from the scope of the invention, a feature present in one embodiment may be used in conjunction with one or more features of another embodiment.
[0025] It should be further noted that in the various figures, the same reference numerals indicate the same elements.
[0026] Furthermore, various modifications and changes can be made to the described embodiments based on the disclosed concept. It should be further noted that the described embodiments may be illustrated in simplified drawings. However, embodiments based on the concept of this disclosure are not to be construed as limited to the specific disclosure and may include all variations, equivalents, or alternatives without departing from the spirit and scope of this disclosure. In some embodiments, well-known processes, apparatus structures, and techniques will not be described in detail to avoid confusion with well-known details. This is intended to disclose the gist of the disclosure more clearly by omitting unnecessary descriptions.
[0027] Hereinafter, various embodiments of the present disclosure will be described in more detail with reference to the accompanying drawings.
[0028] Figure 1 This is a diagram illustrating a computing system 10000 according to an embodiment of the present disclosure.
[0029] Reference Figure 1 The computing system 10000 may include a host device 1000, a main solid-state drive (SSD) 400, and a slave SSD 500. For example, the computing system 10000 may be a cellular phone, a smartphone, an MP3 player, a laptop computer, a desktop computer, a display device, a tablet PC, etc.
[0030] The host device 1000 may include dynamic random access memory (DRAM) 100, a controller hub 200, and a central processing unit (CPU) 300.
[0031] DRAM 100 may store data, commands, or program code for performing operations of host device 1000. According to an embodiment, DRAM 100 may store program code for running one or more operating systems (OS) and virtual machines (VMs), as well as program code for running a virtualization intermediary (VI) for managing VMs.
[0032] Controller hub 200 can be a root hub, root federation, or root controller in a high-speed peripheral component interconnect (PCIe) interconnect architecture. For example, controller hub 200 may include a chipset, memory controller hub (MCH), northbridge, interconnect controller hub (ICH), southbridge, and root controller / hub. Additionally, controller hub 200 can connect DRAM 100 and CPU 300 to the input / output (I / O) level. Controller hub 200 can support point-to-point (P2P) routing. Controller hub 200 may include at least one host bridge and one root port. Controller hub 200 may support one or more PCIe ports.
[0033] CPU 300 typically controls computing system 10000. More specifically, CPU 300 may include circuitry, interfaces, or program code for controlling the data processing and operation of components of computing system 10000.
[0034] The computing system 10000 may include a primary SSD 400 and a secondary SSD 500. The primary SSD 400 and secondary SSD 500 can store data. More specifically, the primary SSD 400 and secondary SSD 500 can store data received from the host device 1000 in response to a command processing request from the CPU 300. According to embodiments of this disclosure, when the primary SSD 400 receives a command processing request from the CPU 300, the primary SSD 400 can transmit a command corresponding to the secondary SSD 500 to the secondary SSD 500 via the controller hub 200. More specifically, the primary SSD 400 can store data according to a Redundant Array of Independent Disks (RAID) level determined by the host device 1000 or the CPU 300. The primary SSD 400 can transmit a command corresponding to the secondary SSD 500 to the secondary SSD 500, causing the secondary SSD 500 to store data according to the determined RAID level. The primary SSD 400 can use P2P routing supported by the controller hub 200. Furthermore, the primary SSD 400 can function as a RAID controller. Typically, a separate RAID controller is required to store or retrieve data using methods corresponding to RAID. However, according to embodiments of this disclosure, the SSD can perform the functions of a RAID controller without a separate RAID controller or hardware device, by using P2P routing.
[0035] The primary SSD 400 and secondary SSD 500 can perform internal operations corresponding to command processing requests. These internal operations can be read operations to retrieve data stored on the primary SSD 400 or secondary SSD 500, or write operations to store data on the primary SSD 400 or secondary SSD 500. For example, the primary SSD 400 or secondary SSD 500 can store or retrieve stored data using methods corresponding to RAID level 0.
[0036] In embodiments according to this disclosure, SSDs are described with different names (i.e., primary SSD 400 and secondary SSD 500) for functional classification. However, when implementing a computing system that includes SSDs, the same type of SSD can be used. Optionally, the primary SSD 400 and secondary SSD 500 can be configured to have physically identical circuitry. Furthermore, whether an SSD is used as primary SSD 400 or secondary SSD 500 can be determined by the host device 1000 or CPU 300. More specifically, the host device 1000 or CPU 300 can designate one of a plurality of SSDs connected to the host device 1000 as primary SSD 400 and the remaining SSDs besides primary SSD 400 as secondary SSDs 500. The host device 1000 or CPU 300 can determine primary SSD 400 and secondary SSD 500 based on commands entered by a user using software or an application. Alternatively, the host device 1000 or CPU 300 can also determine the storage method based on the RAID level formed by the main SSD 400 and the secondary SSD 500 in the same way.
[0037] Optionally, whether the SSD is used as the primary SSD 400 or the secondary SSD 500 can be determined by the host device 1000 or the CPU 300, and can be arbitrarily determined. More specifically, the host device 1000 or the CPU 300 can identify multiple SSDs connected to the controller hub 200, and the host device 1000 or the CPU 300 can designate the SSD connected to a specific port of the controller hub 200 among the multiple SSDs as the primary SSD 400. The specific port may refer to the port corresponding to the SSD that is first connected to the controller hub 200 or the host device 1000 among the multiple SSDs. Alternatively, the specific port may be the port corresponding to the smallest bus number among the bus numbers. The above method is equivalent to an embodiment of setting up the primary SSD 400 and the secondary SSD 500. However, the primary SSD 400 and the secondary SSD 500 can be set up by various methods other than those described above.
[0038] Figure 1An embodiment is shown with a structure having solid-state drives (SSDs, e.g., primary SSD 400 and secondary SSD 500) coupled to a host device 1000. However, the embodiments disclosed herein are not limited thereto, and the primary SSD 400 and secondary SSD 500 may be replaced by storage devices other than SSDs. For example, the primary SSD 400 and secondary SSD 500 may be implemented as any of a variety of storage devices such as: multimedia cards in the form of multimedia cards (MMC) (e.g., eMMC, RS-MMC, or micro MMC), secure digital cards in the form of SD cards (e.g., mini SD or micro SD), universal serial bus (USB) storage devices, universal flash memory (UFS) devices, PCMCIA card-type storage devices, peripheral component interconnect (PCI) card-type storage devices, high-speed PCI (PCIe) card-type storage devices, compact flash (CF) cards, smart media cards, and / or memory sticks.
[0039] Figure 2 This is a diagram illustrating a storage system 20000 according to an embodiment of the present disclosure.
[0040] Reference Figure 2 The storage system 20000 may include a controller hub 200, a primary SSD 400, and a secondary SSD 500. Since the controller hub 200 and the primary SSD 400 have been described in detail above, redundant descriptions will be omitted for brevity.
[0041] The main SSD 400 may include functional modules. More specifically, the main SSD 400 may include functional module 0 410 and functional module 1 420. These functional modules may be units for providing separate operations for the physical resources included in the storage device. Figure 2 The example illustrates two functional modules included in the main SSD 400. However, according to the embodiment, the number of functional modules included in the main SSD 400 is not limited to two, and the secondary SSD 500 may also include multiple functional modules.
[0042] SSD 500 may include multiple SSDs. More specifically, SSD 500 may include a first slave SSD 510, a second slave SSD 520, and a third slave SSD 530. (See reference...) Figure 1Each of the first slave SSD 510 to the third slave SSD 530 has been described in detail, so repeated descriptions will be omitted for brevity. According to the RAID scheme described below, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can be considered together as a single storage array. According to embodiments of this disclosure, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can perform internal operations according to commands distributed from the master SSD 400. These internal operations can be read operations for reading data stored in the slave SSD 500, or write operations for storing data in the slave SSD 500. Figure 2 The example shown illustrates three functional modules included in the SSD 500. However, the number of SSDs included in the SSD 500 is not limited to this.
[0043] Switch 600 can route packets or messages upstream or downstream. More specifically, switch 600 can route packets or messages upstream from SSD 500 to controller hub 200. Optionally, switch 600 can route packets or messages downstream from controller hub 200 to SSD 500.
[0044] According to an embodiment, switch 600 may be referred to as a logical assembly of multiple virtual PCI to PCI bridge devices. Examples of devices that can be connected to switch 600 include any internal or external devices or components connected to an electronic system, such as I / O devices, network interface controllers (NICs), plug-in cards, audio processors, network processors, hard disk drives, storage devices, CD / DVD ROMs, monitors, printers, mice, keyboards, routers, mobile storage devices, FireWire devices, Universal Serial Bus (USB) devices, scanners, and other input / output devices. Although not specifically described, the device may include PCIe to PCI / PCIX bridges that support legacy or other versions of PCI devices.
[0045] Figure 3 This is a diagram illustrating a solid-state drive (SSD) according to an embodiment of the present disclosure.
[0046] Reference Figure 3 The SSD may include a memory controller 2100, multiple flash memories 2200, a buffer memory 2300, and an auxiliary power supply 2400.
[0047] According to an embodiment, controller 2100 can control multiple flash memories 2200 in response to signals received from host device 1000. For example, the signals may be signals based on the interface between host device 1000 and the SSD. More specifically, the signals may be signals defined according to Peripheral Component Interconnect (PCI) or High-Speed PCI (PCIe), or signals defined by at least one of the following interfaces: Universal Serial Bus (USB), Multimedia Card (MMC), Embedded MMC (eMMC), Advanced Technology Attachment (ATA), Serial ATA, Parallel ATA, Small Computer System Interface (SCSI), Enhanced Small Disk Interface (ESDI), Electronic Integrated Drive (IDE), FireWire, Universal Flash Memory (UFS), WiFi, Bluetooth, and High-Speed Non-Volatile Memory (NVMe).
[0048] The buffer memory 2300 can operate as internal memory of the SSD. For example, the buffer memory 2300 can temporarily store data received from the host device 1000 or data received from multiple flash memories 2200, or it can temporarily store metadata (e.g., a mapping table) of multiple flash memories 2200. The buffer memory 2300 can include volatile memory such as dynamic random access memory (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), low power DDR SDRAM (LPDDR SDRAM), and graphics RAM (GRAM), or non-volatile memory such as ferroelectric RAM (FRAM), resistive RAM (ReRAM), spin-transfer torque magnetic RAM (STT-MRAM), and phase-change RAM (PRAM).
[0049] The auxiliary power supply 2400 can utilize power supplied from the host device 1000 for charging. When the power supply from the host device 1000 is unstable, the auxiliary power supply 2400 can supply power to the SSD. For example, the auxiliary power supply 2400 can be located inside or outside the SSD. For example, the auxiliary power supply 2400 can be located within the motherboard and can supply auxiliary power to the SSD.
[0050] Figure 4 This is a diagram illustrating a memory controller 2100 according to an embodiment of the present disclosure.
[0051] Reference Figure 4 The memory controller 2100 may include a processor 2110, RAM 2120, error correction code (ECC) circuitry 2130, host interface 2140, ROM 2150 and memory interface 2160. Figure 4 The memory controller 2100 shown is Figure 3 An embodiment of the memory controller 2100 shown.
[0052] Processor 2110 can communicate with host device 1000 or CPU 300 via host interface 2140 and perform logical operations to control the operation of memory controller 2100. For example, processor 2110 can load programming commands, data files, or data structures based on requests received from host device 1000 or CPU 300, perform various operations, or generate commands and addresses. For example, processor 2110 can generate various commands for performing programming operations, read operations, erase operations, pause operations, and parameter setting operations.
[0053] Processor 2110 can perform the functions of a Flash Translation Layer (FTL). Processor 2110 can use the FTL to translate Logical Block Addresses (LBAs) provided by host device 1000 or CPU 300 into Physical Block Addresses (PBAs). The FTL can receive LBAs and translate them into PBAs using a mapping table. Depending on the mapping unit, the FTL has various address mapping methods. Typical address mapping methods include page mapping, block mapping, and hybrid mapping.
[0054] Processor 2110 can generate commands without a request from host device 1000. For example, processor 2110 can generate commands for background operations, such as wear leveling operations for memory devices and garbage collection operations for memory devices.
[0055] RAM 2120 can be used as a buffer memory, operating memory, or cache memory for processor 2110. RAM 2120 can store code and commands executed by processor 2110. RAM 2120 can store data processed by processor 2110. When implementing RAM 2120, RAM 2120 can include static RAM (SRAM) or dynamic RAM (DRAM).
[0056] ECC circuit 2130 can detect and correct errors during programming or reading operations. More specifically, ECC circuit 2130 can perform error correction operations based on error correction codes (ECC). ECC circuit 2130 can perform ECC encoding based on data to be written to the memory device. ECC-encoded data can be transferred to the memory device via memory interface 2160. Additionally, ECC circuit 2130 can perform ECC decoding on data received from the memory device via memory interface 2160.
[0057] The host interface 2140 may include protocols for exchanging data between the host device 1000 and the memory controller 2100. More specifically, the host interface 2140 may be configured to communicate with the host device 1000 using the Peripheral Component Interconnect (PCI) protocol or the High Speed PCI (PCIe) protocol. Additionally, the host interface 2140 may communicate with the host device 1000 via one or more of the following interface protocols: Universal Serial Bus (USB) protocol, Multimedia Card (MMC) protocol, Advanced Technology Attachment (ATA) protocol, Serial ATA protocol, Parallel ATA protocol, Small Computer System Interface (SCSI) protocol, Enhanced Small Disk Interface (ESDI) protocol, Electronic Integrated Drive (IDE) protocol, and proprietary protocols.
[0058] ROM 2150 can be used as a storage unit to store various types of information for the operation of memory controller 2100. More specifically, ROM 2150 may include a mapping table, and the mapping table may store physical-to-logical address information and logical-to-physical address information. ROM 2150 can be controlled by processor 2110.
[0059] The memory interface 2160 can communicate with the memory device using a communication protocol under the control of the processor 2110. More specifically, the memory interface 2160 can communicate commands, addresses, and data with the memory device via a channel. For example, the memory interface 2160 may include a NAND interface.
[0060] Figure 5 This is a diagram illustrating RAID levels 0 and RAID level 1 according to embodiments of the present disclosure.
[0061] Reference Figure 5 This illustrates storage methods based on RAID 0 and RAID 1. RAID can be a method or scheme for distributing and storing data across multiple storage devices. According to a RAID scheme, multiple storage devices are treated as a single storage array. Depending on the structure of the storage devices as a single storage array, RAID schemes have several levels, including RAID levels 0 through 6 and higher.
[0062] Under RAID level 0, data can be stored by striping it across multiple storage devices. The term "striping" refers to the operation of distributing data across multiple storage devices. Under RAID level 0, at least two storage devices can be used. For example, under RAID level 0, a first storage device and a second storage device can be used. For instance, under RAID level 0, data A can be striped across the first and second storage devices, such that blocks A1, A3, A5, and A7 are stored in the first storage device, and blocks A2, A4, A6, and A8 are stored in the second storage device.
[0063] Under RAID level 0, multiple segments of data (e.g., data A, from block A1 to block A8) are distributed and stored across multiple storage devices, thus allowing for high storage speeds and maximizing the utilization of the capacity of multiple storage devices. However, under RAID level 0, if an error occurs in a single data segment (e.g., block A1) stored in one of the multiple storage devices, the entire data striped across the multiple storage devices (e.g., data A) may be unreliable. Therefore, the stability of the stored data cannot be guaranteed.
[0064] According to RAID level 1, data can be stored by mirroring it across multiple storage devices. The term "mirroring" refers to the operation of copying the same data across multiple storage devices. According to RAID level 1, at least two storage devices can be used. For example, in a storage method corresponding to RAID level 1, a first storage device and a second storage device can be used. For example, according to RAID level 1, data A can be mirrored to both the first and second storage devices, such that blocks A1, A2, A3, and A4 are stored in the first storage device, and the same data segment group (i.e., blocks A1, A2, A3, and A4) is stored in the second storage device.
[0065] RAID level 1 mirrors the same data across multiple storage devices. Therefore, if an error occurs in some data segments (e.g., blocks A1 through A4) stored in some of the multiple storage devices (e.g., the first storage device), the data (e.g., data A) can be recovered even if only one storage device (e.g., the second storage device) remains unaffected. On the other hand, because data is copied and then stored, the performance and capacity of RAID level 1 may be lower than other RAID levels.
[0066] Figure 6This is a diagram illustrating RAID levels 4 and RAID levels 5 according to embodiments of the present disclosure.
[0067] Reference Figure 6 This illustrates storage schemes based on RAID level 4 and RAID level 5.
[0068] According to RAID level 4, data can be stored by striping data across multiple storage devices and storing parity bits for error correction in a single storage device. At least three storage devices can be used under RAID level 4. For example, a first, second, third, and fourth storage device can be used under RAID level 4. Parity bits can refer to data segments used to detect and correct data errors through operations such as XOR (Exclusive OR). For example, under RAID level 4, when data A, B, C, and D are to be stored, each of data A, B, C, and D is striped across the first, second, and third storage devices. For example, multiple segments of data A (e.g., first block A1 to third block A3) are distributed and stored across the first to third storage devices. Additionally, under RAID level 4, the parity bits (e.g., parity bit Ap) for each piece of data (e.g., data A) stored in the first, second, and third storage devices can be stored in the fourth storage device. That is, according to RAID level 4, data is split and stored across (n-1) storage devices, and one storage device can be used as a dedicated parity bit storage device. For example, when storing data A according to RAID level 4, the first block A1 of data A can be stored in the first storage device, the second block A2 of data A can be stored in the second storage device, the third block A3 of data A can be stored in the third storage device, and the parity bit Ap of data A can be stored in the fourth storage device. According to RAID level 4, even if an error occurs in a data segment (e.g., the first block A1) stored in a single storage device among multiple storage devices, the entire data (e.g., data A) can be recovered due to the parity bit (e.g., parity bit Ap) stored in the dedicated parity bit storage device. However, if an error occurs in two or more data segments (e.g., the first block A1 to the third block A3) stored in a storage device, the entire data (e.g., data A) may not be recoverable from the error, and the burden may be placed on the storage device storing the parity bit. In addition, data storage performance may be degraded because parity bit calculation is required to store the parity bit.
[0069] According to RAID level 5, data can be stored by striping data across multiple storage devices and storing parity bits for error correction in a single storage device. At least three storage devices can be used under RAID level 5. For example, a first, second, third, and fourth storage device can be used. For instance, under RAID level 5, when data A, B, C, and D are to be stored, each of them is striped across three of the first to fourth storage devices. For example, multiple segments of data A (e.g., first block A1 to third block A3) are distributed and stored across the first to third storage devices. Furthermore, under RAID level 5, the parity bit (e.g., parity bit Ap) for each piece of data (e.g., data A) stored in the three storage devices can be stored in the remaining storage device among the first, second, third, and fourth storage devices.
[0070] RAID level 5 is similar to RAID level 4 in that each piece of data is split and stored across (n-1) storage devices, and the parity bit is stored on one storage device. However, RAID level 5 differs from RAID level 4 in that, in RAID level 5, the parity bit is not stored on a single dedicated storage device, but rather distributed and stored across multiple storage devices. For example, when storing data A through D according to RAID level 5, the parity bit Ap of data A can be stored on the fourth storage device, the parity bit Bp of data B can be stored on the third storage device, the parity bit Cp of data C can be stored on the second storage device, and the parity bit Dp of data D can be stored on the first storage device. Because the parity bit is distributed and stored across multiple storage devices in RAID level 5, the load on calculating and storing the parity bit is reduced. Furthermore, according to RAID level 5, even if an error occurs in a single data segment (e.g., the first block A1) stored in a single storage device among multiple storage devices, the entire data (e.g., data A) can be recovered because of the parity bits stored in the storage device (e.g., parity bit Ap). However, when an error occurs in two or more data segments stored in a storage device (e.g., the first block A1 to the third block A3), the entire data (e.g., data A) may not be recoverable, and the burden may be placed on the storage device storing the parity bits. Additionally, data storage performance may degrade because parity bit calculation and storage are required.
[0071] Although Figure 6Not shown, but RAID level 6 enhances the parity scheme of RAID level 5 to ensure stability. With RAID level 6, data can be split and stored across (n-2) storage devices, and parity bits can be stored in two storage devices. RAID level 6 may require at least four storage devices. Furthermore, with RAID level 6, even if errors occur in two data blocks stored in two different storage devices, the entire data can be recovered using the parity bits stored in both devices.
[0072] Figure 7 This is a diagram illustrating nested RAID levels according to embodiments of the present disclosure.
[0073] Reference Figure 7 This illustrates RAID level 1+0 and RAID level 0+1, which use a combination of RAID level 0 and RAID level 1. RAID level 1+0 and RAID level 0+1 can be based on RAID level 0 and RAID level 1.
[0074] RAID 1+0 may require at least four storage devices, such as a first storage device, a second storage device, a third storage device, and a fourth storage device. Under RAID 1+0, the first and second storage devices can mirror and store the same data. The third and fourth storage devices can also mirror and store the same data. A storage device group consisting of storage devices grouped by RAID 1 can be grouped by RAID 0 under RAID 1+0. For example, under RAID 1+0, a group of first and second storage devices can be striped with a group of third and fourth storage devices.
[0075] RAID level 0+1 may require at least four storage devices, such as a first storage device, a second storage device, a third storage device, and a fourth storage device. Under RAID level 0+1, data can be striped and stored across the first and second storage devices. Additionally, data stored on the first and second storage devices can be mirrored and stored across the third and fourth storage devices. A group of storage devices grouped by RAID level 0 can be grouped by RAID level 1 under RAID level 0+1. For example, under RAID level 0+1, a group of first and second storage devices can mirror data to a group of third and fourth storage devices.
[0076] Figure 8 and Figure 9 This is a diagram illustrating a method of operating a storage system 20000 according to an embodiment of the present disclosure. Figure 8 and Figure 9In the following description of methods for operating storage devices, RAID levels are defined by way of example and are referenced above. Figure 5 The RAID level described is 0.
[0077] Reference Figure 8 The image shows DRAM 100 and storage system 20000. Storage system 20000 may include controller hub 200, primary SSD 400, first slave SSD 510, second slave SSD 520 and third slave SSD 530.
[0078] The primary SSD 400 can receive command processing requests from the host device 1000. Command processing requests may include write requests or read requests.
[0079] During a write operation, the host device 1000 may send only the command processing request to the primary SSD 400. More specifically, the CPU 300 of the host device 1000 may store data and commands in the DRAM 100, and the primary SSD 400 may retrieve commands from the DRAM 100. The primary SSD 400 may distribute commands to the individual slave SSDs based on a determined RAID level. More specifically, the primary SSD 400 may send commands corresponding to the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 respectively in a one-to-one manner. Furthermore, each of the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 may perform a write operation corresponding to the command processing request. More specifically, each of the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can receive data segments corresponding to the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530, respectively, from the DRAM 100 based on commands. Each of the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can receive data for performing write operations. For example, the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can store data segments corresponding to the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530, respectively, within the data segments striped according to RAID level 0. Additionally, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can notify the master SSD 400 of the completion of the operation corresponding to the received command. When the operations of the master SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 are completed, the master SSD 400 can notify the host device 1000 of the completion. More specifically, the master SSD 400 can transmit a completion queue (CQ) to the host device 1000.
[0080] In a read operation, the host device 1000 may send only the command processing request to the primary SSD 400. More specifically, the CPU 300 of the host device 1000 may store the command in DRAM 100, and the primary SSD 400 may retrieve the command from DRAM 100. The primary SSD 400 may distribute the command to each slave SSD based on the determined RAID level. More specifically, the primary SSD 400 may send commands corresponding to the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 respectively in a one-to-one manner. Furthermore, each of the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 may perform a read operation corresponding to the command processing request.
[0081] More specifically, each of the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can transfer data corresponding to each of the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 to the DRAM 100 based on commands. Each of the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can transfer read data to the DRAM 100. For example, the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can transfer data segments corresponding to the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530, respectively, within data segments striped according to RAID level 0. Additionally, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can notify the master SSD 400 of the completion of the operation corresponding to the received command. When the operations of the master SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 are completed, the master SSD 400 can notify the host device 1000 of the completion. More specifically, the master SSD 400 can transmit a completion queue (CQ) to the host device 1000. The CQ can store completion information about the commands requested by the slave host device 1000.
[0082] exist Figure 8 and Figure 9 The example described uses RAID level 0 to illustrate the operation of storage system 20000. However, RAID levels are not limited to RAID level 0.
[0083] More specifically, for example, when operating storage system 20000 according to RAID level 1, read operations on storage system 20000 can be performed in the same way as according to RAID level 0. However, in write operations, the primary SSD 400, the first slave SSD 510, the second slave SSD 520, and the third slave SSD 530 can store the same data.
[0084] For example, when performing storage system 20000 operations according to RAID level 4, the primary SSD 400 can calculate and store parity bits. During write operations, each secondary SSD 500 can store data received from DRAM 100, and each secondary SSD 500 can transfer the stored data to the primary SSD 400. Additionally, the primary SSD 400 can use the data received from the SSDs 500 to perform parity bit calculations and can store the parity bits. During read operations, each secondary SSD 500 can also transfer data intended for transfer to DRAM 100 to the primary SSD 400. Furthermore, the primary SSD 400 can perform parity bit calculations and corrections on the data received from the SSDs 500.
[0085] For example, when storage system 20000 operates according to RAID level 5 or RAID level 6, the primary SSD 400 and the secondary SSD 500 can be used as devices for storing parity bits and can transmit data used for parity bit calculations, regardless of the function of the primary SSD 400 and the secondary SSD 500. Parity bit calculations for RAID level 4 can be performed by either the primary SSD 400 or the secondary SSD 500, regardless of their function.
[0086] Figure 10 This is a diagram illustrating the operation of a storage system including multiple functional modules according to an embodiment of the present disclosure.
[0087] Reference Figure 10 Each of the primary SSD 400 and the second slave SSD 520 may include multiple functional modules. These functional modules may be units for providing individual operation of the physical resources included in the storage device. More specifically, the primary SSD 400 may include functional modules F0 410 and F1 420, and the second slave SSD 520 may include functional modules F0 521 and F1 522. Each of these functional modules is an independently operating unit. Therefore, although three physical SSDs are included (i.e., the primary SSD 400, the first slave SSD 510, and the second slave SSD 520), the storage system 20000 can be implemented with five functional module SSDs.
[0088] According to the embodiment, the functional module FO 410 included in the main SSD 400 can be used as the above reference. Figure 8 and Figure 9 The primary SSD 400 is described. Additionally, functional modules F1 420 included in the primary SSD 400, the first slave SSD 510, and functional modules F0 521 and F1 522 included in the second slave SSD 520 can be used as references above. Figure 8 and Figure 9 The aforementioned SSD500.
[0089] Figure 11 This is a diagram illustrating a method of operating a storage system according to an embodiment of the present disclosure.
[0090] Storage system 20000 may include a primary storage device, a secondary storage device, and a controller hub connecting the primary storage device to the secondary storage device. The primary and secondary storage devices may be solid-state drives (SSDs). The controller hub may be a root union supporting a protocol based on High-Speed Peripheral Component Interconnect (PCIe). Storage system 20000 may receive command processing requests from a host device (S1110). The host device may provide the command processing requests to the primary storage device using host memory.
[0091] The storage system 20000 can distribute command processing requests through the controller hub according to a predetermined RAID scheme (S1120). More specifically, the primary storage device can distribute commands to the slave storage devices corresponding to the received commands according to a predetermined RAID level or a predetermined RAID scheme.
[0092] The storage system 20000 can perform operations corresponding to command processing requests (S1130). The operation corresponding to the command processing request can be a write operation to store data according to a predetermined RAID scheme or a read operation to retrieve stored data. When the operation corresponding to the command processing request is completed, the storage system 20000 can transmit the completion queue (CQ) to the host device (S1140).
[0093] Storage system 20000 may not include a separate RAID controller supporting RAID schemes; instead, the SSDs in storage system 20000 can be used to perform the functions of a RAID controller. In the absence of a separate RAID controller or hardware device further included in storage system 20000, the functionality of the SSDs can be replaced by using point-to-point (P2P) routing to replace the functionality of the RAID controller.
[0094] According to embodiments of this disclosure, a storage system 20000 capable of storing data according to a RAID method without a separate RAID controller, and a method for operating the storage system, can be provided.
Claims
1. A storage system, comprising: The main storage device has a first function and a second function, the first function being to operate as an independent redundant disk array controller, i.e., a RAID controller, which provides commands to store data based on a RAID level determined by the host. The data is stored from the storage device according to commands distributed from the main storage device; as well as A controller hub connects the slave storage device to the main storage device. The main storage device further includes: When the primary storage device receives a command processing request from the host, the command is transmitted to the secondary storage device via the controller hub. and When the operations of the primary storage device and the secondary storage device are completed in response to the command processing request, a completion queue (CQ) is transmitted to the host. The second function operates as another storage device controlled by the first function; and Under the control of the primary storage device operating according to the first function, the secondary storage device and the primary storage device operating according to the second function receive and store different data segments from the host.
2. The storage system according to claim 1, wherein, The primary storage device further controls the secondary storage device, causing the data to be striped between the secondary storage device and the primary storage device.
3. The storage system according to claim 1, wherein, The primary storage device further controls the secondary storage device, such that the data is mirrored to both the secondary storage device and the primary storage device.
4. The storage system according to claim 1, wherein, The main storage device further generates and stores parity bits therein for error correction of the data.
5. The storage system according to claim 1, wherein, At least one of the primary storage device and the secondary storage device further stores parity bits therein for error correction of the data.
6. The storage system according to claim 1, The command processing requests include read requests for reading the data stored in the primary storage device and the secondary storage device. The primary storage device further reads one or more data segments corresponding to the read request from itself, and transfers the data segments read from the primary storage device to the host memory. The storage device further reads one or more data segments of the data corresponding to the read request from itself, and transmits the data segments read from the storage device to the host memory.
7. The storage system according to claim 1, The command processing requests include write requests for storing the data in the primary storage device and the secondary storage device. The main storage device further receives one or more data segments corresponding to the write request from the host memory, and stores the data segments received from the host memory therein. The storage device further receives one or more data segments corresponding to the write request from the host memory, and stores the one or more data segments received from the host memory therein.
8. The storage system according to claim 1, wherein, When the operation of the slave storage device is completed in response to the command processing request, the slave storage device further notifies the master storage device that the operation of the slave storage device is complete.
9. The storage system according to claim 1, wherein, The controller hub further supports point-to-point routing, i.e., P2P routing, between the primary storage device and the secondary storage device.
10. The storage system according to claim 9, wherein, The controller hub further uses protocols based on peripheral component interconnection, namely PCI or high-speed PCI, namely PCIe.
11. A method of operating a storage system, the storage system comprising a primary storage device, a secondary storage device, and a controller hub, the controller hub connecting the primary storage device to the secondary storage device, the primary storage device having a first function and a second function, the first function operating as a Redundant Array of Independent Disks (RAID) controller, the method comprising: The main storage device receives command processing requests from the host. The main storage device distributes the command processing requests through the controller hub according to the predetermined RAID level. The primary storage device and the secondary storage device perform the operation corresponding to the command processing request; and When the operation is completed, the main storage device transmits the completion queue (CQ) to the host. The second function operates as another storage device controlled by the first function; and Under the control of the primary storage device operating according to the first function, the secondary storage device and the primary storage device operating according to the second function receive and store different data segments from the host.
12. The method according to claim 11, wherein, Distributing the command processing request includes: distributing the command to the slave storage device such that the data to be stored is striped across the slave storage device and the primary storage device.
13. The method according to claim 11, wherein, Distributing the command processing request includes: distributing the command to the slave storage device such that the data to be stored is mirrored to both the slave storage device and the primary storage device.
14. The method according to claim 11, wherein, Performing the operation includes generating and storing parity bits for data error correction by the main storage device.
15. The method according to claim 11, wherein, Performing the operation includes storing parity bits for data error correction in at least one of the primary storage device and the secondary storage device.
16. The method according to claim 11, The command processing requests include read requests for reading data stored in the primary storage device and the secondary storage device, and The operation includes: The primary storage device and the secondary storage device read data corresponding to the read request from themselves. and The read data is transferred to the host memory by the main storage device and the slave storage device.
17. The method according to claim 11, The command processing requests include write requests for storing data to the primary storage device and the secondary storage device, and The operation includes: The primary storage device and the secondary storage device receive data corresponding to the write request from the host memory. and The data is stored in the primary storage device and the secondary storage device.
18. The method of claim 11, further comprising: When the operation of the slave storage device is completed in response to the command processing request, the slave storage device notifies the master storage device that the operation of the slave storage device is complete.
19. The method according to claim 11, wherein, The distribution is performed via point-to-point routing, or P2P routing, between the primary storage device and the secondary storage device.
20. The method according to claim 19, wherein, The distribution is performed according to the protocol of peripheral component interconnection, i.e., PCI or high-speed PCI, i.e., PCIe.
Citation Information
Patent Citations
Method and system for distributed raid implementation
US20120271998A1