WO2015142338A1 - Solid state drive operations - Google Patents
Solid state drive operations Download PDFInfo
- Publication number
- WO2015142338A1 WO2015142338A1 PCT/US2014/031327 US2014031327W WO2015142338A1 WO 2015142338 A1 WO2015142338 A1 WO 2015142338A1 US 2014031327 W US2014031327 W US 2014031327W WO 2015142338 A1 WO2015142338 A1 WO 2015142338A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- storage space
- drive
- spare
- region
- storage
- Prior art date
Links
- 239000007787 solid Substances 0.000 title claims description 18
- 238000013500 data storage Methods 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims description 26
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 8
- 230000003321 amplification Effects 0.000 description 7
- 238000003199 nucleic acid amplification method Methods 0.000 description 7
- 238000003491 array Methods 0.000 description 6
- 230000002085 persistent effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
Definitions
- SSDs Solid State Drives
- flash memory which can retain data without being powered.
- flash memory One drawback of flash memory is that each memory cell of a flash-based SSD can be written only a limited number of times before the memory cell fails.
- various techniques are employed to extend the life of drive, such as wear leveling, which spreads write operations more evenly across the memory cells of the drive.
- FIG. 1 is a block diagram of a storage system with data storage drives that can be configured to use spare storage space for over-provisioning;
- FIG. 2 is a block diagram showing two example memory allocations for a drive, such as one of the drives shown in Fig. 1 ;
- FIG. 3 is a process flow diagram of a method of operating a data storage drive.
- FIG. 4 is a block diagram showing a tangible, non-transitory, computer-readable medium that stores code configured to operate a data storage drive.
- flash memory cells cannot be directly overwritten. Thus, when data is written to an SSD memory cell, the cell must first be erased and then written. In some cases, this may result in two writes for each actual bit of data to be stored to the device. In most flash memory, data is written in units called pages, but data is erased in larger units called blocks. If enough data within a block is unneeded (i.e., stale pages), the entire block is erased and any good data in the block is re-written to a new block. The remainder of the new block that is left over can be written with new data.
- SSD collection This process of erasing blocks and moving good data to new blocks is referred to as "garbage collection.”
- Most SSDs include some amount of storage space that is reserved for garbage collection, wear-leveling, and remapping bad blocks, among other things.
- the difference between the physical amount of storage capacity and the logical capacity presented to the user is referred to as over-provisioning.
- the present disclosure provides techniques for reducing the write- amplification of a flash drive by increasing the amount of storage space on the drive available for over-provisioning. Providing more storage space for over- provisioning improves the efficiencies of the wear-leveling and garbage collection algorithms, which have a direct effect on write amplification.
- Many storage systems utilize an array of drives and provide fault tolerance by storing data with redundancy.
- the failure of a drive can cause a controller to identify a drive as failed and initiate a spare rebuild process that regenerates the data of the failed drive from the other drives. Meanwhile, the bad drive can be replaced by the customer.
- a certain amount of the system's storage space is reserved for the spare rebuild process.
- some systems may include one or more whole drives that are reserved as spare drives to be used in the event of drive a failure.
- the storage resources used for spare rebuild are distributed across several drives.
- multiple drives of the storage system can include a certain amount of storage space that is reserved as spare storage, while most of the remaining storage space is free space, which is used for storing host data.
- the write amplification of a storage drive can be reduced by providing more storage space for over-provisioning.
- the techniques disclosed herein provide more storage space for over-provisioning by enabling a drive to use the storage space designated as "spare" storage space for over- provisioning when not in use for a spare rebuild operation.
- Providing more storage for over-provisioning reduces the write amplification of the drive, which reduces the overall number of writes the memory cells of the drive experience and thereby extends the useful life of the drive.
- Fig. 1 is a block diagram of a storage system with data storage drives that can be configured to use spare storage space for over-provisioning. It will be appreciated that the storage system 100 shown in Fig. 1 is only one example of a storage system in accordance with embodiments. In an actual
- the storage system 100 may include various additional storage devices and networks, which may be interconnected in any suitable fashion, depending on the design considerations of a particular implementation. For example, a large storage system will often have many more client computers and storage devices than shown in this illustration.
- the storage system 100 provides data storage resources to any number of client computers 102, which may be general purpose computers, workstations, mobile computing devices, and the like.
- the storage system 100 includes storage controllers, referred to herein as nodes 104.
- the storage system 100 also includes storage arrays 106, which are controlled by the nodes 104.
- the client computers 102 can be coupled to the storage system 100 directly or through a network 108, which may be a local area network (LAN), wide area network (WAN), a storage area network (SAN), or other suitable type of network.
- LAN local area network
- WAN wide area network
- SAN storage area network
- the client computers 102 can access the storage space of the storage arrays 106 by sending Input/Output (I/O) requests, including write requests and read requests, to the nodes 104.
- the nodes 104 process the I/O requests so that user data is written to or read from the appropriate storage locations in the storage arrays 106.
- user data refers to data that a person might use in the course of business, performing a job function, or for personal use, such as business data and reports, Web pages, user files, image files, video files, audio files, software applications, or any other similar type of data that that a user may wish to save to long term storage.
- Each of the nodes 104 can be communicatively coupled to each of the storage arrays 106.
- Each node 104 can also be communicatively coupled to each other node by an inter-node communication network 1 10.
- the storage arrays 106 may include various types of persistent storage, including solid state drives 1 12, which may be referred to herein simply as drives 1 1 2.
- the drives 1 1 2 are flash drives.
- the drives 1 12 may also use other types of persistent memory, including resistive memory, for example.
- Each storage array 106 includes multiple drives 1 12, each of which is configured so that a certain amount of storage space on each drive is designated as spare storage to be used for spare rebuild operations. The amount of storage space designated as spare storage may be a parameter set by the nodes 104.
- the storage network system 100 may also include additional storage devices in addition to what is shown in Fig. 1 .
- Each node 104 can include a spare rebuild engine 1 14 that performs spare rebuild operations.
- the spare rebuild engine 1 14 can be implemented in hardware or a combination of hardware and programming code.
- the spare rebuild engine 1 14 can include a non-transitory, computer-readable medium for storing instructions, one or more processors for executing the instructions, or a combination thereof.
- the spare rebuild engine 1 14 is implemented as computer-readable instructions stored on an integrated circuit such as an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), or other type of processor.
- ASIC Application Specific Integrated Circuit
- FPGA Field Programmable Gate Array
- the spare rebuild engine 1 14 is configured to rebuild drive data. If the node 104 detects a failure condition, the node 104 can trigger the spare rebuild engine 1 14 to conduct a spare rebuild operation. During the spare rebuild operation, the data of the failed drive is re-created on the storage space designated as spare storage space.
- the spare rebuild engine 1 14 can use any suitable technique for rebuilding the data of the failed drive on the spare storage space.
- Each node 104 can also include a memory allocation controller 1 16 that controls the allocation of storage space in the storage arrays 1 06 between spare storage and over-provisioning storage.
- the memory allocation controller 1 16 can be implemented as part of the spare rebuild engine 1 14 or as a separate component.
- Each node 104 controls the memory allocation for a certain sub-set of the drives 1 1 2.
- the storage system 100 can be configured so that each node 1 04 may control all the drives of a specific storage array 106.
- node A can be configured to control the drives 1 12 in storage array A
- node B can be configured to control the drives 1 12 in storage array B
- node C can be configured to control the drives 1 12 in storage array C.
- certain details of the storage system configuration can be specified by an administrator, including the amount of storage space used for spare storage and which nodes 104 control which drives 1 12, for example.
- the drives 1 12 have a certain amount of storage space that is designated as spare storage space.
- the memory allocation controller 1 1 6 of the corresponding node 104 can instruct each drive 1 12 under its control to use the spare storage for over-provisioning. If a spare rebuild operation is initiated, the memory allocation controller 1 1 6 instructs those drives 1 1 2 involved in the spare rebuild operation to stop using the spare storage space for over- provisioning, and the space becomes available for the spare rebuild operation. When the spare rebuild operation is complete and the spare storage space is no longer being used, the memory allocation controller 1 16 instructs the drives 1 12 to use the spare storage space for over-provisioning again.
- FIG. 2 is a block diagram showing two example memory allocations for a drive, such as one of the drives shown in Fig. 1 .
- Memory map 200 shows a memory allocation for a drive 1 12 during normal operation
- memory map 202 shows the memory allocation for a drive 1 12 during a spare rebuild operation.
- some portion of the available storage space is mapped as a user data region 206.
- the user data region 206 represents storage space that exposed to the file system and is visible to a client computer 102.
- a user of the client computer 102 can store data to and receive data from the user data region 206.
- some portion of the storage space is mapped for internal use by the storage system 100. Examples of this use could be, but is not limited to, drive identification labels, storage system table of content identifiers, or diagnostic and test areas.
- the internal over-provisioning region 210 is a reserved by the drive itself for over-provisioning processes such as garbage collection, wear-leveling, bad block remapping, and the like.
- the over-provisioning processes are performed by the drive itself.
- a processor of the drive can run firmware programmed for the over-provisioning processes.
- the over-provisioning region 210 is not visible to or accessible by an external device storage controller, such as the nodes 104 of Fig. 1 . In this sense, the over-provisioning region 210 is hidden storage space.
- the size of the internal over-provisioning region 210 may be determined by the drive manufacturer.
- spare storage space region 214 is accessible to the nodes 104 and is reserved by and controlled by the nodes 104.
- the configuration of the spare storage space region 214 can be determined by an administrator of the storage system 100. For example, the administrator can specify how much spare storage space is set aside by each drive. This same region is shown in memory map 200 as a free space 212.
- the node in control of the drive can instruct the drive to use the spare storage space region 214 as free space 212 to be used for over-provisioning.
- the drive firmware is configured to be able to receive an instruction to use normally visible storage space for over-provisioning.
- the storage space used for over-provisioning is not fixed by the manufacturer of the drive. If a spare rebuild operation is initiated, the node in control of the drive can reclaim the free-space 212 by instructing the drive to stop using the spare storage space region 214 for over- provisioning.
- Fig. 3 is a process flow diagram of a method of operating a data storage drive.
- the method 300 can be performed by a storage controller such as one of the nodes 104 shown in Fig. 1 .
- the storage drive can be one of the drives 1 12 shown in Fig. 1 .
- a visible region of storage space on the drive is designated as spare storage space. This operation can be performed in accordance with input received from a system administrator.
- over-provisioning operations are operations that reduce write amplification in a drive and extend the useful life of the drive.
- over-provisioning operations include wear-leveling and garbage collecting.
- data storage requests are sent to the drive.
- the data storage requests include write requests and read requests that are received during the regular operation of the storage system.
- the data storage requests may be I/O requests received from a client computer requesting user data to be stored to a region of the drive reserved for user data.
- the drive will perform over- provisioning operations using both the spare storage space and a fixed internal storage space that is reserved by the drive for over-provisioning operations.
- the storage space that is reserved by the drive for over- provisioning operations is a hidden storage space that is not accessible to the external storage controller.
- some event or action occurs that triggers the use of the spare storage space. For example, a failure of a drive may be detected or an administrator may perform an action that triggers the need for spare storage space.
- the solid state drive is instructed to stop using all or a portion of the spare storage space for over-provisioning operations. The drive will then stop using the spare storage space for over-provisioning operations and move any needed data from the spare storage space to another region of the drive, such as the hidden storage space. In some examples, after the drive has released the spare storage space and moved any needed data, the drive may send an acknowledgment to the controller indicating that the spare storage space is available.
- the spare storage space is used to perform a spare rebuild.
- the controller may wait for the drive to acknowledge that the spare storage space is available.
- the spare rebuild is finished, and any data that was stored to the spare storage space has been erased or is no longer needed.
- the drive is instructed to resume using the spare storage space for over-provisioning operations.
- Fig. 4 is a block diagram showing a tangible, non-transitory, computer-readable medium that stores code configured to operate a data storage drive.
- the computer-readable medium is referred to by the reference number 400.
- the computer-readable medium 400 can include RAM, a hard disk drive, an array of hard disk drives, an optical drive, an array of optical drives, a non-volatile memory, a flash drive, a digital versatile disk (DVD), or a compact disk (CD), among others.
- the computer-readable medium 400 may be accessed by a processor 402 over a computer bus 404.
- the computer-readable medium 400 may include code configured to perform the methods described herein.
- the computer readable medium 400 may include firmware that is executed by a storage controller such as the nodes 104 of Fig. 1 .
- a region 406 on the computer-readable medium 400 can include an I/O processing engine that processes I/O requests received from a client computer.
- processing I/O requests can include storing data to a storage drive or retrieving data from a storage drive and sending it to a client computer that requested it.
- a region 408 can include a spare rebuild engine to rebuild the data of a failed disk on spare storage space of one or more drives.
- a region 410 can include a memory allocation controller configured to designate a visible region of storage space on a drive as spare storage space. The memory allocation controller can also instruct the drive to use the spare storage space for the over-provisioning operations when not being used for a spare rebuild operation.
- the software components can be stored in any order or configuration.
- the tangible, non-transitory, computer-readable medium is a hard drive
- the software components can be stored in non-contiguous, or even overlapping, sectors.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
A data storage drive and a controller communicatively coupled to the data storage drive. The data storage drive includes a first region of storage space and at least a second region of storage space. The storage drive to reserve the first region of storage space for over-provisioning operations. The controller is to instruct the data storage drive to use the second region of storage space for over-provisioning operations.
Description
SOLID STATE DRIVE OPERATIONS
BACKGROUND
[0001] Solid State Drives (SSDs) are non-volatile data storage devices that are used for persistent data storage, but unlike hard disks drives, contain no moving parts. Some SSD drives use flash memory, which can retain data without being powered. One drawback of flash memory is that each memory cell of a flash-based SSD can be written only a limited number of times before the memory cell fails. To extend the life of flash-based SSDs, various techniques are employed to extend the life of drive, such as wear leveling, which spreads write operations more evenly across the memory cells of the drive.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Certain exemplary embodiments are described in the following detailed description and in reference to the drawings, in which:
[0003] Fig. 1 is a block diagram of a storage system with data storage drives that can be configured to use spare storage space for over-provisioning;
[0004] Fig. 2 is a block diagram showing two example memory allocations for a drive, such as one of the drives shown in Fig. 1 ;
[0005] Fig. 3 is a process flow diagram of a method of operating a data storage drive; and
[0006] Fig. 4 is a block diagram showing a tangible, non-transitory, computer-readable medium that stores code configured to operate a data storage drive.
DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS
[0007] One characteristic of flash memory is that flash memory cells cannot be directly overwritten. Thus, when data is written to an SSD memory cell, the cell must first be erased and then written. In some cases, this may result in two writes for each actual bit of data to be stored to the device. In most flash memory, data is written in units called pages, but data is erased in larger units
called blocks. If enough data within a block is unneeded (i.e., stale pages), the entire block is erased and any good data in the block is re-written to a new block. The remainder of the new block that is left over can be written with new data. This process of erasing blocks and moving good data to new blocks is referred to as "garbage collection." Most SSDs include some amount of storage space that is reserved for garbage collection, wear-leveling, and remapping bad blocks, among other things. The difference between the physical amount of storage capacity and the logical capacity presented to the user is referred to as over-provisioning.
[0008] Techniques such as wear-leveling and garbage collection effect the drive's write amplification, which is a phenomenon in which the actual amount of physical information written within the drive is a multiple of the logical amount of data intended to be written. The higher the write amplification of a drive, the more writes that the cells of the drive will experience for a given amount of data storage usage.
[0009] The present disclosure provides techniques for reducing the write- amplification of a flash drive by increasing the amount of storage space on the drive available for over-provisioning. Providing more storage space for over- provisioning improves the efficiencies of the wear-leveling and garbage collection algorithms, which have a direct effect on write amplification.
[0010] Many storage systems utilize an array of drives and provide fault tolerance by storing data with redundancy. The failure of a drive can cause a controller to identify a drive as failed and initiate a spare rebuild process that regenerates the data of the failed drive from the other drives. Meanwhile, the bad drive can be replaced by the customer. In such a system, a certain amount of the system's storage space is reserved for the spare rebuild process. For example, some systems may include one or more whole drives that are reserved as spare drives to be used in the event of drive a failure. In some systems, the storage resources used for spare rebuild are distributed across several drives. In such a storage system, multiple drives of the storage system can include a certain amount of storage space that is reserved as spare
storage, while most of the remaining storage space is free space, which is used for storing host data.
[0011] As mentioned above, the write amplification of a storage drive can be reduced by providing more storage space for over-provisioning. The techniques disclosed herein provide more storage space for over-provisioning by enabling a drive to use the storage space designated as "spare" storage space for over- provisioning when not in use for a spare rebuild operation. Providing more storage for over-provisioning reduces the write amplification of the drive, which reduces the overall number of writes the memory cells of the drive experience and thereby extends the useful life of the drive.
[0012] Fig. 1 is a block diagram of a storage system with data storage drives that can be configured to use spare storage space for over-provisioning. It will be appreciated that the storage system 100 shown in Fig. 1 is only one example of a storage system in accordance with embodiments. In an actual
implementation, the storage system 100 may include various additional storage devices and networks, which may be interconnected in any suitable fashion, depending on the design considerations of a particular implementation. For example, a large storage system will often have many more client computers and storage devices than shown in this illustration.
[0013] The storage system 100 provides data storage resources to any number of client computers 102, which may be general purpose computers, workstations, mobile computing devices, and the like. The storage system 100 includes storage controllers, referred to herein as nodes 104. The storage system 100 also includes storage arrays 106, which are controlled by the nodes 104. The client computers 102 can be coupled to the storage system 100 directly or through a network 108, which may be a local area network (LAN), wide area network (WAN), a storage area network (SAN), or other suitable type of network.
[0014] The client computers 102 can access the storage space of the storage arrays 106 by sending Input/Output (I/O) requests, including write requests and read requests, to the nodes 104. The nodes 104 process the I/O requests so that user data is written to or read from the appropriate storage
locations in the storage arrays 106. As used herein, the term "user data" refers to data that a person might use in the course of business, performing a job function, or for personal use, such as business data and reports, Web pages, user files, image files, video files, audio files, software applications, or any other similar type of data that that a user may wish to save to long term storage. Each of the nodes 104 can be communicatively coupled to each of the storage arrays 106. Each node 104 can also be communicatively coupled to each other node by an inter-node communication network 1 10.
[0015] The storage arrays 106 may include various types of persistent storage, including solid state drives 1 12, which may be referred to herein simply as drives 1 1 2. In some examples, the drives 1 1 2 are flash drives. However, the drives 1 12 may also use other types of persistent memory, including resistive memory, for example. Each storage array 106 includes multiple drives 1 12, each of which is configured so that a certain amount of storage space on each drive is designated as spare storage to be used for spare rebuild operations. The amount of storage space designated as spare storage may be a parameter set by the nodes 104. The storage network system 100 may also include additional storage devices in addition to what is shown in Fig. 1 .
[0016] Each node 104 can include a spare rebuild engine 1 14 that performs spare rebuild operations. The spare rebuild engine 1 14 can be implemented in hardware or a combination of hardware and programming code. For example, the spare rebuild engine 1 14 can include a non-transitory, computer-readable medium for storing instructions, one or more processors for executing the instructions, or a combination thereof. In some examples, the spare rebuild engine 1 14 is implemented as computer-readable instructions stored on an integrated circuit such as an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), or other type of processor.
[0017] The spare rebuild engine 1 14 is configured to rebuild drive data. If the node 104 detects a failure condition, the node 104 can trigger the spare rebuild engine 1 14 to conduct a spare rebuild operation. During the spare rebuild operation, the data of the failed drive is re-created on the storage space designated as spare storage space. The spare rebuild engine 1 14 can use any
suitable technique for rebuilding the data of the failed drive on the spare storage space.
[0018] Each node 104 can also include a memory allocation controller 1 16 that controls the allocation of storage space in the storage arrays 1 06 between spare storage and over-provisioning storage. The memory allocation controller 1 16 can be implemented as part of the spare rebuild engine 1 14 or as a separate component. Each node 104 controls the memory allocation for a certain sub-set of the drives 1 1 2. In some examples, the storage system 100 can be configured so that each node 1 04 may control all the drives of a specific storage array 106. For example, node A can be configured to control the drives 1 12 in storage array A, node B can be configured to control the drives 1 12 in storage array B, and node C can be configured to control the drives 1 12 in storage array C. Other arrangements are also possible depending on the design considerations of a particular implementation. Additionally, certain details of the storage system configuration can be specified by an administrator, including the amount of storage space used for spare storage and which nodes 104 control which drives 1 12, for example.
[0019] As mentioned above, several or all of the drives 1 12 have a certain amount of storage space that is designated as spare storage space. During normal operation of a storage array 106 the memory allocation controller 1 1 6 of the corresponding node 104 can instruct each drive 1 12 under its control to use the spare storage for over-provisioning. If a spare rebuild operation is initiated, the memory allocation controller 1 1 6 instructs those drives 1 1 2 involved in the spare rebuild operation to stop using the spare storage space for over- provisioning, and the space becomes available for the spare rebuild operation. When the spare rebuild operation is complete and the spare storage space is no longer being used, the memory allocation controller 1 16 instructs the drives 1 12 to use the spare storage space for over-provisioning again.
[0020] Fig. 2 is a block diagram showing two example memory allocations for a drive, such as one of the drives shown in Fig. 1 . Memory map 200 shows a memory allocation for a drive 1 12 during normal operation, and memory map 202 shows the memory allocation for a drive 1 12 during a spare rebuild
operation. As shown in Fig. 2, some portion of the available storage space is mapped as a user data region 206. The user data region 206 represents storage space that exposed to the file system and is visible to a client computer 102. A user of the client computer 102 can store data to and receive data from the user data region 206.
[0021] Additionally, some portion of the storage space is mapped for internal use by the storage system 100. Examples of this use could be, but is not limited to, drive identification labels, storage system table of content identifiers, or diagnostic and test areas.
[0022] Some portion of the storage space is mapped as an internal over- provisioning region 210. The internal over-provisioning region 210 is a reserved by the drive itself for over-provisioning processes such as garbage collection, wear-leveling, bad block remapping, and the like. The over-provisioning processes are performed by the drive itself. For example, a processor of the drive can run firmware programmed for the over-provisioning processes. In some examples, the over-provisioning region 210 is not visible to or accessible by an external device storage controller, such as the nodes 104 of Fig. 1 . In this sense, the over-provisioning region 210 is hidden storage space. The size of the internal over-provisioning region 210 may be determined by the drive manufacturer.
[0023] As shown in the memory map 202, some portion of the drive's visible storage space is designated as a spare storage space region 214. The spare storage space region 214 is accessible to the nodes 104 and is reserved by and controlled by the nodes 104. The configuration of the spare storage space region 214 can be determined by an administrator of the storage system 100. For example, the administrator can specify how much spare storage space is set aside by each drive. This same region is shown in memory map 200 as a free space 212. At the time that the drive is brought on-line, the node in control of the drive can instruct the drive to use the spare storage space region 214 as free space 212 to be used for over-provisioning. The drive firmware is configured to be able to receive an instruction to use normally visible storage space for over-provisioning. Thus, the storage space used for over-provisioning
is not fixed by the manufacturer of the drive. If a spare rebuild operation is initiated, the node in control of the drive can reclaim the free-space 212 by instructing the drive to stop using the spare storage space region 214 for over- provisioning.
[0024] Fig. 3 is a process flow diagram of a method of operating a data storage drive. The method 300 can be performed by a storage controller such as one of the nodes 104 shown in Fig. 1 . The storage drive can be one of the drives 1 12 shown in Fig. 1 .
[0025] At block 302, a visible region of storage space on the drive is designated as spare storage space. This operation can be performed in accordance with input received from a system administrator.
[0026] At block 304, the drive is instructed to use the spare storage space for over-provisioning operations. As explained above, over-provisioning operations are operations that reduce write amplification in a drive and extend the useful life of the drive. Such over-provisioning operations include wear-leveling and garbage collecting.
[0027] At block 306, data storage requests are sent to the drive. The data storage requests include write requests and read requests that are received during the regular operation of the storage system. For example, the data storage requests may be I/O requests received from a client computer requesting user data to be stored to a region of the drive reserved for user data. During the regular operation of the storage system, the drive will perform over- provisioning operations using both the spare storage space and a fixed internal storage space that is reserved by the drive for over-provisioning operations. In some examples, the storage space that is reserved by the drive for over- provisioning operations is a hidden storage space that is not accessible to the external storage controller.
[0028] At block 308, some event or action occurs that triggers the use of the spare storage space. For example, a failure of a drive may be detected or an administrator may perform an action that triggers the need for spare storage space.
[0029] At block 310, the solid state drive is instructed to stop using all or a portion of the spare storage space for over-provisioning operations. The drive will then stop using the spare storage space for over-provisioning operations and move any needed data from the spare storage space to another region of the drive, such as the hidden storage space. In some examples, after the drive has released the spare storage space and moved any needed data, the drive may send an acknowledgment to the controller indicating that the spare storage space is available.
[0030] At block 312, the spare storage space is used to perform a spare rebuild. In some examples, the controller may wait for the drive to acknowledge that the spare storage space is available.
[0031] At block 314, the spare rebuild is finished, and any data that was stored to the spare storage space has been erased or is no longer needed. At this time, the drive is instructed to resume using the spare storage space for over-provisioning operations.
[0032] Fig. 4 is a block diagram showing a tangible, non-transitory, computer-readable medium that stores code configured to operate a data storage drive. The computer-readable medium is referred to by the reference number 400. The computer-readable medium 400 can include RAM, a hard disk drive, an array of hard disk drives, an optical drive, an array of optical drives, a non-volatile memory, a flash drive, a digital versatile disk (DVD), or a compact disk (CD), among others. The computer-readable medium 400 may be accessed by a processor 402 over a computer bus 404. Furthermore, the computer-readable medium 400 may include code configured to perform the methods described herein. For example, the computer readable medium 400 may include firmware that is executed by a storage controller such as the nodes 104 of Fig. 1 .
[0033] The various software components discussed herein may be stored on the computer-readable medium 400. A region 406 on the computer-readable medium 400 can include an I/O processing engine that processes I/O requests received from a client computer. For example, processing I/O requests can include storing data to a storage drive or retrieving data from a storage drive
and sending it to a client computer that requested it. A region 408 can include a spare rebuild engine to rebuild the data of a failed disk on spare storage space of one or more drives. A region 410 can include a memory allocation controller configured to designate a visible region of storage space on a drive as spare storage space. The memory allocation controller can also instruct the drive to use the spare storage space for the over-provisioning operations when not being used for a spare rebuild operation. Although shown as contiguous blocks, the software components can be stored in any order or configuration. For example, if the tangible, non-transitory, computer-readable medium is a hard drive, the software components can be stored in non-contiguous, or even overlapping, sectors.
[0034] While the present techniques may be susceptible to various modifications and alternative forms, the exemplary examples discussed above have been shown only by way of example. It is to be understood that the technique is not intended to be limited to the particular examples disclosed herein. Indeed, the present techniques include all alternatives, modifications, and equivalents falling within the true spirit and scope of the appended claims.
Claims
1 . A system comprising:
a data storage drive comprising a first region of storage space and at least a second region of storage space, wherein the storage drive is to reserve the first region of storage space for over-provisioning operations; and
a controller communicatively coupled to the data storage drive, the controller to designate a second region of storage space as spare storage space for use in data rebuild operations and instruct the data storage drive to use the second region of storage space for over- provisioning operations.
2. The system of claim 1 , the data storage drive comprising a third region of storage space to be used for host data.
3. The system of claim 1 , wherein, if the controller initiates a spare rebuild operation, the controller is to instruct the drive to stop using the second region of storage space for over-provisioning, and the controller is to use the second region of storage space for the spare rebuild operation.
4. The system of claim 3, wherein, at the conclusion of the spare rebuild operation, the controller is to instruct the data storage drive to use the second region of storage space for over-provisioning operations.
5. The system of claim 1 , wherein the first region of storage space is not accessible to the controller and the second region of storage space is accessible to the controller.
6. The system of claim 1 , wherein the data storage drive is a solid state drive comprising flash memory.
7 The system of claim 1 , wherein the data storage drive is one drive of a drive array comprising a plurality of drives, and each of the plurality of drives includes spare storage space that is used for spare rebuild operations and is also used for over-provisioning operations when not being used for spare rebuild operations.
8. A method comprising:
sending data storage requests to a solid state drive, the solid state drive to perform over-provisioning operations using at least a first region of the storage space;
designating a second region of storage space of the solid state drive as spare storage space; and
instructing the solid state drive to use the second region of storage space for over-provisioning operations.
9. The method of claim 8, comprising instructing the solid state drive to stop using the second region of storage space for over-provisioning operations, and initiating a spare rebuild operation.
10. The method of claim 9 comprising, during the spare rebuild operation, rebuilding data of a failed drive at least partially on the second region of storage space.
1 1 . The method of claim 10 comprising, after the spare rebuild operation is finished, instructing the solid state drive to again use the second region of storage space for over-provisioning operations.
12. A tangible, non-transitory, computer-readable medium comprising instructions that direct a processor to:
send data storage requests to a solid state drive, the solid state drive to perform over-provisioning operations using a hidden region of the storage space;
designate a visible region of storage space on the solid state drive as spare storage space; and
instruct the solid state drive to use the spare storage space for the over- provisioning operations.
13. The computer-readable medium of claim 12, comprising instructions that direct the processor to send an instruction to the solid state drive to stop using the spare storage space for the over-provisioning operations.
14. The computer-readable medium of claim 12, comprising instructions that direct the processor to, after the solid state drive has stopped using the spare storage space for the over-provisioning operations, write data to the spare storage space during a spare rebuild operation.
15. The computer-readable medium of claim 12, wherein the computer-readable medium is included in a storage controller node of a storage area network.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2014/031327 WO2015142338A1 (en) | 2014-03-20 | 2014-03-20 | Solid state drive operations |
EP14886493.7A EP3120250A4 (en) | 2014-03-20 | 2014-03-20 | Solid state drive operations |
CN201480077268.3A CN106462492A (en) | 2014-03-20 | 2014-03-20 | Solid state drive operations |
US15/114,912 US20160342476A1 (en) | 2014-03-20 | 2014-03-20 | Solid state drive operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2014/031327 WO2015142338A1 (en) | 2014-03-20 | 2014-03-20 | Solid state drive operations |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2015142338A1 true WO2015142338A1 (en) | 2015-09-24 |
Family
ID=54145101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2014/031327 WO2015142338A1 (en) | 2014-03-20 | 2014-03-20 | Solid state drive operations |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160342476A1 (en) |
EP (1) | EP3120250A4 (en) |
CN (1) | CN106462492A (en) |
WO (1) | WO2015142338A1 (en) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102275706B1 (en) * | 2014-06-30 | 2021-07-09 | 삼성전자주식회사 | Method of operating data storage device and method of operating data processing system having same |
US9747177B2 (en) | 2014-12-30 | 2017-08-29 | International Business Machines Corporation | Data storage system employing a hot spare to store and service accesses to data having lower associated wear |
WO2017139486A1 (en) * | 2016-02-10 | 2017-08-17 | R-Stor Inc. | Method and apparatus for providing increased storage capacity |
US9952929B2 (en) * | 2016-04-21 | 2018-04-24 | International Business Machines Corporation | Regaining redundancy in distributed raid arrays using unallocated capacity |
KR102435890B1 (en) * | 2017-08-17 | 2022-08-25 | 삼성전자주식회사 | Address mapping method and operation method of storage device |
US10740181B2 (en) | 2018-03-06 | 2020-08-11 | Western Digital Technologies, Inc. | Failed storage device rebuild method |
US10860446B2 (en) * | 2018-04-26 | 2020-12-08 | Western Digital Technologiies, Inc. | Failed storage device rebuild using dynamically selected locations in overprovisioned space |
US10824526B2 (en) | 2018-08-03 | 2020-11-03 | Western Digital Technologies, Inc. | Using failed storage device in peer-to-peer storage system to perform storage-centric task |
US10831603B2 (en) | 2018-08-03 | 2020-11-10 | Western Digital Technologies, Inc. | Rebuild assist using failed storage device |
US10901848B2 (en) | 2018-08-03 | 2021-01-26 | Western Digital Technologies, Inc. | Storage systems with peer data recovery |
US10983885B2 (en) | 2018-11-29 | 2021-04-20 | International Business Machines Corporation | Recovering storage devices in a storage array having errors |
KR20200068147A (en) * | 2018-12-04 | 2020-06-15 | 삼성전자주식회사 | Storage device and operating method of storage device |
US11182258B2 (en) | 2019-01-04 | 2021-11-23 | Western Digital Technologies, Inc. | Data rebuild using dynamic peer work allocation |
US12008267B2 (en) * | 2022-04-20 | 2024-06-11 | EMC IP Holding Company, LLC | Storage management system and method |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120151254A1 (en) * | 2010-12-14 | 2012-06-14 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US20120221784A1 (en) * | 2009-11-23 | 2012-08-30 | Amir Ban | Memory controller and methods for enhancing write performance of a flash device |
US20130061019A1 (en) * | 2011-09-02 | 2013-03-07 | SMART Storage Systems, Inc. | Storage control system with write amplification control mechanism and method of operation thereof |
US20130166824A1 (en) * | 2011-12-21 | 2013-06-27 | Samsung Electronics Co., Ltd. | Block management for nonvolatile memory device |
US8677054B1 (en) * | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8412909B2 (en) * | 2009-04-08 | 2013-04-02 | Samsung Electronics Co., Ltd. | Defining and changing spare space and user space in a storage apparatus |
US8479080B1 (en) * | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US8572311B1 (en) * | 2010-01-11 | 2013-10-29 | Apple Inc. | Redundant data storage in multi-die memory systems |
US8880843B2 (en) * | 2010-02-10 | 2014-11-04 | International Business Machines Corporation | Providing redundancy in a virtualized storage system for a computer system |
US9235486B1 (en) * | 2013-09-30 | 2016-01-12 | Symantec Corporation | Techniques for spare storage pool management |
-
2014
- 2014-03-20 CN CN201480077268.3A patent/CN106462492A/en active Pending
- 2014-03-20 WO PCT/US2014/031327 patent/WO2015142338A1/en active Application Filing
- 2014-03-20 US US15/114,912 patent/US20160342476A1/en not_active Abandoned
- 2014-03-20 EP EP14886493.7A patent/EP3120250A4/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120221784A1 (en) * | 2009-11-23 | 2012-08-30 | Amir Ban | Memory controller and methods for enhancing write performance of a flash device |
US8677054B1 (en) * | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
US20120151254A1 (en) * | 2010-12-14 | 2012-06-14 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US20130061019A1 (en) * | 2011-09-02 | 2013-03-07 | SMART Storage Systems, Inc. | Storage control system with write amplification control mechanism and method of operation thereof |
US20130166824A1 (en) * | 2011-12-21 | 2013-06-27 | Samsung Electronics Co., Ltd. | Block management for nonvolatile memory device |
Non-Patent Citations (1)
Title |
---|
See also references of EP3120250A4 * |
Also Published As
Publication number | Publication date |
---|---|
EP3120250A4 (en) | 2017-12-06 |
EP3120250A1 (en) | 2017-01-25 |
US20160342476A1 (en) | 2016-11-24 |
CN106462492A (en) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160342476A1 (en) | Solid state drive operations | |
US9513822B2 (en) | Unmap storage space | |
US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
US9666244B2 (en) | Dividing a storage procedure | |
US11928053B2 (en) | System garbage collection method and method for garbage collection in solid state disk | |
US8543761B2 (en) | Zero rebuild extensions for raid | |
EP3336706A1 (en) | Method and storage device for processing stripes in storage device | |
US12013762B2 (en) | Meta data protection against unexpected power loss in a memory system | |
US20170177225A1 (en) | Mid-level controllers for performing flash management on solid state drives | |
CN104583930A (en) | Method of data migration, controller and data migration apparatus | |
US10579540B2 (en) | Raid data migration through stripe swapping | |
EP3346387A1 (en) | Storage system and system garbage collection method | |
US20130238867A1 (en) | Method and apparatus to deploy and backup volumes | |
US20150293719A1 (en) | Storage Space Processing Method and Apparatus, and Non-Volatile Computer Readable Storage Medium | |
US9983826B2 (en) | Data storage device deferred secure delete | |
US20170010810A1 (en) | Method and Apparatus for Providing Wear Leveling to Non-Volatile Memory with Limited Program Cycles Using Flash Translation Layer | |
JP6476959B2 (en) | Storage control device, storage system, and control program | |
JP2016192025A (en) | Ssd storage system, and writing response deterioration prevention control method and program thereof | |
US20150067285A1 (en) | Storage control apparatus, control method, and computer-readable storage medium | |
US10884933B2 (en) | Method and apparatus for performing pipeline-based accessing management in a storage server | |
KR102277731B1 (en) | Method for operating storage system and storage controller | |
US20240078039A1 (en) | Data Recovery for Zoned Namespace Devices | |
US8850087B2 (en) | Storage device and method for controlling the same | |
US8626991B1 (en) | Multi-LUN SSD optimization system and method | |
CN111338846B (en) | Method and device for recovering L2P (L2P) table based on multiple cores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14886493 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 15114912 Country of ref document: US |
|
REEP | Request for entry into the european phase |
Ref document number: 2014886493 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2014886493 Country of ref document: EP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |