IP Library › Granted Patent US 7,818,475
Granted Patent B2
US 7,818,475 · App. 10/837,240 · Granted Oct 19, 2010

Storage switch mirrored write sequence count management

Assignee: EMC Corporation
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 7,818,475
App. No.
10/837,240
Filed
Apr 30, 2004
Granted
Oct 19, 2010
Kind
B2
Art Unit
2181
USPC
710/33
Abstract

A storage switch is disclosed that facilitates mirroring of data. For example, a target is mirrored when an identical (or almost identical) copy of the data is stored in two or more separate physical data stores. Because the various data stores may not be homogenous, they may provide for different burst sizes. To accommodate the different burst sizes, the switch provides different sequence counts for data packets sent to the different data stores that store the mirrored data.

Claims (98)

1. A method for writing to a mirrored target, comprising:

receiving a data unit at an ingress processing unit and multi-casting a message to a first egress processing unit and a second egress processing unit, said message including said data unit and sequencing information;

providing said data unit with a first sequence number to a first data store comprising said first egress processing unit calculating said first sequence number based on sequencing information and a transfer size for said first data store, and said first egress processing unit sending said first sequence number and said data unit to said first data store; and

providing said data unit with a second sequence number to a second data store comprising said second egress processing unit calculating a second sequence number based on sequencing information and a transfer size for said second data store, and said second egress processing unit sending said second sequence number and said data unit to said second data store, wherein

said receiving a data unit further includes said ingress processing unit determining a value of a running frame count at a beginning of a sequence from an initiator;

said sequencing information includes said value of said running frame count at said beginning of said sequence from said initiator and a data frame sequence count for said data unit;

said first egress processing unit calculating said first sequence number includes said first egress processing unit calculating a value of said running frame count at a beginning of a sequence for said first data store;

said first sequence number is calculated by said first egress processing unit by subtracting said value of said running frame count at said beginning of said sequence for said first data store from said value of said running frame count at said beginning of said sequence from said initiator and adding said data frame sequence count for said data unit;

said second egress processing unit calculating said second sequence number includes said second egress processing unit calculating a value of said running count at a beginning of a sequence for said second data store; and

said second sequence number is calculated by said second egress processing unit by subtracting said value of said running count at said beginning of said sequence for said second data store from said value of said running frame count at said beginning of said sequence from said initiator and adding said data frame sequence count for said data unit.

2. A method according to claim 1 , wherein:

said data unit is in a Fiber Channel IU.

3. A method according to claim 1 wherein:

said data unit is in an iSCSI PDU.

4. A method according to claim 1 , further comprising:

sending a write command to said first data store and said second data store;

receiving a first reply from said first data store and a second reply from said second data store, said first reply indicates a first transfer size, said second reply indicates a second transfer size; and

informing said initiator of said first transfer size or said second transfer size, whichever is smaller.

5. A method according to claim 1 , wherein:

said calculating said first sequence number comprises subtracting a value of a running frame count at a beginning of a sequence for said first data store from a value of said running frame count at a beginning of a sequence from an initiator and adding a data frame sequence count for said data unit; and

said calculating said second sequence number comprises subtracting a value of a running frame count at a beginning of a sequence for said second data store from said value of said running frame count at said beginning of said sequence from said initiator and adding said data frame sequence count for said data unit.

6. A method according to claim 1 , wherein:

said steps of receiving a data unit, providing said data unit with a first sequence number and providing said data unit with a second sequence number are performed without buffering said data unit.

7. A method according to claim 1 , wherein:

said steps of receiving a data unit, providing said data unit with a first sequence number and providing said data unit with a second sequence number process said data unit at wire speed.

8. A method for writing to a mirrored target, comprising:

receiving a data unit for storage on a first data store, said first data store mirrors a second data store;

receiving sequencing information for said data unit;

determining a sequence number for said data unit relative to said first data store, said sequence number is based on said sequencing information; and

providing said sequence number and said data unit to said first data store, wherein said determining a sequence number includes subtracting a value of a running frame count at a beginning of a sequence for said first data store from a value of said running frame count at a beginning of a sequence from an initiator and adding a data frame sequence count for said data unit.

9. A method according to claim 8 , wherein:

said sequencing information includes said running frame count, said value of said running frame count at said beginning of said sequence from said initiator and said data frame sequence count for said data unit.

10. A method according to claim 9 , wherein:

said steps of receiving a data unit, determining a sequence number and providing said sequence number are performed by an egress processing unit associated with said first data store;

said data unit is received from an ingress processing unit;

said data frame sequence count for said data unit was received at said ingress processing unit from said initiator and sent to said egress processing unit with said data unit; and

said value of said running frame count at said beginning of said sequence from said initiator is calculated by said ingress processing unit.

11. A method according to claim 8 , wherein:

said steps of receiving a data unit, determining a sequence number and providing said sequence number are performed without buffering said data unit.

12. A method according to claim 8 , wherein:

said steps of receiving a data unit, determining a sequence number and providing said sequence number process said data unit at wire speed.

13. A method according to claim 8 , further comprising:

sending a write command to said first data store and said second data store;

receiving a first reply from said first data store and a second reply from said second data store, said first reply indicates a first transfer size, said second reply indicates a second transfer size; and

informing said initiator of a burst size, said burst size is said first transfer size or said second transfer size, whichever is smaller;

wherein said data frame sequence count for said data unit is based on said burst size.

14. One or more processor readable storage devices having processor readable code embodied on said one or more processor readable storage devices, said processor readable code for programming one or more processors to perform a method comprising:

receiving a data unit for storage on a first data store, said first data store mirrors a second data store;

receiving sequencing information for said data unit;

determining a sequence number for said data unit relative to said first data store, said sequence number is based on said sequencing information; and

providing said sequence number and said data unit to said first data store, wherein said determining a sequence number includes subtracting a value of a running frame count at a beginning of a sequence for said first data store from a value of said running frame count at a beginning of a sequence from an initiator and adding a data frame sequence count for said data unit.

15. One or more processor readable storage devices according to claim 14 , wherein:

said steps of receiving a data unit, determining a sequence number and providing said sequence number are performed without buffering said data unit; and

said steps of receiving a data unit, determining a sequence number and providing said sequence number process said data unit at wire speed.

16. An apparatus for writing to a mirrored target, comprising:

one or more ports;

one or more processing units in communication with said one or more ports, said one or more processing units receive data units that are to be stored in multiple data stores and translate sequence counts in said data units differently for different data stores accepting different transfer sizes, said one or more processing units translate sequence counts by updating an initial sequence count with one or more new sequence counts; and

said one or more new sequence counts for a particular data unit are calculated by subtracting a value of a running frame count at a beginning of a sequence for a particular data store from a value of said running frame count at a beginning of a sequence from an initiator and adding a data frame sequence count for said particular data unit.

17. An apparatus according to claim 16 , wherein:

said one or more processing units include an ingress processing unit, a first egress processing unit and a second egress processing unit;

said ingress processing unit is in communication with an initiator, said first ingress processing unit receives a first data unit from said initiator and multi-casts a message with said first data unit to said first egress processing unit and said second egress processing unit, said message includes a running frame count, said message includes a value of said running frame count at a beginning of a sequence from said initiator and a sequence count from said initiator;

said first egress processing unit is in communication with a first data store, said first egress processing unit translates said sequence count from said initiator by subtracting a value of said running frame count at a beginning of a sequence for a first data store from said value of said running frame count at said beginning of said sequence from an initiator and adding said sequence count from said initiator; and

said second egress processing unit is in communication with a second data store, said second egress processing unit translates said sequence count from said initiator by subtracting a value of said running frame count at a beginning of a sequence for a second data store from said value of said running frame count at said beginning of said sequence from an initiator and adding said sequence count from said initiator.

18. An apparatus according to claim 17 , wherein:

said first egress processing unit sends a first write command to said first data store;

said second egress processing unit sends said first write command to said second data store;

said first data store replies to said first write command with a first transfer size;

said second data store replies to said first write command with a second transfer size; and

said ingress processing unit receives said first transfer size and said second transfer size and returns whichever is smaller to said initiator so that said initiator can use said smaller of said first transfer size and said second transfer size to create said sequence count from said initiator.

19. An apparatus according to claim 16 , wherein:

said data units can be within packets in accordance with an iSCSI protocol or in accordance with a Fiber Channel protocol.

20. An apparatus according to claim 16 , wherein:

said one or more processing units are capable of processing said data units without buffering.

21. An apparatus according to claim 16 , wherein:

said one or more processing units are capable of processing said data units at wire speed.

22. An apparatus for writing to a mirrored target, comprising:

one or more processing units; and

one or more ports in communication with said one or more processing units, said one or more port are in communication with an initiator and at least two storage devices;

said one or more processing units receive a data unit from said initiator, calculate a first sequence number for said data unit with respect to a first storage device of said at least two storage devices and calculate a second sequence number for said data unit with respect to a second storage device of said at least two storage devices; and

said data unit and said first sequence number are provided to said first storage device via said one or more ports, and said data unit and said second sequence number are provided to said second storage device via said one or more ports, wherein said first sequence number is calculated by subtracting a value of a running frame count at a beginning of a sequence for said first data store from a value of said running frame count at a beginning of a sequence from said initiator and adding a data frame sequence count for said particular data unit; and

said second sequence number is calculated by subtracting a value of a running frame count at a beginning of a sequence for said second data store from said value of said running frame count at a beginning of a sequence from said initiator and adding said data frame sequence count for said particular data unit.

23. An apparatus according to claim 22 , wherein:

said one or more processing units include an ingress processing unit, a first egress processing unit and a second egress processing unit;

said ingress processing unit is in communication with an initiator, said first ingress processing unit receives a first data unit from said initiator and multi-casts a message with said first data unit to said first egress processing unit and said second egress processing unit, said message includes a running frame count, a value of said running frame count at a beginning of a sequence from said initiator and a sequence count from said initiator;

said first egress processing unit calculates said first sequence number by subtracting a value of said running frame count at a beginning of a sequence for said first data store from said value of said running frame count at said beginning of said sequence from said initiator and adding said sequence count from said initiator; and

said second egress processing unit calculates said second sequence number by subtracting a value of said running frame count at a beginning of a sequence for said second data store from said value of said running frame count at said beginning of said sequence from said initiator and adding said sequence count from said initiator.

24. An apparatus according to claim 23 , wherein:

said first egress processing unit sends a first write command to said first data store;

said second egress processing unit sends said first write command to said second data store;

said first data store replies to said first write command with a first transfer size;

said second data store replies to said first write command with a second transfer size; and

said ingress processing unit receives said first transfer size and said second transfer size and returns whichever is smaller to said initiator.

25. An apparatus according to claim 22 , wherein:

said data unit can be within a packet in accordance with an iSCSI protocol or in accordance with a Fiber Channel protocol.

26. An apparatus according to claim 22 , wherein:

said one or more processing units are capable of processing said data unit without buffering.

27. An apparatus according to claim 22 , wherein:

said one or more processing units are capable of processing said data unit at wire speed.

Assignments (11)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2005
From: MARANTI NETWORKS, INC.
To: EMC CORPORATION
Reel/Frame 016327/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2004
From: FREY, ROBERT TOWER; ZHANG, CHAO
To: MARANTI NETWORKS, INC.
Reel/Frame 015649/0899 →
Continuity (1)
Related Publication 20060036821A1 · Feb 16, 2006