Allocation strategies for data storage applications
View Patent ↗A physical storage volume can be partitioned into a plurality of master blocks of an equal master block size. Each master block of the plurality of master blocks can be allocated for storage of a single storage page size of a plurality of predefined storage page sizes provided for storage of data by a data storage application. A received page size can be determined for a storage page designated by the data storage application for storage on the physical storage volume, and the storage page can be stored in a free block of a master block of the plurality of master blocks having the single page size equivalent to the received page size. Related methods, systems, and articles of manufacture are also disclosed.
1. A computer program product comprising a non-transitory machine-readable medium storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising:
partitioning a physical storage volume into a plurality of master blocks of an equal master block size;
allocating each master block, of the plurality of master blocks, for storage of a plurality of pages each having a single storage page size, of a plurality of predefined, different storage page sizes provided for storage of data by a data storage application;
determining a page size of a received storage page designated by the data storage application for storage on the physical storage volume; and
storing the received storage page in a block of a master block, of the plurality of master blocks, having the allocated single page size equivalent to the determined page size.
2. A computer program product as in claim 1 , wherein the data storage application comprises at least one of a database application and a network-attached storage system.
3. A computer program product as in claim 1 , wherein the equal master block size is an even multiple of each of the plurality of predefined storage page sizes.
4. A computer program product as in claim 1 , wherein the operations further comprise generating a global block index of the block to a master block index and a page size.
5. A computer program product as in claim 4 , wherein the operations further comprise generating a local master block index identifying a block location within a master block of the plurality of master blocks, the local master block index being defined as the global block index divided by a number of blocks in the master block.
6. A computer program product as in claim 1 , wherein the operations further comprise changing the single storage page size for which a master block of the plurality of master blocks is allocated to a second single storage page size after all blocks in the master block have been deallocated.
7. A system comprising:
computer hardware configured to perform operations comprising:
partitioning a physical storage volume into a plurality of master blocks of an equal master block size;
allocating each master block, of the plurality of master blocks, for storage of a plurality of pages each having a single storage page size, of a plurality of predefined, different storage page sizes provided for storage of data by a data storage application;
determining a page size of a received storage page designated by the data storage application for storage on the physical storage volume; and
storing the received storage page in a block of a master block, of the plurality of master blocks, having the allocated single page size equivalent to the determined page size.
8. A system as in claim 7 , wherein the data storage application comprises at least one of a database application and a network-attached storage system.
9. A system as in claim 7 , wherein the equal master block size is an even multiple of each of the plurality of predefined storage page sizes.
10. A computer program product as in claim 1 , wherein the operations further comprise generating a global block index of the block to a master block index and a page size.
11. A system as in claim 10 , wherein the operations further comprise generating a local master block index identifying a block location within a master block of the plurality of master blocks, the local master block index being defined as the global block index divided by a number of blocks in the master block.
12. A system as in claim 7 , wherein the operations further comprise changing the single storage page size for which a master block of the plurality of master blocks is allocated to a second single storage page size after all blocks in the master block have been deallocated.
13. A computer-implemented method comprising
partitioning a physical storage volume into a plurality of master blocks of an equal master block size;
allocating each master block, of the plurality of master blocks, for storage of a plurality of pages each having a single storage page size, of a plurality of predefined, different storage page sizes provided for storage of data by a data storage application;
determining a page size of a received storage page designated by the data storage application for storage on the physical storage volume; and
storing the received storage page in a block of a master block, of the plurality of master blocks, having the single page size equivalent to the determined page size.
14. A computer-implemented method as in claim 13 , wherein the data storage application comprises at least one of a database application and a network-attached storage system.
15. A computer-implemented method as in claim 13 , wherein the equal master block size is an even multiple of each of the plurality of predefined storage page sizes.
16. A computer-implemented method as in claim 13 , further comprising generating a global block index of the block to a master block index and a page size.
17. A computer-implemented method as in claim 16 , further comprising generating a local master block index identifying a block location within a master block of the plurality of master blocks, the local master block index being defined as the global block index divided by a number of blocks in the master block.
18. A computer-implemented method as in claim 13 , further comprising changing the single storage page size for which a master block of the plurality of master blocks is allocated to a second single storage page size after all blocks in the master block have been deallocated.
19. A computer-implemented method as in claim 13 , wherein at least one of the partitioning, the allocating, the determining, and the storing is performed by at least one programmable processor.
20. A computer program product as in claim 1 , wherein the storing the received storage page in the master block having the allocated equivalent single page size, reduces the fragmentation of the physical storage volume.