IP Library › Granted Patent US 12,405,738
Granted Patent B2
US 12,405,738 · App. 17/847,300 · Granted Sep 2, 2025

Synchronized mapping for cache-aware load balancing across multiple host devices

Inventors: Peniel Charles (Bangalore, IN); Venkatesh Doddamane Nagaraj (Bangalore, IN); Amit Pundalik Anchi (Bangalore, IN)
Assignee: Dell Products L.P.
G06F3/064G06F3/0604G06F3/0635G06F3/0659G06F3/0683G06F12/0815
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,405,738
App. No.
17/847,300
Granted
Sep 2, 2025
Kind
B2
Abstract

An apparatus in one embodiment comprises at least one processing device configured to store a mapping for each of a plurality of logical storage devices of a storage system, the mapping for a given one of the logical storage devices assigning different ranges of logical block addresses of that logical storage device to respective different cache entities of the storage system. The at least one processing device is further configured to receive at least one mapping-related communication from at least one of first and second host devices that have shared access to the given logical storage device, to modify the stored mapping for the given logical storage device based at least in part on the at least one received mapping-related communication, and to send at least one mapping-related communication to at least one of the first and second host devices based at least in part on the modified stored mapping.

Claims (52)

1. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

wherein the at least one processing device is configured:

to store a mapping for each of a plurality of logical storage devices of a storage system, the mapping for a given one of the logical storage devices assigning different ranges of logical block addresses of the given logical storage device to respective different cache entities of the storage system;

to receive at least one mapping-related communication from at least one of first and second host devices that have shared access to the given logical storage device;

to modify the stored mapping for the given logical storage device based at least in part on the at least one received mapping-related communication; and

to send at least one mapping-related communication to at least one of the first and second host devices based at least in part on the modified stored mapping;

wherein receiving at least one mapping-related communication from at least one of first and second host devices that have shared access to the given logical storage device comprises receiving a notification from the first host device indicating that the first host device has generated a new mapping entry;

wherein modifying of the stored mapping for the given logical storage device is controlled based at least in part on results of performance of a consistency check between the new mapping entry and one or more existing mapping entries of the stored mapping; and

wherein the stored mapping is modified to include the new mapping entry responsive to a determination that there is no inconsistency between the new mapping entry and any corresponding existing mapping entry of the stored mapping.

2. The apparatus of claim 1 wherein the at least one processing device comprises an orchestrator device that is separate from the first and second host devices.

3. The apparatus of claim 2 wherein the orchestrator device comprises a multi-path input-output management station coupled to each of the first and second host devices and configured to interact with first and second multi-path input-output drivers of the respective first and second host devices.

4. The apparatus of claim 1 wherein one or more of the cache entities are each assigned multiple distinct ones of the ranges of logical block addresses.

5. The apparatus of claim 1 wherein each of first and second host devices separately stores a version of the mapping for the given logical storage device and accesses its corresponding stored version of the mapping in conjunction with selecting paths for delivery of input-output operations to the storage system.

6. The apparatus of claim 5 wherein selecting paths for delivery of respective input-output operations in a given one of the first and second host devices comprises:

accessing the stored version of the mapping for the given logical storage device; and

for each of at least a subset of the input-output operations:

identifying a particular one of the cache entities based at least in part on a logical block address of the input-output operation and the stored version of the mapping; and

selecting a particular one of a plurality of paths for delivery of the input-output operation to the storage system based at least in part on the identified cache entity.

7. The apparatus of claim 1 wherein the cache entities of the storage system comprise respective components of the storage system that have respective local caches associated therewith.

8. The apparatus of claim 7 wherein the cache entities of the storage system comprise respective storage controllers of the storage system with each such storage controller having a different local cache associated therewith.

9. The apparatus of claim 1 wherein the at least one processing device is further configured:

to determine whether or not the new mapping entry is consistent with a corresponding existing mapping entry of the stored mapping;

responsive to an affirmative determination, to send the mapping-related communication to the first host device with an instruction for the first host device to utilize the new mapping entry;

responsive to a negative determination, to send the mapping-related communication to the first host device with an instruction for the first host device to utilize the corresponding existing mapping entry instead of the new mapping entry.

10. The apparatus of claim 1 wherein receiving at least one mapping-related communication from at least one of first and second host devices that have shared access to the given logical storage device comprises receiving a notification from the first host device indicating that all paths from the first host device to a particular cache entity have failed.

11. The apparatus of claim 10 wherein the at least one processing device is further configured:

to determine whether or not at least a threshold number of host devices have each reported that all paths from that host device to the particular cache entity have failed;

responsive to an affirmative determination, to send the mapping-related communication to each of the first host device and one or more other host devices with an instruction for that host device to clear its mapping entry for the particular cache entity and to create a new mapping entry for the particular cache entity;

responsive to a negative determination, to send the mapping-related communication to at least the first host device with an instruction for the first host device to perform one or more tests for detection of a transient failure.

12. The apparatus of claim 1 wherein the receiving, modifying and sending are repeated to ensure that the host devices each maintain a consistent stored version of the mapping for the given logical storage device.

13. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code, when executed by at least one processing device comprising a processor coupled to a memory, causes the at least one processing device:

to store a mapping for each of a plurality of logical storage devices of a storage system, the mapping for a given one of the logical storage devices assigning different ranges of logical block addresses of the given logical storage device to respective different cache entities of the storage system;

to receive at least one mapping-related communication from at least one of first and second host devices that have shared access to the given logical storage device;

to modify the stored mapping for the given logical storage device based at least in part on the at least one received mapping-related communication; and

to send at least one mapping-related communication to at least one of the first and second host devices based at least in part on the modified stored mapping;

wherein receiving at least one mapping-related communication from at least one of first and second host devices that have shared access to the given logical storage device comprises receiving a notification from the first host device indicating that the first host device has generated a new mapping entry;

wherein modifying of the stored mapping for the given logical storage device is controlled based at least in part on results of performance of a consistency check between the new mapping entry and one or more existing mapping entries of the stored mapping; and

wherein the stored mapping is modified to include the new mapping entry responsive to a determination that there is no inconsistency between the new mapping entry and any corresponding existing mapping entry of the stored mapping.

14. The computer program product of claim 13 wherein the at least one processing device comprises an orchestrator device that is separate from the first and second host devices.

15. The computer program product of claim 14 wherein the orchestrator device comprises a multi-path input-output management station coupled to each of the first and second host devices and configured to interact with first and second multi-path input-output drivers of the respective first and second host devices.

16. A method comprising:

to store a mapping for each of a plurality of logical storage devices of a storage system, the mapping for a given one of the logical storage devices assigning different ranges of logical block addresses of the given logical storage device to respective different cache entities of the storage system;

to receive at least one mapping-related communication from at least one of first and second host devices that have shared access to the given logical storage device;

to modify the stored mapping for the given logical storage device based at least in part on the at least one received mapping-related communication; and

to send at least one mapping-related communication to at least one of the first and second host devices based at least in part on the modified stored mapping;

wherein receiving at least one mapping-related communication from at least one of first and second host devices that have shared access to the given logical storage device comprises receiving a notification from the first host device indicating that the first host device has generated a new mapping entry;

wherein modifying of the stored mapping for the given logical storage device is controlled based at least in part on results of performance of a consistency check between the new mapping entry and one or more existing mapping entries of the stored mapping; and

wherein the stored mapping is modified to include the new mapping entry responsive to a determination that there is no inconsistency between the new mapping entry and any corresponding existing mapping entry of the stored mapping.

17. The method of claim 16 wherein the method is performed by at least one processing device that comprises an orchestrator device that is separate from the first and second host devices.

18. The method of claim 17 wherein the orchestrator device comprises a multi-path input-output management station coupled to each of the first and second host devices and configured to interact with first and second multi-path input-output drivers of the respective first and second host devices.

19. The method of claim 16 wherein receiving at least one mapping-related communication from at least one of first and second host devices that have shared access to the given logical storage device comprises receiving a notification from the first host device indicating that all paths from the first host device to a particular cache entity have failed.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2022
From: CHARLES, PENIEL; NAGARAJ, VENKATESH DODDAMANE; ANCHI, AMIT PUNDALIK
To: DELL PRODUCTS L.P.
Reel/Frame 060285/0943 →
Continuity (1)
Related Publication 20230418492A1 · Dec 28, 2023
References Cited (136)
US 6567397B1 · Campana, Jr. et al. · 2003 [cited by applicant]
US 6687746B1 · Shuster et al. · 2004 [cited by applicant]
US 6697875B1 · Wilson · 2004 [cited by applicant]
US 7275103B1 · Thrasher et al. · 2007 [cited by applicant]
US 7454437B1 · Lavallee et al. · 2008 [cited by applicant]
US 7617292B2 · Moore et al. · 2009 [cited by applicant]
US 7668981B1 · Nagineni et al. · 2010 [cited by applicant]
US 7770053B1 · Bappe et al. · 2010 [cited by applicant]
US 7809912B1 · Raizen et al. · 2010 [cited by applicant]
US 7818428B1 · Lavallee et al. · 2010 [cited by applicant]
US 7890664B1 · Tao et al. · 2011 [cited by applicant]
US 7904681B1 · Bappe et al. · 2011 [cited by applicant]
US 7925872B2 · Lai et al. · 2011 [cited by applicant]
US 8250256B2 · Ghosalkar et al. · 2012 [cited by applicant]
US 8285825B1 · Nagaraj et al. · 2012 [cited by applicant]
US 8825919B1 · Lim et al. · 2014 [cited by applicant]
US 8832334B2 · Okita · 2014 [cited by applicant]
US 8874746B1 · Gonzalez · 2014 [cited by applicant]
US 8972657B1 · Armangau et al. · 2015 [cited by applicant]
US 9026694B1 · Davidson et al. · 2015 [cited by applicant]
US 9201803B1 · Derbeko et al. · 2015 [cited by applicant]
US 9400611B1 · Raizen · 2016 [cited by applicant]
US 9430368B1 · Derbeko et al. · 2016 [cited by applicant]
US 9594780B1 · Esposito et al. · 2017 [cited by applicant]
US 9647933B1 · Tawri et al. · 2017 [cited by applicant]
US 9672160B1 · Derbeko et al. · 2017 [cited by applicant]
US 9733846B1 · Wigmore et al. · 2017 [cited by applicant]
US 9778852B1 · Marshak et al. · 2017 [cited by applicant]
US 10289325B1 · Bono · 2019 [cited by applicant]
US 10353714B1 · Gokam et al. · 2019 [cited by applicant]
US 10439878B1 · Tah et al. · 2019 [cited by applicant]
US 10474367B1 · Mallick et al. · 2019 [cited by applicant]
US 10476960B1 · Rao et al. · 2019 [cited by applicant]
US 10521369B1 · Mallick et al. · 2019 [cited by applicant]
US 10606496B1 · Mallick et al. · 2020 [cited by applicant]
US 10637917B2 · Mallick et al. · 2020 [cited by applicant]
US 10652206B1 · Pusalkar et al. · 2020 [cited by applicant]
US 10754572B2 · Kumar et al. · 2020 [cited by applicant]
US 10757189B2 · Mallick et al. · 2020 [cited by applicant]
US 10764371B2 · Rao et al. · 2020 [cited by applicant]
US 10789006B1 · Gokam et al. · 2020 [cited by applicant]
US 10817181B2 · Mallick et al. · 2020 [cited by applicant]
US 10838648B2 · Sharma et al. · 2020 [cited by applicant]
US 10880217B2 · Mallick et al. · 2020 [cited by applicant]
US 10884935B1 · Doddaiah · 2021 [cited by applicant]
US 10911402B2 · Pusalkar et al. · 2021 [cited by applicant]
US 11086785B2 · Anchi et al. · 2021 [cited by applicant]
US 11151071B1 · Patel · 2021 [cited by examiner]
US 20020023151A1 · Iwatani · 2002 [cited by applicant]
US 20020103923A1 · Cherian et al. · 2002 [cited by applicant]
US 20040010563A1 · Forte et al. · 2004 [cited by applicant]
US 20060026346A1 · Kadoiri et al. · 2006 [cited by applicant]
US 20060277383A1 · Hayden et al. · 2006 [cited by applicant]
US 20070174849A1 · Cheung et al. · 2007 [cited by applicant]
US 20080043973A1 · Lai et al. · 2008 [cited by applicant]
US 20080201458A1 · Salli · 2008 [cited by applicant]
US 20080301332A1 · Butler et al. · 2008 [cited by applicant]
US 20090210634A1 · Tsuruta · 2009 [cited by examiner]
US 20090259749A1 · Barrett et al. · 2009 [cited by applicant]
US 20090292834A1 · Neemidge et al. · 2009 [cited by applicant]
US 20100251267A1 · Zwisler et al. · 2010 [cited by applicant]
US 20100313063A1 · Venkataraja et al. · 2010 [cited by applicant]
US 20110029730A1 · Durocher et al. · 2011 [cited by applicant]
US 20110197027A1 · Balasubramanian et al. · 2011 [cited by applicant]
US 20110296230A1 · Chen et al. · 2011 [cited by applicant]
US 20120102369A1 · Hiltunen et al. · 2012 [cited by applicant]
US 20120246345A1 · Contreras et al. · 2012 [cited by applicant]
US 20130117766A1 · Bax et al. · 2013 [cited by applicant]
US 20130290571A1 · Rizzo et al. · 2013 [cited by applicant]
US 20130339551A1 · Flanagan et al. · 2013 [cited by applicant]
US 20140105068A1 · Xu · 2014 [cited by applicant]
US 20150169233A1 · Anderson et al. · 2015 [cited by applicant]
US 20150222705A1 · Stephens · 2015 [cited by applicant]
US 20150242134A1 · Takada et al. · 2015 [cited by applicant]
US 20160055101A1 · Gerhart · 2016 [cited by examiner]
US 20160092136A1 · Balakrishnan et al. · 2016 [cited by applicant]
US 20160092364A1 · Feng et al. · 2016 [cited by applicant]
US 20160117113A1 · Li et al. · 2016 [cited by applicant]
US 20160335003A1 · Ahmed et al. · 2016 [cited by applicant]
US 20170235507A1 · Sinha et al. · 2017 [cited by applicant]
US 20180189635A1 · Olarig et al. · 2018 [cited by applicant]
US 20180253256A1 · Bharadwaj · 2018 [cited by applicant]
US 20180317101A1 · Koue · 2018 [cited by applicant]
US 20190095299A1 · Liu et al. · 2019 [cited by applicant]
US 20190108888A1 · Sarkar et al. · 2019 [cited by applicant]
US 20190334987A1 · Mallick et al. · 2019 [cited by applicant]
US 20200021653A1 · Rao et al. · 2020 [cited by applicant]
US 20200097203A1 · Mallick et al. · 2020 [cited by applicant]
US 20200106698A1 · Rao et al. · 2020 [cited by applicant]
US 20200110552A1 · Kumar et al. · 2020 [cited by applicant]
US 20200112608A1 · Patel et al. · 2020 [cited by applicant]
US 20200160918A1 · Byun · 2020 [cited by examiner]
US 20200192588A1 · Kumar et al. · 2020 [cited by applicant]
US 20200204475A1 · Mallick et al. · 2020 [cited by applicant]
US 20200204495A1 · Mallick et al. · 2020 [cited by applicant]
US 20200213274A1 · Pusalkar et al. · 2020 [cited by applicant]
US 20200241890A1 · Mallick et al. · 2020 [cited by applicant]
US 20200314218A1 · Kumar et al. · 2020 [cited by applicant]
US 20200348860A1 · Mallick et al. · 2020 [cited by applicant]
US 20200348861A1 · Marappan et al. · 2020 [cited by applicant]
US 20200348869A1 · Gokam · 2020 [cited by applicant]
US 20200349094A1 · Smith et al. · 2020 [cited by applicant]
US 20200363985A1 · Gokam et al. · 2020 [cited by applicant]
US 20200372401A1 · Mallick et al. · 2020 [cited by applicant]
US 20210019054A1 · Anchi et al. · 2021 [cited by applicant]
US 20210026551A1 · Tidke et al. · 2021 [cited by applicant]
US 20210026650A1 · Rao et al. · 2021 [cited by applicant]
US 20210103506A1 · Marappan · 2021 [cited by examiner]
US 20210157502A1 · Rao et al. · 2021 [cited by applicant]
US 20210181965A1 · Anchi et al. · 2021 [cited by applicant]
CN 103677927B · 2017 [cited by applicant]
EP 1117028A2 · 2001 [cited by applicant]
EP 2667569A1 · 2013 [cited by applicant]
International Search Report and Written Opinion of PCT/US2019/052549 dated Dec. 4, 2019, 13 pages. [cited by applicant]
International Search Report and Written Opinion of PCT/US2019/053204 dated Dec. 16, 2019, 40 pages. [cited by applicant]
International Search Report and Written Opinion of PCT/US2019/053473 dated Dec. 19, 2019, 16 pages. [cited by applicant]
International Search Report and Written Opinion of PCT/US2019/067144 dated May 4, 2020, 26 pages. [cited by applicant]
Kris Piepho, “Dell EMC SC Series Storage: Microsoft Multipath I/O,” Dell EMC Best Practices, Jan. 2017, 57 pages. [cited by applicant]
NVM Express, “NVM Express, Revision 1.3,” NVM Express, May 1, 2017, 282 pages. [cited by applicant]
VMware, “Multipathing Configuration for Software iSCSI Using Port Binding,” Technical White Paper, Apr. 25, 2012, 15 pages. [cited by applicant]
Dell EMC, “Dell EMC SC Series Storage: Microsoft Multipath I/O,” Dell EMC Engineering, Jun. 2017, 56 pages. [cited by applicant]
EMC, “EMC PowerPath and PowerPath/VE Family for Windows,” Installation and Administration Guide, Oct. 2018, 102 pages. [cited by applicant]
EMC, “EMC Powerpath Load Balancing and Failover”, Comparison with native MPIO operating system solutions, Feb. 2011, 28 pages. [cited by applicant]
Dell EMC, “PowerMax OS,” Dell EMC PowerMax Family Product Guide, May 2019, 192 pages. [cited by applicant]
Dell EMC, “Dell EMC SC Series Storage and Microsoft Multipath I/O,” CML 1004, Jul. 2018, 36 pages. [cited by applicant]
Dell EMC, “Dell EMC Unity: Virtualization Integration,” Technical White Paper, Oct. 2019, 39 pages. [cited by applicant]
Dell EMC, “Dell EMC PowerMax: iSCSI Implementation for Dell EMC Storage Arrays Running PowerMaxOS,” Technical White Paper, Sep. 2019, 35 pages. [cited by applicant]
VMware Knowledge Base, “8GB Emulex HBAs May Not React to RSCN Events Properly on Older Firmware Versions,” https://kb.vmware.com/s/article/2005235, Sep. 20, 2013, 1 page. [cited by applicant]
NetApp Knowledge Base, “SAN Host Does Not Failover I/O to Alternate Paths When One or More Paths Are Removed and an RSCN Is Not Received,” https://kb.netapp.com/app/answers/answer_view/a_id/1074454/˜/san-host-does-not-f… [cited by applicant]
RedHat, “Device-Mapper-Multipath on RHEL5 Experiences Excessive Delay in Detecting a Lost Path from a Storage Failure that Produces No RSCN or Loop/Link Error,” https://access.redhat.com/solutions/23576, Mar. 21, 2014, … [cited by applicant]
E. Goggin et al., “Linux Multipathing,” Proceedings of the Linux Symposium, vol. 1, Jul. 2005, pp. 147-167. [cited by applicant]
K. Ueda et al., “Request-based Device-mapper Multipath and Dynamic Load Balancing,” Proceedings of the Linux Symposium, vol. 2, Jun. 2007, pp. 235-243. [cited by applicant]
B. Tulman, “In-Band and out-of-Band Network Management,” http://www.learncomputer.com/in-band-out-of-band-network-management/, May 18, 2010, 2 pages. [cited by applicant]
NVM Express, “NVM Express Base Specification, Revision 2.0b,” NVM Express, Jan. 6, 2022, 455 pages. [cited by applicant]
U.S. Appl. No. 17/383,672 filed in the name of Amit Pundalik Anchi et al. filed Jul. 23, 2021, and entitled “Multi-Path Layer Configured to Access Storage-Side Performance Metrics for Load Balancing Policy Control.” [cited by applicant]
U.S. Appl. No. 17/503,562 filed in the name of Amit Pundalik Anchi et al. filed Oct. 18, 2021, and entitled “Dynamic Chunk Size Adjustment for Cache-Aware Load Balancing.” [cited by applicant]