Solid state disk and solid state disk management method
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- HUAWEI TECH CO LTD
- Filing Date
- 2018-12-20
- Publication Date
- 2026-08-07
Smart Images

Figure CN114496051B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the field of information technology, and in particular to a solid-state drive and a solid-state drive management method. Background Technology
[0002] Redundant Array of Independent Disks (RAID) technology is a widely used technology in storage systems to ensure data reliability. When a hard drive in a storage system fails, the data on the failed hard drive can be recalculated using the data on the undamaged hard drive and the parity data. This process is called RAID reconstruction.
[0003] In a RAID-based storage system composed of solid state disks (SSDs), if the reconstruction speed is 1 terabyte (TB) every 5 hours, then a partial failure of a 1TB SSD will take 5 hours; while if the SSD capacity is 100TB, the reconstruction time will become 500 hours. Summary of the Invention
[0004] Firstly, a data recovery method is provided for a storage system, the storage system including a controller, a first solid-state drive (SSD), and a second SSD; wherein both the first SSD and the second SSD contain multiple fault domains, the storage system includes a block group based on an erasure coding algorithm, the block group including a first block and a second block; the address of the first block is mapped to a physical address provided by a first fault domain of the first SSD, and the address of the second block is mapped to a physical address provided by a second fault domain of the second SSD; the method includes: the controller receiving fault information of the first SSD, the fault information indicating that the first fault domain has failed; and in response to the fault information, the controller recovering data stored in the logical address of the first block in the block group according to the erasure coding algorithm. Both the first SSD and the second SSD contain multiple fault domains, but the number of fault domains in the first SSD and the second SSD can be different. Therefore, compared with the prior art, the storage system of this embodiment does not need to reconstruct the data in all logical addresses of the failed SSD, but only needs to reconstruct the data in a portion of the logical addresses of the SSD, where the portion of the logical addresses refers to the logical addresses mapped to the physical addresses in the fault domains where the failure occurred, thereby improving the speed of data reconstruction.
[0005] Specifically, the mapping of the address of the first block to the physical address provided by the first fault domain of the first SSD includes: the address of the first block is the first logical address of the first SSD, and the first logical address is mapped to the physical address provided by the first fault domain of the first SSD; the mapping of the address of the second block to the physical address provided by the second fault domain of the second SSD includes: the address of the second block is the second logical address of the second SSD; and the second logical address is mapped to the physical address provided by the second fault domain of the second SSD. In another implementation, in an SSD scenario supporting Open-Channel, the address of the first block is the physical address provided by the first fault domain of the first SSD, and the mapping of the address of the first block to the physical address provided by the first fault domain of the first SSD is a direct mapping of the address of the first block to the physical address provided by the first fault domain of the first SSD; the address of the second block is the physical address provided by the second fault domain of the second SSD, and the address of the second block is directly mapped to the physical address provided by the second fault domain of the second SSD. In yet another implementation, in an Open-Channel SSD scenario, this embodiment of the invention also supports indirect mapping between block addresses and physical addresses provided by fault domains.
[0006] In conjunction with the first aspect, in some implementations of the first aspect, the storage system stores the correspondence between the address of the first block and the first fault domain, and the correspondence between the address of the second block and the second fault domain. The address of the first block is the first logical address of the first SSD, and the address of the second block is the second logical address of the second SSD. Further, the storage system stores the correspondence between blocks contained in the block group and fault domains; for example, the first block belongs to the first fault domain, and the second block belongs to the second fault domain. Further, the storage system also stores a fault domain index table; for example, the fault domain index table contains the correspondence between fault domains and block groups. Because the same block group contains blocks from fault domains of different SSDs, different fault domains can correspond to the same block group in the fault domain index table. When a fault domain of a certain SSD fails, the controller can quickly find the block groups affected by the fault domain according to the fault domain index table, thereby quickly reconstructing the data in the blocks affected by the fault domain in these block groups.
[0007] Optionally, a fault domain in the first SSD and the second SSD may be multiple chip packages connected on a channel, or one or more chip packages, or one or more chips, or one or more flash chips.
[0008] In conjunction with the first aspect, in some implementations of the first aspect, responding to the fault information includes: the controller querying the correspondence between the first fault domain and the block group to determine the block group.
[0009] In conjunction with the first aspect, in some implementations of the first aspect, the storage system stores the correspondence between the address of the first block and the first fault domain, and the correspondence between the address of the second block and the second fault domain.
[0010] Secondly, a solid-state drive (SSD) management method is provided, wherein the SSD includes a first fault domain and a second fault domain, the method comprising: allocating a first range of logical addresses of the SSD to the first fault domain; and allocating a second range of logical addresses of the SSD to the second fault domain.
[0011] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: recording the correspondence between the first fault domain and the logical address of the first range, and the correspondence between the second fault domain and the logical address of the second range, respectively.
[0012] In conjunction with the second aspect, in some implementations of the second aspect, the logical addresses of the first range and the second range are both consecutive logical addresses, or the logical addresses of the first range and the second range are non-consecutive logical addresses.
[0013] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: the SSD sending to the controller of the storage system the correspondence between the first fault domain and the logical address of the first range, and the correspondence between the second fault domain and the logical address of the second range; wherein the storage system includes the SSD.
[0014] Thirdly, embodiments of the present invention provide a controller for a storage system, comprising various units for implementing the various solutions of the first aspect.
[0015] Fourthly, embodiments of the present invention provide an SSD management device, including various units, for implementing various solutions in the second aspect.
[0016] Fifthly, embodiments of the present invention provide a computer-readable storage medium storing computer instructions for performing the various methods of the first aspect.
[0017] In a sixth aspect, embodiments of the present invention provide a computer program product comprising computer instructions for performing the various methods of the first aspect.
[0018] In a seventh aspect, embodiments of the present invention provide a computer-readable storage medium storing computer instructions for performing various methods of the second aspect.
[0019] Eighthly, embodiments of the present invention provide a computer program product comprising computer instructions for performing the various methods of the second aspect.
[0020] In a ninth aspect, embodiments of the present invention provide a solid-state drive (SSD) comprising an SSD controller, a first fault domain, and a second fault domain; the SSD controller is used to execute various schemes of the second aspect.
[0021] In a tenth aspect, embodiments of the present invention provide a controller for use in a storage system, the controller including an interface and a processor for implementing various schemes of the first aspect.
[0022] Eleventhly, embodiments of the present invention provide a data recovery method for a storage system, the storage system including a controller, a first solid-state drive (SSD), and a second SSD; wherein both the first SSD and the second SSD contain multiple namespaces, each namespace corresponding to a fault domain, the storage system includes a block group based on an erasure coding algorithm, the block group including a first block and a second block; the address of the first block is a first logical address of a first namespace of the first SSD, and the address of the second block is a second logical address of a second namespace of the second SSD; the first logical address is mapped to a physical address provided by a first fault domain of the first SSD, and the second logical address is mapped to a physical address provided by a second fault domain of the second SSD; the method includes: the controller receiving fault information of the first SSD, the fault information indicating that a fault has occurred in the first fault domain or the first namespace; in response to the fault information, the controller recovering data stored in the logical address of the first block in the block group according to the erasure coding algorithm.
[0023] In a twelfth aspect, a solid-state drive (SSD) management method is provided, wherein the SSD includes a first fault domain and a second fault domain, the method comprising: allocating a first namespace of the SSD to the first fault domain; and allocating a second namespace of the SSD to the second fault domain.
[0024] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: recording the correspondence between the first fault domain and the namespace, and the correspondence between the second fault domain and the second namespace, respectively.
[0025] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: the SSD sending the correspondence between the first fault domain and the first namespace and the correspondence between the second fault domain and the second namespace to the controller of the storage system; wherein the storage system includes the SSD.
[0026] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: the SSD sending to the controller of the storage system the logical address correspondence between the first fault domain and the first namespace, and the logical address correspondence between the second fault domain and the second namespace; wherein the storage system includes the SSD. Attached Figure Description
[0027] To more clearly illustrate the technical solutions of the embodiments of this application, the accompanying drawings used in the description of the embodiments will be briefly introduced below.
[0028] Figure 1 This is a schematic diagram of a storage system according to an embodiment of the present invention;
[0029] Figure 2 This is a schematic diagram of the storage array controller structure according to an embodiment of the present invention;
[0030] Figure 3 This is a schematic diagram of a distributed storage system according to an embodiment of the present invention;
[0031] Figure 4 This is a schematic diagram of the server structure in a distributed storage system according to an embodiment of the present invention;
[0032] Figure 5 This is a schematic diagram of the SSD structure according to an embodiment of the present invention;
[0033] Figure 6 This is a schematic diagram illustrating the relationship between fault domains and logical addresses in an SSD according to an embodiment of the present invention;
[0034] Figure 7 This is a schematic diagram of the block group relationship in the storage system;
[0035] Figure 8 The intent of the fault domain index;
[0036] Figure 9 Intended meaning for namespace indexes;
[0037] Figure 10 This is a schematic diagram of the controller structure;
[0038] Figure 11 This is a schematic diagram of the SSD management device. Detailed Implementation
[0039] The technical solutions in the embodiments of this application will be described in more detail below.
[0040] This invention addresses the issue of partial component failures in SSDs within a storage system. By mapping the fault domain of the SSD to its physical space, the scope of the fault is limited to the fault domain, thereby reducing the impact on the storage system and minimizing reconstruction overhead. This allows for reconstruction of less storage space and in less time, ultimately improving reliability.
[0041] like Figure 1 As shown, the storage system in this embodiment of the invention can be a storage array (such as...) of 18000 series, (V3 series). The storage array includes a controller 101 and multiple SSDs. For example... Figure 2 As shown, the controller 101 includes a Central Processing Unit (CPU) 201, a memory 202, and an interface 203. The memory 202 stores computer instructions, and the CPU 201 executes the computer instructions in the memory 202 to manage the storage system, perform data access operations, data recovery, and other operations. Alternatively, to save the computing resources of the CPU 201, a Field Programmable Gate Array (FPGA) or other hardware can be used to execute all operations of the CPU 201 in this embodiment of the invention. Or, the FPGA or other hardware and the CPU 201 can be used to execute some operations of the CPU 201 in this embodiment of the invention, respectively. For ease of description, this embodiment of the invention uniformly uses the term "processor" to refer to the combination of the CPU 201 and the memory 202, as well as the various implementations described above. The processor communicates with the interface 203. The interface 203 can be a Networking Interface Card (NIC) or a Host Bus Adapter (HBA).
[0042] Furthermore, the storage system in this embodiment of the invention can also be a distributed storage system (such as...). of (Series), etc. With of Series. Examples include... Figure 3 As shown, the distributed block storage system includes multiple servers, such as server 1, server 2, server 3, server 4, server 5, and server 6, which communicate with each other via InfiniBand or Ethernet networks. In practical applications, the number of servers in the distributed block storage system can be increased according to actual needs, and this embodiment of the invention does not limit this.
[0043] The servers of a distributed block storage system contain, for example, Figure 4 The structure shown. (As illustrated) Figure 4 As shown, each server in the distributed block storage system includes a Central Processing Unit (CPU) 401, memory 402, interface 403, SSD1, SSD2, and SSD3. Memory 402 stores computer instructions, and CPU 401 executes the program instructions in memory 402 to perform corresponding operations. Interface 403 can be a hardware interface, such as a Network Interface Card (NIC) or Host Bus Adapter (HBA), or a programmable interface module. Furthermore, to save the computing resources of CPU 401, a Field Programmable Gate Array (FPGA) or other hardware can replace CPU 401 to perform the corresponding operations, or the FPGA or other hardware can work together with CPU 401 to perform the corresponding operations. For ease of description, in this embodiment of the invention, CPU 401, memory 402, FPGA, and other hardware replacing CPU 401, or combinations of FPGA and other hardware replacing CPU 401 with CPU 401, are collectively referred to as processors. Interface 403 can be a Networking Interface Card (NIC) or a Host Bus Adapter (HBA). In a distributed storage system, the server responsible for storage management is called the controller. Specifically, the controller performs storage space management, data access, and other tasks.
[0044] SSDs use pages as the read / write unit and blocks as the erase unit. SSDs can achieve parallel data access at multiple levels, including channels, packages, flash chips, dies, and planes. SSDs organize flash chip packages in a multi-channel manner, with multiple packages connected to each channel. These packages share the transmission channel but can execute instructions independently. For a detailed SSD structure, please refer to [reference needed]. Figure 5It includes an interface 501, an SSD controller 502, a channel 503, and a package 504. Each package 504 contains multiple flash memory chips, each flash memory chip contains one or more particles, each particle contains multiple flash memory platters, each flash memory platter contains multiple blocks, and each block contains multiple pages. The interface 501 can be an interface supporting protocols such as Serial Attached Small Computer System Interface (SAS), Non-Volatile Memory Express (NVMe), or Peripheral Component Interconnect Express (PCIe).
[0045] When an SSD fails, it typically only affects a portion of its elements, such as physical blocks, rather than the entire SSD. In other words, when an internal SSD failure occurs, the potentially affected area is not the entire SSD, but rather a part of it. This embodiment of the invention refers to this potentially affected part as a fault domain. Based on the SSD's structure, the SSD can be divided into multiple fault domains. For example, multiple chips connected to a single channel can be packaged as a fault domain, or one or more chips can be grouped as a fault domain, or one or more flash memory chips can be grouped as a fault domain. In this embodiment, when an SSD fails, the fault domain is considered the potentially affected area, and data recovery within that fault domain is required. In practical applications, a fault domain failure can occur entirely within that domain or only partially within it. This embodiment of the invention can also consider other components of the SSD as a fault domain; this is not a limitation. The SSD monitors the status of each fault domain. Specifically, the SSD controller monitors the status of the fault domains using methods such as background inspection. SSDs can also determine the health status of a fault domain based on the number of times the physical block within each fault domain has been erased, that is, determine the status of the fault domain based on the degree of wear.
[0046] SSDs provide storage space externally in the form of logical addresses. In an SSD, the logical address is the Logical Block Address (LBA). The SSD uses a Flash Translation Layer (FTL) to map the LBA to pages on the physical blocks of the SSD, establishing a mapping relationship between LBA and page addresses. This invention addresses the problem of full SSD data recovery in a storage system when an SSD fails. The SSD is configured with LBA-to-page mappings according to fault domains. For example, an SSD containing 128 chips has a usable capacity of 32TB, providing 32TB of logical addresses, or address space. If the LBA range affected by an SSD failure is to be limited to 1TB, then the number of fault domains is 32, i.e., 32TB / 1TB = 32. In this embodiment, the SSD contains 128 chips, so each fault domain contains 4 chips, i.e., 128 / 32 = 4. Figure 6As shown, the SSD contains 32 fault domains, identified by numbers 0-31. In specific implementations, the SSD can use numbers or other methods to identify fault domains; this embodiment of the invention does not limit this. One implementation involves each fault domain corresponding to a certain range of Logical Block Addresses (LBAs) on the SSD. For example, the LBA range for fault domain 0 is 0 to (1TB-1), the LBA range for fault domain 1 is 1TB to (2TB-1), and so on, with the logical block address range for fault domain 31 being 31TB to (32TB-1). That is, the logical addresses corresponding to a fault domain are consecutive. This is also referred to as allocating a certain range of logical addresses, i.e., a certain range of LBAs, to the fault domain. In this embodiment of the invention, allocating a certain range of logical addresses to the fault domain is also referred to as the SSD mapping a certain range of logical addresses to physical addresses within a specific fault domain based on the FTL. In this embodiment of the invention, allocating a certain range of logical addresses to the fault domain does not require establishing a mapping from all logical addresses within that range to physical addresses within that fault domain. In one implementation, when it is necessary to establish a mapping from a specific logical block address within a certain range of logical addresses to a physical address, the SSD selects a physical address within that fault domain to establish the mapping. Another implementation of this invention, still using the aforementioned SSD as an example, allows the LBAs within each fault domain to be non-contiguous; that is, a certain range of logical addresses can be non-contiguous logical addresses. For example, a 32TB LBA can be divided into 32 parts, with a granularity of 1 gigabyte (GB). Each fault domain provides a physical address for 1TB of LBAs; that is, the LBAs corresponding to fault domain 0 are 0 to (1GB-1), the LBAs corresponding to fault domain 1 are 1 to (2GB-1), and the LBAs corresponding to fault domain 31 are 31GB to (32GB-1). Then, the LBA corresponding to fault domain 0 is 0 to (1GB-1), the LBA corresponding to fault domain 31 is 32GB to (33GB-1)..., and the LBA corresponding to fault domain 32 is 63GB to (64GB-1). This cyclical alternation establishes the mapping between fault domains and LBAs. In this implementation, the LBAs corresponding to a fault domain are not consecutive. The SSD stores the above mapping relationship between LBAs and fault domains. The SSD reports the above mapping relationship between LBAs and fault domains to the controller 101.
[0047] In this embodiment of the invention, Figure 1 The storage array shown is an example of a storage system. The SSDs provide fixed-length chunks (CK). The controller 101 uses a redundancy algorithm, such as erasure coding (EC), to group chunks from different SSDs into chunk groups (CKG). Specifically, the EC algorithm can be a RAID algorithm. Figure 7As shown, CKG consists of CK1, CK2, and CK3. CK1 is provided by SSD1, CK2 by SSD2, and CK3 by SSD3. The address of CK1 is LBA1 of SSD1, the address of CK2 is LBA2 of SSD2, and the address of CK3 is LBA3 of SSD3. LBA1 maps to the physical address provided by fault domain 1 of SSD1; LBA2 maps to the physical address provided by fault domain 2 of SSD2, and LBA3 maps to the physical address provided by fault domain 3 of SSD3. In this embodiment of the invention, when selecting CKs from multiple SSDs to form CKG, the fault domain of the SSD providing the CK can be determined based on the load. The load can be the type of input / output (IO), IO hot / cold status, etc. In one implementation, the SSD sends the mapping between fault domains and LBAs to the controller 101. The controller 101 can determine the fault domain corresponding to the logical address of each CK in the CKG based on the mapping between the SSD's fault domains and logical addresses. The controller 101 obtains the SSD's status information; for example, if fault domain 1 of SSD1 fails, SSD1 sends fault information to the controller 101 to indicate that fault domain 1 has failed. Since the controller 101 can determine the LBA affected by the failure of fault domain 1 of SSD1 based on the mapping between the SSD's fault domains and logical addresses, and the storage array contains multiple CKGs, the controller 101 searches for the address of the CK contained in the CKG that maps to the LBA of fault domain 1 of SSD1. For example, it determines that the address of CK1 contained in CKG1 maps to the LBA of fault domain 1 of SSD. The controller 101 recovers the data of CK1 in CKG1 according to a redundancy algorithm, such as the EC algorithm. Therefore, compared with the prior art, this embodiment of the invention does not require reconstructing all the CKs corresponding to the logical addresses provided by SSD1, thus improving the speed of data reconstruction. In a specific implementation process, the data in CK1 can be restored to other fault domains of SSD1 or to other SSDs. This embodiment of the invention does not limit this process.
[0048] Furthermore, the SSD reports the mapping relationship between the LBA and the fault domain to the controller 101. Therefore, the storage array stores the correspondence between the addresses of CKs contained in CKGs and the fault domains. For example, the first CK belongs to the first fault domain, and the second CK belongs to the second fault domain. Further, to quickly find the LBA mapped to the fault domain of SSD1 for the address of a CK contained in a CKG, the storage array also stores a fault domain index table based on the mapping relationship between LBAs and fault domains. For example, the fault domain index table contains the correspondence between fault domains and CKGs, such as the correspondence between fault domain identifiers and CKG identifiers. Because the same CKG contains CKs from fault domains of different SSDs, different fault domains can correspond to the same CKG in the fault domain index table. When a fault domain of a certain SSD fails, the controller 101 can quickly find the CKGs affected by the fault domain based on the fault domain index table, thereby quickly reconstructing the data in the CKs affected by the fault domain within these CKGs. In a specific implementation, when creating a CKG, the controller 101 can record the corresponding entry in the fault domain index table based on the mapping relationship between LBA and fault domains. Each entry contains the correspondence between fault domains and CKGs. To facilitate the querying and management of the fault domain index table, one implementation can establish a multi-level fault domain index table; for example, the first level could be an SSD-to-fault domain index table, and the second level a fault domain-to-CKG index table. Another implementation, such as... Figure 8 As shown, the fault domain index table can be partitioned according to the SSD, thus facilitating fast and convenient queries.
[0049] In another implementation of this invention, for SSDs supporting the NVMe interface specification, a corresponding namespace can be allocated to the SSD based on the number of fault domains, i.e., one fault domain corresponds to one namespace. Therefore, the logical addresses of different namespaces of an SSD can be independently addressed. For example, taking an SSD with an available capacity of 32TB as an example, the SSD is divided into 32 fault domains, and one namespace is allocated to each fault domain. The LBA range of each namespace is 0 to (1TB-1). The LBA of a namespace is mapped to the physical address within the corresponding fault domain. The SSD reports the mapping relationship between the namespace and the fault domain to the controller 101. The SSD stores the above mapping relationship between the namespace and the fault domain. The SSD reports the above mapping relationship between the namespace and the fault domain to the controller 101. Alternatively, the mapping relationship between the LBA in the above namespace and the fault domain can also be reported. In this embodiment of the invention, when selecting CKs from multiple SSDs to form a CKG, the namespace of the SSD providing the CK can be determined based on the load. The load can be of input / output (IO) type, IO hot / cold status, etc.
[0050] Accordingly, as mentioned earlier, the storage array stores a fault domain index table. Alternatively, the storage array stores a namespace index table, which contains the mapping between namespaces and CKGs (Classification Groups), such as the mapping between namespace identifiers and CKG identifiers. Because the same CKG contains CKs from different SSD namespaces, different namespaces can correspond to the same CKG in the namespace index table. When a fault domain of an SSD fails, the SSD reports fault information to the controller 101. The fault information indicates the namespace that failed; for example, the fault information includes a namespace identifier. The controller 101 can quickly find the CKGs affected by the fault domain based on the namespace index table, thereby quickly reconstructing the data in the CKs affected by the fault domain within these CKGs. In a specific implementation, when allocating and creating CKGs, the controller 101 can record corresponding entries in the namespace index table based on the mapping between namespaces and fault domains. These entries contain the mapping between namespaces and CKGs. To facilitate querying and managing namespace index tables, one implementation approach is to create multi-level namespace index tables. For example, the first level could be an SSD and namespace index table, and the second level could be a namespace and CKG index table. Another implementation approach is... Figure 9 As shown, the namespace index table can be partitioned according to the SSD, thus facilitating fast queries.
[0051] In this embodiment of the invention, when the SSD performs garbage data reclamation, valid data is also written to different physical addresses in the same fault domain.
[0052] In this embodiment of the invention, the SSD controller collects wear information of each fault domain within the SSD and reports the wear information of the fault domains to the controller 101. When the controller 101 creates a CKG, it selects a CK mapped to the physical address of the corresponding fault domain based on the wear degree of each fault domain of the SSD and the data modification frequency.
[0053] This invention can also be applied to SSDs that support Open-Channel. In one implementation of an Open-Channel SSD, the SSD is divided into multiple fault domains, and the storage system controller 101 can directly access the physical address of the SSD. The SSD establishes a mapping relationship between fault domains and their physical addresses. Thus, the address of the CK (Card Group) constituting the fault domain in the storage system can be the physical address of the SSD; that is, the address of the CK is the physical address provided by the SSD fault domain, and the physical address of the CK is mapped to the physical address provided by the SSD fault domain. Other operations required for the implementation of this invention based on Open-Channel SSDs can be referred to the descriptions of other embodiments of this invention, and will not be repeated here.
[0054] In this embodiment of the invention, various operations performed by the SSD can be executed by the SSD's controller.
[0055] Accordingly, embodiments of the present invention also provide a controller applied to a storage system, wherein the storage system includes the controller, a first solid-state drive (SSD), and a second SSD; wherein both the first SSD and the second SSD contain multiple fault domains, and the storage system includes block groups constructed based on erasure coding algorithms, the block groups containing a first block and a second block; the address of the first block is mapped to a physical address provided by a first fault domain of the first SSD, and the address of the second block is mapped to a physical address provided by a second fault domain of the second SSD; the controller, as... Figure 10As shown, the system includes a receiving unit 1001 and a recovery unit 1002. The receiving unit 1001 receives fault information from the first SSD, indicating a fault in the first fault domain. The recovery unit 1002, in response to the fault information, recovers the data stored in the address of the first block in the block group according to the erasure coding algorithm. Further, the storage system stores the correspondence between the address of the first block and the first fault domain, and the correspondence between the address of the second block and the second fault domain. The controller also includes a query unit for querying the correspondence between the first fault domain and the block group to determine the block group. Figure 10 For a detailed implementation of the controller shown, please refer to the preceding implementations in the embodiments of this invention, such as... Figure 2 The structure of the controller 101 shown is not described in detail here. Another implementation is described in this embodiment of the invention. Figure 10 The provided controller can also be implemented in software.
[0056] like Figure 11 As shown, this embodiment of the invention also provides an SSD management device, wherein the SSD includes a first fault domain and a second fault domain. The SSD management device includes a first allocation unit 1101, used to allocate a first range of logical addresses of the SSD to the first fault domain; and a second allocation unit 1102, used to allocate a second range of logical addresses of the SSD to the second fault domain. Further, the SSD management device also includes a sending unit, used to send the correspondence between the first fault domain and the first range of logical addresses, and the correspondence between the second fault domain and the second range of logical addresses, to the controller of the storage system; wherein the storage system includes the SSD. Further, the SSD management device also includes a recording unit, used to record the correspondence between the first fault domain and the first range of logical addresses, and the correspondence between the second fault domain and the second range of logical addresses, respectively. One hardware implementation of the SSD management device provided in this embodiment of the invention can refer to the structure of the SSD controller, which will not be described in detail here. Another implementation, the SSD management device provided in this embodiment of the invention can also be implemented by software or by a combination of the SSD controller and software.
[0057] This invention provides a computer-readable storage medium storing computer instructions, which, when the computer instructions are... Figure 1 The controller 101 shown or Figure 4 When run on the server shown, the method in this embodiment of the invention is executed.
[0058] This invention provides a computer program product containing computer instructions, which, when the computer instructions are in... Figure 1The controller 101 shown or Figure 4 When the server shown is running, it executes the method described in this embodiment of the invention.
[0059] Each unit of the data recovery device provided in this embodiment of the invention can be implemented by a processor, or by a processor and a memory, or by software.
[0060] This invention provides a computer program product containing computer instructions, which execute the SSD management method of this invention when the computer instructions are run on the SSD controller.
[0061] In this embodiment of the invention, the logical address can also be the KV in the key-value (KV) disk, or the log in the log disk, etc.
[0062] In this embodiment of the invention, the correspondence and mapping relationships have the same meaning. The description of the correspondence between block addresses and fault domains has the same meaning as the description of the correspondence between fault domains and block addresses.
[0063] It should be noted that the memories described herein are intended to include, but are not limited to, these and any other suitable types of memories.
[0064] Those skilled in the art will recognize that the units and algorithm steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementations should not be considered beyond the scope of this invention.
[0065] Those skilled in the art will understand that, for the sake of convenience and brevity, the specific working processes of the systems, devices, and units described above can be referred to the corresponding processes in the foregoing method embodiments, and will not be repeated here.
[0066] In the embodiments provided by this invention, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be through some interfaces; the indirect coupling or communication connection between devices or units may be electrical, mechanical, or other forms.
[0067] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0068] In addition, the functional units in the various embodiments of the present invention can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit.
[0069] If the aforementioned functions are implemented as software functional units and sold or used as independent products, they can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this invention, essentially, or the part that contributes to the prior art, or a portion of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several computer instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute all or part of the steps of the methods described in the various embodiments of this invention. The aforementioned storage medium includes various media capable of storing computer instructions, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.
[0070] The above description is merely a specific embodiment of the present invention, but the scope of protection of the present invention is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the technical scope disclosed in the present invention should be included within the scope of protection of the present invention. Therefore, the scope of protection of the present invention should be determined by the scope of the claims.
Claims
1. A solid-state drive (SSD), characterized in that, The SSD includes an SSD controller and storage media. The SSD contains multiple namespaces based on the NVMe interface specification, wherein the namespaces are allocated to the SSD according to the number of fault domains. The SSD controller is used for: Obtain the address range in which the first namespace among the multiple namespaces based on the NVME interface specification has failed; Report the address range where the first namespace failed, and keep the capacity of the other namespaces among the plurality of namespaces based on the NVME interface specification unchanged, excluding the first namespace.
2. The SSD according to claim 1, characterized in that, The faulty address range is mapped to at least one fault domain of the SSD.
3. The SSD according to claim 1 or 2, characterized in that, The fault domain is a series of particle packages connected on a single channel.
4. The SSD according to claim 1 or 2, characterized in that, The fault domain is one or more particle packages.
5. The SSD according to claim 1 or 2, characterized in that, The fault domain is one or more particles.
6. The SSD according to claim 1 or 2, characterized in that, The fault domain is one or more flash memory chips.
7. A solid-state drive (SSD) management method, characterized in that, The SSD contains multiple namespaces based on the NVMe interface specification, wherein the corresponding namespaces are allocated to the SSD according to the number of fault domains; the method includes: Obtain the address range in which the first namespace among the multiple namespaces based on the NVME interface specification has failed; Report the address range where the first namespace failed, and keep the capacity of the other namespaces among the plurality of namespaces based on the NVME interface specification unchanged, excluding the first namespace.
8. The method according to claim 7, characterized in that, The faulty address range is mapped to at least one fault domain of the SSD.
9. The method according to claim 7 or 8, characterized in that, The fault domain is a series of particle packages connected on a single channel.
10. The method according to claim 7 or 8, characterized in that, The fault domain is one or more particle packages.
11. The method according to claim 7 or 8, characterized in that, The fault domain is one or more particles.
12. The method according to claim 7 or 8, characterized in that, The fault domain is one or more flash memory chips.
13. A computer program product, characterized in that, The computer program product includes computer instructions applied to solid-state drives (SSDs). The SSD contains multiple namespaces based on the NVMe interface specification, wherein corresponding namespaces are allocated to the SSD according to the number of fault domains. The SSD executes the computer instructions to perform the following steps: Obtain the address range in which the first namespace among the multiple namespaces based on the NVME interface specification has failed; Report the address range where the first namespace failed, and keep the capacity of the other namespaces among the plurality of namespaces based on the NVME interface specification unchanged, excluding the first namespace.
14. The computer program product according to claim 13, characterized in that, The faulty address range is mapped to at least one fault domain of the SSD.
15. The computer program product according to claim 13 or 14, characterized in that, The fault domain is a series of particle packages connected on a single channel.
16. The computer program product according to claim 13 or 14, characterized in that, The fault domain is one or more particle packages.
17. The computer program product according to claim 13 or 14, characterized in that, The fault domain is one or more particles.
18. The computer program product according to claim 13 or 14, characterized in that, The fault domain is one or more flash memory chips.
Citation Information
Patent Citations
RAID (redundant arrays of inexpensive disks) realization method of solid state disks, solid state disk and electronic equipment
CN102915212A
Storage management method and storage device
CN107203328A
Method and system for creating multiple namespaces for solid-state hard disks
CN107273061A