Storing information on storage devices having different performance capabilities with a storage system
First Claim
1. A computer-implemented method comprising:
- monitoring which persistent memory blocks, in which a single data file is stored, are involved in one or more I/O operations, wherein the single data file comprises a plurality of extents that are distinct portions;
for extents, of the plurality of extents, that have a corresponding persistent memory block that was involved in an I/O operation, setting a respective access bit to indicate an I/O operation involved that extent;
storing first data from a first extent, of the plurality of extents that are distinct portions of a single data file, in a first persistent storage device;
storing second data from a second extent, of the plurality of extents, in a second persistent storage device; and
generating an access bitmap for the file based on the access bits,wherein the decision of where to store the first and second data is made automatically based, at least in part, on the access bit map.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are described for storing portions of files on different storage devices based on the devices'"'"' respective storage class. For example, different extents from a large file within a system, application, or database may be stored on different storage devices. The storage devices may be part of a single storage system that includes some storage devices that have different performance capabilities. The decision of where, within the storage classes, to store data may be based on the access patterns of the data. Access patterns regarding file extents are tracked using respective access bits, which are set when a memory block associated with an extent is accessed via an I/O operation. In one embodiment, an access bitmap is modified to account for cached blocks of file extents.
-
Citations
12 Claims
-
1. A computer-implemented method comprising:
-
monitoring which persistent memory blocks, in which a single data file is stored, are involved in one or more I/O operations, wherein the single data file comprises a plurality of extents that are distinct portions; for extents, of the plurality of extents, that have a corresponding persistent memory block that was involved in an I/O operation, setting a respective access bit to indicate an I/O operation involved that extent; storing first data from a first extent, of the plurality of extents that are distinct portions of a single data file, in a first persistent storage device; storing second data from a second extent, of the plurality of extents, in a second persistent storage device; and generating an access bitmap for the file based on the access bits, wherein the decision of where to store the first and second data is made automatically based, at least in part, on the access bit map. - View Dependent Claims (2)
-
-
3. A computer-implemented method comprising:
-
associating a first persistent storage device within a storage system with a first storage class by storing data that indicates that the first persistent storage device belongs to the first storage class; associating a second persistent storage device within the storage system with a second storage class by storing data that indicates that the second persistent storage device belongs to the second storage class; wherein the first and second storage classes are based on the respective performance capabilities of at least the first and second persistent storage devices, and wherein the first persistent storage device has different performance capabilities than the second persistent storage device; and storing first data from a first extent, of a plurality of extents that are distinct portions of a single data file, in the first persistent storage device; storing second data from a second extent, of the plurality of extents, in the second persistent storage device; and maintaining a file extent map that indicates primary storage locations for the plurality of extents of said single data file, wherein the decision of where to store the first and second data is made automatically based, at least in part, on the respective storage classes with which the first and second persistent storage devices are associated, and wherein said file extent map indicates that the first persistent storage device serves as primary storage for the first data and said file extent map indicates that the second persistent storage device serves as primary storage for the second data; monitoring which persistent memory blocks in which the file is stored are involved in one or more I/O operations; for extents, of the plurality of extents, that have a corresponding persistent memory block that was involved in an I/O operation, setting a respective access bit to indicate an I/O operation involved that extent; generating an access bitmap for the file based on the access bits; generating a cached extent bitmap to indicate which extents, of the plurality of extents, have at least a portion of corresponding data cached in cache memory; and generating a migration bitmap based on the access bitmap and the cached extent bitmap, to indicate which extents do not have any corresponding persistent memory blocks that were involved in an I/O operation and from which no portion of corresponding data was cached in cache memory. - View Dependent Claims (4)
-
-
5. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to carry out the steps of:
-
associating a first persistent storage device within a storage system with a first storage class by storing data that indicates that the first persistent storage device belongs to the first storage class; associating a second persistent storage device within the storage system with a second storage class by storing data that indicates that the second persistent storage device belongs to the second storage class; wherein the first and second storage classes are based on the respective performance capabilities of at least the first and second persistent storage devices, and wherein the first persistent storage device has different performance capabilities than the second persistent storage device; and storing first data from a first extent, of a plurality of extents that are distinct portions of a single data file, in the first persistent storage device; storing second data from a second extent, of the plurality of extents, in the second persistent storage device; and maintaining a file extent map that indicates primary storage locations for the plurality of extents of said single data file, wherein the decision of where to store the first and second data is made automatically based, at least in part, on the respective storage classes with which the first and second persistent storage devices are associated, and wherein said file extent map indicates that the first persistent storage device serves as primary storage for the first data and said file extent map indicates that the second persistent storage device serves as primary storage for the second data; monitoring which persistent memory blocks in which the file is stored are involved in one or more I/O operations; for extents, of the plurality of extents, that have a corresponding persistent memory block that was involved in an I/O operation, setting a respective access bit to indicate an I/O operation involved that extent; and generating an access bitmap for the file based on the access bits.
-
-
6. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to carry out the steps of:
-
associating a first persistent storage device within a storage system with a first storage class by storing data that indicates that the first persistent storage device belongs to the first storage class; associating a second persistent storage device within the storage system with a second storage class by storing data that indicates that the second persistent storage device belongs to the second storage class; wherein the first and second storage classes are based on the respective performance capabilities of at least the first and second persistent storage devices, and wherein the first persistent storage device has different performance capabilities than the second persistent storage device; and storing first data from a first extent, of a plurality of extents that are distinct portions of a single data file, in the first persistent storage device; storing second data from a second extent, of the plurality of extents, in the second persistent storage device; and maintaining a file extent map that indicates primary storage locations for the plurality of extents of said single data file, wherein the decision of where to store the first and second data is made automatically based, at least in part, on the respective storage classes with which the first and second persistent storage devices are associated, and wherein said file extent map indicates that the first persistent storage device serves as primary storage for the first data and said file extent map indicates that the second persistent storage device serves as primary storage for the second data; monitoring which persistent memory blocks in which the file is stored are involved in one or more I/O operations; for extents, of the plurality of extents, that have a corresponding persistent memory block that was involved in an I/O operation, setting a respective access bit to indicate an I/O operation involved that extent; generating an access bitmap for the file based on the access bits; generating a cached extent bitmap to indicate which extents, of the plurality of extents, have at least a portion of corresponding data cached in cache memory; and generating a migration bitmap based on the access bitmap and the cached extent bitmap, to indicate which extents do not have any corresponding persistent memory blocks that were involved in an I/O operation and from which no portion of corresponding data was cached in cache memory. - View Dependent Claims (7)
-
-
8. A computer-implemented method comprising:
-
monitoring, for a period of time, which persistent memory blocks in which a data container is stored are involved in an I/O operation; for extents, of a plurality of extents associated with the container, that have a corresponding persistent memory block that was involved in an I/O operation during the period of time, setting a respective access bit to indicate an I/O operation involved that extent; generating a first bitmap for the container based on the access bits, to indicate which extents of the plurality of extents were accessed during the period of time; generating a second bitmap to indicate which extents, of the plurality of extents, have at least a portion of corresponding data cached in cache memory; and generating a third bitmap based on the first and second bitmaps, to indicate which extents do not have any corresponding persistent memory blocks that were involved in an I/O operation and from which no portion of corresponding data was cached in cache memory.
-
-
9. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to carry out the steps of:
-
monitoring, for a period of time, which persistent memory blocks in which a data container is stored are involved in an I/O operation; for extents, of a plurality of extents associated with the container, that have a corresponding persistent memory block that was involved in an I/O operation during the period of time, setting a respective access bit to indicate an I/O operation involved that extent; generating a first bitmap for the container based on the access bits, to indicate which extents of the plurality of extents were accessed during the period of time; generating a second bitmap to indicate which extents, of the plurality of extents, have at least a portion of corresponding data cached in cache memory; and generating a third bitmap based on the first and second bitmaps, to indicate which extents do not have any corresponding persistent memory blocks that were involved in an I/O operation and from which no portion of corresponding data was cached in cache memory.
-
-
10. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to carry out the steps of:
-
monitoring which persistent memory blocks, in which a single data file is stored, are involved in one or more I/O operations, wherein the single data file comprises a plurality of extents that are distinct portions; for extents, of the plurality of extents, that have a corresponding persistent memory block that was involved in an I/O operation, setting a respective access bit to indicate an I/O operation involved that extent; storing first data from a first extent, of the plurality of extents that are distinct portions of a single data file, in a first persistent storage device; storing second data from a second extent, of the plurality of extents, in a second persistent storage device; and generating an access bitmap for the file based on the access bits, wherein the decision of where to store the first and second data is made automatically based, at least in part, on the access bit map. - View Dependent Claims (11)
-
-
12. A computer-implemented method comprising:
-
associating a first persistent storage device within a storage system with a first storage class by storing data that indicates that the first persistent storage device belongs to the first storage class; associating a second persistent storage device within the storage system with a second storage class by storing data that indicates that the second persistent storage device belongs to the second storage class; wherein the first and second storage classes are based on the respective performance capabilities of at least the first and second persistent storage devices, and wherein the first persistent storage device has different performance capabilities than the second persistent storage device; and storing first data from a first extent, of a plurality of extents that are distinct portions of a single data file, in the first persistent storage device; storing second data from a second extent, of the plurality of extents, in the second persistent storage device; and maintaining a file extent map that indicates primary storage locations for the plurality of extents of said single data file, wherein the decision of where to store the first and second data is made automatically based, at least in part, on the respective storage classes with which the first and second persistent storage devices are associated, and wherein said file extent map indicates that the first persistent storage device serves as primary storage for the first data and said file extent map indicates that the second persistent storage device serves as primary storage for the second data; monitoring which persistent memory blocks in which the file is stored are involved in one or more I/O operations; for extents, of the plurality of extents, that have a corresponding persistent memory block that was involved in an I/O operation, setting a respective access bit to indicate an I/O operation involved that extent; and generating an access bitmap for the file based on the access bits.
-
Specification