Claims
- 1. A method for use by a switch in a storage network, the method comprising:
receiving, by the switch, a solicitation for a storage service from a device in the storage network; performing, by the switch, the storage service without further involvement from the device, including transmitting any data required to be transmitted as a result of performing the storage service without buffering the data.
- 2. The method of claim 1, wherein performing the storage service further includes performing virtualization of the data without buffering the data.
- 3. The method of claim 1, wherein performing the storage service further includes performing translation of the data from a first protocol to a second protocol without buffering the data.
- 4. The method of claim 3, wherein the first protocol is iSCSI and the second protocol is Fiber Channel.
- 5. The method of claim 3, wherein the first protocol is Fiber Channel and the second protocol is iSCSI.
- 6. The method of claim 1, wherein the storage service is one of local mirroring, mirroring over slow link, snapshot, replication, third party copy, periodic backup, and restore.
- 7. The method of claim 1, wherein:
receiving the solicitation includes receiving the solicitation by a control card in the switch; performing the storage service includes, determining by the control card which one or more of a plurality of linecards in the switch is required to perform the service, passing relevant information from the control card to the determined linecard, and performing the storage service by and under control of the determined linecard.
- 8. The method of claim 1, further including:
indicating that the storage service is complete by the switch to the device.
- 9. The method of claim 1, wherein the device is a server.
- 10. The method of claim 1, wherein the device is a management station.
- 11. The method of claim 1, wherein:
receiving a solicitation includes receiving, by the switch, a mirroring solicitation for a virtual target from the device; and performing the storage service includes:
setting a flowID for the virtual target that indicates a mirrored virtual target having a first member and a second member; receiving a data write command from an initiator to the mirrored virtual target; multicasting the data write command to both members in accordance with the flowID; receiving a ready-to-receive-data indicator from each member, wherein each member specifies an amount of data it can receive, the first member specifying a first amount and the second member specifying a second amount smaller than the first amount; obtaining from the initiator the second amount of data, performing virtualization on the data without buffering the data, and transmitting the data to the first member and the second member.
- 12. The method of claim 11, wherein setting a flowID for the virtual target includes updating a virtual target descriptor with the flowID.
- 13. The method of claim 1, wherein:
receiving a solicitation includes receiving, by the switch, a mirroring solicitation for a virtual target from the device; and performing the storage service includes:
setting a flowID for the virtual target that indicates a mirrored virtual target having a first member and a second member, the second member having a link to the switch that is slow relative to a link between the first member and the switch; receiving a data write command from an initiator to the mirrored target; multicasting the data write command to both members in accordance with the flowID; receiving a ready-to-receive-data indicator from the first member; obtaining from the initiator the write data and transmitting the data to the first member; receiving a ready-to-receive-data indicator from the second member; reading the write data from the first member and transmitting, by the switch, the data to the second member.
- 14. The method of claim 13, wherein setting a flowID for the virtual target includes updating a virtual target descriptor with the flowID.
- 15. The method of claim 13, wherein the second member is remote with respect to the switch and the first member is local with respect to the switch.
- 16. The method of claim 1, wherein:
receiving a solicitation includes receiving, by the switch, a snapshot solicitation for a virtual target, including a first member and a second member, from the device; and performing the storage service includes:
updating a flowID for the virtual target stored in the switch, wherein prior to updating, the flowID indicates that data is to be written to the first member and the second member, and after updating the flowID indicates that data is to be written to the first member and not the second member so that when a data write command is received by the switch it is sent only to the first member in accordance with the flowID; sending an indication to the device that the snapshot solicitation is complete.
- 17. The method of claim 16, wherein updating a flowID for the virtual target includes updating a virtual target descriptor with the flowID.
- 18. The method of claim 1, wherein:
receiving a solicitation includes receiving, by the switch, a replication solicitation from the device to add a member to a virtual target, thereby forming a mirrored virtual target having a first member and a second member; and performing the storage service includes:
updating a flowID stored in the switch for the virtual target, wherein prior to updating the flowID indicates that data is to be written to the first member and not the second member, and after updating the flowID indicates that data is to be written to the first member and the second member so that when a data write command is received by the switch it is multicast to the first member and the second member in accordance with the flowID; reading data from the first member and transmitting that data as write data to the second member; notifying the device that the replication solicitation is complete.
- 19. The method of claim 18, wherein updating a flowID for the virtual target includes updating a virtual target descriptor with the flowID.
- 20. The method of claim 1, wherein:
receiving a solicitation includes receiving, by the switch, a third-party-copy solicitation from the device to copy data in a virtual target to a new medium; and performing the storage service includes:
reading data from the virtual target and transmitting the read data to the new medium as write data; notifying the device that the third-party-copy solicitation is complete.
- 21. A method for use by a switch in a storage network, the method comprising:
receiving, by the switch, a mirroring solicitation for a virtual target from a device in the storage network; setting, by the switch, a flowID for the virtual target that indicates a mirrored virtual target having a first member and a second member; receiving, by the switch, data to be written to the mirrored virtual target; multicasting, by the switch, without buffering, the data to both members for writing in accordance with the flowID.
- 22. The method of claim 21, wherein multicasting the data write command includes adding the flowID to the data write command.
- 23. The method of claim 21, wherein:
the first member is a local member with respect to the switch and the second member is a remote member with respect to the switch; and multicasting the data includes sending the data to the first member for writing, reading the data from the first member, and sending the read data to the remote member for writing.
- 24. The method of claim 23, wherein:
the second member is in communication with the switch over a link that is slow relative to a link between the switch and the first member; and multicasting the data includes sending the data to the first member for writing, reading the data from the first member, and sending the read data to the second member for writing.
- 25. A method for use by a switch in a storage network, the method comprising:
receiving, by the switch, a mirroring solicitation for a virtual target from a device in the storage network; setting, by the switch, a flowID for the virtual target that indicates a mirrored virtual target having a first member and a second member; receiving, by the switch, a data write command from an initiator to the mirrored virtual target; multicasting, by the switch, the data write command to both members in accordance with the flowID; receiving, by the switch, a ready-to-receive-data indicator from each member, wherein each member specifies an amount of data it can receive, the first member specifying a first amount and the second member specifying a second amount smaller than the first amount; obtaining, by the switch, from the initiator the second amount of data, performing virtualization of the data without buffering, and transmitting the second amount of data as write data to the first member and the second member.
- 26. The method of claim 25, wherein multicasting the data write command includes adding the flowID to the data write command.
- 27. A method for use by a switch in a storage network, the method comprising:
receiving, by the switch, a mirroring solicitation for a virtual target from a device in the storage network; setting, by the switch, a flowID for the virtual target that indicates a mirrored virtual target having a first member and a second member, the second member remote relative to the switch and the first member local relative to the switch; receiving, by the switch, a data write command from an initiator to the mirrored target; multicasting, by the switch, the data write command to both members in accordance with the flowID; receiving, by the switch, a ready-to-receive-data indicator from the first member; obtaining, by the switch, from the initiator the write data, performing virtualization on the write data without buffering, and transmitting the write data to the first member; receiving, by the switch, a ready-to-receive-data indicator from the second member; reading, by the switch, the write data from the first member and transmitting, by the switch, the read data to the second member for writing.
- 28. The method of claim 27, wherein:
the step of receiving, by the switch, a data write command to the mirrored target from an initiator includes receiving by a first linecard of the switch, the data write command; the step of sending, by the switch, the data write command to both members includes:
sending the data write command to at least two egress linecards, a first egress linecard corresponding to the first member and a second egress linecard corresponding to the second member; said first egress linecard processing the data write command using a processing unit, the first egress linecard also having a CPU distinct from the processing unit; said second egress linecard processing the data write command using a CPU, the second egress linecard also having a processing unit distinct from the CPU; the first egress linecard and the second egress linecard sending the data write command to the respective corresponding member; the step of receiving, by the switch, a ready-to-receive-data indicator from the first member includes receiving by the first egress linecard a ready-to-receive-data indicator from the first member and transmitting the ready-to-receive-data indicator to the first linecard; the step of obtaining, by the switch, from the initiator the write data and transmitting the data to the first member includes:
sending the ready-to-receive-data indicator from the first linecard to the initiator; receiving write data from the initiator by the first linecard, transmitting the data to the first egress linecard, and then transmitting the data by the first egress linecard to the first member; receiving by the egress linecard a write data complete indication and transmitting that indication to the initiator via the first linecard; the step of receiving, by the switch, a ready-to-receive-data indicator from the second member includes receiving by the second egress linecard a ready-to-receive-data indicator from the second member; and the step of reading, by the switch, the write data from the first member and transmitting, by the switch, the read data to the second member for writing includes reading by the second egress linecard the write data from the first member and transmitting by the second egress linecard the data to the second member.
- 29. A method for use by a switch in a storage network, the method comprising:
writing data to a first member of a mirrored virtual target; reading data from the first member; writing the data read from the first member to a second member of a mirrored virtual target, wherein the second member has a slow link relative to the first member.
- 30. The method of claim 29, wherein the second member is remote and the first member is local.
- 31. A method for use by a switch in a storage network, the method comprising:
receiving, by the switch, a snapshot solicitation from a device in a storage network for a mirrored virtual target, including a first member and a second member; updating, by the switch, a flowID for the virtual target stored in the switch, wherein prior to updating the flowID indicates that data is to be written to the first member and the second member, and after updating the flowID indicates that data is to be written to the first member and not the second member so that when a data write command is received by the switch it is sent only to the first member in accordance with the flowID; sending an indication to the device that the snapshot solicitation is complete.
- 32. The method of claim 31, wherein:
the step of receiving, by the switch, a snapshot solicitation from a device includes receiving the solicitation by a control card in the switch; the step of updating includes includes informing, by the control card, a linecard of the solicitation and updating, by the linecard, the flowID in a descriptor of the virtual target stored on the linecard and notifying the control card that the flowID has been updated on the linecard; the step of sending includes sending, by the control card, the indication.
- 33. The method of claim 31, wherein:
the snapshot solicitation is for a periodic snapshot; the step of updating includes scheduling the periodic snapshot.
- 34. The method of claim 33, further including performing a periodic snapshot, wherein scheduling the periodic snapshot includes establishing a set number of chronological snapshot targets, and wherein upon performing a periodic snapshot, data in the last chronological snapshot target is replaced by data in the newest chronological snapshot target.
- 35. A method for use by a switch in a storage network, the method comprising:
receiving, by the switch, a replication solicitation to add a member to a virtual target from a device in the storage network, thereby forming a mirrored virtual target having a first member and a second member; updating, by the switch, a flowID in a descriptor for the virtual target stored in the switch, wherein prior to updating the flowID indicates that data is to be written to the first member and not the second member, and after updating the flowID indicates that data is to be written to the first member and the second member so that when a data write command is received by the switch it is multicast to the first member and the second member in accordance with the flowID; reading, by the switch, data from the first member and writing, by the switch, the data to the second member without buffering the data; notifying the device that the replication solicitation is complete.
- 36. The method of claim 35, wherein:
the step of receiving, by the switch, a replication solicitation from a device includes receiving the solicitation by a control card in the switch; the step of updating includes informing, by the control card, a linecard of the solicitation and updating, by the linecard, the flowID in a descriptor of the virtual target stored on the linecard; the step of reading, by the switch, data from the first member and writing, by the switch, that data to the second member includes:
sending, by the linecard, a write command to the second member; receiving, by the linecard, a ready-to-receive-data indicator from the second member; sending, by the linecard, a read command to the first member; receiving, by the linecard, data from the first member; sending, by the linecard, the data received from the first member to the second member.
- 37. The method of claim 36, further includes updating any data that was written to the first member during the step of reading, by the switch, data from the first member and writing, by the switch, that data to the second member.
- 38. A method for use by a switch in a storage network, the method comprising:
receiving, by the switch, a third-party-copy solicitation from a device in the storage network to copy the data in a first target to a second target; reading, by the switch, data from the first target and writing, by the switch, the data to the second target without buffering the data; notifying the device that the third-party-copy solicitation is complete.
- 39. The method of claim 38, wherein:
the step of receiving, by the switch, a third-party-copy solicitation includes receiving the solicitation by a control card in the switch to copy the data in a virtual target to a portable medium; the step of reading, by the switch, data from the first target and writing, by the switch, that data to the second target includes:
informing a linecard associated with the portable medium of the solicitation; obtaining data from the virtual target by sending a read command to each physical device associated with the virtual target; writing, by the linecard, the obtained data to the portable medium.
- 40. The method of claim 38, wherein:
the first target is a portable medium and the second target is a virtual target.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority to Provisional Application Serial No. 60/325,704, entitled STORAGE SWITCH FOR STORAGE AREA NETWORK, and filed Sep. 28, 2001, and incorporated by reference herein.
[0002] This application is also related to the following applications, all filed concurrently herewith and all incorporated herein by reference:
[0003] STORAGE SWITCH FOR STORAGE AREA NETWORK, Ser. No. ______ [atty. dkt. No. MARA-01000US1];
[0004] PROTOCOL TRANSLATION IN A STORAGE SYSTEM, Ser. No. ______ [atty. dkt. No. MARA-01001US0];
[0005] PACKET CLASSIFICATION IN A STORAGE SYSTEM, Ser. No. ______ [atty. dkt. No. MARA-01003US0];
[0006] VIRTUALIZATION IN A STORAGE SYSTEM, Ser. No. ______ [atty. dkt. No. MARA-01005US0];
[0007] ENFORCING QUALITY OF SERVICE IN A STORAGE NETWORK, Ser. No. ______ [atty. dkt. No. MARA-01006US0];
[0008] POOLING AND PROVISIONING STORAGE RESOURCES IN A STORAGE NETWORK, Ser. No. ______ [atty. dkt. No. MARA-01007US0]; and
[0009] LOAD BALANCING IN A STORAGE NETWORK, Ser. No. ______ [atty. dkt. No. MARA-01008US0].
Provisional Applications (1)
|
Number |
Date |
Country |
|
60325704 |
Sep 2001 |
US |