Unified datapath architecture
US-9286007-B1 · Mar 15, 2016 · US
US9720596B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-9720596-B1 |
| Application number | US-201414576952-A |
| Country | US |
| Kind code | B1 |
| Filing date | Dec 19, 2014 |
| Priority date | Dec 19, 2014 |
| Publication date | Aug 1, 2017 |
| Grant date | Aug 1, 2017 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A technique for managing a data storage system that stores data in a set of RAID groups includes receiving IO requests specifying data to be written at different logical addresses and mapping the specified data to contiguous physical addresses, so as to produce contiguously-mapped data having a length equal to that of a full stripe of a RAID group. With data from the IO requests mapped to a contiguous, full-stripe range, the data storage system can write the data and its parity to a full stripe of the RAID group in a single set of operations.
Opening claim text (preview).
What is claimed is: 1. A method of managing storage for a data object in a data storage system, the method comprising: realizing the data object in a file stored in a file system of the data storage system, the file having a logical address space, the file system mapping the logical address space to multiple physical addresses backed by a set of RAID groups (Redundant Array of Independent Disks) providing storage for the file system in a set of RAID-protected stripes; receiving IO requests specifying a set of data to be written to the data object at multiple logical addresses of the file, the logical addresses mapped by the file system to non-contiguous physical addresses; remapping the logical addresses to a range of contiguous physical addresses in the file system, the range of contiguous physical addresses having a length equal to that of a full stripe of the set of RAID-protected stripes; computing parity for the set of data; and writing the set of data and the parity to a full stripe of the set of RAID-protected stripes, wherein remapping the logical addresses of the file is performed prior to storing the set of data in the set of RAID groups, such that a first write of the set of data to the set of RAID groups is to the range of contiguous physical addresses. 2. The method of claim 1 , wherein each of the IO requests specifies host data to be written to the data object, and wherein the method further comprises, prior to remapping the logical addresses: persisting the host data specified by each of the IO requests in a persistent cache; and acknowledging completion of each of the IO requests after persisting the host data specified by the respective IO requests in the persistent cache. 3. The method of claim 2 , further comprising, after acknowledging completion of each of the IO requests, allocating data blocks to the file system in the range of contiguous physical addresses. 4. The method of claim 3 , wherein the file in which the data object is realized has an inode structure including a set of block pointers, the set of block pointers pointing to an initial set of data blocks storing data of the file prior to remapping, and wherein remapping the logical addresses includes changing the set of block pointers in the inode structure of the file to point from the initial set of data blocks to the allocated data blocks in the range of contiguous physical addresses. 5. The method of claim 4 , wherein the method further comprises: monitoring contiguous free space in the set of RAID-protected stripes; receiving additional IO requests specifying a second set of data to be written to the data object at a set of logical addresses within the logical address space of the file, the inode structure mapping the set of logical addresses to a set of non-contiguous physical addresses; and in response to the contiguous free space falling below a predetermined level, writing the second set of data in place at the set of non-contiguous physical addresses. 6. The method of claim 4 , wherein the method further comprises: monitoring an amount of dirty metadata in a metadata cache of the file system; receiving additional IO requests specifying a second set of data to be written to the data object at a set of logical addresses within the logical address space of the file, the inode structure mapping the set of logical addresses to a set of non-contiguous physical addresses; and in response to the amount of dirty metadata in the metadata cache exceeding a predetermined level, writing the second set of data in place at the set of non-contiguous physical addresses. 7. The method of claim 4 , wherein the method further comprises: monitoring a number of file system metadata transactions pending in a metadata transaction log of the file system; receiving additional IO requests specifying a second set of data to be written to the data object at a set of logical addresses within the logical address space of the file, the inode structure mapping the set of logical addresses to a set of non-contiguous physical addresses; and in response to the number of pending metadata transactions exceeding a predetermined level, writing the second set of data in place at the set of non-contiguous physical addresses. 8. The method of claim 4 , wherein the method further comprises: receiving an additional IO request specifying a second set of data to be written to the data object at a set of logical addresses within the logical address space of the file, the inode structure mapping the set of logical addresses to a set of contiguous physical addresses, the set of contiguous physical addresses having a length at least as great as that of one full stripe of the set of RAID-protected stripes; and in response to a size of the second set of data exceeding a predetermined level, writing the second set of data in place at the set of contiguous physical addresses. 9. The method of claim 4 , wherein, in response to additional IO requests, the acts of remapping and writing are preformed selectively based on multiple factors, the multiple factors including available contiguous storage space on the set of RAID-protected stripes and a current metadata processing workload handled by the file system. 10. The method of claim 4 , further comprising: receiving additional IO requests specifying a second set of data to be written to the data object; adding new block pointers to the inode structure of the file to accommodate the second set of data; allocating new data blocks to the file system at a set of contiguous physical addresses; mapping the new block pointers to point to the new data blocks at the set of contiguous physical addresses; and writing the second set of data to an integer number of full stripes of the set of RAID-protected stripes. 11. The method of claim 10 , further comprising: persisting the second set of data in the persistent cache: identifying data from the second set of data that are directed to contiguous logical addresses of the file; aggregating the identified data to produce aggregated data having a length equal to that of an integer number of data blocks; and flushing the aggregated data from the persistent cache to the file system in a single flushing operation. 12. The method of claim 4 , wherein the data object realized in the file is one of a file system, a LUN (Logical Unit Number), and a VVol (virtual volume). 13. The method of claim 4 , wherein the persistent cache includes DRAM (Dynamic Random Access Memory) that is battery backed-up and redundantly mirrored across multiple storage processors of the data storage system. 14. The method of claim 1 , wherein the set of data is received from a host, and wherein the method further comprises, upon receiving the IO requests, temporarily storing the set of data in a data log; and in response to the set of data being stored in the data log, acknowledging receipt of the set of data to the host, wherein remapping the logical addresses is performed after acknowledging receipt to the host, while the set of data are stored in the data log, and before the set of data has ever been written to the set of RAID groups, and wherein writing the set of data and the parity includes flushing the set of data from the data log to the range of contiguous physical addresses in the file system. 15. A computerized apparatus, comprising a set of processing units and memory, coupled to the set of processing units, the memory storing instructions which, when executed by the set of processing units, cause the set of processing units to: realize a data object in a file stored in a file
for peripheral storage systems, e.g. disk cache · CPC title
Disk arrays, e.g. RAID, JBOD · CPC title
Logical to physical mapping or translation of blocks or pages · CPC title
Saving storage space on storage systems · CPC title
Management of blocks · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.