Allocating files in a file system integrated with a raid disk sub-system
First Claim
1. A method for storing blocks of data in a RAID array, said RAID array comprising a plurality of storage devices, the method comprising:
- write allocating storage space in said RAID array for blocks of data to be stored in said RAID array by recording write allocated storage space, said storage space comprising storage blocks in said plurality of storage devices, wherein said write allocating includes;
selecting a block of data that is to be stored in said RAID array for which storage space has not yet been allocated;
determining whether said block of data is in a different file or in a different read ahead segment from a preceding block of data for which storage space in a first storage device of said plurality of storage devices in said RAID array has been write allocated;
selecting storage space in a second storage device of said plurality of storage devices in said RAID array if said block of data is in a different file or is in a different read ahead segment from said preceding block, and selecting storage space in said first storage device if said block of data is not in a different file or in a different read ahead segment from said preceding block;
assigning a write allocated storage block in said storage space to said block of data by associating an indicator of said write allocated storage block with said block of data;
adding said block of data to a list of writable blocks of data for said storage device;
determining whether all blocks of data to be stored in said RAID array have been processed, and repeating said selecting, said assigning and said adding if all of said blocks of data to be stored in said RAID array have not been processed; and
writing all unwritten blocks of data in said list of writable blocks of data to storage space allocated for said blocks of data if all of said blocks of data to be stored in said RAID array have been processed.
0 Assignments
0 Petitions
Accused Products
Abstract
Integrating a file system with a RAID array that exports precise information about the arrangement of data blocks in the RAID subsystem. The present invention uses separate current-write location (CWL) pointers for each disk in the disk array where the pointers simply advance through the disks as writes occur. The present invention writes on the disk with the lowest CWL pointer. A new disk is chosen only when the algorithm starts allocating space for a new file, or when it has allocated N blocks on the same disk for a single file. A sufficient number of blocks are defined as all the buffers in a chunk of N sequential buffers in a file. The result is that CWL pointers are never more than N blocks apart on different disks, and large files have N consecutive blocks on the same disk.
-
Citations
18 Claims
-
1. A method for storing blocks of data in a RAID array, said RAID array comprising a plurality of storage devices, the method comprising:
-
write allocating storage space in said RAID array for blocks of data to be stored in said RAID array by recording write allocated storage space, said storage space comprising storage blocks in said plurality of storage devices, wherein said write allocating includes; selecting a block of data that is to be stored in said RAID array for which storage space has not yet been allocated; determining whether said block of data is in a different file or in a different read ahead segment from a preceding block of data for which storage space in a first storage device of said plurality of storage devices in said RAID array has been write allocated; selecting storage space in a second storage device of said plurality of storage devices in said RAID array if said block of data is in a different file or is in a different read ahead segment from said preceding block, and selecting storage space in said first storage device if said block of data is not in a different file or in a different read ahead segment from said preceding block; assigning a write allocated storage block in said storage space to said block of data by associating an indicator of said write allocated storage block with said block of data; adding said block of data to a list of writable blocks of data for said storage device; determining whether all blocks of data to be stored in said RAID array have been processed, and repeating said selecting, said assigning and said adding if all of said blocks of data to be stored in said RAID array have not been processed; and writing all unwritten blocks of data in said list of writable blocks of data to storage space allocated for said blocks of data if all of said blocks of data to be stored in said RAID array have been processed. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A system comprising:
-
a processor; memory that stores instructions and data; a RAID storage array comprising a plurality of storage devices; and a cache; wherein said processor executes said instructions to control said system to perform a process which comprises; write allocating storage space in said RAID array for blocks of data to be stored in said RAID array by recording write allocated storage space in a place for recording allocated storage space, said storage space comprising storage blocks in said plurality of storage devices, said write allocating includes; selecting a block of data that is to be stored in said RAID array for which storage space has not yet been allocated; determining whether said block of data is in a different file or in a different read ahead segment from a preceding block of data for which storage space in a first storage device of said plurality of storage devices in said RAID array has been write allocated; selecting storage space in a second storage device of said plurality of storage devices in said RAID array if said block of data is in a different file or is in a different read ahead segment from said preceding block and selecting storage space in said first storage device when said block of data is not in a first different file or in a different read ahead segment from said preceding block, said storage space comprising a write allocated storage block for said block of data; assigning said write allocated storage block for said block of data to said block of data by associating an indicator of said write allocated storage block with said block of data; adding said block of data to a list of writable blocks of data for said storage device of said plurality of storage devices in said RAID array; determining whether all blocks of data to be stored in said RAID array have been processed, and repeating said selecting, said assigning and said adding if all of said blocks of data to be stored in said RAID array have not been processed; and writing all unwritten blocks of data in said list of writable blocks of data to storage space allocated for said blocks of data if all of said blocks of data to be stored in said RAID array have been processed; wherein said storage blocks are stored in said cache. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A memory storing information including instructions, the instructions executable by a processor to cause the processor to perform a process of storing blocks of data in a RAID array, said RAID array comprising a plurality of storage devices, the process including:
-
write allocating storage space in said RAID array for blocks of data to be stored in said RAID array by recording write allocated storage space in a place for recording allocated storage space, said storage space comprising storage blocks in said plurality of storage devices, wherein said write allocating includes; selecting a block of data that is to be stored in said RAID array for which storage space has not yet been allocated; determining whether said block of data is in a different file or in a different read ahead segment from a preceding block of data for which storage space in a first storage device of said plurality of storage devices in said RAID array has been write allocated; selecting storage space in a second storage device of said plurality of storage devices in said RAID array if said block of data is in a different file or is in a different read ahead segment from said preceding block, and selecting storage space in said first storage device when said block of data is not in a first different file or in a different read ahead segment from said preceding block, said storage space comprising a write allocated storage block for said block of data; assigning said write allocated storage block for said block of data to said block of data by associating an indicator of said write allocated storage block with said block of data; adding said block of data to a list of writable blocks of data for said storage device of said plurality of storage devices in said RAID array; determining whether all blocks of data to be stored in said RAID array have been processed, and repeating said selecting, said assigning and said adding if all of said blocks of data to be stored in said RAID array have not been processed; and writing all unwritten blocks of data in said list of writable blocks of data to storage space allocated for said blocks of data when all of said blocks of data to be stored in said RAID array have been processed; wherein said storage blocks are stored in a cache. - View Dependent Claims (14, 15, 16, 17, 18)
-
Specification