IP Library Granted Patent US 12,436,841
Granted Patent B2
US 12,436,841 · App. 18/665,616 · Granted Oct 7, 2025

Preference based selection of storage network memory for data storage

Inventors: S. Christopher Gladwin (Chicago, IL); Timothy W. Markison (Mesa, AZ); Greg R. Dhuse (Chicago, IL); Thomas F. Shirley, Jr. (Oconomowoc, WI); Wesley B. Leggette (Chicago, IL); Jason K. Resch (Warwick, RI); Gary W. Grube (Barrington Hills, IL)
Assignee: Pure Storage, Inc.
G06F11/1076G06F3/06G06F3/061G06F3/0619G06F3/0635G06F3/064G06F3/0659G06F3/067G06F12/1458G06F21/00G06F21/6218H03M13/2903G06F12/1483G06F2211/1028H03M13/09H03M13/3761H04L67/1097
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,436,841
App. No.
18/665,616
Granted
Oct 7, 2025
Kind
B2
Abstract

Methods and apparatus for preference based selection of storage network memory for data storage. In an example, a computing device receives a data object for storage in memory of the storage network and determines a system level storage efficiency preference associated with the data object. The computing device selects a set of storage nodes of a plurality of sets of storage nodes for storage of the data object based, at least in part, on the system level storage efficiency preference. The computing device further determines dispersed storage error encoding parameters for the data object, encodes the data object in accordance with the dispersed storage error encoding parameters to produce encoded data slices, and generates system addressing information for the encoded data slices.

Claims (58)

1. A method for execution by one or more computing devices of a storage network, the method comprises:

receiving a data object for storage in memory of the storage network;

determining a system level storage efficiency preference associated with the data object;

selecting a set of storage nodes of a plurality of sets of storage nodes for storage of the data object based, at least in part, on the system level storage efficiency preference;

determining dispersed storage error encoding parameters for the data object;

encoding the data object in accordance with the dispersed storage error encoding parameters to produce encoded data slices; and

generating system addressing information for the encoded data slices.

2. The method of claim 1 , wherein determining a system level storage efficiency preference associated with the data object includes interpreting one or more data attributes associated with the data object.

3. The method of claim 2 , wherein the one or more data attributes include a data type of the data object.

4. The method of claim 2 , wherein the one or more data attributes include at least one of:

a data size of the data object;

an identity of a user associated with the data object;

system privileges of a user associated with the data object;

a storage preference of a user associated with the data object;

a location of a user associated with the data object; or

a user group affiliation of user associated with data object.

5. The method of claim 2 , wherein each set of storage nodes of the plurality of sets of storage nodes is associated with a storage attribute, and wherein determining a system level storage efficiency preference associated with the data object is further based on the storage attributes.

6. The method of claim 5 , wherein the storage attribute includes at least one of a storage reliability level associated with the selected set of storage nodes, a cost of storage associated with the selected set of storage nodes, or a location associated with the selected set of storage nodes.

7. The method of claim 1 , wherein determining dispersed storage error encoding parameters for the data object is based on a retrieval reliability level associated with the data object.

8. The method of claim 1 , wherein generating system addressing information for the encoded data slices is performed by a deterministic function based on the encoded data slices, the selected set of storage nodes, and an identifier of the data object.

9. The method of claim 1 , further comprising:

facilitating storage of the encoded data slices in the selected set of storage nodes, including forwarding the encoded data slices to the selected set of storage nodes for storage therein.

10. The method of claim 1 , further comprising:

updating a user profile associated with the data object to include the system addressing information.

11. The method of claim 1 , further comprising:

temporarily storing the received data object in a buffer of the storage network; and prior to encoding the data object, retrieving the data object from the buffer in accordance with a priority protocol.

12. A computing device comprises:

one or more interfaces;

memory that stores operational instructions; and

a processing module operably coupled to the one or more interfaces and the memory, wherein the processing module is configured to execute the operational instructions to:

receive, via the one or more interfaces, a data object for storage in memory of a storage network;

determine a system level storage efficiency preference associated with the data object;

select a set of storage nodes of a plurality of sets of storage nodes for storage of the data object based, at least in part, on the system level storage efficiency preference;

determine dispersed storage error encoding parameters for the data object;

encode the data object in accordance with the dispersed storage error encoding parameters to produce encoded data slices; and

generate system addressing information for the encoded data slices.

13. The computing device of claim 12 , wherein determining a system level storage efficiency preference associated with the data object includes interpreting one or more data attributes associated with the data object.

14. The computing device of claim 13 , wherein each set of storage nodes of the plurality of sets of storage nodes is associated with a storage attribute, and wherein determining a system level storage efficiency preference associated with the data object is further based on the storage attributes.

15. The computing device of claim 14 , wherein the storage attribute includes at least one of:

a storage reliability level associated with the selected set of storage nodes;

a cost of storage associated with the selected set of storage nodes; or

a location associated with the selected set of storage nodes.

16. The computing device of claim 12 , wherein determining dispersed storage error encoding parameters for the data object is based on a retrieval reliability level associated with the data object.

17. The computing device of claim 12 , wherein the processing module is further configured to execute the operational instructions to:

facilitate storage of the encoded data slices in the selected set of storage nodes, including forwarding, via the one or more interfaces, the encoded data slices to the selected set of storage nodes for storage therein; and

update a user profile associated with the data object to include the system addressing information.

18. The computing device of claim 12 , wherein the processing module is further configured to execute the operational instructions to:

temporarily store the received data object in a buffer of the storage network; and

prior to encoding the data object, retrieve the data object from the buffer in accordance with a priority protocol.

19. A non-transitory computer readable storage medium comprises:

at least one memory section that stores operational instructions that, when executed by one or more processing modules of a computing device of a storage network, causes the computing device to:

receive a data object for storage in memory of a storage network;

determine a system level storage efficiency preference associated with the data object;

select a set of storage nodes of a plurality of sets of storage nodes for storage of the data object based, at least in part, on the system level storage efficiency preference;

determine dispersed storage error encoding parameters for the data object;

encode the data object in accordance with the dispersed storage error encoding parameters to produce encoded data slices; and

generate system addressing information for the encoded data slices.

20. The non-transitory computing readable storage medium of claim 19 , wherein determining a system level storage efficiency preference associated with the data object includes interpreting one or more data attributes associated with the data object.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2024
From: GLADWIN, S. CHRISTOPHER; MARKISON, TIMOTHY W.; DHUSE, GREG R.; SHIRLEY, THOMAS F., JR.; LEGGETTE, WESLEY B.; RESCH, JASON K.; GRUBE, GARY W.
To: PURE STORAGE, INC.
Reel/Frame 067445/0489 →
Continuity (9)
Continuation 17806662 · Jun 13, 2022
Continuation 17151249 · Jan 18, 2021
Continuation 16580379 · Sep 24, 2019
Continuation In Part 16047942 · Jul 27, 2018
Continuation In Part 15224839 · Aug 1, 2016
Continuation 14792898 · Jul 7, 2015
Continuation 13889557 · May 8, 2013
Provisional Application 61663836 · Jun 25, 2012
Related Publication 20240303160A1 · Sep 12, 2024
References Cited (128)
US 4092732A · Ouchi · 1978 [cited by applicant]
US 5454101A · Mackay · 1995 [cited by applicant]
US 5485474A · Rabin · 1996 [cited by applicant]
US 5774643A · Lubbers · 1998 [cited by applicant]
US 5802364A · Senator · 1998 [cited by applicant]
US 5809285A · Hilland · 1998 [cited by applicant]
US 5890156A · Rekieta · 1999 [cited by applicant]
US 5987622A · Lo Verso · 1999 [cited by applicant]
US 5991414A · Garay · 1999 [cited by applicant]
US 6012159A · Fischer · 2000 [cited by applicant]
US 6058454A · Gerlach · 2000 [cited by applicant]
US 6128277A · Bruck · 2000 [cited by applicant]
US 6175571B1 · Haddock · 2001 [cited by applicant]
US 6192472B1 · Garay · 2001 [cited by applicant]
US 6256688B1 · Suetaka · 2001 [cited by applicant]
US 6272658B1 · Steele · 2001 [cited by applicant]
US 6289415B1 · Johnson · 2001 [cited by examiner]
US 6301604B1 · Nojima · 2001 [cited by applicant]
US 6356949B1 · Katsandres · 2002 [cited by applicant]
US 6366995B1 · Vilkov · 2002 [cited by applicant]
US 6374336B1 · Peters · 2002 [cited by applicant]
US 6415373B1 · Peters · 2002 [cited by applicant]
US 6418539B1 · Walker · 2002 [cited by applicant]
US 6449688B1 · Peters · 2002 [cited by applicant]
US 6567948B2 · Steele · 2003 [cited by applicant]
US 6571282B1 · Bowman-Amuah · 2003 [cited by applicant]
US 6609223B1 · Wolfgang · 2003 [cited by applicant]
US 6718361B1 · Basani · 2004 [cited by applicant]
US 6760808B2 · Peters · 2004 [cited by applicant]
US 6782414B1 · Xue et al. · 2004 [cited by applicant]
US 6785768B2 · Peters · 2004 [cited by applicant]
US 6785783B2 · Buckland · 2004 [cited by applicant]
US 6826711B2 · Moulton · 2004 [cited by applicant]
US 6879596B1 · Dooply · 2005 [cited by applicant]
US 7003688B1 · Pittelkow · 2006 [cited by applicant]
US 7024451B2 · Jorgenson · 2006 [cited by applicant]
US 7024609B2 · Wolfgang · 2006 [cited by applicant]
US 7080101B1 · Watson · 2006 [cited by applicant]
US 7103824B2 · Halford · 2006 [cited by applicant]
US 7103915B2 · Redlich · 2006 [cited by applicant]
US 7111115B2 · Peters · 2006 [cited by applicant]
US 7140044B2 · Redlich · 2006 [cited by applicant]
US 7146644B2 · Redlich · 2006 [cited by applicant]
US 7171493B2 · Shu · 2007 [cited by applicant]
US 7222133B1 · Raipurkar · 2007 [cited by applicant]
US 7240236B2 · Cutts · 2007 [cited by applicant]
US 7272613B2 · Sim · 2007 [cited by applicant]
US 7526623B1 · Rao · 2009 [cited by applicant]
US 7636724B2 · de la Torre · 2009 [cited by applicant]
US 7668962B2 · Tran et al. · 2010 [cited by applicant]
US 7827203B2 · Keil · 2010 [cited by applicant]
US 8370312B1 · Sawhney · 2013 [cited by examiner]
US 20020062422A1 · Butterworth · 2002 [cited by applicant]
US 20020097239A1 · Allen · 2002 [cited by examiner]
US 20020166079A1 · Ulrich · 2002 [cited by applicant]
US 20030018927A1 · Gadir · 2003 [cited by applicant]
US 20030037261A1 · Meffert · 2003 [cited by applicant]
US 20030065617A1 · Watkins · 2003 [cited by applicant]
US 20030070119A1 · Dallin · 2003 [cited by applicant]
US 20030084020A1 · Shu · 2003 [cited by applicant]
US 20040024963A1 · Talagala · 2004 [cited by applicant]
US 20040122917A1 · Menon · 2004 [cited by applicant]
US 20040215998A1 · Buxton · 2004 [cited by applicant]
US 20040228493A1 · Ma · 2004 [cited by applicant]
US 20050100022A1 · Ramprashad · 2005 [cited by applicant]
US 20050114594A1 · Corbett · 2005 [cited by applicant]
US 20050125593A1 · Karpoff · 2005 [cited by applicant]
US 20050131993A1 · Fatula, Jr. · 2005 [cited by applicant]
US 20050132070A1 · Redlich · 2005 [cited by applicant]
US 20050144382A1 · Schmisseur · 2005 [cited by applicant]
US 20050201533A1 · Emam · 2005 [cited by applicant]
US 20050229069A1 · Hassner · 2005 [cited by applicant]
US 20060047907A1 · Shiga · 2006 [cited by applicant]
US 20060136448A1 · Cialini · 2006 [cited by applicant]
US 20060156059A1 · Kitamura · 2006 [cited by applicant]
US 20060224603A1 · Correll, Jr. · 2006 [cited by applicant]
US 20070079081A1 · Gladwin · 2007 [cited by applicant]
US 20070079082A1 · Gladwin · 2007 [cited by applicant]
US 20070079083A1 · Gladwin · 2007 [cited by applicant]
US 20070088970A1 · Buxton · 2007 [cited by applicant]
US 20070174192A1 · Gladwin · 2007 [cited by applicant]
US 20070179995A1 · Prahlad · 2007 [cited by examiner]
US 20070214285A1 · Au · 2007 [cited by applicant]
US 20070234110A1 · Soran · 2007 [cited by applicant]
US 20070283167A1 · Venters, III · 2007 [cited by applicant]
US 20080091741A1 · Zohar · 2008 [cited by examiner]
US 20080209265A1 · Fuchikami · 2008 [cited by applicant]
US 20080282106A1 · Shalvi · 2008 [cited by applicant]
US 20090094251A1 · Gladwin · 2009 [cited by applicant]
US 20090094318A1 · Gladwin · 2009 [cited by applicant]
US 20090138502A1 · Kalaboukis · 2009 [cited by examiner]
US 20100023524A1 · Gladwin · 2010 [cited by applicant]
US 20100169707A1 · Mathew · 2010 [cited by applicant]
US 20110029742A1 · Grube · 2011 [cited by applicant]
US 20110072321A1 · Dhuse · 2011 [cited by examiner]
US 20110078343A1 · Resch · 2011 [cited by examiner]
US 20110078512A1 · Grube · 2011 [cited by examiner]
US 20110106904A1 · Resch · 2011 [cited by applicant]
US 20110126060A1 · Grube · 2011 [cited by examiner]
US 20110231699A1 · Gladwin · 2011 [cited by applicant]
US 20110252269A1 · Fabbrocino · 2011 [cited by applicant]
US 20120054556A1 · Grube · 2012 [cited by applicant]
US 20120084383A1 · Bernbo · 2012 [cited by applicant]
US 20120166868A1 · Volvovski · 2012 [cited by examiner]
US 20130060745A1 · Steinbeck · 2013 [cited by examiner]
US 20130067267A1 · Tamhane · 2013 [cited by examiner]
US 20130219227A1 · Augustine · 2013 [cited by applicant]
US 20150347238A1 · Kumarasamy · 2015 [cited by applicant]
US 20160357467A1 · Dhuse · 2016 [cited by applicant]
US 20170031671A1 · Joshi · 2017 [cited by applicant]
Chung; An Automatic Data Segmentation Method for 3D Measured Data Points; National Taiwan University; pp. 1-8; 1998. [cited by applicant]
Harrison; Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms; IETF Network Working Group; RFC 4513; Jun. 2006; pp. 1-32. [cited by applicant]
Kubiatowicz, et al.; OceanStore: An Architecture for Global-Scale Persistent Storage; Proceedings of the Ninth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 20… [cited by applicant]
Legg; Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules; IETF Network Working Group; RFC 4517; Jun. 2006; pp. 1-50. [cited by applicant]
Plank, T1: Erasure Codes for Storage Applications; FAST2005, 4th Usenix Conference on File Storage Technologies; Dec. 13-16, 2005; pp. 1-74. [cited by applicant]
Rabin; Efficient Dispersal of Information for Security, Load Balancing, and Fault Tolerance; Journal of the Association for Computer Machinery; vol. 36, No. 2; Apr. 1989; pp. 335-348. [cited by applicant]
Satran, et al.; Internet Small Computer Systems Interface (ISCSI); IETF Network Working Group; RFC 3720; Apr. 2004; pp. 1-257. [cited by applicant]
Sciberras; Lightweight Directory Access Protocol (LDAP): Schema for User Applications; IETF Network Working Group; RFC 4519; Jun. 2006; pp. 1-33. [cited by applicant]
Sermersheim; Lightweight Directory Access Protocol (LDAP): The Protocol; IETF Network Working Group; RFC 4511; Jun. 2006; pp. 1-68. [cited by applicant]
Shamir; How to Share a Secret; Communications of the ACM; vol. 22, No. 11; Nov. 1979; pp. 612-613. [cited by applicant]
Smith; Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator; IETF Network Working Group; RFC 4516; Jun. 2006; pp. 1-15. [cited by applicant]
Smith; Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters; IETF Network Working Group; RFC 4515; Jun. 2006; pp. 1-12. [cited by applicant]
Wildi; Java iSCSi Initiator; Master Thesis; Department of Computer and Information Science, University of Konstanz; Feb. 2007; 60 pgs. [cited by applicant]
Xin, et al.; Evaluation of Distributed Recovery in Large-Scale Storage Systems; 13th IEEE International Symposium on High Performance Distributed Computing; Jun. 2004; pp. 172-181. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): Directory Information Models; IETF Network Working Group; RFC 4512; Jun. 2006; pp. 1-49. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation; IETF Network Working Group; RFC 4518; Jun. 2006; pp. 1-14. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names; IETF Network Working Group; RFC 4514; Jun. 2006; pp. 1-15. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map; IETF Network Working Group; RFC 4510; Jun. 2006; pp. 1-8. [cited by applicant]