US20180165169A1 - Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event - Google Patents
Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event Download PDFInfo
- Publication number
- US20180165169A1 US20180165169A1 US15/376,248 US201615376248A US2018165169A1 US 20180165169 A1 US20180165169 A1 US 20180165169A1 US 201615376248 A US201615376248 A US 201615376248A US 2018165169 A1 US2018165169 A1 US 2018165169A1
- Authority
- US
- United States
- Prior art keywords
- storage device
- data
- hot spare
- logical
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 121
- 230000004044 response Effects 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims description 41
- 238000007726 management method Methods 0.000 description 32
- 230000006870 function Effects 0.000 description 31
- 230000008569 process Effects 0.000 description 29
- 230000036541 health Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 238000012544 monitoring process Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 13
- 238000013519 translation Methods 0.000 description 9
- 238000003491 array Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012005 ligant binding assay Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000002950 deficient Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000008187 granular material Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010397 one-hybrid screening Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
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/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/2056—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 by mirroring
- G06F11/2069—Management of state, configuration or failover
-
- 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/2089—Redundant storage control functionality
-
- 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
-
- 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/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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/2056—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 by mirroring
- G06F11/2071—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 by mirroring using a plurality of controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/2056—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 by mirroring
- G06F11/2087—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 by mirroring with a common controller
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3041—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Definitions
- This disclosure relates to data processing and storage, and more specifically, to a data storage system, such as a flash memory system, that employs a hot spare storage device to proactively store array data in absence of a failure or pre-failure event.
- NAND flash memory is an electrically programmable and erasable non-volatile memory technology that stores one or more bits of data per memory cell as a charge on the floating gate of a transistor.
- a NAND flash memory array is organized in blocks (also referred to as “erase blocks”) of physical memory, each of which includes multiple physical pages each in turn containing a multiplicity of memory cells.
- flash memory arrays can generally be programmed on a page basis, but are erased on a block basis.
- data storage systems employing NAND flash memory and/or other storage technologies such as magnetic hard disk drives (HDDs)
- HDDs magnetic hard disk drives
- the availability and/or performance of the data storage system is enhanced by employing some level of data redundancy.
- data storage systems often employ one or more arrangements (often referred to as “levels”) of redundant array of inexpensive (or independent) disks (RAID).
- RAID redundant array of inexpensive (or independent) disks
- RAID levels include RAID 0, which employs data striping across a set of RAID disks (RAID 0 in and of itself does not improve availability but can improve performance); RAID 1, which involves mirroring of RAID disks; RAID 4, which implements block-level striping across RAID disks and a dedicated parity drive; RAID 5, which implements block-level striping across RAID disks and distributed storage of parity information; and RAID 6, which implements block-level striping across RAID disks and distributed storage of two independent sets of parity information.
- RAID levels can also be used in combination to form hybrid RAID arrays; for example, RAID 10, which combines RAID 1 and RAID 0, implements a mirrored set of striped drives.
- the data redundancy provided by the various standard or hybrid RAID levels allow the data storage system to recover from various modes of failure, thus generally improving data availability and storage system reliability.
- the spare storage drives can be so-called “hot” spare drives in that the storage drives are powered on, formatted (if applicable), and ready to be used to rebuild the data storage array in case of the failure of one or more of the storage drives comprising the data storage array.
- hot spare drives do no useful work until a drive failure occurs. After the replacement of the defective drive, the hot spare drive will then usually be employed as the spare and again do no work until and unless another drive fails.
- the hot spare drive may never be used, or at most, may be actively used for only a few hours out of the entire life of the data storage array.
- a data storage system includes a controller, a hot spare storage device and a plurality of primary storage devices.
- the controller utilizes the hot spare storage device to mirror only a subset of each stripe of logical pages written across the data storage array, where the subset includes a logical page determined by a write input/output operation (IOP) policy.
- IOP write input/output operation
- the controller writes a stripe including a plurality of logical data pages and a logical data protection page across the plurality of primary storage devices and mirrors the logical page determined by the write IOP policy on the hot spare storage device.
- contents of the failed storage device not already mirrored on the hot spare storage device are rebuilt on the hot spare storage device.
- FIG. 1A is a high level block diagram of a data processing environment in accordance with one embodiment
- FIG. 1B is a more detailed block diagram of a flash card of the data storage system of FIG. 1A ;
- FIG. 2 depicts an exemplary NAND flash memory module in accordance with one embodiment
- FIG. 3 is a high level flow diagram of the flash management functions and data structures employed in flash management in accordance with one embodiment
- FIG. 4 illustrates a input/output operation (IOP) monitor within a system management controller (SMC) in accordance with one embodiment
- FIG. 5 is a high level logical flowchart of an exemplary process for configuring a data storage array to mirror on a hot spare storage device selected data of the data storage array in accordance with an IOP policy;
- FIG. 6 is a high level logical flowchart of an exemplary process for mirroring on a hot spare storage device selected data of an associated data storage array in accordance with an IOP policy
- FIG. 7 illustrates an exemplary hybrid RAID system including a RAID 5 data storage array and a hot spare storage device in accordance with one embodiment
- FIG. 8 is a high level logical flowchart of an exemplary process for rebuilding a data storage array utilizing a hot spare storage device in accordance with one embodiment.
- data processing environment 100 including a data storage system 120 having a non-volatile memory array as described further herein.
- data processing environment 100 includes one or more hosts, such as a processor system 102 having one or more processors 104 that process instructions and data.
- Processor system 102 may additionally include local storage 106 (e.g., dynamic random access memory (DRAM) or disks) that may store program code, operands and/or execution results of the processing performed by processor(s) 104 .
- DRAM dynamic random access memory
- processor system 102 can be, for example, a mobile computing device (such as a smartphone or tablet), a laptop or desktop personal computer system, a server computer system (such as one of the POWER series of servers available from International Business Machines Corporation), or a mainframe computer system.
- processor system 102 can also be an embedded processor system using various processors such as ARM, POWER, Intel x86, or any other processor combined with memory caches, memory controllers, local storage, I/O bus hubs, etc.
- Each processor system 102 further includes an input/output (I/O) adapter 108 that is coupled directly (i.e., without any intervening device) or indirectly (i.e., through at least one intermediate device) to a data storage system 120 via an I/O channel 110 .
- I/O channel 110 may employ any one or a combination of known or future developed communication protocols, including, for example, Fibre Channel (FC), FC over Ethernet (FCoE), Internet Small Computer System Interface (iSCSI), InfiniBand, Transport Control Protocol/Internet Protocol (TCP/IP), Peripheral Component Interconnect Express (PCIe), etc.
- I/O operations (IOPs) communicated via I/O channel 110 include read IOPs by which a processor system 102 requests data from data storage system 120 and write IOPs by which a processor system 102 requests storage of data in data storage system 120 .
- data storage system 120 includes multiple interface cards 122 through which data storage system 120 receives and responds to input/output operations (IOP) 102 via I/O channels 110 .
- Each interface card 122 is coupled to each of multiple Redundant Array of Inexpensive Disks (RAID) controllers 124 in order to facilitate fault tolerance and load balancing.
- RAID controllers 124 is in turn coupled (e.g., by a PCIe bus) to each of multiple data storage devices 126 including, for example, NAND flash cards and/or HDDs and/or other alternative or additional non-volatile storage devices.
- each system management controller 123 can be implemented utilizing hardware or hardware executing firmware and/or software. As described in greater detail below with reference to FIG. 4 , each system management controller 123 includes an IOP monitor (IM) 125 .
- IM IOP monitor
- FIG. 1B depicts a more detailed block diagram of an exemplary embodiment of a data storage device 126 of data storage system 120 of FIG. 1A in which the storage device is implemented as a flash card.
- data storage device 126 includes a gateway 130 that serves as an interface between data storage device 126 and RAID controllers 124 .
- Gateway 130 is coupled to a general-purpose processor (GPP) 132 , which can be configured (e.g., by program code) to perform pre-processing on IOPs received by gateway 130 and/or to schedule servicing of the IOPs by flash card 126 .
- GPP general-purpose processor
- GPP 132 is coupled to a GPP memory 134 (e.g., Dynamic Random Access Memory (DRAM)) that can conveniently buffer data created, referenced and/or modified by GPP 132 in the course of its processing or data flowing through the gateway 130 destined for one or more of the flash controllers 140 .
- GPP memory 134 e.g., Dynamic Random Access Memory (DRAM)
- DRAM Dynamic Random Access Memory
- Gateway 130 is further coupled to multiple flash controllers 140 , each of which controls a respective NAND flash memory system 150 .
- Flash controllers 140 can be implemented, for example, by an Application Specific Integrated Circuit (ASIC) and/or Field Programmable Gate Array (FPGA) and/or microprocessor having an associated flash controller memory 142 (e.g., DRAM).
- ASIC Application Specific Integrated Circuit
- FPGA Field Programmable Gate Array
- GPP 132 may program and configure flash controllers 140 during start-up of data storage system 120 .
- flash controllers 140 receive read and write IOPs from gateway 130 that request to read data stored in NAND flash memory system 150 and/or to store data in NAND flash memory system 150 .
- Flash controllers 140 service these IOPs, for example, by accessing NAND flash memory system 150 to read or write the requested data from or into NAND flash memory system 150 or by accessing a memory cache (not illustrated) associated with NAND flash memory system 150 .
- Flash controllers 140 implement a flash translation layer (FTL) that provides logical-to-physical address translation to enable access to specific memory locations within NAND flash memory systems 150 .
- FTL flash translation layer
- an IOP received by flash controller 140 from a host device, such as a processor system 102 contains the logical block address (LBA) at which the data is to be accessed (read or written) and, if a write IOP, the write data to be stored to data storage system 120 .
- the IOP may also specify the amount (or size) of the data to be accessed. Other information may also be communicated depending on the protocol and features supported by data storage system 120 .
- the flash translation layer translates LBAs received from a RAID controller 124 into physical addresses assigned to corresponding physical location in NAND flash memory systems 150 . Flash controllers 140 may perform address translation and/or store mappings between logical and physical addresses in a logical-to-physical translation data structure, such as a logical-to-physical translation table (LPT), which may conveniently be stored in
- each NAND flash memory system 150 includes multiple (e.g., 32) individually addressable NAND flash memory storage devices 152 .
- the flash memory storage devices 152 take the form of a board-mounted flash memory modules, for example, Single Level Cell (SLC), Multi-Level Cell (MLC), Three Level Cell (TLC), or Quad Level Cell (QLC) NAND flash memory modules.
- SLC Single Level Cell
- MLC Multi-Level Cell
- TLC Three Level Cell
- QLC Quad Level Cell
- Flash memory module 200 includes one or more memory die, each implementing at least one memory array 202 formed of a two- or three-dimensional array of NAND flash memory cells. As indicated in FIG. 2 , the memory cells within memory array 202 are physically arranged in multiple blocks 204 , each in turn including multiple physical pages 206 .
- NAND flash memory such as that employed in memory array 202 , must be erased prior to being programmed. Further, NAND flash memory is generally constrained by its construction such that the smallest granule of storage that can be erased is a block 204 and the smallest granule of storage that can be accessed by a read or write IOP is fixed at the size of a single physical page 206 . It should be appreciated in this regard that the LBAs provided by host devices correspond to logical pages within a logical address space, where each logical page typically has a size of 4 kilobytes. Physical pages 206 , in contrast, typically have a larger size, for example, approximately 16 kilobytes (kB), and can thus correspond to multiple logical pages.
- kB 16 kilobytes
- Flash memory module 200 further includes a row decoder 210 through which word lines of memory array 202 can be addressed and a column decoder 212 through which bit lines of memory array 202 can be addressed.
- flash memory module 200 includes read/write circuitry 214 that enables the memory cells of a physical page 206 to be programmed or read in parallel.
- Flash controller 200 additionally includes control circuitry 205 that provides chip-level control of operation of memory array 202 , including read and write accesses made to physical pages 206 in memory array 202 , erasure of blocks 204 , and the amplitude, duration and polarity of related voltages applied to memory array 202 .
- FIG. 3 is a high level flow diagram of the flash management functions and data structures employed by a GPP 132 and/or flash controller 140 in accordance with one embodiment.
- Data storage system 120 does not generally allow external devices to directly address and/or access the physical memory locations within NAND flash memory systems 150 . Instead, data storage system 120 is generally configured to present one or more logical volumes each having a contiguous logical address space to the external devices, thus allowing host devices to read and write data to and from LBAs within the logical address space while permitting one or more of the various levels of controllers (e.g., system management controller 123 , RAID controllers 124 , flash controllers 140 and GPP 132 ) to control where the data that is associated with the various LBAs actually resides in the physical memory locations comprising NAND flash memory systems 150 . In this manner, performance and longevity of NAND flash memory systems 150 can be intelligently managed and optimized.
- controllers e.g., system management controller 123 , RAID controllers 124 , flash controllers 140 and GPP 132
- each flash controller 140 performs logical-to-physical address translation using a logical-to-physical address translation data structure, such as logical-to-physical translation (LPT) table 300 , which can be stored, for example, in the associated flash controller memory 142 .
- LPT logical-to-physical translation
- Flash management code running on the GPP 132 tracks erased blocks of NAND flash memory system 150 that are ready to be used in ready-to-use (RTU) queues 306 , which may be stored, for example, in GPP memory 134 .
- flash management code running on the GPP 132 maintains one RTU queue 306 per channel (i.e., per data bus), and an identifier of each erased block that is to be reused is enqueued in the RTU queue 306 corresponding to its channel.
- a build block stripes function 320 performed by flash management code running on the GPP 132 constructs new block stripes for storing data and associated parity information from the erased blocks enqueued in RTU queues 306 .
- Block stripes are preferably formed of blocks residing in different channels, meaning that build block stripes function 320 can conveniently construct a block stripe by drawing each block of the new block stripe from a different RTU queue 306 .
- build block stripes function 320 attempts to construct stripes from blocks of approximately equal health (i.e., expected remaining useful life).
- a data placement function 310 of flash controller 140 determines by reference to LPT table 300 whether the target LBA(s) indicated in the write request is/are currently mapped to physical memory page(s) in NAND flash memory system 150 and, if so, changes the status of each data page currently associated with a target LBA to indicate that it is no longer valid.
- data placement function 310 allocates a page stripe if necessary to store the write data of the write IOP and any non-updated data (i.e., in case the write request is smaller than a logical page, there is still valid data which needs to be handled in a read-modify-write manner) from an existing page stripe, if any, targeted by the write IOP, and/or stores the write data of the write IOP and any non-updated (i.e., still valid) data from an existing page stripe, if any, targeted by the write IOP to an already allocated page stripe which has free space left.
- the page stripe may be allocated from either a block stripe already allocated to hold data or from a new block stripe built by build block stripes function 320 .
- the page stripe allocation can be based on the health of the blocks available for allocation and the “heat” (i.e., estimated or measured access frequency) of the LBA of the write data.
- Data placement function 310 then writes the write data, associated metadata (e.g., cyclic redundancy code (CRC) and error correcting code (ECC) values), and parity information for the page stripe in the allocated page stripe.
- Flash controller 140 also updates LPT table 300 to associate the physical page(s) utilized to store the write data with the LBA(s) indicated by the host device. Thereafter, flash controller 140 can access the data to service host read IOPs by reference to LPT table 300 as further illustrated in FIG. 3 .
- flash controller 140 places the block stripe into one of occupied block queues 302 , which flash management code running on the GPP 132 utilizes to facilitate garbage collection.
- pages are invalidated, and therefore portions of the NAND flash memory system 150 become unused.
- the associated flash controller 140 (and/or GPP 132 ) eventually needs to reclaim this space through garbage collection performed by a garbage collector 312 .
- Garbage collector 312 selects particular block stripes for garbage collection based on a number of factors including, for example, the health of the blocks within the block stripes and how much of the data within the erase blocks is invalid. In the illustrated example, garbage collection is performed on entire block stripes, and flash management code running on GPP 132 logs the block stripes ready to be recycled in a relocation queue 304 , which can conveniently be implemented in the associated flash controller memory 142 or GPP memory 134 .
- the flash management functions performed by GPP 132 or flash controller 140 additionally include a relocation function 314 that relocates the data held in block stripes enqueued in relocation queue 304 .
- relocation function 314 updates LPT table 300 to remove the current association between the logical and physical addresses of the data.
- relocation function 314 issues relocation write requests to data placement function 310 to request that the data of the old block stripe be written to a new block stripe in NAND flash memory system 150 .
- dissolve block stripes function 316 which decomposes the old block stripe into its constituent blocks, thus disassociating the blocks.
- Each of the blocks formerly forming the dissolved block stripe is then erased under the direction of flash controller 140 and/or the control circuitry 205 of the relevant flash memory module 200 , and a corresponding program/erase (P/E) cycle count for each erased block is incremented.
- P/E program/erase
- the health metrics of each erased block e.g., bit error rate (BER) metrics, uncorrectable errors, P/E cycle count, etc.
- BER bit error rate
- each erased block is either retired (i.e., withdrawn from use) by a block retirement function 318 among the flash management functions executed on GPP 132 , or alternatively, prepared for reuse by placing the block on the appropriate ready-to-use (RTU) queue 306 in the associated GPP memory 134 .
- RTU ready-to-use
- the flash management functions executed on GPP 132 and/or flash controller 140 additionally include a background health checker 330 .
- Background health checker 330 which operates independently of the demand read and write IOPs of hosts such as processor systems 102 , continuously determines one or more metrics of health for blocks belonging to block stripes recorded in occupied block queues 302 . Based on the one or more of the health metrics, background health checker 330 places block stripes on relocation queue 304 for handling by relocation function 314 .
- Key health metrics preferably monitored and recorded by background health checker relate to the bit error rate (BER) metrics observed for valid blocks and physical pages, and may include, for example, the worst page BER of each block, the mean page BER of each block, the rates of change of the worst page BER and mean page BER of each block, etc.
- BER bit error rate
- IOP monitor 125 includes IOP monitoring logic 400 that detects each read and write IOP received by data storage system 120 and tracks the latencies (response times) of the IOPs.
- IOP monitor 125 further includes a plurality of read counters 402 a - 402 x and a plurality of write counters 404 a - 404 x, where each pair of counters (e.g., read counter 402 a and write counter 404 a ) is associated with a respective one of a plurality of LBA ranges (or extents).
- IOP monitoring logic 400 records in each pair of counters 402 , 404 the number of read IOPs and the number of write IOPs received by data storage system 120 that target the associated LBA range during the current monitoring interval, which in various implementations may be configurable and may be, for example, 5, 15, 30, or 60 minutes.
- IOP monitor 125 preferably further includes historical counter storage 406 a - 406 x, in which IOP monitoring logic 400 stores values of read counters 402 and write counters 404 from the prior n (where n is a positive integer) monitoring intervals.
- the number of counters maintained by system management controllers 123 can vary between implementations based on, for example, a desired level of address granularity, the amount of storage available for or allocated to counters 125 , and the size of the logical address space supported by data storage system 120 .
- the size of the LBA ranges may be 1 MB, while in another implementation, the size of the LBA ranges may be 1 GB.
- a system management controller 123 can determine which LBA ranges are relatively more frequently accessed (i.e., “hotter”) for read accesses and which LBA ranges are relatively more frequently accessed for write accesses.
- the system management controller 123 can calculate a variety of additional statistics regarding read and write IOPs, such as mean count values, standard deviation of count values, increases and/or decreases in count values, and recent rates of increase and/or decrease in count values.
- FIG. 5 there is depicted a high level logical flowchart of an exemplary process for initializing a data storage system to utilize a hot space storage device to store a subset of array data in absence of a failure or pre-failure event in accordance with one embodiment.
- the process begins at block 500 and the proceeds to block 502 , which illustrates system management controller 123 issuing a command to one of RAID controllers 124 to configure multiple of data storage devices 126 into a RAID data storage array.
- one or more flash cards can form a logical “disk” or “data storage device,” and multiple of such logical data storage devices are configured into a desired level of RAID.
- RAID data storage array may implement a RAID level having higher availability, such as RAID 5 or RAID 6, it should be appreciated that any other RAID level, particularly RAID 0, RAID 3 or RAID 4, could alternatively be employed.
- RAID data storage array is referred to herein as “primary” data storage devices.
- block 504 which illustrates system management controller 123 issuing a command to the RAID controller 124 to associate a spare storage device (e.g., one or more additional flash cards forming a logical “data storage device” 126 ) with the RAID data storage array configured at block 502 to form a hybrid RAID system.
- a spare storage device e.g., one or more additional flash cards forming a logical “data storage device” 126
- This operation can be performed, for example, when data storage system 120 first begins operation after powering up, in response to replenishment of a spare data storage device after repair/replacement of a defective primary data storage device, or at any time due operation of data storage system 120 at which the spare storage device is present and operable.
- RAID controller 124 establishes an amount limit of how much data can be stored on the spare storage device (which may simply be the maximum useable capacity of the spare storage device). The remainder of the storage capacity is overprovisioned space used by the flash controller 140 to manage garbage collection and reclamation. This storage capacity is then configured as a mirror for a subset of the data within the RAID data storage array, for example, for one logical block of each data stripe written to the RAID data storage array. In addition, at block 506 , system management controller 123 allocates storage on the primary storage devices of the RAID data storage array to selected LBA range(s).
- the allocation performed at block 506 may be in advance of demand (referred to as “thick provisioning”) and/or on-demand (referred to as “thin provisioning”). It should be appreciated that although blocks 502 - 506 explicitly depict the configuration of only one hybrid RAID system within data storage system 120 , in other embodiments system management controller 123 may direct the configuration of multiple independent hybrid RAID systems within data storage system 120 .
- the process proceeds from block 506 to block 508 , which illustrates IOP monitor 125 of system management controller 123 issuing one or more commands to configure a write IOP policy for the hot spare data storage device.
- the write IOP policy determines the selection of the subset of each data stripe written to the RAID data storage array that will also be written to the hot spare data storage device.
- the possible write IOP policies include the following four policies (a non-exhaustive list):
- SMC 123 initiates monitoring of read and write IOPs targeting LBAs within the various LBA address ranges supported by data storage system 120 utilizing read counters 402 a - 402 x, write counters 404 a - 404 x, and historical counter storage 406 a - 406 x of IOP monitor 125 .
- IOP monitor 125 records what LBA ranges have been frequently accessed and infrequently accessed by read and write IOPs in both the current monitoring interval as well as over prior monitoring intervals. Based on the monitoring performed by IOP monitor 125 , system management controller 123 identifies frequently accessed LBA ranges that are read more often than written.
- system management controller 123 may consider read and write counter values from the current monitoring interval only, read and write counter values from the current monitoring interval and historical counter values, or solely historical counter values. If both counter values from the current monitoring interval and historical counter values are considered, system management controller 123 may weight more recent counter values more heavily in identifying LBA ranges that are read more often than written. Further, system management controller 123 may apply one or more thresholds to identify the LBA ranges.
- system management controller 123 may identify an LBA range for which the value of the associated read counter 402 in the current and/or prior monitoring interval(s) is greater than a first heat threshold, the value of the associated write counter 404 in the current and/or prior monitoring interval(s) is less than a second heat threshold, and the aggregate of the values of the read counter 402 and 404 is greater than a third heat threshold.
- system management controller 123 may identify an LBA range for which the difference between the values of the associated read counter 402 and write counter 404 in the current and/or prior monitoring interval(s) is greater than a fourth heat threshold.
- other metrics can be employed to identify LBA ranges of interest.
- data storage system 120 mirrors selected data to the hot spare data storage device in accordance with the configured IOP write policy as described below with reference to FIG. 6 .
- FIG. 6 there is depicted a high level logical flowchart of an exemplary process for servicing write IOPs in a hybrid RAID storage system including a RAID data storage array and a hot spare storage device in accordance with one embodiment.
- the process begins at block 600 following the initialization process given in FIG. 5 .
- the process proceeds from block 600 to block 602 , which illustrates a RAID controller 124 awaiting receipt of a write IOP from one of interface cards 122 .
- the process of FIG. 6 proceeds in parallel to blocks 604 and 606 .
- RAID controller 124 stripes logical data pages and a data protection (e.g., parity) page across the primary storage devices of the RAID data storage array.
- RAID controller 124 mirrors a page of the stripe to the hot spare data storage device in accordance with the write IOP policy then configured by the SMC 123 . It will be appreciated that because the hot spare data storage device does not remain unused but is instead utilized to mirror a subset of each stripe of logical pages, an unexpected early failure of the hot spare storage device can advantageously be detected in advance of failure of a primary storage device. The process then returns from blocks 604 - 606 to block 602 , which has been described.
- FIG. 7 illustrates an exemplary hybrid RAID system in data storage system 120 following the configuration process illustrated in FIG. 5 and a number of writes to the array in accordance with the process of FIG. 6 .
- FIG. 7 illustrates a hybrid RAID system 700 including a RAID 5 data storage array 702 and a hot spare storage device 704 g associated with RAID 5 storage array 702 in a hybrid RAID arrangement.
- RAID 5 storage array 702 further includes a plurality of (in this case, six) primary data storage devices 704 a - 704 f.
- RAID 5 data storage arrays employ data striping with distributed parity.
- data stripes A-F which each includes five logical pages numbered 1 to 5 (e.g., A1 . . . A5, B1 . . . B5, etc.) and a parity block (e.g., pA, pB, etc.), are striped across primary storage devices 704 a - 704 f, with the parity pages being distributed among the various primary storage devices 704 a - 704 f.
- logical pages numbered 1 to 5 e.g., A1 . . . A5, B1 . . . B5, etc.
- a parity block e.g., pA, pB, etc.
- hot spare storage device 704 g would include the following logical pages: A3, B2, C1, pD, E5 and F4.
- hot spare storage device 704 g may instead including the following logical pages: A1, B1, C1, D1, E1, and F1.
- hot spare storage device 704 g would include the following logical pages: A5, B4, C3, D2, E1 and pF.
- hot spare storage device 704 g could include, for example, logical pages: A4, B5, C1, D4, E5 and F3, assuming these were logical pages corresponding to the coldest write addresses.
- FIG. 8 there is depicted a high level logical flowchart of an exemplary process for rebuilding a data storage array utilizing a hot spare storage device in accordance with one embodiment.
- the process can be directed by a system management controller 123 and/or, as will be hereafter assumed, a RAID controller 124 .
- a system management controller 123 and/or, as will be hereafter assumed, a RAID controller 124 .
- FIG. 8 will be described with additional reference to the exemplary hybrid RAID system of FIG. 7 .
- the process of FIG. 8 begins at block 800 and then proceeds to block 802 , which depicts a RAID controller 124 determining whether or not a failure of a primary data storage device (e.g., one of primary data storage devices 704 a - 704 f ) within one of its RAID data storage arrays 700 has been detected. If not, the process of FIG. 8 continues to iterate at block 802 .
- a primary data storage device e.g., one of primary data storage devices 704 a - 704 f
- block 802 In response to a determination at block 802 that a failure of a primary data storage device (e.g., one of primary data storage devices 704 a - 704 f ) within the RAID data storage array 700 has been detected, the process proceeds to block 804 , which illustrates RAID controller 124 beginning to direct all writes to the primary RAID data storage array 702 rather than mirroring selected data pages to hot spare storage device 704 g.
- a primary data storage device e.g., one of primary data storage devices 704 a - 704 f
- RAID controller 124 trims the hot spare storage device 704 g by erasing all logical data pages, if any, on the hot spare storage device 704 g that mirror data on non-failed primary storage devices 704 (block 806 ).
- all the logical data pages on the hot spare storage device 704 g that mirror data on non-failed primary storage device 704 is instead invalidated by marking the relevant logical-to-physical table entries invalid and then simply relying on the garbage collection process of the flash controllers 140 , as described above.
- logical data pages mirroring contents of the failed primary storage device 704 are preferably not marked invalid nor erased from the hot spare storage device 704 g, as these blocks would otherwise have to be rebuilt from the other data blocks and parity blocks residing on the operative primary storage devices 704 .
- RAID controller 124 also initiates reconstruction of the contents of the failed primary storage device 704 within the unused and erased portions of the hot spare storage device 704 g, for example, from the logical data pages and parity page(s) of the data stripes residing on the operative primary storage devices 704 .
- the mirrored data pages from the failed primary storage device that already reside on the hot spare storage device 704 g need not be rebuilt, but may be relocated, as desired, on the hot spare storage device 704 g. In this manner, the time required to reconstruct the contents of the failed primary storage device 704 is reduced.
- RAID controller 124 implements a read IOP policy such that, during the reconstruction of the failed primary storage device 704 , all read IOPs are handled by reference to the RAID data storage array (i.e., by reconstructing the requested data from non-failed primary storage devices 704 ).
- RAID controller 123 may direct that read IOPs targeting mirrored data that has not been erased from the hot spare storage device can still be serviced by accessing the hot spare storage device 704 g. Servicing such read IOPs utilizing the hot spare storage device 704 g results in greatly improved response times because the target data need not be rebuilt from the operative primary storage devices 704 of the RAID data storage array.
- RAID controller 124 determines whether or not the erasure of the dataset initiated at block 806 and the reconstruction of the contents of the failed primary storage device 704 that was initiated at block 808 have both completed. If not, the process of FIG. 8 iterates at optional block 810 and block 812 . If, however, RAID controller 124 determines at block 812 that both the erasure and reconstruction processes have completed, RAID controller 124 configures the hot spare storage device 704 g into the RAID data storage array 702 in place of the failed primary storage device 704 (block 814 ).
- RAID controller 124 configures the new hot spare storage device in a hybrid RAID arrangement with the RAID data storage array 702 and initiates mirroring of selected logical data pages on the new hot spare storage device in accordance with the current write IOP policy, as described above with reference to FIG. 6 . Thereafter, the process of FIG. 8 ends at block 820 .
- SMCs 123 can configure different ones of the hot spare storage devices with differing IOP write policies. Further, although the previously described preferred embodiment mirrors only one logical data page per stripe on the hot spare data storage device, in other embodiments, an SMC 123 or RAID controller 124 can configured the RAID data storage array 702 to mirror multiple logical pages per stripe on the hot spare data storage device(s).
- the present invention may be a system, a method, and/or a computer program product.
- the computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
- the computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device.
- the computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.
- a non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing.
- RAM random access memory
- ROM read-only memory
- EPROM or Flash memory erasable programmable read-only memory
- SRAM static random access memory
- CD-ROM compact disc read-only memory
- DVD digital versatile disk
- memory stick a floppy disk
- a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon
- a computer readable storage medium is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
- Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network.
- the network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers.
- a network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
- Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
- the computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
- These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
- the computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
- each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s).
- the functions noted in the block may occur out of the order noted in the figures.
- two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
- a data storage system includes a controller, a hot spare storage device and a plurality of primary storage devices.
- the controller utilizes the hot spare storage device to mirror only a subset of each stripe of logical pages written across the data storage array, where the subset includes a logical page determined by a write input/output operation (IOP) policy.
- IOP write input/output operation
- the controller writes a stripe including a plurality of logical data pages and a logical data protection page across the plurality of primary storage devices and mirrors the logical page determined by the write IOP policy on the hot spare storage device.
- contents of the failed storage device not already mirrored on the hot spare storage device are rebuilt on the hot spare storage device.
- NAND flash memory any other type of non-volatile random access memory (NVRAM).
- NVRAM non-volatile random access memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
- This disclosure relates to data processing and storage, and more specifically, to a data storage system, such as a flash memory system, that employs a hot spare storage device to proactively store array data in absence of a failure or pre-failure event.
- NAND flash memory is an electrically programmable and erasable non-volatile memory technology that stores one or more bits of data per memory cell as a charge on the floating gate of a transistor. In a typical implementation, a NAND flash memory array is organized in blocks (also referred to as “erase blocks”) of physical memory, each of which includes multiple physical pages each in turn containing a multiplicity of memory cells. By virtue of the arrangement of the word and bit lines utilized to access memory cells, flash memory arrays can generally be programmed on a page basis, but are erased on a block basis.
- In data storage systems employing NAND flash memory and/or other storage technologies such as magnetic hard disk drives (HDDs), the availability and/or performance of the data storage system is enhanced by employing some level of data redundancy. For example, data storage systems often employ one or more arrangements (often referred to as “levels”) of redundant array of inexpensive (or independent) disks (RAID). Commonly employed RAID levels include RAID 0, which employs data striping across a set of RAID disks (RAID 0 in and of itself does not improve availability but can improve performance);
RAID 1, which involves mirroring of RAID disks; RAID 4, which implements block-level striping across RAID disks and a dedicated parity drive;RAID 5, which implements block-level striping across RAID disks and distributed storage of parity information; and RAID 6, which implements block-level striping across RAID disks and distributed storage of two independent sets of parity information. Various RAID levels can also be used in combination to form hybrid RAID arrays; for example, RAID 10, which combinesRAID 1 and RAID 0, implements a mirrored set of striped drives. The data redundancy provided by the various standard or hybrid RAID levels allow the data storage system to recover from various modes of failure, thus generally improving data availability and storage system reliability. - In addition to the data redundancy provided by the various levels of RAID, physical device redundancy can also be provided through the provision of one or more spare storage drives. In many cases, the spare storage drives can be so-called “hot” spare drives in that the storage drives are powered on, formatted (if applicable), and ready to be used to rebuild the data storage array in case of the failure of one or more of the storage drives comprising the data storage array. In many cases, hot spare drives do no useful work until a drive failure occurs. After the replacement of the defective drive, the hot spare drive will then usually be employed as the spare and again do no work until and unless another drive fails. Thus, depending on the failure domain(s) to which a hot spare drive is applied, the hot spare drive may never be used, or at most, may be actively used for only a few hours out of the entire life of the data storage array.
- In at least one embodiment, a data storage system includes a controller, a hot spare storage device and a plurality of primary storage devices. The controller utilizes the hot spare storage device to mirror only a subset of each stripe of logical pages written across the data storage array, where the subset includes a logical page determined by a write input/output operation (IOP) policy. In response to receipt of a write IOP, the controller writes a stripe including a plurality of logical data pages and a logical data protection page across the plurality of primary storage devices and mirrors the logical page determined by the write IOP policy on the hot spare storage device. In response to a failure of a storage device among the plurality of primary storage devices, contents of the failed storage device not already mirrored on the hot spare storage device are rebuilt on the hot spare storage device.
-
FIG. 1A is a high level block diagram of a data processing environment in accordance with one embodiment; -
FIG. 1B is a more detailed block diagram of a flash card of the data storage system ofFIG. 1A ; -
FIG. 2 depicts an exemplary NAND flash memory module in accordance with one embodiment; -
FIG. 3 is a high level flow diagram of the flash management functions and data structures employed in flash management in accordance with one embodiment; -
FIG. 4 illustrates a input/output operation (IOP) monitor within a system management controller (SMC) in accordance with one embodiment; -
FIG. 5 is a high level logical flowchart of an exemplary process for configuring a data storage array to mirror on a hot spare storage device selected data of the data storage array in accordance with an IOP policy; -
FIG. 6 is a high level logical flowchart of an exemplary process for mirroring on a hot spare storage device selected data of an associated data storage array in accordance with an IOP policy; -
FIG. 7 illustrates an exemplary hybrid RAID system including aRAID 5 data storage array and a hot spare storage device in accordance with one embodiment; and -
FIG. 8 is a high level logical flowchart of an exemplary process for rebuilding a data storage array utilizing a hot spare storage device in accordance with one embodiment. - With reference to the figures and with particular reference to
FIG. 1A , there is illustrated a high level block diagram of an exemplarydata processing environment 100 including adata storage system 120 having a non-volatile memory array as described further herein. As shown,data processing environment 100 includes one or more hosts, such as aprocessor system 102 having one ormore processors 104 that process instructions and data.Processor system 102 may additionally include local storage 106 (e.g., dynamic random access memory (DRAM) or disks) that may store program code, operands and/or execution results of the processing performed by processor(s) 104. In various embodiments,processor system 102 can be, for example, a mobile computing device (such as a smartphone or tablet), a laptop or desktop personal computer system, a server computer system (such as one of the POWER series of servers available from International Business Machines Corporation), or a mainframe computer system.Processor system 102 can also be an embedded processor system using various processors such as ARM, POWER, Intel x86, or any other processor combined with memory caches, memory controllers, local storage, I/O bus hubs, etc. - Each
processor system 102 further includes an input/output (I/O)adapter 108 that is coupled directly (i.e., without any intervening device) or indirectly (i.e., through at least one intermediate device) to adata storage system 120 via an I/O channel 110. In various embodiments, an I/O channel 110 may employ any one or a combination of known or future developed communication protocols, including, for example, Fibre Channel (FC), FC over Ethernet (FCoE), Internet Small Computer System Interface (iSCSI), InfiniBand, Transport Control Protocol/Internet Protocol (TCP/IP), Peripheral Component Interconnect Express (PCIe), etc. I/O operations (IOPs) communicated via I/O channel 110 include read IOPs by which aprocessor system 102 requests data fromdata storage system 120 and write IOPs by which aprocessor system 102 requests storage of data indata storage system 120. - Although not required, in the illustrated embodiment,
data storage system 120 includesmultiple interface cards 122 through whichdata storage system 120 receives and responds to input/output operations (IOP) 102 via I/O channels 110. Eachinterface card 122 is coupled to each of multiple Redundant Array of Inexpensive Disks (RAID)controllers 124 in order to facilitate fault tolerance and load balancing. Each ofRAID controllers 124 is in turn coupled (e.g., by a PCIe bus) to each of multipledata storage devices 126 including, for example, NAND flash cards and/or HDDs and/or other alternative or additional non-volatile storage devices. - In the depicted embodiment, the operation of
data storage system 120 is managed by redundant system management controllers (SMCs) 123, which are coupled tointerface cards 122 andRAID controllers 124. In various embodiments, eachsystem management controller 123 can be implemented utilizing hardware or hardware executing firmware and/or software. As described in greater detail below with reference toFIG. 4 , eachsystem management controller 123 includes an IOP monitor (IM) 125. -
FIG. 1B depicts a more detailed block diagram of an exemplary embodiment of adata storage device 126 ofdata storage system 120 ofFIG. 1A in which the storage device is implemented as a flash card. In this embodiment,data storage device 126 includes agateway 130 that serves as an interface betweendata storage device 126 andRAID controllers 124.Gateway 130 is coupled to a general-purpose processor (GPP) 132, which can be configured (e.g., by program code) to perform pre-processing on IOPs received bygateway 130 and/or to schedule servicing of the IOPs byflash card 126. GPP 132 is coupled to a GPP memory 134 (e.g., Dynamic Random Access Memory (DRAM)) that can conveniently buffer data created, referenced and/or modified by GPP 132 in the course of its processing or data flowing through thegateway 130 destined for one or more of theflash controllers 140. -
Gateway 130 is further coupled tomultiple flash controllers 140, each of which controls a respective NANDflash memory system 150. Flashcontrollers 140 can be implemented, for example, by an Application Specific Integrated Circuit (ASIC) and/or Field Programmable Gate Array (FPGA) and/or microprocessor having an associated flash controller memory 142 (e.g., DRAM). In embodiments in whichflash controllers 140 are implemented with an FPGA, GPP 132 may program and configureflash controllers 140 during start-up ofdata storage system 120. After startup, in generaloperation flash controllers 140 receive read and write IOPs fromgateway 130 that request to read data stored in NANDflash memory system 150 and/or to store data in NANDflash memory system 150. Flashcontrollers 140 service these IOPs, for example, by accessing NANDflash memory system 150 to read or write the requested data from or into NANDflash memory system 150 or by accessing a memory cache (not illustrated) associated with NANDflash memory system 150. - Flash
controllers 140 implement a flash translation layer (FTL) that provides logical-to-physical address translation to enable access to specific memory locations within NANDflash memory systems 150. In general, an IOP received byflash controller 140 from a host device, such as aprocessor system 102, contains the logical block address (LBA) at which the data is to be accessed (read or written) and, if a write IOP, the write data to be stored todata storage system 120. The IOP may also specify the amount (or size) of the data to be accessed. Other information may also be communicated depending on the protocol and features supported bydata storage system 120. The flash translation layer translates LBAs received from aRAID controller 124 into physical addresses assigned to corresponding physical location in NANDflash memory systems 150.Flash controllers 140 may perform address translation and/or store mappings between logical and physical addresses in a logical-to-physical translation data structure, such as a logical-to-physical translation table (LPT), which may conveniently be stored inflash controller memory 142. - NAND
flash memory systems 150 may take many forms in various embodiments. In the embodiment shown inFIG. 1B , each NANDflash memory system 150 includes multiple (e.g., 32) individually addressable NAND flashmemory storage devices 152. In the illustrated example, the flashmemory storage devices 152 take the form of a board-mounted flash memory modules, for example, Single Level Cell (SLC), Multi-Level Cell (MLC), Three Level Cell (TLC), or Quad Level Cell (QLC) NAND flash memory modules. - Referring now to
FIG. 2 , there is depicted a block diagram of an exemplaryflash memory module 200 that can be utilized to implement any of the NAND flashmemory storage devices 152 ofFIG. 1B .Flash memory module 200 includes one or more memory die, each implementing at least onememory array 202 formed of a two- or three-dimensional array of NAND flash memory cells. As indicated inFIG. 2 , the memory cells withinmemory array 202 are physically arranged inmultiple blocks 204, each in turn including multiplephysical pages 206. - As is known to those skilled in the art, NAND flash memory, such as that employed in
memory array 202, must be erased prior to being programmed. Further, NAND flash memory is generally constrained by its construction such that the smallest granule of storage that can be erased is ablock 204 and the smallest granule of storage that can be accessed by a read or write IOP is fixed at the size of a singlephysical page 206. It should be appreciated in this regard that the LBAs provided by host devices correspond to logical pages within a logical address space, where each logical page typically has a size of 4 kilobytes.Physical pages 206, in contrast, typically have a larger size, for example, approximately 16 kilobytes (kB), and can thus correspond to multiple logical pages. -
Flash memory module 200 further includes arow decoder 210 through which word lines ofmemory array 202 can be addressed and acolumn decoder 212 through which bit lines ofmemory array 202 can be addressed. In addition,flash memory module 200 includes read/write circuitry 214 that enables the memory cells of aphysical page 206 to be programmed or read in parallel.Flash controller 200 additionally includescontrol circuitry 205 that provides chip-level control of operation ofmemory array 202, including read and write accesses made tophysical pages 206 inmemory array 202, erasure ofblocks 204, and the amplitude, duration and polarity of related voltages applied tomemory array 202. - Having described the general physical structure of one exemplary embodiment of a
data storage system 120, certain operational aspects ofdata storage system 120 are now described with reference toFIG. 3 , which is a high level flow diagram of the flash management functions and data structures employed by a GPP 132 and/orflash controller 140 in accordance with one embodiment. -
Data storage system 120 does not generally allow external devices to directly address and/or access the physical memory locations within NANDflash memory systems 150. Instead,data storage system 120 is generally configured to present one or more logical volumes each having a contiguous logical address space to the external devices, thus allowing host devices to read and write data to and from LBAs within the logical address space while permitting one or more of the various levels of controllers (e.g.,system management controller 123,RAID controllers 124,flash controllers 140 and GPP 132) to control where the data that is associated with the various LBAs actually resides in the physical memory locations comprising NANDflash memory systems 150. In this manner, performance and longevity of NANDflash memory systems 150 can be intelligently managed and optimized. In the illustrated embodiment, eachflash controller 140 performs logical-to-physical address translation using a logical-to-physical address translation data structure, such as logical-to-physical translation (LPT) table 300, which can be stored, for example, in the associatedflash controller memory 142. - Flash management code running on the GPP 132 tracks erased blocks of NAND
flash memory system 150 that are ready to be used in ready-to-use (RTU)queues 306, which may be stored, for example, inGPP memory 134. In the depicted embodiment, flash management code running on the GPP 132 maintains oneRTU queue 306 per channel (i.e., per data bus), and an identifier of each erased block that is to be reused is enqueued in theRTU queue 306 corresponding to its channel. A build block stripes function 320 performed by flash management code running on the GPP 132 constructs new block stripes for storing data and associated parity information from the erased blocks enqueued inRTU queues 306. The new block stripes are then queued to the flash controller 132 for data placement. Block stripes are preferably formed of blocks residing in different channels, meaning that build block stripes function 320 can conveniently construct a block stripe by drawing each block of the new block stripe from adifferent RTU queue 306. In general, build block stripes function 320 attempts to construct stripes from blocks of approximately equal health (i.e., expected remaining useful life). - In response to write IOP received from a host, such as a
processor system 102, adata placement function 310 offlash controller 140 determines by reference to LPT table 300 whether the target LBA(s) indicated in the write request is/are currently mapped to physical memory page(s) in NANDflash memory system 150 and, if so, changes the status of each data page currently associated with a target LBA to indicate that it is no longer valid. In addition,data placement function 310 allocates a page stripe if necessary to store the write data of the write IOP and any non-updated data (i.e., in case the write request is smaller than a logical page, there is still valid data which needs to be handled in a read-modify-write manner) from an existing page stripe, if any, targeted by the write IOP, and/or stores the write data of the write IOP and any non-updated (i.e., still valid) data from an existing page stripe, if any, targeted by the write IOP to an already allocated page stripe which has free space left. The page stripe may be allocated from either a block stripe already allocated to hold data or from a new block stripe built by build block stripes function 320. In a preferred embodiment, the page stripe allocation can be based on the health of the blocks available for allocation and the “heat” (i.e., estimated or measured access frequency) of the LBA of the write data.Data placement function 310 then writes the write data, associated metadata (e.g., cyclic redundancy code (CRC) and error correcting code (ECC) values), and parity information for the page stripe in the allocated page stripe.Flash controller 140 also updates LPT table 300 to associate the physical page(s) utilized to store the write data with the LBA(s) indicated by the host device. Thereafter,flash controller 140 can access the data to service host read IOPs by reference to LPT table 300 as further illustrated inFIG. 3 . - Once all pages in a block stripe have been written,
flash controller 140 places the block stripe into one ofoccupied block queues 302, which flash management code running on the GPP 132 utilizes to facilitate garbage collection. As noted above, through the write process, pages are invalidated, and therefore portions of the NANDflash memory system 150 become unused. The associated flash controller 140 (and/or GPP 132) eventually needs to reclaim this space through garbage collection performed by agarbage collector 312.Garbage collector 312 selects particular block stripes for garbage collection based on a number of factors including, for example, the health of the blocks within the block stripes and how much of the data within the erase blocks is invalid. In the illustrated example, garbage collection is performed on entire block stripes, and flash management code running on GPP 132 logs the block stripes ready to be recycled in arelocation queue 304, which can conveniently be implemented in the associatedflash controller memory 142 orGPP memory 134. - The flash management functions performed by GPP 132 or
flash controller 140 additionally include arelocation function 314 that relocates the data held in block stripes enqueued inrelocation queue 304. To relocate such data,relocation function 314 updates LPT table 300 to remove the current association between the logical and physical addresses of the data. In addition,relocation function 314 issues relocation write requests todata placement function 310 to request that the data of the old block stripe be written to a new block stripe in NANDflash memory system 150. Once all still valid data has been moved from the old block stripe, the old block stripe is passed to dissolve block stripes function 316, which decomposes the old block stripe into its constituent blocks, thus disassociating the blocks. Each of the blocks formerly forming the dissolved block stripe is then erased under the direction offlash controller 140 and/or thecontrol circuitry 205 of the relevantflash memory module 200, and a corresponding program/erase (P/E) cycle count for each erased block is incremented. Based on the health metrics of each erased block (e.g., bit error rate (BER) metrics, uncorrectable errors, P/E cycle count, etc.), each erased block is either retired (i.e., withdrawn from use) by ablock retirement function 318 among the flash management functions executed on GPP 132, or alternatively, prepared for reuse by placing the block on the appropriate ready-to-use (RTU)queue 306 in the associatedGPP memory 134. - As further shown in
FIG. 3 , the flash management functions executed on GPP 132 and/orflash controller 140 additionally include abackground health checker 330.Background health checker 330, which operates independently of the demand read and write IOPs of hosts such asprocessor systems 102, continuously determines one or more metrics of health for blocks belonging to block stripes recorded inoccupied block queues 302. Based on the one or more of the health metrics,background health checker 330 places block stripes onrelocation queue 304 for handling byrelocation function 314. Key health metrics preferably monitored and recorded by background health checker relate to the bit error rate (BER) metrics observed for valid blocks and physical pages, and may include, for example, the worst page BER of each block, the mean page BER of each block, the rates of change of the worst page BER and mean page BER of each block, etc. - Referring now to
FIG. 4 , there is depicted a more detailed view of one exemplary embodiment of the IOP monitor (IM) 125 implemented within asystem management controller 123. In the illustrated embodiment, IOP monitor 125 includesIOP monitoring logic 400 that detects each read and write IOP received bydata storage system 120 and tracks the latencies (response times) of the IOPs. IOP monitor 125 further includes a plurality of read counters 402 a-402 x and a plurality of write counters 404 a-404 x, where each pair of counters (e.g., read counter 402 a and write counter 404 a) is associated with a respective one of a plurality of LBA ranges (or extents).IOP monitoring logic 400 records in each pair of counters 402, 404 the number of read IOPs and the number of write IOPs received bydata storage system 120 that target the associated LBA range during the current monitoring interval, which in various implementations may be configurable and may be, for example, 5, 15, 30, or 60 minutes. IOP monitor 125 preferably further includes historical counter storage 406 a-406 x, in whichIOP monitoring logic 400 stores values of read counters 402 and write counters 404 from the prior n (where n is a positive integer) monitoring intervals. As will be appreciated, the number of counters maintained bysystem management controllers 123 can vary between implementations based on, for example, a desired level of address granularity, the amount of storage available for or allocated tocounters 125, and the size of the logical address space supported bydata storage system 120. Thus, for example, in one implementation, the size of the LBA ranges may be 1 MB, while in another implementation, the size of the LBA ranges may be 1 GB. By examining the values recorded in read counters 402 a-402 x, write counters 404 a-404 x, and historical counter storage 406 a-406 x, asystem management controller 123 can determine which LBA ranges are relatively more frequently accessed (i.e., “hotter”) for read accesses and which LBA ranges are relatively more frequently accessed for write accesses. In addition, thesystem management controller 123 can calculate a variety of additional statistics regarding read and write IOPs, such as mean count values, standard deviation of count values, increases and/or decreases in count values, and recent rates of increase and/or decrease in count values. - With reference now to
FIG. 5 , there is depicted a high level logical flowchart of an exemplary process for initializing a data storage system to utilize a hot space storage device to store a subset of array data in absence of a failure or pre-failure event in accordance with one embodiment. The process begins atblock 500 and the proceeds to block 502, which illustratessystem management controller 123 issuing a command to one ofRAID controllers 124 to configure multiple ofdata storage devices 126 into a RAID data storage array. For example, in one embodiment, one or more flash cards can form a logical “disk” or “data storage device,” and multiple of such logical data storage devices are configured into a desired level of RAID. Although it is presently preferred for the RAID data storage array to implement a RAID level having higher availability, such asRAID 5 or RAID 6, it should be appreciated that any other RAID level, particularly RAID 0, RAID 3 or RAID 4, could alternatively be employed. The data storage devices selected for inclusion in the RAID data storage array are referred to herein as “primary” data storage devices. - The process proceeds from block 502 to block 504, which illustrates
system management controller 123 issuing a command to theRAID controller 124 to associate a spare storage device (e.g., one or more additional flash cards forming a logical “data storage device” 126) with the RAID data storage array configured at block 502 to form a hybrid RAID system. This operation can be performed, for example, whendata storage system 120 first begins operation after powering up, in response to replenishment of a spare data storage device after repair/replacement of a defective primary data storage device, or at any time due operation ofdata storage system 120 at which the spare storage device is present and operable. In response to the command,RAID controller 124 establishes an amount limit of how much data can be stored on the spare storage device (which may simply be the maximum useable capacity of the spare storage device). The remainder of the storage capacity is overprovisioned space used by theflash controller 140 to manage garbage collection and reclamation. This storage capacity is then configured as a mirror for a subset of the data within the RAID data storage array, for example, for one logical block of each data stripe written to the RAID data storage array. In addition, atblock 506,system management controller 123 allocates storage on the primary storage devices of the RAID data storage array to selected LBA range(s). The allocation performed atblock 506 may be in advance of demand (referred to as “thick provisioning”) and/or on-demand (referred to as “thin provisioning”). It should be appreciated that although blocks 502-506 explicitly depict the configuration of only one hybrid RAID system withindata storage system 120, in other embodimentssystem management controller 123 may direct the configuration of multiple independent hybrid RAID systems withindata storage system 120. - The process proceeds from
block 506 to block 508, which illustrates IOP monitor 125 ofsystem management controller 123 issuing one or more commands to configure a write IOP policy for the hot spare data storage device. The write IOP policy determines the selection of the subset of each data stripe written to the RAID data storage array that will also be written to the hot spare data storage device. For example, in one preferred embodiment, the possible write IOP policies include the following four policies (a non-exhaustive list): -
- 1. Fixed: Logical data pages and data protection (e.g., parity) pages from one particular data storage device are always mirrored on the hot spare data storage device. If the particular data storage device fails, then no reconstruction of the RAID data storage array is required. If instead, another data storage device fails, the reconstruction of the RAID data storage array will take no longer than if no mirroring were performed. The probability of avoiding reconstruction in response to a storage device failure decreases as the number of primary storage devices increases.
- 2. Proportional: In a RAID data storage array of N primary devices, approximately one Nth of the data written to each of the N devices is mirrored on the hot spare data storage device. This proportional allocation can be achieved by round robin selection among the N devices or the calculation of a hash or other function of the base logical address of the stripe address in order to determine which page within the stripe is mirrored. Proportional selection ensures that, in case of a failure of a primary data storage device, approximately one Nth of the spare card has already been rebuilt.
- 3. Health-based: As noted above,
background health checkers 330 offlash controllers 140 monitor various health metrics of the underlying flash media.RAID controllers 124 and/orflash controllers 140 can estimate the health ofdata storage devices 126 based on these health metrics and/or other metrics, such as measured board voltages, measured board temperatures, etc.RAID controllers 124 can then mirror data from the least healthy flash card within each stripe to the hot spare data storage device based on the assumption that the least healthy card is most likely to fail first. - 4. Temperature-based: Because hot data is written (and overwritten) frequently, this IOP write policy mirrors the coldest data page in each stripe (e.g., as determined by write counters 404) on the hot spare data storage device. Because the coldest data is the least likely to be overwritten, mirroring the coldest data page in each stripe reduces wear on the hot spare data storage device.
It should be appreciated that in some embodiments,SMC 123 can select the page to be mirrored based on a combination of more than one of these IOP write policies and/or switch between the IOP write policies based on the health of hot spare storage device, workload metrics, and/or other factor(s). It should also be noted thatSMC 123 preferably performs the illustrated configuration of the hot spare storage device in the absence of (and prior to) receipt of any indication of a failure or pre-failure event or condition regarding any primary storage device within the RAID storage array.
- At
block 510,SMC 123 initiates monitoring of read and write IOPs targeting LBAs within the various LBA address ranges supported bydata storage system 120 utilizing read counters 402 a-402 x, write counters 404 a-404 x, and historical counter storage 406 a-406 x of IOP monitor 125. In this manner, IOP monitor 125 records what LBA ranges have been frequently accessed and infrequently accessed by read and write IOPs in both the current monitoring interval as well as over prior monitoring intervals. Based on the monitoring performed byIOP monitor 125,system management controller 123 identifies frequently accessed LBA ranges that are read more often than written. In identifying these LBA ranges,system management controller 123 may consider read and write counter values from the current monitoring interval only, read and write counter values from the current monitoring interval and historical counter values, or solely historical counter values. If both counter values from the current monitoring interval and historical counter values are considered,system management controller 123 may weight more recent counter values more heavily in identifying LBA ranges that are read more often than written. Further,system management controller 123 may apply one or more thresholds to identify the LBA ranges. For example, in one embodiment,system management controller 123 may identify an LBA range for which the value of the associated read counter 402 in the current and/or prior monitoring interval(s) is greater than a first heat threshold, the value of the associated write counter 404 in the current and/or prior monitoring interval(s) is less than a second heat threshold, and the aggregate of the values of the read counter 402 and 404 is greater than a third heat threshold. In an alternative embodiment,system management controller 123 may identify an LBA range for which the difference between the values of the associated read counter 402 and write counter 404 in the current and/or prior monitoring interval(s) is greater than a fourth heat threshold. In yet other embodiments, other metrics can be employed to identify LBA ranges of interest. - Following
block 510, the initialization process ofFIG. 5 ends atblock 512. Thereafter,data storage system 120 mirrors selected data to the hot spare data storage device in accordance with the configured IOP write policy as described below with reference toFIG. 6 . - Referring now to
FIG. 6 , there is depicted a high level logical flowchart of an exemplary process for servicing write IOPs in a hybrid RAID storage system including a RAID data storage array and a hot spare storage device in accordance with one embodiment. The process begins atblock 600 following the initialization process given inFIG. 5 . The process proceeds fromblock 600 to block 602, which illustrates aRAID controller 124 awaiting receipt of a write IOP from one ofinterface cards 122. In response to receipt of a write IOP, the process ofFIG. 6 proceeds in parallel toblocks block 604,RAID controller 124 stripes logical data pages and a data protection (e.g., parity) page across the primary storage devices of the RAID data storage array. In addition, atblock 606RAID controller 124 mirrors a page of the stripe to the hot spare data storage device in accordance with the write IOP policy then configured by theSMC 123. It will be appreciated that because the hot spare data storage device does not remain unused but is instead utilized to mirror a subset of each stripe of logical pages, an unexpected early failure of the hot spare storage device can advantageously be detected in advance of failure of a primary storage device. The process then returns from blocks 604-606 to block 602, which has been described. -
FIG. 7 illustrates an exemplary hybrid RAID system indata storage system 120 following the configuration process illustrated inFIG. 5 and a number of writes to the array in accordance with the process ofFIG. 6 . In particular,FIG. 7 illustrates ahybrid RAID system 700 including aRAID 5data storage array 702 and a hotspare storage device 704 g associated withRAID 5storage array 702 in a hybrid RAID arrangement.RAID 5storage array 702 further includes a plurality of (in this case, six) primary data storage devices 704 a-704 f. As is known in the art,RAID 5 data storage arrays employ data striping with distributed parity. Accordingly, in this example, data stripes A-F, which each includes five logical pages numbered 1 to 5 (e.g., A1 . . . A5, B1 . . . B5, etc.) and a parity block (e.g., pA, pB, etc.), are striped across primary storage devices 704 a-704 f, with the parity pages being distributed among the various primary storage devices 704 a-704 f. - Assuming implementation of the Fixed IOP write policy for
hybrid RAID system 700 and selection of assuming primary storage device 704 as the storage device to be mirrored, hotspare storage device 704 g would include the following logical pages: A3, B2, C1, pD, E5 and F4. Alternatively, if the Proportional IOP write policy were implemented, hotspare storage device 704 g may instead including the following logical pages: A1, B1, C1, D1, E1, and F1. Alternatively, if a Health-based IOP write policy were configured andRAID controller 124 determined thatprimary storage device 704 e was the least healthy primary storage device 704 withinhybrid RAID system 700, hotspare storage device 704 g would include the following logical pages: A5, B4, C3, D2, E1 and pF. Alternatively, if a Temperature-based write IOP policy were selected, the contents of hotspare storage device 704 g could include, for example, logical pages: A4, B5, C1, D4, E5 and F3, assuming these were logical pages corresponding to the coldest write addresses. - Referring now to
FIG. 8 , there is depicted a high level logical flowchart of an exemplary process for rebuilding a data storage array utilizing a hot spare storage device in accordance with one embodiment. In various embodiments, the process can be directed by asystem management controller 123 and/or, as will be hereafter assumed, aRAID controller 124. To promote understanding, the process ofFIG. 8 will be described with additional reference to the exemplary hybrid RAID system ofFIG. 7 . - The process of
FIG. 8 begins atblock 800 and then proceeds to block 802, which depicts aRAID controller 124 determining whether or not a failure of a primary data storage device (e.g., one of primary data storage devices 704 a-704 f) within one of its RAIDdata storage arrays 700 has been detected. If not, the process ofFIG. 8 continues to iterate atblock 802. In response to a determination atblock 802 that a failure of a primary data storage device (e.g., one of primary data storage devices 704 a-704 f) within the RAIDdata storage array 700 has been detected, the process proceeds to block 804, which illustratesRAID controller 124 beginning to direct all writes to the primary RAIDdata storage array 702 rather than mirroring selected data pages to hotspare storage device 704 g. - After all pending writes to the hot
spare storage device 704 g quiesce,RAID controller 124 then trims the hotspare storage device 704 g by erasing all logical data pages, if any, on the hotspare storage device 704 g that mirror data on non-failed primary storage devices 704 (block 806). In an alternative embodiment ofblock 806, all the logical data pages on the hotspare storage device 704 g that mirror data on non-failed primary storage device 704 is instead invalidated by marking the relevant logical-to-physical table entries invalid and then simply relying on the garbage collection process of theflash controllers 140, as described above. In either embodiment, logical data pages mirroring contents of the failed primary storage device 704 are preferably not marked invalid nor erased from the hotspare storage device 704 g, as these blocks would otherwise have to be rebuilt from the other data blocks and parity blocks residing on the operative primary storage devices 704. - As illustrated at
block 808,RAID controller 124 also initiates reconstruction of the contents of the failed primary storage device 704 within the unused and erased portions of the hotspare storage device 704 g, for example, from the logical data pages and parity page(s) of the data stripes residing on the operative primary storage devices 704. As noted above, the mirrored data pages from the failed primary storage device that already reside on the hotspare storage device 704 g need not be rebuilt, but may be relocated, as desired, on the hotspare storage device 704 g. In this manner, the time required to reconstruct the contents of the failed primary storage device 704 is reduced. - In one embodiment,
RAID controller 124 implements a read IOP policy such that, during the reconstruction of the failed primary storage device 704, all read IOPs are handled by reference to the RAID data storage array (i.e., by reconstructing the requested data from non-failed primary storage devices 704). In an alternative embodiment illustrated atoptional block 810, during the reconstruction of the failed primary storage device 704,RAID controller 123 may direct that read IOPs targeting mirrored data that has not been erased from the hot spare storage device can still be serviced by accessing the hotspare storage device 704 g. Servicing such read IOPs utilizing the hotspare storage device 704 g results in greatly improved response times because the target data need not be rebuilt from the operative primary storage devices 704 of the RAID data storage array. - At
block 812,RAID controller 124 determines whether or not the erasure of the dataset initiated atblock 806 and the reconstruction of the contents of the failed primary storage device 704 that was initiated atblock 808 have both completed. If not, the process ofFIG. 8 iterates atoptional block 810 and block 812. If, however,RAID controller 124 determines atblock 812 that both the erasure and reconstruction processes have completed,RAID controller 124 configures the hotspare storage device 704 g into the RAIDdata storage array 702 in place of the failed primary storage device 704 (block 814). In addition, as indicated atblocks 816 and 818, if a new spare storage device 704 become available (e.g., due to installation of additional flash card(s) or conversion of a cold spare to a hot spare),RAID controller 124 configures the new hot spare storage device in a hybrid RAID arrangement with the RAIDdata storage array 702 and initiates mirroring of selected logical data pages on the new hot spare storage device in accordance with the current write IOP policy, as described above with reference toFIG. 6 . Thereafter, the process ofFIG. 8 ends atblock 820. - While the preferred embodiment described above employs a single hot spare storage device, it should be appreciated that in other embodiments additional hot spare storage devices can be employed. In such alternative embodiments,
SMCs 123 can configure different ones of the hot spare storage devices with differing IOP write policies. Further, although the previously described preferred embodiment mirrors only one logical data page per stripe on the hot spare data storage device, in other embodiments, anSMC 123 orRAID controller 124 can configured the RAIDdata storage array 702 to mirror multiple logical pages per stripe on the hot spare data storage device(s). - The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
- The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
- Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
- Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
- Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
- These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
- The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
- The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
- As has been described, in at least one embodiment, a data storage system includes a controller, a hot spare storage device and a plurality of primary storage devices. The controller utilizes the hot spare storage device to mirror only a subset of each stripe of logical pages written across the data storage array, where the subset includes a logical page determined by a write input/output operation (IOP) policy. In response to receipt of a write IOP, the controller writes a stripe including a plurality of logical data pages and a logical data protection page across the plurality of primary storage devices and mirrors the logical page determined by the write IOP policy on the hot spare storage device. In response to a failure of a storage device among the plurality of primary storage devices, contents of the failed storage device not already mirrored on the hot spare storage device are rebuilt on the hot spare storage device.
- While the present invention has been particularly shown as described with reference to one or more preferred embodiments, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention. For example, although aspects have been described with respect to a data storage system including a controller that directs certain functions, it should be understood that present invention may alternatively be implemented as a program product including a storage device storing program code that can be processed by a processor to perform such functions or cause such functions to be performed. As employed herein, a “storage device” is specifically defined to include only statutory articles of manufacture and to exclude transitory signals per se, forms of energy per se, and transmission media per se.
- In addition, although embodiments have been described that include use of a NAND flash memory, it should be appreciated that embodiments of the present invention can also be used with any other type of non-volatile random access memory (NVRAM).
- The figures described above and the written description of specific structures and functions below are not presented to limit the scope of what Applicants have invented or the scope of the appended claims. Rather, the figures and written description are provided to teach any person skilled in the art to make and use the inventions for which patent protection is sought. Those skilled in the art will appreciate that not all features of a commercial embodiment of the inventions are described or shown for the sake of clarity and understanding. Persons of skill in this art will also appreciate that the development of an actual commercial embodiment incorporating aspects of the present inventions will require numerous implementation-specific decisions to achieve the developer's ultimate goal for the commercial embodiment. Such implementation-specific decisions may include, and likely are not limited to, compliance with system-related, business-related, government-related and other constraints, which may vary by specific implementation, location and from time to time. While a developer's efforts might be complex and time-consuming in an absolute sense, such efforts would be, nevertheless, a routine undertaking for those of skill in this art having benefit of this disclosure. It must be understood that the inventions disclosed and taught herein are susceptible to numerous and various modifications and alternative forms. Lastly, the use of a singular term, such as, but not limited to, “a” is not intended as limiting of the number of items.
Claims (19)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/376,248 US10241877B2 (en) | 2016-12-12 | 2016-12-12 | Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/376,248 US10241877B2 (en) | 2016-12-12 | 2016-12-12 | Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event |
Publications (2)
Publication Number | Publication Date |
---|---|
US20180165169A1 true US20180165169A1 (en) | 2018-06-14 |
US10241877B2 US10241877B2 (en) | 2019-03-26 |
Family
ID=62490195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/376,248 Active 2037-02-18 US10241877B2 (en) | 2016-12-12 | 2016-12-12 | Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event |
Country Status (1)
Country | Link |
---|---|
US (1) | US10241877B2 (en) |
Cited By (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190114107A1 (en) * | 2018-12-13 | 2019-04-18 | Intel Corporation | Data portion allocation for temperature management of memory devices |
US20190163587A1 (en) * | 2017-11-30 | 2019-05-30 | International Business Machines Corporation | Shared storage parity on raid |
US10324778B2 (en) * | 2017-02-27 | 2019-06-18 | International Business Machines Corporation | Utilizing an error prediction and avoidance component for a transaction processing system |
US10387280B2 (en) * | 2017-06-09 | 2019-08-20 | International Business Machines Corporation | Reporting defects in a flash memory back-up system |
US20190369905A1 (en) * | 2018-03-19 | 2019-12-05 | Micron Technology, Inc. | Tracking data temperatures of logical block addresses |
US20190391889A1 (en) * | 2018-06-22 | 2019-12-26 | Seagate Technology Llc | Allocating part of a raid stripe to repair a second raid stripe |
CN111512289A (en) * | 2018-08-03 | 2020-08-07 | 西部数据技术公司 | Using failed storage devices to perform storage-centric tasks in a peer-to-peer storage system |
US11056156B2 (en) | 2017-08-31 | 2021-07-06 | Micron Technology, Inc. | Optimized scan interval |
US11119858B1 (en) * | 2020-03-06 | 2021-09-14 | Dell Products L.P. | Method and system for performing a proactive copy operation for a spare persistent storage |
US20210397517A1 (en) * | 2020-06-23 | 2021-12-23 | Western Digital Technologies, Inc. | RAID Stripe Allocation Based on Memory Device Health |
US11237929B2 (en) * | 2017-09-22 | 2022-02-01 | Huawei Technologies Co., Ltd. | Method and apparatus, and readable storage medium |
TWI755068B (en) * | 2020-09-21 | 2022-02-11 | 宜鼎國際股份有限公司 | Data storage device with system operation capability |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11281535B2 (en) | 2020-03-06 | 2022-03-22 | Dell Products L.P. | Method and system for performing a checkpoint zone operation for a spare persistent storage |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11281389B2 (en) | 2019-01-29 | 2022-03-22 | Dell Products L.P. | Method and system for inline deduplication using erasure coding |
US11301327B2 (en) | 2020-03-06 | 2022-04-12 | Dell Products L.P. | Method and system for managing a spare persistent storage device and a spare node in a multi-node data cluster |
US11301173B2 (en) * | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US11328071B2 (en) | 2019-07-31 | 2022-05-10 | Dell Products L.P. | Method and system for identifying actor of a fraudulent action during legal hold and litigation |
US11347404B2 (en) * | 2019-08-01 | 2022-05-31 | EMC IP Holding Company, LLC | System and method for sharing spare storage capacity between a log structured file system and RAID |
US11354262B2 (en) | 2019-06-25 | 2022-06-07 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11372730B2 (en) | 2019-07-31 | 2022-06-28 | Dell Products L.P. | Method and system for offloading a continuous health-check and reconstruction of data in a non-accelerator pool |
US11379155B2 (en) | 2018-05-24 | 2022-07-05 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US11379127B2 (en) | 2019-07-18 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11379447B2 (en) | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
WO2022157786A1 (en) | 2021-01-25 | 2022-07-28 | Volumez Technologies Ltd. | Shared drive storage stack monitoring and recovery method and system |
US11416357B2 (en) | 2020-03-06 | 2022-08-16 | Dell Products L.P. | Method and system for managing a spare fault domain in a multi-fault domain data cluster |
US11418326B2 (en) | 2020-05-21 | 2022-08-16 | Dell Products L.P. | Method and system for performing secure data transactions in a data cluster |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11442642B2 (en) | 2019-01-29 | 2022-09-13 | Dell Products L.P. | Method and system for inline deduplication using erasure coding to minimize read and write operations |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11449386B2 (en) | 2020-03-20 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11500766B2 (en) | 2019-06-25 | 2022-11-15 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11513923B2 (en) | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives |
US20220398046A1 (en) * | 2021-06-09 | 2022-12-15 | Western Digital Technologies, Inc. | Managing Persistent Memory Regions Across Multiple Protocols |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11573708B2 (en) * | 2019-06-25 | 2023-02-07 | Micron Technology, Inc. | Fail-safe redundancy in aggregated and virtualized solid state drives |
US11609820B2 (en) | 2019-07-31 | 2023-03-21 | Dell Products L.P. | Method and system for redundant distribution and reconstruction of storage metadata |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11663153B2 (en) | 2019-06-25 | 2023-05-30 | Micron Technology, Inc. | Access optimization in aggregated and virtualized solid state drives |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11762798B2 (en) | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
US11768709B2 (en) | 2019-01-02 | 2023-09-26 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11768613B2 (en) | 2019-06-25 | 2023-09-26 | Micron Technology, Inc. | Aggregation and virtualization of solid state drives |
US11775193B2 (en) | 2019-08-01 | 2023-10-03 | Dell Products L.P. | System and method for indirect data classification in a storage system operations |
US11816043B2 (en) | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
US20240264892A1 (en) * | 2023-02-06 | 2024-08-08 | Dell Products L.P. | Storage device non-fatal error debug system |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220007212A (en) * | 2020-07-10 | 2022-01-18 | 삼성전자주식회사 | RAID Storage Device, Host Device and RAID System thereof |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150012775A1 (en) * | 2013-07-03 | 2015-01-08 | International Business Machines Corporation | Redundant array of independent disks (raid) system backup management |
US20160132392A1 (en) * | 2014-11-07 | 2016-05-12 | International Business Machines Corporation | Non-volatile memory data storage with low read amplication |
US20170300393A1 (en) * | 2016-04-13 | 2017-10-19 | Dell Products L.P. | Raid rebuild algorithm with low i/o impact |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6223252B1 (en) | 1998-05-04 | 2001-04-24 | International Business Machines Corporation | Hot spare light weight mirror for raid system |
US9489150B2 (en) | 2003-08-14 | 2016-11-08 | Dell International L.L.C. | System and method for transferring data between different raid data storage types for current data and replay data |
US20060041793A1 (en) | 2004-08-17 | 2006-02-23 | Dell Products L.P. | System, method and software for enhanced raid rebuild |
GB0612482D0 (en) | 2006-06-23 | 2006-08-02 | Ibm | Apparatus and method for controlling raid array rebuild |
TWI402744B (en) | 2007-02-12 | 2013-07-21 | Via Tech Inc | System of redudant array of independent disks and method thereof |
US8082390B1 (en) | 2007-06-20 | 2011-12-20 | Emc Corporation | Techniques for representing and storing RAID group consistency information |
JP2009037304A (en) | 2007-07-31 | 2009-02-19 | Hitachi Ltd | Storage system having function of changing RAID level |
JP4499776B2 (en) | 2007-10-31 | 2010-07-07 | 富士通株式会社 | Storage control apparatus, method, and program |
US20090327603A1 (en) | 2008-06-26 | 2009-12-31 | Mckean Brian | System including solid state drives paired with hard disk drives in a RAID 1 configuration and a method for providing/implementing said system |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
WO2013005418A1 (en) | 2011-07-06 | 2013-01-10 | パナソニック株式会社 | Storage device and storage method |
US8812901B2 (en) | 2011-09-23 | 2014-08-19 | Lsi Corporation | Methods and apparatus for marking writes on a write-protected failed device to avoid reading stale data in a RAID storage system |
TWI450087B (en) | 2011-12-01 | 2014-08-21 | Wistron Corp | Data storage method for a plurality of raid systems and data storage system thereof |
US8812902B2 (en) | 2012-02-08 | 2014-08-19 | Lsi Corporation | Methods and systems for two device failure tolerance in a RAID 5 storage system |
US8909859B2 (en) | 2012-03-01 | 2014-12-09 | HGST Netherlands B.V. | Implementing large block random write hot spare SSD for SMR RAID |
US8775735B2 (en) | 2012-03-22 | 2014-07-08 | Synology Incorporated | Storage system and operation method of a storage system |
KR101925383B1 (en) | 2012-07-23 | 2018-12-05 | 삼성전자주식회사 | Nonvolatile memory device and data managing method thereof |
US9104604B2 (en) | 2013-02-26 | 2015-08-11 | International Business Machines Corporation | Preventing unrecoverable errors during a disk regeneration in a disk array |
GB2513377A (en) | 2013-04-25 | 2014-10-29 | Ibm | Controlling data storage in an array of storage devices |
JP6209926B2 (en) | 2013-10-09 | 2017-10-11 | 富士通株式会社 | Storage control device and storage device control program |
CN103617006A (en) | 2013-11-28 | 2014-03-05 | 曙光信息产业股份有限公司 | Storage resource management method and device |
-
2016
- 2016-12-12 US US15/376,248 patent/US10241877B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150012775A1 (en) * | 2013-07-03 | 2015-01-08 | International Business Machines Corporation | Redundant array of independent disks (raid) system backup management |
US20160132392A1 (en) * | 2014-11-07 | 2016-05-12 | International Business Machines Corporation | Non-volatile memory data storage with low read amplication |
US20170300393A1 (en) * | 2016-04-13 | 2017-10-19 | Dell Products L.P. | Raid rebuild algorithm with low i/o impact |
Cited By (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10324778B2 (en) * | 2017-02-27 | 2019-06-18 | International Business Machines Corporation | Utilizing an error prediction and avoidance component for a transaction processing system |
US10387280B2 (en) * | 2017-06-09 | 2019-08-20 | International Business Machines Corporation | Reporting defects in a flash memory back-up system |
US11056156B2 (en) | 2017-08-31 | 2021-07-06 | Micron Technology, Inc. | Optimized scan interval |
US11714733B2 (en) | 2017-09-22 | 2023-08-01 | Huawei Technologies Co., Ltd. | Method and apparatus, and readable storage medium |
US11237929B2 (en) * | 2017-09-22 | 2022-02-01 | Huawei Technologies Co., Ltd. | Method and apparatus, and readable storage medium |
US20190163587A1 (en) * | 2017-11-30 | 2019-05-30 | International Business Machines Corporation | Shared storage parity on raid |
US10664367B2 (en) * | 2017-11-30 | 2020-05-26 | International Business Machines Corporation | Shared storage parity on RAID |
US20190369905A1 (en) * | 2018-03-19 | 2019-12-05 | Micron Technology, Inc. | Tracking data temperatures of logical block addresses |
US11068197B2 (en) * | 2018-03-19 | 2021-07-20 | Micron Technology, Inc. | Tracking data temperatures of logical block addresses |
US11379155B2 (en) | 2018-05-24 | 2022-07-05 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US10884889B2 (en) * | 2018-06-22 | 2021-01-05 | Seagate Technology Llc | Allocating part of a raid stripe to repair a second raid stripe |
US20190391889A1 (en) * | 2018-06-22 | 2019-12-26 | Seagate Technology Llc | Allocating part of a raid stripe to repair a second raid stripe |
US11816043B2 (en) | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
CN111512289A (en) * | 2018-08-03 | 2020-08-07 | 西部数据技术公司 | Using failed storage devices to perform storage-centric tasks in a peer-to-peer storage system |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10846010B2 (en) * | 2018-12-13 | 2020-11-24 | Intel Corporation | Data portion allocation for temperature management of memory devices |
US20190114107A1 (en) * | 2018-12-13 | 2019-04-18 | Intel Corporation | Data portion allocation for temperature management of memory devices |
US11768709B2 (en) | 2019-01-02 | 2023-09-26 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11442642B2 (en) | 2019-01-29 | 2022-09-13 | Dell Products L.P. | Method and system for inline deduplication using erasure coding to minimize read and write operations |
US11281389B2 (en) | 2019-01-29 | 2022-03-22 | Dell Products L.P. | Method and system for inline deduplication using erasure coding |
US11892916B2 (en) | 2019-06-25 | 2024-02-06 | Micron Technology, Inc. | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives |
US11573708B2 (en) * | 2019-06-25 | 2023-02-07 | Micron Technology, Inc. | Fail-safe redundancy in aggregated and virtualized solid state drives |
US11500766B2 (en) | 2019-06-25 | 2022-11-15 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
US11513923B2 (en) | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives |
US11768613B2 (en) | 2019-06-25 | 2023-09-26 | Micron Technology, Inc. | Aggregation and virtualization of solid state drives |
US11354262B2 (en) | 2019-06-25 | 2022-06-07 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
US11663153B2 (en) | 2019-06-25 | 2023-05-30 | Micron Technology, Inc. | Access optimization in aggregated and virtualized solid state drives |
US11762798B2 (en) | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
US11379127B2 (en) | 2019-07-18 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11609820B2 (en) | 2019-07-31 | 2023-03-21 | Dell Products L.P. | Method and system for redundant distribution and reconstruction of storage metadata |
US11372730B2 (en) | 2019-07-31 | 2022-06-28 | Dell Products L.P. | Method and system for offloading a continuous health-check and reconstruction of data in a non-accelerator pool |
US11328071B2 (en) | 2019-07-31 | 2022-05-10 | Dell Products L.P. | Method and system for identifying actor of a fraudulent action during legal hold and litigation |
US11347404B2 (en) * | 2019-08-01 | 2022-05-31 | EMC IP Holding Company, LLC | System and method for sharing spare storage capacity between a log structured file system and RAID |
US11775193B2 (en) | 2019-08-01 | 2023-10-03 | Dell Products L.P. | System and method for indirect data classification in a storage system operations |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11379447B2 (en) | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
US11281535B2 (en) | 2020-03-06 | 2022-03-22 | Dell Products L.P. | Method and system for performing a checkpoint zone operation for a spare persistent storage |
US11119858B1 (en) * | 2020-03-06 | 2021-09-14 | Dell Products L.P. | Method and system for performing a proactive copy operation for a spare persistent storage |
US11416357B2 (en) | 2020-03-06 | 2022-08-16 | Dell Products L.P. | Method and system for managing a spare fault domain in a multi-fault domain data cluster |
US11301327B2 (en) | 2020-03-06 | 2022-04-12 | Dell Products L.P. | Method and system for managing a spare persistent storage device and a spare node in a multi-node data cluster |
US11449386B2 (en) | 2020-03-20 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11301173B2 (en) * | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11418326B2 (en) | 2020-05-21 | 2022-08-16 | Dell Products L.P. | Method and system for performing secure data transactions in a data cluster |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US20210397517A1 (en) * | 2020-06-23 | 2021-12-23 | Western Digital Technologies, Inc. | RAID Stripe Allocation Based on Memory Device Health |
US11797387B2 (en) * | 2020-06-23 | 2023-10-24 | Western Digital Technologies, Inc. | RAID stripe allocation based on memory device health |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
TWI755068B (en) * | 2020-09-21 | 2022-02-11 | 宜鼎國際股份有限公司 | Data storage device with system operation capability |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
WO2022157792A1 (en) * | 2021-01-25 | 2022-07-28 | Volumez Technologies Ltd. | Storage replication method and system |
EP4281870A4 (en) * | 2021-01-25 | 2024-07-03 | Volumez Technologies Ltd. | METHOD AND SYSTEM FOR SHARED DRIVE RECORDING STACK MONITORING AND RECOVERY |
US11853557B2 (en) | 2021-01-25 | 2023-12-26 | Volumez Technologies Ltd. | Shared drive storage stack distributed QoS method and system |
WO2022157786A1 (en) | 2021-01-25 | 2022-07-28 | Volumez Technologies Ltd. | Shared drive storage stack monitoring and recovery method and system |
EP4281866A4 (en) * | 2021-01-25 | 2024-07-10 | Volumez Technologies Ltd. | SYSTEM AND METHOD FOR DISTRIBUTED QOS WITH SHARED CONTROL STORAGE STACK |
US20240106892A1 (en) * | 2021-01-25 | 2024-03-28 | Volumez Technologies Ltd. | Remote Online Volume Cloning Method and System |
US20240143209A1 (en) * | 2021-01-25 | 2024-05-02 | Volumez Technologies Ltd. | Shared Drive Storage Stack Monitoring And Recovery Method And System |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US20220398046A1 (en) * | 2021-06-09 | 2022-12-15 | Western Digital Technologies, Inc. | Managing Persistent Memory Regions Across Multiple Protocols |
US11907587B2 (en) * | 2021-06-09 | 2024-02-20 | Western Digital Technologies, Inc. | Managing persistent memory regions across multiple protocols |
US20240264892A1 (en) * | 2023-02-06 | 2024-08-08 | Dell Products L.P. | Storage device non-fatal error debug system |
US12248363B2 (en) * | 2023-02-06 | 2025-03-11 | Dell Products L.P. | Storage device non-fatal error debug system |
Also Published As
Publication number | Publication date |
---|---|
US10241877B2 (en) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10241877B2 (en) | Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event | |
US10459808B2 (en) | Data storage system employing a hot spare to store and service accesses to data having lower associated wear | |
US9569118B2 (en) | Promoting consistent response times in a data storage system having multiple data retrieval mechanisms | |
US9785575B2 (en) | Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes | |
US10496293B2 (en) | Techniques for selecting storage blocks for garbage collection based on longevity information | |
US10884914B2 (en) | Regrouping data during relocation to facilitate write amplification reduction | |
US10552288B2 (en) | Health-aware garbage collection in a memory system | |
JP7513356B2 (en) | Wear-Aware Block Mode Conversion in Non-Volatile Memories | |
US10365859B2 (en) | Storage array management employing a merged background management process | |
US9496043B1 (en) | Dynamically optimizing flash data retention or endurance based on data write frequency | |
US9727244B2 (en) | Expanding effective storage capacity of a data storage system while providing support for address mapping recovery | |
US9632702B2 (en) | Efficient initialization of a thinly provisioned storage array | |
US10254981B2 (en) | Adaptive health grading for a non-volatile memory | |
WO2015097956A1 (en) | Extending useful life of a non-volatile memory by health grading | |
US9898215B2 (en) | Efficient management of page retirement in non-volatile memory utilizing page retirement classes | |
US10489086B1 (en) | Reducing read errors by performing mitigation reads to blocks of non-volatile memory | |
JP2019502987A (en) | Multipage failure recovery in non-volatile memory systems | |
US9740609B1 (en) | Garbage collection techniques for a data storage system | |
US9892128B2 (en) | Techniques for improving deduplication efficiency in a storage system with multiple storage nodes | |
US10101938B2 (en) | Data storage system selectively employing multiple data compression techniques | |
US9389792B1 (en) | Reducing read-after-write errors in a non-volatile memory system using an old data copy | |
US11656792B2 (en) | Mirroring data in write caches of a controller of a non-volatile memory | |
US10884632B2 (en) | Techniques for determining the extent of data loss as a result of a data storage system failure | |
US9417809B1 (en) | Efficient management of page retirement in non-volatile memory utilizing page retirement classes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CAMP, CHARLES J.;SHUHATOVICH, LEV M.;REEL/FRAME:040716/0214 Effective date: 20161019 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: SURCHARGE FOR LATE PAYMENT, LARGE ENTITY (ORIGINAL EVENT CODE: M1554); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |