IP Library Granted Patent US 12,468,467
Granted Patent B2
US 12,468,467 · App. 15/224,255 · Granted Nov 11, 2025

Sequential write based durable file system

Inventors: Maxim Gerard Smith (Durham, NC); John William Haskins, Jr. (Wake Forest, NC); David Anthony Slik (Northridge, CA); Keith Arnold Smith (Cambridge, MA)
Assignee: NETAPP, INC.
G06F3/0643G06F3/0619G06F3/0676
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,468,467
App. No.
15/224,255
Granted
Nov 11, 2025
Kind
B2
Abstract

A durable file system has been designed for storage devices that do not support write in place and/or that are susceptible to errors or failures. The durable file system also facilitates organization and access of large objects (e.g., gigabytes to terabytes in size). Regardless of whether target storage devices are configured with sequential write constraints, the durable file system writes object fragments across a set of sequences or ranges of storage units, such as logical blocks. The durable file system sequentially writes an object fragment into each storage unit sequence along with indexing information for the object fragments. In addition to writing the indexing information for the object fragments into the set of storage unit sequences, the durable file system updates the file system index with the object indexing information.

Claims (50)

1 . A method comprising:

generating, by a file system, a plurality of fragments from an object in response to receipt of a request from a client to write the object into a file system instance, the object identified by an object identifier, and each fragment of the plurality of fragments being of equal size to each other;

creating, by the file system, indexing information for the object that identifies the object and a same range of logical block numbers for each of the plurality of fragments;

writing, by the file system, each fragment from the plurality of fragments with the indexing information into a different storage device of a plurality of storage devices that each present a respective zone for storage, wherein each fragment from the plurality of fragments is written into the same range of logical block numbers within each of the different storage devices, and wherein the indexing information in each one of the different storage devices identifies a same last logical block number at the same range of logical block numbers written within each respective zone of each of the different storage devices;

updating, by the file system after the writing, an index log of the file system instance with the indexing information; and

tracking the same last logical block number written within each respective zone for the plurality of fragments.

2 . The method of claim 1 further comprising:

in response to a determination that the index log includes an entry that references a second range of logical block numbers with an older version of the object, removing the entry from the index log.

3 . The method of claim 1 further comprising:

searching the index log for a key prefix that matches the object identifier of the object, wherein keys of the index log comprise a client defined object identifier, a time stamp of when the object arrived, and a fragment identifier.

4 . The method of claim 1 , further comprising:

determining that the index log includes an entry with a key prefix that matches the object identifier, an index key of the entry comprising an object arrival time stamp that is older than a time stamp of when the object arrived.

5 . The method of claim 1 further comprising:

wherein generating the plurality of fragments includes dividing the object equally to generate a first segment corresponding to the same range of logical block numbers and a second segment corresponding to the same range of logical block numbers.

6 . The method of claim 1 , wherein the indexing information includes a size of an individual one of the plurality of fragments.

7 . The method of claim 1 , wherein the writing further comprises:

including, with writing the plurality of fragments, data protection information.

8 . The method of claim 1 , wherein the creating further comprises:

creating information that comprises a client defined identifier of the object, an arrival time stamp for the object, and an identifier of the same range of logical block numbers.

9 . The method of claim 1 further comprising:

reading, in response to a read request that indicates the object identifier, at least a subset of the plurality of fragments in accordance with storage device identifiers corresponding to the same range of logical block numbers.

10 . A non-transitory machine readable medium having stored thereon instructions for managing access and organization of objects, the instructions which when executed by at least one machine, causes the machine to:

select a range of logical block numbers to store an object, wherein the range of logical block numbers is the same on each independently accessible storage device of a plurality of storage devices that each presents a respective zone for storage that the range of logical block numbers is within;

add same indexing information to each of different fragments of the object of substantially equal size to each other to form a plurality of indexed fragments, wherein the same indexing information comprises a client defined object identifier of the object, and the same indexing information in each one of the storage devices identifies a same last logical block number within the range of logical block numbers at each independently accessible storage device;

write each of the plurality of indexed fragments across the range of logical block numbers of each respective independently accessible storage device of the plurality of storage devices;

update a file system index with the same indexing information after writing the indexed fragments; and

tracking the same last logical block number written within each respective zone for the plurality of indexed fragments.

11 . The non-transitory machine readable medium of claim 10 further comprising instructions to:

read, in response to a read request that indicates the client defined object identifier, at least a subset of the plurality of indexed fragments in accordance with storage device identifiers corresponding to the last block written.

12 . A computing device comprising:

a memory containing machine readable medium comprising machine executable code for managing access and organization of objects; and

a processor coupled to the memory, the processor configured to execute the machine executable code to cause the computing device to:

generate a plurality of fragments from an object in response to receipt of a request to write the object, into a file system instance, the object identified by an object identifier, and each fragment of the plurality of fragments being of substantially equal size to each other;

create, by the file system, indexing information for the object that identifies the object and a same range of logical block numbers for each of the plurality of fragments;

write each fragment from the plurality of fragments with the indexing information into a different storage device of a plurality of storage devices that each present a respective zone for storage, wherein each fragment from the plurality of fragments is written into the same range of logical block numbers within each of the different storage devices, and wherein the indexing information in each one of the different storage devices identifies a same last logical block number at the same range of logical block numbers written within each respective zone of each of the different storage devices;

update, after writing the plurality of fragments and the indexing information, an index log of the file system instance with the indexing information; and

tracking the same last logical block number written within each respective zone for the plurality of fragments.

13 . The computing device of claim 12 , further comprising machine executable code to cause the computing device to:

in response to a determination that the index log includes an entry that references a second range of logical block numbers with an older version of the object, remove the entry from the index log.

14 . The computing device of claim 12 , further comprising machine executable code to cause the computing device to:

search the index log for a key prefix that matches the object identifier of the object, wherein keys of the index log comprise a client defined object identifier, a time stamp of when the object arrived, and a fragment identifier.

15 . The computing device of claim 12 , further comprising machine executable code to cause the computing device to:

determine that the index log includes an entry with a key prefix that matches the object identifier, an index key of the entry comprising an object arrival time stamp that is older than a time stamp of when the object arrived.

16 . The computing device of claim 12 , further comprising machine executable code to cause the computing device to:

generate a time stamp that corresponds to when the object arrived at the computing device.

17 . The computing device of claim 12 , further comprising machine executable code to cause the computing device to:

divide the object into a first segment corresponding to the range of logical block numbers and a second segment corresponding to the same range of logical block numbers.

18 . The computing device of claim 12 , wherein the indexing information includes a size of an individual one of the plurality of fragments.

19 . The computing device of claim 12 , further comprising machine executable code to cause the computing device to:

include, with the plurality of fragments, data protection information.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2016
From: SMITH, MAXIM GERARD; HASKINS, JOHN WILLIAM, JR.; SLIK, DAVID ANTHONY; SMITH, KEITH ARNOLD
To: NETAPP, INC.
Reel/Frame 039295/0982 →
Continuity (2)
Continuation In Part 14929255 · Oct 31, 2015
Related Publication 20170123714A1 · May 4, 2017
References Cited (132)
US 4543654A · Jones · 1985 [cited by applicant]
US 5271012A · Blaum et al. · 1993 [cited by applicant]
US 5297258A · Hale · 1994 [cited by examiner]
US 5687365A · Velissaropoulos et al. · 1997 [cited by applicant]
US 5963962A · Hitz et al. · 1999 [cited by applicant]
US 6115200A · Allen et al. · 2000 [cited by applicant]
US 6505216B1 · Schutzman et al. · 2003 [cited by applicant]
US 6714371B1 · Codilian · 2004 [cited by applicant]
US 6735033B1 · Codilian et al. · 2004 [cited by applicant]
US 7177248B2 · Kim et al. · 2007 [cited by applicant]
US 7333282B2 · Iseri et al. · 2008 [cited by applicant]
US 7408732B2 · Kisaka et al. · 2008 [cited by applicant]
US 8099605B1 · Billsroem et al. · 2012 [cited by applicant]
US 8239621B2 · Yamato · 2012 [cited by applicant]
US 8375012B1 · Graefe · 2013 [cited by examiner]
US 8566520B1 · Bitner et al. · 2013 [cited by applicant]
US 8625636B2 · Baptist et al. · 2014 [cited by applicant]
US 8650159B1 · Zhang · 2014 [cited by examiner]
US 8699159B1 · Malina · 2014 [cited by applicant]
US 8768983B2 · Kohlscheen et al. · 2014 [cited by applicant]
US 8819259B2 · Zuckerman et al. · 2014 [cited by applicant]
US 8832363B1 · Sundaram · 2014 [cited by examiner]
US 8838911B1 · Hubin et al. · 2014 [cited by applicant]
US 8949449B2 · Zuckerman et al. · 2015 [cited by applicant]
US 8959281B1 · Malina et al. · 2015 [cited by applicant]
US 8959305B1 · Lecrone et al. · 2015 [cited by applicant]
US 8990162B1 · Kushwah et al. · 2015 [cited by applicant]
US 9269376B1 · Hess et al. · 2016 [cited by applicant]
US 9329991B2 · Cohen et al. · 2016 [cited by applicant]
US 9348601B2 · Forsyth · 2016 [cited by examiner]
US 9361301B1 · Bushman · 2016 [cited by applicant]
US 9471366B2 · Bolte et al. · 2016 [cited by applicant]
US 10009575B1 · Liu et al. · 2018 [cited by applicant]
US 10055317B2 · Slik · 2018 [cited by applicant]
US 10379742B2 · Smith et al. · 2019 [cited by applicant]
US 10514984B2 · Slik et al. · 2019 [cited by applicant]
US 20020095546A1 · Dimitri et al. · 2002 [cited by applicant]
US 20020109693A1 · Champion · 2002 [cited by examiner]
US 20030004947A1 · Coverston · 2003 [cited by examiner]
US 20030105852A1 · Das et al. · 2003 [cited by applicant]
US 20040153479A1 · Mikesell et al. · 2004 [cited by applicant]
US 20040162940A1 · Yagisawa et al. · 2004 [cited by applicant]
US 20040213149A1 · Mascolo · 2004 [cited by applicant]
US 20050192932A1 · Kazar et al. · 2005 [cited by applicant]
US 20060253651A1 · Inoue et al. · 2006 [cited by applicant]
US 20060271339A1 · Fukada · 2006 [cited by applicant]
US 20070104049A1 · Kim et al. · 2007 [cited by applicant]
US 20070113004A1 · Sugimoto et al. · 2007 [cited by applicant]
US 20070156405A1 · Schulz et al. · 2007 [cited by applicant]
US 20070168336A1 · Ransil · 2007 [cited by examiner]
US 20070177739A1 · Ganguly et al. · 2007 [cited by applicant]
US 20070203927A1 · Cave et al. · 2007 [cited by applicant]
US 20080126357A1 · Casanova et al. · 2008 [cited by applicant]
US 20080151724A1 · Anderson et al. · 2008 [cited by applicant]
US 20080201336A1 · Yamato · 2008 [cited by applicant]
US 20080201401A1 · Pugh et al. · 2008 [cited by applicant]
US 20080313398A1 · Koseki · 2008 [cited by applicant]
US 20090100055A1 · Wang · 2009 [cited by applicant]
US 20090154559A1 · Gardner · 2009 [cited by applicant]
US 20090327840A1 · Moshayedi · 2009 [cited by applicant]
US 20100030960A1 · Kamalavannan et al. · 2010 [cited by applicant]
US 20100064166A1 · Dubnicki et al. · 2010 [cited by applicant]
US 20100094921A1 · Roy et al. · 2010 [cited by applicant]
US 20100094957A1 · Zuckerman et al. · 2010 [cited by applicant]
US 20100095012A1 · Zuckerman et al. · 2010 [cited by applicant]
US 20100095060A1 · Strange et al. · 2010 [cited by applicant]
US 20100121913A1 · Maekawa · 2010 [cited by examiner]
US 20100162031A1 · Dodgson et al. · 2010 [cited by applicant]
US 20100174968A1 · Charles et al. · 2010 [cited by applicant]
US 20100185690A1 · Evans · 2010 [cited by examiner]
US 20100293354A1 · Perez et al. · 2010 [cited by applicant]
US 20100306174A1 · Otani · 2010 [cited by examiner]
US 20100325345A1 · Ohno et al. · 2010 [cited by applicant]
US 20110179224A1 · Rossi · 2011 [cited by examiner]
US 20110191629A1 · Daikokuya et al. · 2011 [cited by applicant]
US 20110296104A1 · Noda et al. · 2011 [cited by applicant]
US 20120060072A1 · Simitci et al. · 2012 [cited by applicant]
US 20120072689A1 · Van Kempen et al. · 2012 [cited by applicant]
US 20120226886A1 · Hatfield et al. · 2012 [cited by applicant]
US 20130054889A1 · Vaghani et al. · 2013 [cited by applicant]
US 20130086340A1 · Fleming et al. · 2013 [cited by applicant]
US 20130238235A1 · Kitchel et al. · 2013 [cited by applicant]
US 20130282887A1 · Terayama · 2013 [cited by examiner]
US 20130297905A1 · Yang et al. · 2013 [cited by applicant]
US 20130346794A1 · Bartlett et al. · 2013 [cited by applicant]
US 20140013046A1 · Corbett et al. · 2014 [cited by applicant]
US 20140108707A1 · Nowoczynski et al. · 2014 [cited by applicant]
US 20140207899A1 · Mark et al. · 2014 [cited by applicant]
US 20140237024A1 · Chen et al. · 2014 [cited by applicant]
US 20140297680A1 · Triou, Jr. et al. · 2014 [cited by applicant]
US 20140331085A1 · Dhuse et al. · 2014 [cited by applicant]
US 20140344532A1 · Lazier · 2014 [cited by applicant]
US 20150067245A1 · Kruger · 2015 [cited by applicant]
US 20150089185A1 · Brandyberry · 2015 [cited by examiner]
US 20150161163A1 · Cypher et al. · 2015 [cited by applicant]
US 20150254008A1 · Tal et al. · 2015 [cited by applicant]
US 20150256577A1 · Gutiérrez et al. · 2015 [cited by applicant]
US 20150269964A1 · Fallone et al. · 2015 [cited by applicant]
US 20150289013A1 · Nelson · 2015 [cited by examiner]
US 20150293817A1 · Subramanian et al. · 2015 [cited by applicant]
US 20150363126A1 · Frick · 2015 [cited by applicant]
US 20150378825A1 · Resch · 2015 [cited by applicant]
US 20160070617A1 · Algie et al. · 2016 [cited by applicant]
US 20160179621A1 · Schirripa et al. · 2016 [cited by applicant]
US 20160232168A1 · Lemoal · 2016 [cited by applicant]
US 20160314043A1 · Slik · 2016 [cited by applicant]
US 20170031752A1 · Cilfone et al. · 2017 [cited by applicant]
US 20170060481A1 · Leggette et al. · 2017 [cited by applicant]
US 20170109247A1 · Nakajima · 2017 [cited by applicant]
US 20170123928A1 · Smith · 2017 [cited by examiner]
US 20170124104A1 · Smith et al. · 2017 [cited by applicant]
US 20170178680A1 · Haskins, Jr. et al. · 2017 [cited by applicant]
US 20190251996A1 · Haskins, Jr. et al. · 2019 [cited by applicant]
WO 2013152811A1 · 2013 [cited by applicant]
Yu Hua; SmartStore: A New Metadata Organization Paradigm with Semantic-Awareness for Next-Generation File Systems; 2009; ACM; pp. 1-12. [cited by examiner]
Amer, et al., “Design Issue for a Shingled Write Disk System,” 26th IEEE Symposium on Massive Storage Systems and Technologies (MSST 2010), May 2010,12 pages, retrieved on Oct. 20, 2015 from http://storageconference.us/… [cited by applicant]
Amer, et al., “Data Management and Layout for Shingled Magnetic Recording,” IEEE Transactions on Magnetics, Oct. 2011, vol. 47, No. 10,pp. 3691-3697, retrieved on Oct. 15, 2015 from http://www.ssrc.ucsc.edu/Papers/amer-… [cited by applicant]
Dunn, et al., “Shingled Magnetic Recording Models, Standardization, and Applications,” SNIA Education, Storage Networking Industry Association, , Sep. 16, 2014, 44 pages, retrieved on Oct. 21, 2015 from http://www.snia.… [cited by applicant]
Feldman, et al., “Shingled Magnetic Recording Areal Density Increase Requires New Data Management,” USENIX, The Advanced Computing Systems Association, Jun. 2013, vol. 38, No. 3, pp. 22-30, retrieved on Oct. 20, 2015 fr… [cited by applicant]
Gibson, et al., “Direction for Shingled-Write and Two-Dimensional Magnetic Recording System Architectures: Synergies with Solid-State Disks,” Carnegie Mellon University, Parallel Data Lab, Technical Report CMU-PDL-09-10… [cited by applicant]
Gibson, et al., “Principles of Operation for Shingled Disk Devices,” Carnegie Mellon University, Parallel Data Laboratory, CMU-PDL-11-107, Apr. 2011, 9 pages, retrieved on Oct. 20, 2015 from http://www.pdl.cmu.edu/PDL-F… [cited by applicant]
Li, X., “Reliability Analysis of Deduplicated and Erasure-Coded Storage,” ACM SIGMETRICS Performance Evaluation Review, vol. 38, No. 3, ACM New York, NY, Jan. 3, 2011, pp. 4-9. [cited by applicant]
Luo, “Implement Object Storage with SMR based Key-Value Store,” 2015 Storage Developer Conference, Huawei Technologies Co., Sep. 2015, 29 pages, retrieved on Oct. 20, 2015 from http://www.snia.org/sites/default/files/SD… [cited by applicant]
Megans, “Spectra Logic Announces Breakthrough in Nearline Disk, ArcticBlue,” SPECTA Logic, Boulder, CO, Oct. 15, 2015, 5 pages, retrieved on Oct. 20, 2015 from https://www.spectralogic.com/2015/10/15/spectra-logic-annou… [cited by applicant]
O'Reily; J., “Raid Vs. Erasure Coding”, Network Computing, Jul. 14, 2014, 2 pages, retrieved on Apr. 1, 2016 from http://www.networkcomputing.com/storage/raid-vs-erasure-coding/1792588127. [cited by applicant]
Renzoni, R., “Wide Area Storage From Quantum,” Quantum Corporation, 2012, 24 pages. [cited by applicant]
Seshadri S., “High Availability and Data Protection with EMC Isilon Scale-Out NAS,” EMC Corporation, White Paper, Jun. 2015, 37 pages, retrieved on Oct. 5, 2015 from https://www.emc.com/collateral/hardware/white-papers/… [cited by applicant]
SMR Layout Optimisation for XFS, Mar. 2015, v0.2, 7 pages, retrieved on Oct. 15, 2015 from http://xfs.org/images/f/f6/Xfs-smr-structure-0.2.pdf. [cited by applicant]
Speciale P., “Scality RING: Scale Out File System & Hadoop over CDMI,” Scality, Storage Developer Conference, Sep. 19-22, 2014, 26 pages, retrieved on Oct. 5, 2015 from http://www.snia.org/sites/default/files/PaulSpecia… [cited by applicant]
Suresh, et al., “Shingled Magnetic Recording for Big Data Applications,” Parallel Data Laboratory, Carnegie Mellon University, Pittsburg, PA, CMU-PDL-12-105, May 2012, 29 pages, retrieved on Oct. 20, 2015 from http://ww… [cited by applicant]
International Search Report and Written Opinion for Application No. PCT/US2015/048177 mailed on Dec. 10, 2015, 8 pages. [cited by applicant]
RABIN “Efficient Dispersal of Information for Security, Load Balancing, and Fault Tolerance,” Journal of the Association for Computing Machinery, vol. 36, No. 2, Apr. 1989, pp. 335-348. [cited by applicant]