Not applicable.
Not applicable.
Not applicable.
Cold storage is a storage paradigm for storing large amounts of data that are rarely access or modified. For example, cold storage data may be employed to store sensor output, camera footage, internet of things (IoT) related data, archived electronic messages, or other archive data. Cold storage operates on the presumption that large amounts of data are to be stored and that most of the data will be accessed/modified rarely or not at all. Cold storage systems are designed to provide large amounts of storage in a space efficient manner. Data access time for cold storage systems should be reasonably low (e.g. less than a minute) while maintaining high data density and minimizing power consumption. Multiple access may also be beneficial for searching the large data volumes. The cold storage system should also be protected from hardware failure and provide efficient mechanisms for hardware replacement and data recovery when hardware components fail.
In an embodiment, the disclosure includes a data storage apparatus comprising a set of redundant storage arrays, wherein a redundant storage array comprises a plurality of striped storage devices, such as hard disks, or solid-state drives (SSDs), wherein all storage devices of a redundant storage array are associated by a plurality of stripes, wherein each stripe comprises one memory block in each storage device across all devices of the array. All storage devices of a redundant storage array are functionally grouped into two groups: data devices (k storage devices in
In another embodiment, the disclosure includes a method of data storage comprising storing, based on instructions from a controller, data blocks in a plurality of sequential memory blocks in a single selected data device, generating a protection data block for each protection device based on each updated stripe, and storing each generated data block to its corresponding protection device.
In another embodiment, the disclosure includes a non-transitory computer readable medium comprising a computer program product for use by a controller coupled to a set of redundant storage arrays, the computer program product comprising computer executable instructions stored on the non-transitory computer readable medium such that when executed by a processor cause the controller to write storage data blocks in a plurality of sequential memory blocks in a single selected data device in the array, generate a protection data block for each protection device based on each updated stripe, and store each generated protection data block to its corresponding protection devices.
These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims.
For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
It should be understood at the outset that, although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.
Redundant Array of Independent Disks (RAID) is a data storage virtualization technology that combines multiple physical disk drives components into a single local unit for the purpose of redundancy, performance improvement, or both. When applying it to a cold storage system, there are some limitations in system power consumption, device wear and tear, and restricted multiple data access capability.
This disclosure provides a data storage apparatus/method/system on cold storage systems for the purpose of data redundancy with less power consumption, low component wear and tear, and improved parallel data access capability.
A RAID system may be employed to store data in a manner that is quickly readable and protected against failure. A RAID system splits data into blocks and writes the data blocks into memory blocks on multiple storage devices, such as hard disk drives (HDDs), solid-state drives (SDDs), or other storage media. Some RAID systems protect data by employing mirroring. In a mirroring system, exact copies of each data block are stored on multiple storage devices so that a copy of the data is always available if one of the mirrored disks fails. Mirroring may not be a space efficient scheme, and hence may not be suitable for cold storage systems. Some RAID systems employ striping. In a striping scheme, sequential data blocks are allocated to a stripe that extends across all available storage devices within the same RAID array. Striping allows for related data to be accessed in parallel by reading/writing to each device simultaneously. Protection blocks may be used to protect the striped data blocks from failure. Protection blocks are calculated based on the other data blocks within the same stripe. If a data block is damaged, for example due to hardware failure, the damaged data block can be reconstructed from the remaining blocks within the stripe based on the protection algorithms. The reconstructed data blocks can then be written to a new device. Multiple protection blocks in each stripe protect the system from multiple device failures. Protection blocks may be distributed evenly across all storage devices. RAID systems employing striping allow for high speed read and write (e.g. fast updates), space efficient storage, and data recovery. However, RAID systems employing striping may not be efficient for cold storage systems. For cold storage systems, fast access time may be less important than reduced power consumption and component wear. For example, any data access to a stripe (e.g. read or write) may require all storage devices to be activated, which increases wear (e.g. deterioration) on the devices and increases power consumption.
Disclosed herein is a scheme for cold data storage systems that employs a striped array based data protection scheme while reducing power consumption and device wear. The cold data storage scheme employs a plurality of data devices and one or more protection devices. Data storage blocks are written in sequential memory blocks on a device by device basis so that only one storage device is activated during read and write operations, which saves power consumption and wear on the remaining devices in the array. All protection blocks are written to the protection devices. At least one protection device is required, additional protection devices may protect against simultaneous failure on multiple devices. For example, depending on the data protection technology applied, two protection devices protect against simultaneous failure of any two storage devices in the array, three protection devices may protect against simultaneous failure of any three devices in array, etc. Protection blocks are written to the protection devices as part of process when writing each data block to a data device. Accordingly, protection blocks are confined to the protection devices (instead of being distributed across the all storage devices of the redundant storage array) so that the capacity of a redundant storage array can be easily expanded by adding more formatted data devices into the array. If a parity checksum based protection technology is employed, no need to update the protection blocks when introducing more formatted storage devices into a redundant storage array. Similarly, more data devices with previously stored data can be added to a redundant storage array by simply updating the protection blocks on all of protection devices without touching the data blocks on the original data devices. By employing an embodiment of the redundant storage array based cold storage scheme, only one storage device is activated during a read access, allowing the other devices to remain inactive. Generally, all storage devices of a redundant storage array need to be activated to generate protection blocks during a process writing data blocks into a selected data device. When a parity checksum based protection technology, such as RAID 5, is configured for generating protection blocks, only the selected data device and the protection devices need to be activated during data writing process while other data devices remain inactive. As such, the cold storage scheme protects storage device from failure, reduces power consumption and component wear, provide flexibility and simplicity for expansion of a cold storage system, and maintains a reasonable access time (e.g. single access read/write) for data access requests under a cold storage system environment.
The controller 101 may be any device configured to, receive data for storage, sort the received data into data blocks, and write the data blocks to the memory blocks on a selected data device 110. For example, the controller 101 may be a number of virtual machines (VMs) in a data center network or other network, a number of general purpose processors or an application specific integrated circuit (ASIC) on a hardware node (e.g. server) in a data center or other network, a number of general purpose processors or ASICs in a personal computer with multiple storage disks, etc. For purposes of clarity of explanation, the memory blocks are depicted as sequential memory blocks A1-A4, B1-B4, and C1-C4 on data devices. A data block is a sequential grouping of bits of a predefined size taken from a data flow. The controller 101 is further configured to generate protection blocks to protect the data blocks from failures and write the protection blocks to the protection devices 160. For purposes of clarity of explanation, the protection blocks are depicted as memory blocks P1-P4 and Q1-Q4. A protection block is any data usable to reconstruct one or more storage blocks in the same common stripe 190. For example, a protection block may be generated based on parity checksum, known as a parity block. A parity block is a group of parity bits in a stripe 190 that indicate whether the sum of corresponding data bits in the same stripe 190 is odd or even. In the event of a device failure, a damaged data block can be reconstructed by determining the data block that should be summed to the retained data blocks to reach the resulting bits contained in the parity block. Parity blocks may be generated based on an exclusive or (XOR) function or an exclusive nor (XNOR) function. Alternatively, protection blocks may comprise polynomial based error correction codes, such as Reed-Solomon codes.
When the protection blocks are generated by Reed-Solomon codes, any number of data devices (k) in a stripe 190 can be protected against any number of simultaneous device failures (r) by employing a total number of data devices 110 and protection devices 160 equal to k+r where k>0 and r>0. Network 100 comprises an array of k data devices 110 and r protection devices 160, where k is any positive integer desired and r is any positive integer of device failures to be protected against. For example, one protection device 160 is employed to allow data reconstruction after any single storage device 110/160 failure, two protection devices 160 are employed to allow data reconstruction after any two simultaneous storage devices 110/160 failures, etc. Data devices 110 and protection devices 160 may be any storage devices configured to store data in a cold storage system. The storage devices 110 and 160 may be hard disk drives (HDDs), solid state drives (SSDs), flash memory, compact discs (CDs), digital video discs (DVDs), BLU-RAY discs, or any other type of memory suitable for long term storage. Storage devices 110 and 160 are address based memory locations that can be written to, read from, searched, indexed, updated, and otherwise employed for memory storage purposes. It is recommended to use rewritable media for the protection devices. If non-rewritable media, such as DVDs, Blue-ray discs, is used for protection devices, the protection blocks should not be generated until data written to all data devices is completed. The data devices 110 and protection devices 160 may be a group of physical discs or a plurality of virtualized cloud drives. A stripe 190 is grouping of one storage memory block on each storage device across over the storage devices 110 and 160.
The redundant storage array based cold data storage network 100 may be considered a RAID like array (e.g. storage devices 110 and 160 may be referred to as RAID disks). A RAID network may distribute sequential data blocks and associated protection blocks across a single stripe traversing all devices before proceeding to the next stripe. Unlike a RAID network, controller 101 writes data blocks sequentially to a single selected data device 110 until the current data device 110 is full before moving to the next data device 110. For example, data blocks are stored sequentially to memory block A1-A4 in a first data device 110 until it is full. Then, the data blocks are stored sequentially to memory block B1-B4 in a second data device 110, and then to the memory blocks C1-C4 in a third data device 110, etc. Depending on the embodiment, the protection blocks in protection devices 160 are updated after a plurality of storage blocks are written to data devices 110. The protection blocks on each protection device 160 are generated according to the data blocks within each stripe 190, but the data blocks in each stripe 190 are not sequentially related and may not be part of the same data flow, read/write access, etc. For example, storage blocks A1, B1, and C1 are stored as part of the same stripe 190, but are not sequential and may not be related. By storing data blocks in sequential memory blocks in a single data device 110 and by confining all of the protection blocks to the protection devices 160, only one data device 110 is accessed per read command. Accordingly, the rest storage devices 110/160 can remain dormant resulting in power savings and reduced component wear on the dormant storage devices. Further, in an embodiment, only one data device 110 and the protection devices 160 are accessed per write command when a parity checksum based technology is configured to generate the protection blocks. In addition, while the storage devices 110 and 160 may receive unequal wear, the storage devices 110 and 160 receive less total wear than in some RAID networks because cold storage systems leave storage devices dormant for long periods of time unlike a hot storage system which effectively accesses all disks substantially constantly. In a cold storage system, the data blocks stored in data devices are rarely modified or deleted. Therefore, the data writing to each data device 110 or protection device 160 is limited. Accordingly, network 100 may be employed to implement a RAID like striped protection scheme. As such, the redundant storage array based cold storage scheme of network 100 protects against simultaneous storage device failure, reduces power consumption and component wear, supports flexible storage protection expansion, and maintains a reasonable access time.
It is understood that by programming and/or loading executable instructions onto the NE 200, at least one of the processor 230, Array Control Module 234, ports 220 and 250, Tx/Rxs 210, and/or memory 232 are changed, transforming the NE 200 in part into a particular machine or apparatus, e.g., a multi-core forwarding architecture, having the novel functionality taught by the present disclosure. It is fundamental to the electrical engineering and software engineering arts that functionality that can be implemented by loading executable software into a computer can be converted to a hardware implementation by well-known design rules. Decisions between implementing a concept in software versus hardware typically hinge on considerations of stability of the design and numbers of units to be produced rather than any issues involved in translating from the software domain to the hardware domain. Generally, a design that is still subject to frequent change may be preferred to be implemented in software, because re-spinning a hardware implementation is more expensive than re-spinning a software design. Generally, a design that is stable that will be produced in large volume may be preferred to be implemented in hardware, for example in an ASIC, because for large production runs the hardware implementation may be less expensive than the software implementation. Often a design may be developed and tested in a software form and later transformed, by well-known design rules, to an equivalent hardware implementation in an application specific integrated circuit that hardwires the instructions of the software. In the same manner as a machine controlled by a new ASIC is a particular machine or apparatus, likewise a computer that has been programmed and/or loaded with executable instructions may be viewed as a particular machine or apparatus.
If the current data block is the last block to be written at step 309, the method 300 proceeds to step 313. Steps 313, 315, 317, and 319 are employed to generate protection blocks and write the generated blocks to the protection devices for all stripes updated during steps 303, 305, 307, 309, and 311. At step 313, all storage blocks are read across all data devices for the current updated stripe. At step 315, one or more protection blocks (e.g. one protection block for each protection device) are generated for the current stripe. Such protection block(s) are written to the corresponding protection device(s) 160. At step 317, the method 300 determines whether the current stripe is the last updated stripe. If the current stripe is the last updated stripe, the method 300 proceeds to step 321 and ends. If the current stripe is not the last updated stripe, the method 300 proceeds to step 319 and continues to the next updated stripe before returning to step 313. Method 300 requires only that one currently selected data device 110 is activated during the data storage phase of steps 303, 305, 307, 309, and 311. Once a current data device 110 is filled, the current data device 110 can be deactivated and the next data device 110 is activated. Further, only the currently selected data device 110 must be active during a corresponding read method as discussed below. However, all storage devices (e.g. data devices 110 and protection devices 160) are activated during the protection block generation phase of steps 313, 315, 317, and 319. Method 300 is a generic data protection solution, which can be applied with almost all data protection technologies, such as parity checksum or Reed-Solomon codes.
While several embodiments have been provided in the present disclosure, it may be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
In addition, techniques, systems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and may be made without departing from the spirit and scope disclosed herein.