Method and system for distributing commands to targets
View Patent ↗Embodiments of systems and methods for routing commands to a distributed RAID system are disclosed. Specifically, embodiments may route a command to an appropriate data bank in a distributed RAID system, where each data bank has a set of associated storage media and executes a similar distributed RAID application. The distributed RAID applications on each of the data banks coordinate among themselves to distribute and control data flow associated with implementing a level of RAID in conjunction with data stored on the associated storage media of the data banks.
1. A system for implementing distributed RAID, comprising:
a distributed RAID system comprising a plurality of data bank computers, each data bank coupled to each host and each of the other plurality of data banks, each data bank including:
a processor; and
a data store;
a first computer readable medium comprising instructions executable for:
implementing commands in conjunction with a volume, wherein the volume comprises a set of segments, and the set of segments of the volume are stored on the plurality of data banks according to a data bank order, where the data bank order is a permutation of the plurality of data banks and redundancy data corresponding to a RAID level implemented in conjunction with the volume is stored on each of the plurality of data banks, such that for each segment of the volume a corresponding redundancy segment comprising the redundancy data associated with that segment of the volume does not reside on the same data bank as the corresponding segment of the volume; and
a set of hosts, each host comprising:
a processor;
a second computer readable medium, comprising instructions executable for:
obtaining a first command corresponding to a first segment of the volume;
determining a first data bank of the plurality of data banks, wherein the first data bank corresponds to the first segment; and
routing the command to the first data bank.
2. The system of claim 1 , wherein determining the first data bank is done by a device specific module (DSM).
3. The system of claim 2 , wherein the DSM comprises a table comprising the permutation of the plurality of data banks.
4. Claim 3 , wherein the second computer readable medium further comprises instructions for updating the table by obtaining the table from one of the plurality of data banks.
5. A method for determining a data bank of a distributed RAID system, the method implemented on a host computer having a processor, comprising:
obtaining a first command corresponding to a first segment of a volume implemented on a distributed RAID system comprising a plurality of data banks wherein the volume comprises a set of segments, and the set of segments of the volume are stored on the plurality of data banks according to a data bank order, where the data bank order is a permutation of the plurality of data banks and redundancy data corresponding to a RAID level implemented in conjunction with the volume is stored on each of the plurality of data banks, such that for each segment of the volume a corresponding redundancy segment comprising the redundancy data associated with that segment of the volume does not reside on the same data bank as the corresponding segment of the volume,
determining a first data bank of the plurality of data banks, wherein the first data bank corresponds to the first segment; and
routing the command to the first data bank.
6. The method of claim 5 , wherein determining the first data bank is done by a device specific module (DSM).
7. The method of claim 6 , wherein the DSM comprises a table comprising the permutation of the plurality of data banks.
8. The method of claim 7 , further comprising updating the table by obtaining the table from one of the plurality of data banks.
9. A method for routing commands from a host computer to a distributed RAID system implemented in one or more data bank computers, comprising:
obtaining a first command corresponding to a first segment of a volume implemented on a distributed RAID system comprising a plurality of data banks wherein the volume comprises a set of segments, and the set of segments of the volume are stored on the plurality of data banks according to a data bank order, where the data bank order is a permutation of the plurality of data banks and redundancy data corresponding to a RAID level implemented in conjunction with the volume is stored on each of the plurality of data banks, such that for each segment of the volume a corresponding redundancy segment comprising the redundancy data associated with that segment of the volume does not reside on the same data bank as the corresponding segment of the volume,
determining a first data bank of the plurality of data banks, wherein the first data bank corresponds to the first segment; and
routing the command to the first data bank;
receiving the command corresponding to a first segment of a volume from a host; and
executing the first command with respect to the first segment, wherein the first command is executed on the first data bank.
10. The method of claim 9 , wherein determining the first data bank is done by a device specific module (DSM).
11. The method of claim 10 , wherein the DSM comprises a table comprising the permutation of the plurality of data banks.
12. The method of claim 11 , further comprising updating the table by obtaining the table from one of the plurality of data banks.
13. A computer readable medium for determining a data bank of a distributed RAID system, the computer readable medium comprising instructions executable for:
obtaining a first command corresponding to a first segment of a volume implemented on a distributed RAID system comprising a plurality of data banks wherein the volume comprises a set of segments, and the set of segments of the volume are stored on the plurality of data banks according to a data bank order, where the data bank order is a permutation of the plurality of data banks and redundancy data corresponding to a RAID level implemented in conjunction with the volume is stored on each of the plurality of data banks, such that for each segment of the volume a corresponding redundancy segment comprising the redundancy data associated with that segment of the volume does not reside on the same data bank as the corresponding segment of the volume,
determining a first data bank of the plurality of data banks, wherein the first data bank corresponds to the first segment; and
routing the command to the first data bank.
14. The computer readable medium of claim 13 , wherein determining the first data bank is done by a device specific module (DSM).
15. The computer readable medium of claim 14 , wherein the DSM comprises a table comprising the permutation of the plurality of data banks.
16. The computer readable medium of claim 15 , wherein the instructions are further executable for updating the table by obtaining the table from one of the plurality of data banks.
17. A computer readable medium for routing commands from a host computer to a distributed RAID system implemented in one or more data bank computers, the computer readable medium comprising instructions executable for:
obtaining a first command corresponding to a first segment of a volume implemented on a distributed RAID system comprising a plurality of data banks wherein the volume comprises a set of segments, and the set of segments of the volume are stored on the plurality of data banks according to a data bank order, where the data bank order is a permutation of the plurality of data banks and redundancy data corresponding to a RAID level implemented in conjunction with the volume is stored on each of the plurality of data banks, such that for each segment of the volume a corresponding redundancy segment comprising the redundancy data associated with that segment of the volume does not reside on the same data bank as the corresponding segment of the volume,
determining a first data bank of the plurality of data banks, wherein the first data bank corresponds to the first segment; and
routing the command to the first data bank;
receiving the command corresponding to a first segment of a volume from a host; and
executing the first command with respect to the first segment, wherein the first command is executed on the first data bank.
18. The method of claim 17 , wherein determining the first data bank is done by a device specific module (DSM).
19. The method of claim 18 , wherein the DSM comprises a table comprising the permutation of the plurality of data banks.
20. The method of claim 19 , the instructions further executable for updating the table by obtaining the table from one of the plurality of data banks.