Continuous media file server for cold restriping following capacity change by repositioning data blocks in the multiple data servers
First Claim
1. In a continuous media file server having multiple data servers with each data server supporting at least one storage disk, wherein data files are distributed across the data servers so that blocks of the data files are stored on each of the storage disks according to a present striping layout, a method for configuring the continuous media file server following a change in storage capacity, comprising the following steps:
- determining a new striping layout of the data files across the storage disks which accounts for the change in storage capacity;
creating a list specifying movement of data from present locations on the storage disks conforming to the present striping layout to new locations on the storage disks conforming to the new striping layout;
distributing the list to the data servers; and
executing the list, at the data servers, to move the data from the present locations to the new locations.
2 Assignments
0 Petitions
Accused Products
Abstract
A continuous media file server has a controller connected to multiple data servers. Each data server supports at least one storage disk. Data files are distributed across the data servers so that data blocks of the data files are stored on each of the storage disks according to a present striping layout. The file server employs declustered mirroring techniques in which data is redundantly copied and stored on other disks and servers to guard against component failure. In the event that the storage capacity of the media file server is changed (i.e., by adding or removing one or more storage disks), the continuous media file server is restriped in a three-phase process. During the first phase, the controller determines a new striping layout of the data files across the storage disks which accounts for the capacity change. The controller then creates an ordered work list describing the data block moves that a corresponding data server needs to make to convert from the present striping layout to the new striping layout. The controller distributes the list to the data servers. The order of the latter two phases depends on whether disks are being added or removed. In one of the two final phases, the data servers reorganize the redundancy data for the new disk configuration. In the other of the two final phases, the data servers execute their respective work lists and communicate with one another to move the data blocks to the appropriate disks in conformance with the new striping layout.
124 Citations
67 Claims
-
1. In a continuous media file server having multiple data servers with each data server supporting at least one storage disk, wherein data files are distributed across the data servers so that blocks of the data files are stored on each of the storage disks according to a present striping layout, a method for configuring the continuous media file server following a change in storage capacity, comprising the following steps:
-
determining a new striping layout of the data files across the storage disks which accounts for the change in storage capacity; creating a list specifying movement of data from present locations on the storage disks conforming to the present striping layout to new locations on the storage disks conforming to the new striping layout; distributing the list to the data servers; and executing the list, at the data servers, to move the data from the present locations to the new locations. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. In a continuous media file server having a controller and multiple data servers with each data server supporting at least one storage disk, wherein data files are distributed across the data servers so that data blocks of the data files are stored on each of the storage disks, a method for configuring the continuous media file server following a change in storage capacity, comprising the following steps:
-
determining a new striping layout of the data files across the storage disks which accounts for the change in storage capacity; creating a list with entries that assign the data blocks to destination blocks on destination disks where the data blocks are to be moved according to the new striping layout, individual list entries identifying a source block and a source disk where the data block presently resides as well as the destination block and the destination disk; deriving chains of data block moves based on the list, each of the chains beginning with a destination block that is initially free prior to movement of any data blocks in the chain and ending with a source block that is finally free after movement of the data blocks in the chain; detecting any cycles of data block moves within the list, each of the cycles beginning with a destination block and ending with a source block that is identical to the destination block; constructing work lists for corresponding ones of the storage disks, the work lists containing individual links of the data block movement chains for performance by the respective data servers according to sequence of the links within the chains, at least some of the work lists further containing one or more of any said detected cycles; distributing the work lists to the corresponding data servers; for each list entry, performing in parallel at the data servers the following steps; reading a particular data block from the source disk into a source data server responsible for the source disk; sending a write request from the source data server to a destination data server, the destination data server supporting the destination disk; determining, at the destination data server, whether the destination block is ready to be written to; and if the destination block is ready to be written to, transferring the particular data block from the source data server to the destination data server and writing the particular data block to the destination block on the destination disk. - View Dependent Claims (22, 23, 24, 25, 26, 27)
-
-
28. In a continuous media file server having a controller and multiple data servers with each data server supporting at least one storage disk, wherein data files are distributed across the data servers so that data blocks of the data files are stored on each of the storage disks, a method for implementing a new storage configuration following a change in storage capacity, comprising the following steps:
-
determining a new striping layout of the data files across the storage disks which accounts for the change in storage capacity; creating multiple lists for corresponding ones of the storage disks, each list having entries that specify movement of the data blocks from source blocks on source disk to destination blocks on destination disks where the data blocks are to be moved according to the new striping layout; and ordering the entries on the lists to dictate an order in which the data servers are to move the data blocks. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35)
-
-
36. In a continuous media file server having a controller and multiple data servers with each data server supporting at least one storage disk, wherein data files are distributed across the data servers so that data blocks of the data files are stored on each of the storage disks, a method for operating each data server during reconfiguration of the continuous media file server following a change in storage capacity, comprising the following steps:
receiving a list from the controller, the list having entries that assign the data blocks to destination blocks on destination disks where the data blocks are to be moved, the entries identifying a source block and a source disk where the data block presently resides as well as the destination block and the destination disk; for each entry on the list, reading a particular data block from the source disk; sending a write request to a destination data server which supports the destination disk; and in an event that the destination data server is ready to receive the data block, transferring the particular data block to the destination data server. - View Dependent Claims (37, 38, 39, 40, 41, 42)
-
43. In a continuous media file server having a controller and multiple data servers with each data server supporting at least one storage disk, wherein data files are distributed across the data servers so that data blocks of the data files are stored on each of the storage disks, a method for providing fault tolerance in an event of system failure during reconfiguration of the continuous media file server following a change in storage capacity, comprising the following steps:
-
constructing work lists for corresponding ones of the storage disks, the work lists specifying movement of data blocks from present locations on source disk to new locations on destination disks; communicating among the data servers to transfer in parallel the data blocks from the source disks to the destination disks; transferring the data blocks in an order specified in the work lists from the source disks; maintaining first pointers to the source disks indicating which data blocks on the respective source disks were last transferred; logging events indicating when the data blocks are transferred to the destination blocks; and maintaining second pointers to the source disks indicating which data blocks have been logged as being transferred. - View Dependent Claims (44)
-
-
45. A continuous media file server, comprising:
-
multiple data servers, each data server supporting at least one storage disk, wherein data files are distributed across the data servers so that data blocks of the data files are stored on each of the storage disks according to a present striping layout; a controller coupled to the data servers; in an event that storage capacity of the media file server is changed, the controller being configured to determine a new striping layout of the data files across the storage disks which accounts for the change in storage capacity and to create a list specifying movement of data blocks from present locations on the storage disks conforming to the present striping layout to new locations on the storage disks conforming to the new striping layout; and the data servers operating in parallel to execute the list to move the data blocks from the present locations to the new locations. - View Dependent Claims (46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62)
-
-
63. A distributed control system for a continuous media file server, the continuous media file server having a controller and multiple data servers with each data server supporting at least one storage disk, wherein data files are distributed across the data servers so that data blocks of the data files are stored on each of the storage disks according to a present striping layout, the control system comprising:
-
a processor at the controller of the media file server, the controller-based processor being programmed to determine a new striping layout of the data files across the storage disks to account for a change in storage capacity and to create a list specifying movement of data blocks from present locations on the storage disks conforming to the present striping layout to new locations on the storage disks conforming to the new striping layout; and a processor at each of the data servers, the data server-based processors being programmed to execute the list to move the data blocks from the present locations to the new locations. - View Dependent Claims (64, 65)
-
-
66. A computer-readable medium having computer-executable instructions for performing the following steps:
-
determining a new striping layout for distributing data files across multiple storage disks in a continuous media file server which has experienced a change in storage capacity, the new striping layout ensuring that data blocks of the data files are stored on each of the storage disks; creating an executable list having entries that assign the data blocks to destination blocks on destination disks where the data blocks are to be moved according to the new striping layout; and ordering the entries on the list to dictate an order in which the data blocks are to be moved.
-
-
67. A computer-readable medium having computer-executable instructions for performing the following steps:
-
receiving a list describing movement of data blocks from data files from a present striping layout to a new striping layout, the present and new striping layouts prescribing distributed placement of the data blocks across multiple storage disks in a manner that the data blocks from each data file are stored on each of the storage disks, the list having entries identifying source blocks on source disks where the data blocks presently reside and destination blocks on destination disks where the data blocks are to be moved; for each entry on the list, reading a particular data block from the source disk; sending a write request to write the data block to the destination disk; and in an event that the destination disk is ready to receive the particular data block, transferring the particular data block to the destination disk.
-
Specification