Media Aware Distributed Data Layout
A storage system includes a plurality of vdisks, with each vdisk containing a plurality of storage segments, and each segment providing a specific class of service (CoS). Each vdisk stores files with data and meta data distributed among its storage segments. A storage system includes a memory having multiple classes of service. The system includes an interface for storing a file as blocks of data associated with a class of service in the memory. The interface chooses the class of service for a block on a block by block basis.
1 . A file system for storing a file comprising:
a plurality of vdisks, each vdisk having a plurality of non-transient storage segments, each segment providing a specific class of service (CoS) for storage, each vdisk having a plurality of inodes stored in an inode table, each inode describing a file in the vdisk, each inode of each vdisk storing data on one or more of a plurality of segments, each segment having a different class of service for storage; and
a controller having a plurality of physical processors which store data of a file in an inode of a vdisk, in one or more segments of that vdisk, each processor serving one or more of the vdisks.
2 . A system as described in claim 1 including at least one directory storing mappings of file names to (vdisk, inode) pairs.
3 . A system as described in claim 2 wherein each inode has one or more back pointers to all of the directory entries pointing to the inode.
4 . A system as described in claim 3 wherein one of the vdisks is a root vdisk.
5 . A system as described in claim 4 wherein one of the inodes in the root vdisk is a root inode of the file system.
6 . A system as described in claim 5 wherein each segment has a plurality of chunks.
7 . A system as described in claim 6 , including an interface to initiate a file system consistency check on an individual vdisk, triggered by an indication of an inconsistency in a specific vdisk.
8 . A system as described in claim 1 wherein each segment has a plurality of chunks.
9 . A system as described in claim 8 wherein each segment has chunks added to it dynamically over time.
10 . A method for storing a file comprising the steps of:
receiving the file at an interface; and
storing data of the file with a controller in multiple segments of one vdisk of a plurality of vdisks, each vdisk having a plurality of inodes, at least two of the Inodes of one vdisk storing data in different segments, each segment having a different class of service for storage.
11 . A method for updating a directory comprising the steps of:
receiving a request to delete a file, directory or symbolic link at an interface;
creating a first POT entry at a first vdisk server;
sending an operation to a second vdisk server;
creating a second POT entry at the second vdisk server;
sending a response from the second vdisk server to the first vdisk server; and
freeing the first and second POT entries after the completion of the operation.
12 . A method for updating a directory comprising the steps of:
receiving an object to create a normal file, directory or symbolic link at an interface;
creating a first POT entry at the first vdisk server;
selecting a second vdisk for a new object based upon a predetermined policy;
sending an operation to a second vdisk server;
creating a second POT entry at the second server;
sending a response from the second vdisk server to the first vdisk server; and
freeing the first and second POT entries sometime after the completion of the operation.