IP Library Granted Patent US 12,339,750
Granted Patent B2
US 12,339,750 · App. 18/095,896 · Granted Jun 24, 2025

Policy-based disaster recovery for a containerized application

Inventors: Tapas Sharma (Maharashtra, IN); Luis Pablo Pabón (Sturbridge, MA); Timothy Darnell (Estes Park, CO); Paul Theunis (Elk Grove, CA)
Assignee: Pure Storage, Inc.
G06F11/1469G06F11/1464G06F2201/865
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,339,750
App. No.
18/095,896
Granted
Jun 24, 2025
Kind
B2
Abstract

An illustrative method includes a controller associated with a plurality of clusters receiving, from a user, a disaster recovery policy of a containerized application deployed on a first cluster in the plurality of clusters, determining a cluster profile of each second cluster among one or more second clusters that are distinct from the first cluster in the plurality of clusters, identifying, from the one or more second clusters, a particular cluster based on the disaster recovery policy of the containerized application and the cluster profile of each second cluster, and assigning the particular cluster to be a disaster recovery cluster for the containerized application.

Claims (70)

1. A method comprising:

generating, by a controller associated with a plurality of clusters, a disaster recovery profile of a containerized application deployed on a first cluster in the plurality of clusters, wherein the disaster recovery profile of the containerized application is generated based on data indicating operations of the containerized application in the first cluster, the disaster recovery profile specifying requirements of the containerized application;

identifying, by the controller and based on monitored user interactions with the containerized application, a subset of the requirements specified by the disaster recovery profile;

presenting, by the controller and by way of a user interface, the subset of the requirements;

receiving, by the controller and by way of a user interface, user input that adjusts a requirement included in the subset of the requirements;

generating, by the controller and based on the adjusted requirement and the disaster recovery profile, a disaster recovery policy of the containerized application;

determining, by the controller, a cluster profile of each second cluster among one or more second clusters that are distinct from the first cluster in the plurality of clusters;

identifying, by the controller and from the one or more second clusters, a particular cluster based on the disaster recovery policy of the containerized application and the cluster profile of each second cluster; and

assigning, by the controller, the particular cluster to be a disaster recovery cluster for the containerized application.

2. The method of claim 1 , wherein:

the disaster recovery policy of the containerized application includes a resource requirement of the containerized application, an operation requirement of the containerized application, and a cluster requirement of the containerized application that are specified by the user.

3. The method of claim 1 , wherein the generating of the disaster recovery profile of the containerized application comprises:

receiving, from an agent associated with a storage system of the first cluster, application information associated with one or more operations of the containerized application; and

generating the disaster recovery profile of the containerized application based on the application information.

4. The method of claim 3 , wherein the agent is configured to:

obtain operation metadata describing the one or more operations of the containerized application, wherein the operation metadata is obtained from a plurality of infrastructure layers of a node that operates the containerized application in the first cluster.

5. The method of claim 4 wherein the plurality of infrastructure layers of the node comprise a container engine layer, an operating system layer, and a server hardware layer.

6. The method of claim 3 , wherein the agent comprises a storage management containerized application that is deployed on the first cluster and provisions and provides a persistent storage resource to the containerized application.

7. The method of claim 1 , further comprising:

receiving, by the controller and by way of the user interface, an additional user input that specifies one or more additional requirements of the containerized application to be included in the disaster recovery policy.

8. The method of claim 1 , wherein:

the disaster recovery policy specifies an isolation level of the containerized application within a cluster that operates the containerized application.

9. The method of claim 1 , wherein the identifying of the particular cluster includes:

evaluating the cluster profile of each second cluster against the disaster recovery policy of the containerized application;

computing a cluster score for each second cluster based on the evaluating; and

identifying, from the one or more second clusters, the particular cluster for the containerized application based on the cluster score of each second cluster.

10. The method of claim 1 , wherein the identifying of the particular cluster includes:

determining that none of the one or more second clusters satisfies the disaster recovery policy of the containerized application;

creating, in response to the determining that none of the one or more second clusters satisfies the disaster recovery policy of the containerized application, an additional second cluster that satisfies the disaster recovery policy of the containerized application; and

identifying the additional second cluster to be the particular cluster for the containerized application.

11. The method of claim 1 , wherein the disaster recovery cluster is configured to:

determine that the first cluster is subjected to an operation disruption; and

take over, in response to the determining that the first cluster is subjected to the operation disruption, a task of operating the containerized application from the first cluster.

12. The method of claim 1 , wherein the disaster recovery profile of the containerized application is generated based on data collected and provided, to the controller, by a container storage system that is deployed on the first cluster and provisions and provides a persistent storage resource to the containerized application.

13. The method of claim 12 , wherein the container storage system comprises a privileged containerized application deployed on the first cluster, the privileged containerized application having privileges that allow the container storage system to carry out storage-related tasks in a kernel space of a node that operates the containerized application in the first cluster.

14. A controller system associated with a plurality of clusters, the controller system comprising:

a memory storing instructions; and

one or more processors communicatively coupled to the memory and configured to execute the instructions to perform a process comprising:

generating a disaster recovery profile of a containerized application deployed on a first cluster in the plurality of clusters, wherein the disaster recovery profile of the containerized application is generated based on data indicating operations of the containerized application in the first cluster, the disaster recovery profile specifying requirements of the containerized application;

identifying, based on monitored user interactions with the containerized application, a subset of the requirements specified by the disaster recovery profile;

presenting, by way of a user interface, the subset of the requirements;

receiving, by way of a user interface, user input that adjusts a requirement included in the subset of the requirements;

generating, based on the adjusted requirement and the disaster recovery profile, a disaster recovery policy of the containerized application;

determining a cluster profile of each second cluster among one or more second clusters that are distinct from the first cluster in the plurality of clusters;

identifying, from the one or more second clusters, a particular cluster based on the disaster recovery policy of the containerized application and the cluster profile of each second cluster; and

assigning the particular cluster to be a disaster recovery cluster for the containerized application.

15. The controller system of claim 14 , wherein:

the disaster recovery policy of the containerized application includes a resource requirement of the containerized application, an operation requirement of the containerized application, and a cluster requirement of the containerized application that are specified by the user.

16. The controller system of claim 14 , wherein the generating of the disaster recovery profile of the containerized application comprises:

receiving, from an agent associated with a storage system of the first cluster, application information associated with one or more operations of the containerized application; and

generating the disaster recovery profile of the containerized application based on the application information.

17. The controller system of claim 16 , wherein the agent is configured to:

obtain operation metadata describing the one or more operations of the containerized application, wherein the operation metadata is obtained from one or more infrastructure layers of a node that operates the containerized application in the first cluster.

18. The controller system of claim 14 , wherein the identifying of the particular cluster includes:

evaluating the cluster profile of each second cluster against the disaster recovery policy of the containerized application;

computing a cluster score for each second cluster based on the evaluating; and

identifying, from the one or more second clusters, the particular cluster for the containerized application based on the cluster score of each second cluster.

19. The controller system of claim 14 , wherein the identifying of the particular cluster includes:

determining that none of the one or more second clusters satisfies the disaster recovery policy of the containerized application;

creating, in response to the determining that none of the one or more second clusters satisfies the disaster recovery policy of the containerized application, an additional second cluster that satisfies the disaster recovery policy of the containerized application; and

identifying the additional second cluster to be the particular cluster for the containerized application.

20. A non-transitory computer-readable medium storing instructions that, when executed, direct a processor of a controller system associated with a plurality of clusters to perform a process comprising:

generating a disaster recovery profile of a containerized application deployed on a first cluster in the plurality of clusters, wherein the disaster recovery profile of the containerized application is generated based on data indicating operations of the containerized application in the first cluster, the disaster recovery profile specifying requirements of the containerized application;

identifying, based on monitored user interactions with the containerized application, a subset of the requirements specified by the disaster recovery profile;

presenting, by way of a user interface, the subset of the requirements;

receiving, by way of a user interface, user input that adjusts a requirement included in the subset of the requirements;

generating, based on the adjusted requirement and the disaster recovery profile, a disaster recovery policy of the containerized application;

determining a cluster profile of each second cluster among one or more second clusters that are distinct from the first cluster in the plurality of clusters;

identifying, from the one or more second clusters, a particular cluster based on the disaster recovery policy of the containerized application and the cluster profile of each second cluster; and

assigning the particular cluster to be a disaster recovery cluster for the containerized application.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 11, 2023
From: SHARMA, TAPAS; PABÓN, LUIS PABLO; DARNELL, TIMOTHY; THEUNIS, PAUL
To: PURE STORAGE, INC., A DELAWARE CORPORATION
Reel/Frame 062348/0436 →
Continuity (4)
Continuation In Part 17965996 · Oct 14, 2022
Continuation In Part 17947529 · Sep 19, 2022
Continuation In Part 17555751 · Dec 20, 2021
Related Publication 20230205647A1 · Jun 29, 2023
References Cited (132)
US 7519964B1 · Islam et al. · 2009 [cited by applicant]
US 7712102B2 · Herington et al. · 2010 [cited by applicant]
US 7760641B2 · Gilfix · 2010 [cited by applicant]
US 7900206B1 · Joshi et al. · 2011 [cited by applicant]
US 7904910B2 · Romero · 2011 [cited by applicant]
US 7975115B2 · Wayda et al. · 2011 [cited by applicant]
US 8392564B1 · Czajkowski et al. · 2013 [cited by applicant]
US 8495472B1 · Magerramov et al. · 2013 [cited by applicant]
US 8504797B2 · Mimatsu · 2013 [cited by applicant]
US 8706914B2 · Duchesneau · 2014 [cited by applicant]
US 8793344B2 · Manivel et al. · 2014 [cited by applicant]
US 8822155B2 · Sukumar et al. · 2014 [cited by applicant]
US 8918478B2 · Ozzie et al. · 2014 [cited by applicant]
US 8930536B2 · Jackson · 2015 [cited by applicant]
US 9026658B2 · Xu et al. · 2015 [cited by applicant]
US 9086919B2 · Iyer et al. · 2015 [cited by applicant]
US 9256467B1 · Singh et al. · 2016 [cited by applicant]
US 9275063B1 · Natanzon · 2016 [cited by applicant]
US 9280678B2 · Redberg · 2016 [cited by applicant]
US 9300536B2 · Agarwala et al. · 2016 [cited by applicant]
US 9395922B2 · Nishikido et al. · 2016 [cited by applicant]
US 9507676B2 · Fitzpatrick et al. · 2016 [cited by applicant]
US 9552299B2 · Stalzer · 2017 [cited by applicant]
US 9571567B2 · Shu et al. · 2017 [cited by applicant]
US 9740403B2 · Storer et al. · 2017 [cited by applicant]
US 9766992B2 · Wipfel et al. · 2017 [cited by applicant]
US 9811387B2 · Baughman et al. · 2017 [cited by applicant]
US 9848041B2 · Einkauf et al. · 2017 [cited by applicant]
US 9864874B1 · Shanbhag et al. · 2018 [cited by applicant]
US 9942351B2 · Bhat et al. · 2018 [cited by applicant]
US 9954953B2 · Baughman et al. · 2018 [cited by applicant]
US 10015106B1 · Florissi et al. · 2018 [cited by applicant]
US 10025673B1 · Maccanti et al. · 2018 [cited by applicant]
US 10027758B2 · Baughman et al. · 2018 [cited by applicant]
US 10055239B2 · Adogla et al. · 2018 [cited by applicant]
US 10102356B1 · Sahin et al. · 2018 [cited by applicant]
US 10153941B2 · Dion et al. · 2018 [cited by applicant]
US 10185495B2 · Katsuki · 2019 [cited by applicant]
US 10187454B2 · Sengodan et al. · 2019 [cited by applicant]
US 10225335B2 · Fu et al. · 2019 [cited by applicant]
US 10277668B1 · Florissi · 2019 [cited by applicant]
US 10305747B2 · Shahab et al. · 2019 [cited by applicant]
US 10324639B2 · Seo · 2019 [cited by applicant]
US 10348822B2 · Phan et al. · 2019 [cited by applicant]
US 10382530B2 · Baughman et al. · 2019 [cited by applicant]
US 10469585B2 · Zhao et al. · 2019 [cited by applicant]
US 10567406B2 · Astigarraga et al. · 2020 [cited by applicant]
US 10594619B2 · Kasso et al. · 2020 [cited by applicant]
US 10664264B2 · Garvey et al. · 2020 [cited by applicant]
US 10705883B2 · Wen et al. · 2020 [cited by applicant]
US 10733029B2 · Kumar Shimoga Manjunatha et al. · 2020 [cited by applicant]
US 10749940B2 · Baughman et al. · 2020 [cited by applicant]
US 10778597B1 · Tan et al. · 2020 [cited by applicant]
US 10791138B1 · Siddiqui et al. · 2020 [cited by applicant]
US 10810088B1 · Gu et al. · 2020 [cited by applicant]
US 10841152B1 · Humphreys · 2020 [cited by applicant]
US 10846137B2 · Vallala et al. · 2020 [cited by applicant]
US 10868742B2 · Chitalia et al. · 2020 [cited by applicant]
US 10877683B2 · Wu et al. · 2020 [cited by applicant]
US 10887380B2 · Pahwa et al. · 2021 [cited by applicant]
US 10893097B1 · Liu et al. · 2021 [cited by applicant]
US 10904303B2 · Patel et al. · 2021 [cited by applicant]
US 10909003B2 · Neichev · 2021 [cited by applicant]
US 10922284B1 · Venkatasubramanian et al. · 2021 [cited by applicant]
US 10924535B2 · Du et al. · 2021 [cited by applicant]
US 10963349B2 · Dhamdhere et al. · 2021 [cited by applicant]
US 10990912B2 · Dravneek et al. · 2021 [cited by applicant]
US 11036521B2 · Ferrell et al. · 2021 [cited by applicant]
US 11086974B2 · Iliofotou et al. · 2021 [cited by applicant]
US 11102281B2 · Chatt et al. · 2021 [cited by applicant]
US 11102282B2 · Chatt et al. · 2021 [cited by applicant]
US 11106810B2 · Natanzon et al. · 2021 [cited by applicant]
US 20060026599A1 · Herington et al. · 2006 [cited by applicant]
US 20070180451A1 · Ryan et al. · 2007 [cited by applicant]
US 20110035540A1 · Fitzgerald et al. · 2011 [cited by applicant]
US 20130219022A1 · Manivel et al. · 2013 [cited by applicant]
US 20130297770A1 · Zhang · 2013 [cited by applicant]
US 20150113150A1 · Jackson · 2015 [cited by applicant]
US 20160173640A1 · Bhat et al. · 2016 [cited by applicant]
US 20160179636A1 · Fitzpatrick · 2016 [cited by examiner]
US 20160203060A1 · Singh · 2016 [cited by examiner]
US 20160323377A1 · Einkauf et al. · 2016 [cited by applicant]
US 20170099352A1 · Baughman et al. · 2017 [cited by applicant]
US 20170235603A1 · Baughman et al. · 2017 [cited by applicant]
US 20170235616A1 · Baughman et al. · 2017 [cited by applicant]
US 20170237804A1 · Baughman et al. · 2017 [cited by applicant]
US 20170257432A1 · Fu et al. · 2017 [cited by applicant]
US 20170339008A1 · Dion et al. · 2017 [cited by applicant]
US 20170373940A1 · Shahab et al. · 2017 [cited by applicant]
US 20180046446A1 · Turovsky et al. · 2018 [cited by applicant]
US 20180048532A1 · Poort et al. · 2018 [cited by applicant]
US 20180219794A1 · Patil et al. · 2018 [cited by applicant]
US 20180287902A1 · Chitalia et al. · 2018 [cited by applicant]
US 20180293152A1 · Sherafat Kazemzadeh et al. · 2018 [cited by applicant]
US 20190102155A1 · Garvey et al. · 2019 [cited by applicant]
US 20190238625A1 · Baughman et al. · 2019 [cited by applicant]
US 20190253490A1 · Du et al. · 2019 [cited by applicant]
US 20190324786A1 · Ranjan et al. · 2019 [cited by applicant]
US 20190327271A1 · Saxena et al. · 2019 [cited by applicant]
US 20190384649A1 · Wen et al. · 2019 [cited by applicant]
US 20200073764A1 · Neichev · 2020 [cited by applicant]
US 20200104202A1 · Stupak et al. · 2020 [cited by applicant]
US 20200133689A1 · Ferrell et al. · 2020 [cited by applicant]
US 20200136920A1 · Doshi et al. · 2020 [cited by applicant]
US 20200151023A1 · Bai et al. · 2020 [cited by applicant]
US 20200186441A1 · Fitzer et al. · 2020 [cited by applicant]
US 20200192692A1 · Ghag et al. · 2020 [cited by applicant]
US 20200265134A1 · Cristina et al. · 2020 [cited by applicant]
US 20200267071A1 · Ghag · 2020 [cited by applicant]
US 20200267210A1 · Chatt et al. · 2020 [cited by applicant]
US 20200267212A1 · Chatt et al. · 2020 [cited by applicant]
US 20200301751A1 · Wen et al. · 2020 [cited by applicant]
US 20200314173A1 · Pahwa et al. · 2020 [cited by applicant]
US 20200341789A1 · Ghag et al. · 2020 [cited by applicant]
US 20200379794A1 · Kim · 2020 [cited by applicant]
US 20210037087A1 · Liu et al. · 2021 [cited by applicant]
US 20210084048A1 · Kannan et al. · 2021 [cited by applicant]
US 20210099515A1 · Liu et al. · 2021 [cited by applicant]
US 20210160138A1 · Barnes et al. · 2021 [cited by applicant]
US 20210200814A1 · Tal et al. · 2021 [cited by applicant]
US 20210240539A1 · Murthy et al. · 2021 [cited by applicant]
US 20210281662A1 · Mathur · 2021 [cited by applicant]
US 20210286611A1 · Garvey et al. · 2021 [cited by applicant]
US 20210377184A1 · Singh et al. · 2021 [cited by applicant]
US 20220191248A1 · Pieczul et al. · 2022 [cited by applicant]
US 20230035310A1 · Denneman et al. · 2023 [cited by applicant]
US 20230111775A1 · Lee et al. · 2023 [cited by applicant]
US 20230126168A1 · Birsan et al. · 2023 [cited by applicant]
US 20230205599A1 · Pathak · 2023 [cited by examiner]
Hwang, et al., “RAID-x: A New Distributed Disk Array for I/O-Centric Cluster Computing”, Proceedings the Ninth International Symposium on High-Performance Distributed Computing, 2000, pp. 279-286. [cited by applicant]
Stalzer, et al., “FlashBlades: System Architecture and Applications”, Proceedings of the 2nd Workshop on Architectures and Systems for Big Data, Association for Computing Machinery, New York, NY, 2012, pp. 10-14. [cited by applicant]
Storer, et al., “Pergamum: Replacing Tape with Energy Efficient, Reliable, Disc-Based Archival Storage”, FAST'08: Proceedings of the 6th USENIX Conference on File and Storage Technologies, Feb. 2008, Article No. 1, pp. … [cited by applicant]