Changing page size in an address-based data storage system

Host I/O requests directed to a logical storage volume are initially processed by accessing physical pages of non-volatile data storage having a default page size. An indication of an optimal page size for the logical storage volume is received, and the size of the physical pages of non-volatile data storage accessed to process host I/O requests directed to the logical storage volume is changed from the default page size to the optimal page size for the logical storage volume. The default page size is changed to the optimal page size for the logical storage volume by changing a size of physical pages of non-volatile data storage indicated by a mapping structure that maps logical addresses in an address space the logical storage volume to corresponding physical pages of non-volatile data storage from the default page size to the optimal page size for the logical storage volume.

TECHNICAL FIELD

The disclosed technology relates generally to intelligent data storage systems, and more specifically to technology for dynamically changing the page size used in an address-based data storage system.

BACKGROUND

Data storage systems are arrangements of hardware and software that include non-volatile data storage devices (e.g. electronic flash drives, magnetic disk drives, and/or optical drives) that are used to provide non-volatile storage for processing host I/O (Input/Output) requests (i.e. writes and/or reads) that may be received from one or more hosts (e.g. host computers). The host I/O requests that are processed by a data storage system may include block I/O requests as well as file I/O requests. The host I/O requests indicate host data using logical addresses within the logical address space of one or more logical volumes (“logical storage volumes”) of non-volatile data storage that are contained in and maintained by the data storage system. The data storage system performs various data storage services that organize and secure host data received from host computers on the non-volatile data storage devices of the data storage system.

SUMMARY

The storage processor of a data storage system processes host I/O requests at least in part by issuing backend I/O operations to the non-volatile data storage devices of the data storage system. The backend I/O operations read host data from and/or write host data to the non-volatile data storage devices, as required to process the host I/O requests. The non-volatile data storage devices may be capable of processing I/O operations with a minimum unit of access of 512 bytes, which is the size of a single SCSI (Small Computer System Interface) block. However, for performance reasons, storage processors are configured to issue backend I/O operations that access non-volatile data storage in the non-volatile data storage devices using units of access that are larger than 512 bytes, referred to as the “page size” that is used to access physical pages of non-volatile data storage located in the non-volatile data storage devices. The page size used by the storage processor to access physical pages in the non-volatile data storage devices is the smallest unit of non-volatile data storage accessed by the storage processor in a backend I/O operation. Accordingly, host data stored in the non-volatile data storage devices can only be read by the storage processor in multiples of the page size used to access the non-volatile data storage devices. Similarly, host data can only be written to the non-volatile data storage devices by the storage processor in multiples of the page size used to access the non-volatile data storage devices.

In previous data storage systems, the page size used to access the non-volatile data storage devices of the data storage system has been inflexible and unmodifiable. The page size was fixed at design time, and subsequently used without adjustment. The use of a statically defined page size only allowed trade-offs between larger and smaller page sizes to be considered at design time.

In general, there are advantages associated with the use of both larger and smaller page sizes. For example, using a larger page size may have the following advantages:

a. Less per-page meta-data required, and less memory consumed to store per-page metadata.

b. Fewer backend I/O operations needed for larger host I/O requests. For example, a 32 KB host I/O read request may be processed using a single backend I/O read operation if the page size is at least 32 KB, but will require multiple backend I/O read operations for smaller page sizes.

c. More efficient RAID (Redundant Array of Independent Disks) calculations (e.g. parity calculations), since the calculations can be performed using larger pages of data.

d. Automatic pre-fetch of proximately stored host data. For example, when using a 32 KB page size, processing of an 8 KB host I/O read request automatically brings an additional 24 KB of nearby host data into cache, and such proximately stored host data is often likely to be read next.

On the other hand, using a smaller page size may have the following advantages:

a. Avoiding reading and internally transferring excessive amounts of host data. For example, each 2 KB host I/O read request processed using a 32 KB page size requires that the storage processor read 32 KB from the non-volatile data storage device, and then store the entire 32 KB, and/or calculate a CRC (Cyclic Redundancy Code) on the entire 32 KB of host data in order to validate the host data, even though only 2 KB of host data was needed to satisfy the host I/O read request.

b. Avoiding write amplification when processing smaller host I/O write requests. For example, a large 32 KB page size may result in a single 2 KB host I/O write request requiring the storage processor to read a full 32 KB physical page from the non-volatile data storage device, modify the 32 KB per the 2 KB of host data indicated by the host I/O write request, and then write the entire modified 32 KB page back to the non-volatile data storage devices. In contrast, processing the 2 KB host I/O request using a smaller 2 KB page would advantageously require only reading, modifying, and writing 2 KB of host data.

c. More efficient use of storage processor cache, since the size of cache slots is typically the same size as the page size. For example, processing a 2 KB host I/O read request using a relatively small page size of 2 KB would require updating only a 2 KB cache slot, whereas processing the same size host I/O read request in a system using the larger page size of 32 KB would require updating an entire 32 KB cache slot.

d. Increased deduplication potential when deduplication is performed on a per page basis, since smaller size units of duplicate host data can be identified and removed.

Larger and smaller pages sizes thus each have specific advantages and disadvantages, depending on the specific context. The specific page size that is the best for a storage processor to use when accessing non-volatile data storage devices may accordingly be context specific. For example, different applications issuing host I/O operations may have different I/O profiles, leading to the desirability of the storage processor using different page sizes to access host I/O requests directed to different logical storage volumes. Previous data storage systems were, however, limited to using a single fixed page size at all times for processing host I/O requests directed to all logical storage volumes, and therefore could not optimize the page size dynamically, e.g. in response to specific needs of the applications that consume the non-volatile data storage provided from the non-volatile data storage devices.

To address the above described and other technical shortcomings of previous technologies, the disclosed technology initially processes host I/O requests directed to an individual logical storage volume by accessing physical pages of non-volatile data storage having a default page size. An indication of an optimal page size for the logical storage volume is received, and the size of the physical pages of non-volatile data storage accessed to process host I/O requests directed to the logical storage volume is changed from the default page size to the optimal page size for the logical storage volume. The default page size is changed to the optimal page size for the logical storage volume by changing a size of physical pages of non-volatile data storage indicated by a mapping structure that maps logical addresses for the logical storage volume to corresponding physical pages of non-volatile data storage from the default page size to the optimal page size for the logical storage volume.

For example, the physical pages of non-volatile data storage may be contained in at least one non-volatile data storage device, and processing host I/O requests directed to the logical storage volume may include issuing backend I/O operations to the non-volatile data storage device based on the mapping structure that maps logical addresses for the logical storage volume to corresponding pages of non-volatile data storage.

In another example, the optimal page size for the logical storage volume may be larger than the default page size, and changing the size of the physical pages accessed to process host I/O requests directed to the logical storage volume from the default page size to the optimal page size for the logical storage volume may increase a page size used in the backend I/O operations issued to the non-volatile data storage device to process the host I/O requests directed to the logical storage volume from the default page size to the optimal page size for the logical storage volume.

In another example, the optimal page size for the logical storage volume may be smaller than the default page size, and changing the size of the physical pages accessed to process host I/O requests directed to the logical storage volume from the default page size to the optimal page size for the logical storage volume may decrease a page size used in the backend I/O operations issued to the non-volatile data storage device to process the host I/O requests directed to the logical storage volume from the default page size to the optimal page size for the logical storage volume.

In some embodiments, the mapping data structure may be a mapping tree that represents mappings between logical addresses in an address space of the logical storage volume to corresponding physical pages of non-volatile data storage contained in at least one non-volatile data storage device. In such embodiments, changing the size of physical pages of non-volatile data storage indicated by the mapping structure may include changing a size of physical pages of non-volatile data storage indicated by at least one leaf node in a leaf level of the mapping tree from the default page size to the optimal page size for the logical storage volume.

In some embodiments, each leaf node in the leaf level of the mapping tree may individually include an indication of a size of the physical pages of non-volatile data storage indicated by that leaf node. Changing the size of the physical pages of non-volatile data storage indicated by the mapping structure may further include changing the indication of the size of the physical pages of non-volatile data storage indicated by each leaf node in the mapping tree from the default page size to the optimal page size for the logical storage volume.

Embodiments of the disclosed technology may provide significant improvements over previous technologies. For example, embodiments of the disclosed technology may advantageously support different applications having different I/O profiles by enabling the use of an optimal page size that varies from application to application. For example, a data storage system may operate optimally with regard to providing non-volatile data storage to each one of a database whose optimal page size is 8 KB, a file system whose optimal page size is 32 KB, and a VDI (Virtual Desktop Infrastructure) application whose optimal page size is 1 MB. Each application may consume its own logical storage volume, and the data storage system can accordingly optimize the page size used to access non-volatile data storage for host I/O operations directed to each individual logical storage volume so that the processing of the host I/O operations reflects the I/O profile of the consuming application.

In another example of an advantage that may be provided by embodiments of the disclosed technology, use of application specific page sizes may improve the effectiveness of data reduction techniques. For example, using larger page sizes may be advantageous when performing data compression while providing non-volatile data storage for applications that generate or use data having a high compression ratio. In contrast, using smaller page sizes may be advantageous when performing data deduplication while providing non-volatile data storage for applications that generate or use data for which a high data deduplication rate can be achieved when the deduplication is performed based on a smaller page size.

And in another example of an advantage that may be provided by embodiments of the disclosed technology, automatic configuration of an optimal page size for a logical storage unit advantageously eliminates the need for manual configuration of the page size used by the data storage system on a per application basis.

DETAILED DESCRIPTION

Embodiments of the invention will now be described. The embodiments described herein are only examples of how features and principles of the invention may be embodied. The invention itself is accordingly broader than the specific examples described below.

The technology disclosed herein initially processes host I/O requests directed to at least one logical storage volume by accessing physical pages of non-volatile data storage having a default page size. The disclosed technology receives an indication of an optimal page size for an individual logical storage volume, and changes the size of the physical pages of non-volatile data storage that are accessed to process host I/O requests directed to that logical storage volume from the default page size to the optimal page size for the logical storage volume. The disclosed technology changes the page size for the logical storage volume from the default page size to the optimal page size for the logical storage volume by changing a size of physical pages of non-volatile data storage indicated by a mapping structure that maps logical addresses in a logical address space for the logical storage volume to corresponding physical pages of non-volatile data storage from the default page size to the optimal page size for the logical storage volume.

FIG. 1shows an example of an operational environment in which embodiments of the disclosed technology may operate, and an illustrative embodiment of the disclosed technology. As shown inFIG. 1, one or more physical or virtual host machines (“Hosts”), shown for example as host computers110(1) through110(N), and/or host applications executing in whole or in part on host computers110(1) through110(N), access non-volatile data storage provided by Data Storage System116, e.g. over a Network114. Data Storage System116includes at least one Storage Processor120and Non-Volatile Data Storage Devices118. Data Storage System116may include one or more storage processors like Storage Processor120. Storage Processor120may be any type of physical or virtual computing device that is capable of processing host I/O requests.

Non-Volatile Data Storage Devices118may include or consist of some number of disk drives. The disk drives in Non-Volatile Data Storage Devices118may include solid state drives, magnetic disk drives, electronic flash drives, optical drives, and/or other specific types of non-volatile data storage drives or devices. Storage Processor120accesses Non-Volatile Data Storage Devices118by issuing backend I/O operations (e.g. backend I/O read operations and/or backend I/O write operations, etc.). Each backend I/O operation issued by Storage Processor120accesses a number of physical pages of non-volatile data storage (sometimes referred to simply as “pages”) located in the Non-Volatile Data Storage Devices118. The size of the physical pages accessed by a backend I/O operation is referred to as the “physical page size” or “page size”. Each backend I/O operation accordingly accesses an amount of non-volatile data storage contained in the Non-Volatile Data Storage Devices118that is a multiple of a page size. As further described herein, the disclosed technology enables Storage Processor120to access Non-Volatile Data Storage Devices118using multiple different page sizes, e.g. on a per-logical storage volume basis, and to dynamically change the page size used to access Non-Volatile Data Storage Devices118to process host I/O requests directed to a logical storage unit.

Network114may include or consist of any type of network or combination of networks, such as, for example, a local area network (LAN), a wide area network (WAN), the Internet, and/or some other type of network or combination of computer communication networks.

Hosts110(1-N) and/or host applications executing in whole or in part on Hosts110(1-N) may logically connect to and communicate with the Storage Processor120using various technologies. For example, Host I/O Requests112conveyed from Hosts110(1-N) to Storage Processor120may include block I/O requests (read requests and/or write requests) communicated from Hosts110(1-N) to Storage Processor120using block storage interfaces and protocols, and/or file I/O requests (read requests and/or write requests) communicated from Hosts110(1-N) to the Storage Processor120using file storage interfaces and protocols. Storage Processor120may accordingly be configured to receive host I/O requests through block-based and/or file-based storage protocols, and to process host I/O requests of either type at least in part by issuing backend I/O operations to the Non-Volatile Data Storage Devices118.

Storage Processor120may include one or more Communication Interfaces122, Processing Circuitry124, and Memory130. The Communication Interfaces122of Storage Processor120may include, for example, one or more network interface adapters that convert electronic and/or optical signals received over Network114into electronic form for use by Storage Processor120.

Processing Circuitry124may, for example, be embodied as at least one microprocessor that is capable of reading and executing program instructions that are stored in Memory130.

Memory130may include both volatile memory (e.g., RAM), and/or non-volatile memory (e.g. ROM, solid state drives, disk drives, etc.). Processing Circuitry124and Memory130together may form specialized control circuitry that is constructed and arranged to carry out specific methods and functions as described herein. As shown inFIG. 1, Memory130stores specialized software components and data structures that may be provided at least in part in the form of executable program instructions. When the executable instructions of the software components shown inFIG. 1are executed by Processing Circuitry124, Processing Circuitry124performs the methods and functionality of the software. Although certain specific software constructs are shown inFIG. 1and described herein, those skilled in the art will recognize that Memory130may further include various other types of software constructs, which are not shown.

In the example ofFIG. 1, the software components in Memory130include Host I/O Processing Logic140, which provides program logic for processing Host I/O Requests112received by Storage Processor120. Host I/O Requests112processed by Host I/O Processing Logic140may, for example, include host I/O requests (e.g. host I/O read requests, host I/O write requests) that are directed to host accessible data storage objects that are each stored using non-volatile data storage contained within one or more corresponding logical storage volumes provided by Data Storage System116. Such host accessible data storage objects may, for example, include block based storage objects such as logical disks (e.g. logical units sometimes referred to as LUNs) and/or block-based virtual volumes (VVols), and/or file based storage objects such as files and/or file systems. The logical storage volumes provided by Data Storage System116may, for example, include Logical Storage Volume1142, Logical Storage Volume2144, and Logical Storage Volume3146. For purposes of explanation herein, the host I/O requests that are “directed to” a given host accessible data storage object are referred to herein as being “directed to” the corresponding logical storage volume provided by the Data Storage System116(e.g. one of Logical Storage Volume1142, Logical Storage Volume2144, or Logical Storage Volume3146) that contains the non-volatile data storage used to store that host accessible data storage object. While three logical storage volumes are shown in the example ofFIG. 1, those skilled in the art will recognize that the disclosed technology is not limited to embodiments or configurations providing any specific number of logical storage volumes.

Each logical storage volume may store host data generated by a single corresponding application that generates host I/O requests that are directed to that logical storage volume. Accordingly, Logical Storage Volume1142may store host data generated by a first application that generates host I/O requests directed to Logical Storage Volume1142, Logical Storage Volume2144may store host data generated by a second application that generates host I/O requests directed to Logical Storage Volume2144, and Logical Storage Volume3146may store host data generated by a third application that generates host I/O requests directed to Logical Storage Volume3146.

Host I/O Request Processing Logic140may process host I/O requests directed to different logical storage volumes by issuing backend I/O operations to Non-Volatile Data Storage Devices118using different physical page sizes. For example, Host I/O Request Processing Logic140may process host I/O requests directed to Logical Storage Volume1142at least in part by issuing Backend I/O Operations172to Non-Volatile Data Storage Devices118using Page Size A. Host I/O Request Processing Logic140may also process host I/O requests directed to Logical Storage Volume2144at least in part by issuing Backend I/O Operations174to Non-Volatile Data Storage Devices118using Page Size B, and may process host I/O requests directed to Logical Storage Volume3146using Page Size C. For example, Page Size A may be an optimal page size dynamically determined by Host I/O Request Processing Logic140based on an I/O profile of the application that generates host I/O requests directed to Logical Storage Volume1142, Page Size B may be an optimal page size dynamically determined by Host I/O Request Processing Logic140based on an I/O profile of the application that generates host I/O requests directed to Logical Storage Volume2144, and Page Size C may be an optimal page size dynamically determined by Host I/O Request Processing Logic140based on an I/O profile of the application that generates host I/O requests directed to Logical Storage Volume3146.

Within Host I/O Processing Logic140, Mapping Logic141operates to determine the locations of physical pages of non-volatile data storage in Non-Volatile Data Storage Devices118that correspond to logical storage volume-specific logical addresses that are used in the Host I/O Requests112. Mapping Logic141includes metadata for each logical storage volume, shown by Metadata150for Logical Storage Volume1142, Metadata154for Logical Storage Volume2144, and Metadata158for Logical Storage Volume3146. The metadata for each logical storage volume includes a mapping tree used by Mapping Logic141to map logical addresses in the address space of the corresponding logical storage volume to physical pages of non-volatile data storage in Non-Volatile Data Storage Devices118. Metadata150includes Mapping Tree152, Metadata154includes Mapping Tree156, and Metadata158includes Mapping Tree160.

For each host I/O request in Host I/O Requests112, Host I/O Request Processing Logic140uses Mapping Logic141to traverse the mapping tree corresponding to the logical storage volume indicated by the request based on a logical address indicated by the request. The logical address indicated by the request may, for example, be a logical block address (LBA) within a logical address space of a logical storage volume to which the request is directed. Traversal of the mapping tree based on the logical address enables the Host I/O Request Processing Logic140to identify the physical page of non-volatile data storage in Non-Volatile Data Storage Devices118that corresponds to the logical address. For example, Mapping Tree152may map individual LBAs within the logical address space of Logical Storage Volume1142to corresponding physical pages of non-volatile storage that are used to store host data written to Logical Storage Volume1142, Mapping Tree156may map individual LBAs within the logical address space of Logical Storage Volume2144to corresponding physical pages of non-volatile storage that are used to store host data written to Logical Storage Volume2144, and Mapping Tree160may map individual LBAs within the logical address space of Logical Storage Volume3146to corresponding physical pages of non-volatile storage that are used to store host data written to Logical Storage Volume3146.

In some embodiments, some or all of each mapping tree may be made up of or include a B-tree, which is an example of a self-balancing tree data structure.

Each mapping tree may be embodied with multiple levels of nodes, including upper levels, a leaf level under the upper levels, a virtual block layer under the leaf level, and a physical block layer under the virtual block layer. Each node in a mapping tree above the physical block layer contains pointers to nodes located in a next lower level. For example, the upper levels of a mapping tree may include a top level (“Level 1”), in which each node contains pointers to nodes in the next lower level, e.g. “Level 2”. Similarly, each node in “Level 2” of the mapping tree may contain pointers to nodes in “Level 3” of the mapping tree, and so on for any further upper levels.

The level of nodes below the upper levels of a mapping tree is the leaf level. The leaf level of a mapping tree contains leaf nodes. Each leaf node in a mapping tree may map a corresponding segment within the logical address space of the corresponding logical storage volume (e.g. a range of LBAs) to pointers located in virtual blocks in the virtual block layer. Accordingly, each leaf node may contain pointers, each of which points to a pointer that is located in a virtual block. In some embodiments, each virtual block in the virtual block layer may correspond to a physical block of contiguous non-volatile data storage in Non-Volatile Data Storage Devices118, and contain pointers to physical pages of non-volatile data storage located within the physical block. The physical block layer is located below the virtual block layer, and contains physical blocks, each of which may correspond to one virtual block or be shared by multiple virtual blocks. Each physical block is a physically contiguous chunk of non-volatile data storage in Non-Volatile Data Storage Devices118, and contains some number of physical pages of non-volatile data storage. The size of the pages in the physical blocks of a mapping tree is the page size of the corresponding logical storage volume that is used when issuing backend I/O operations when processing host I/O requests directed to the corresponding logical storage volume. Because each pointer in a leaf node of a mapping tree indicates, via a pointer in a virtual block, a single page in a physical block of the mapping tree, the size of the pages indicated by the pointers in a leaf node is also the page size used when issuing backend I/O operations when processing host I/O requests directed to the corresponding logical storage volume.

For example, because the size of the pages in the physical blocks of Mapping Tree152is Page Size A, the size of the pages indicated by the pointers in the leaf nodes of Mapping Tree152(via pointers in the virtual blocks of Mapping Tree152) is Page Size A, and the page size used by Backend I/O operations172is also Page Size A. Similarly, because the size of the pages in the physical blocks of Mapping Tree156is Page Size B, the size of the pages indicated by the pointers in the leaf nodes of Mapping Tree156(via pointers in the virtual blocks of Mapping Tree156) is Page Size B, and the page size used by Backend I/O operations174is also Page Size B. And because the size of the pages in the physical blocks of Mapping Tree160is Page Size C, the size of the pages indicated by the pointers in the leaf nodes of Mapping Tree160(via pointers in the virtual blocks of Mapping Tree160) is Page Size C, and the page size used by Backend I/O operations174is also Page Size C.

It is therefore apparent that by changing the size of the pages indicated by the pointers in the leaf nodes of a mapping tree, embodiments of the disclosed technology can change the page size used in the backend I/O operations that are performed while processing host I/O requests directed to the logical storage volume corresponding to the mapping tree. Accordingly, by changing the size of the pages indicated by the pointers in the leaf nodes of Mapping Tree152, embodiments of the disclosed technology may change the page size used in Backend I/O Operations172. Similarly, by changing the size of the pages indicated by the pointers in the leaf nodes of Mapping Tree156, embodiments of the disclosed technology may change the page size used in Backend I/O Operations174. And by changing the size of the pages indicated by the pointers in the leaf nodes of Mapping Tree160, the disclosed technology may change the page size used in Backend I/O Operations176.

In some embodiments, a default page size (e.g. 4 KB) may be initially used for processing host I/O requests directed to one or more of the logical storage volumes in Data Storage System116. For example, each one of the mapping trees for Logical Storage Volume1142, Logical Storage Volume2144, and Logical Storage Volume3146may initially contain leaf nodes with pointers indicating pages having a size equal to the default page size. Accordingly, all backend I/O operations generated by Storage Processor120to Non-Volatile Data Storage Devices118may initially use such a default page size.

For example, because the size of the pages in the physical blocks of Mapping Tree152is Page Size A, the size of the pages indicated by the pointers in the leaf nodes of Mapping Tree152(via pointers in the virtual blocks of Mapping Tree152) is Page Size A, and the page size used by Backend I/O operations172is also Page Size A. Similarly, because the size of the pages in the physical blocks of Mapping Tree156is Page Size B, the size of the pages indicated by the pointers in the leaf nodes of Mapping Tree156(via pointers in the virtual blocks of Mapping Tree156) is Page Size B, and the page size used by Backend I/O operations174is also Page Size B. And because the size of the pages in the physical blocks of Mapping Tree160is Page Size C, the size of the pages indicated by the pointers in the leaf nodes of Mapping Tree160(via pointers in the virtual blocks of Mapping Tree160) is Page Size C, and the page size used by Backend I/O operations176is also Page Size C.

For example, if during the observation time period the vast majority of host I/O requests (e.g. reads and writes) directed to Logical Storage Volume1142are 8 KB and random in their logical locations within the logical address space of Logical Storage Volume1142(as, for example, may be typical for a database application), Host I/O Request Processing Logic140may calculate an Optimal Page Size164for Logical Storage Volume1142of 8 KB.

In another example, in the case where host I/O requests directed to a logical storage volume are mostly sequential in their locations within the logical address space, and have a mix of I/O sizes, e.g. 8 KB, 16 KB and 32 KB, Host I/O Request Processing Logic140may calculate an optimal page size for the logical storage volume of 32 KB.

The specific value of Optimal Page Size164may further reflect selection of an optimal page size from a set of available page sizes that are supported by a specific embodiment of Data Storage System116. For example, in the case where an embodiment of Data Storage System116does not support 32 KB page sizes, but does support 64 KB page sizes, the optimal page size for the logical storage volume may not be settable to 32 KB, and the optimal page size may instead have to be set to 64 KB instead of 32 KB.

Those skilled in the art will recognize that various specific optimal page sizes may be calculated and used, and that the disclosed technology is not limited to use with any specific optimal or default page size.

In response to receipt of Optimal Page Size164for Logical Storage Volume1142, Physical Page Size Change Logic162may change the size of the physical pages of non-volatile data storage that are accessed to process host I/O requests directed to Logical Storage Volume1142from the default page size to Optimal Page Size164. For example, Mapping Tree Change Logic166in Physical Page Size Change Logic162may change the page size used in the Backend I/O Operations172(e.g. Page Size A) that are issued by Storage Processor120when Host I/O Request Processing Logic140processes host I/O requests directed to Logical Storage Volume1142from the default page size to Optimal Page Size164, e.g. by changing a size of the physical pages of non-volatile data storage indicated by a mapping structure for Logical Storage Volume1142(e.g. Mapping Tree152) from the default page size to Optimal Page Size164.

For example, Optimal Page Size164for Logical Storage Volume1142may be larger than a default page size for Logical Storage Volume1142and initially used by Backend I/O Operations172while processing host I/O requests directed to Logical Storage Volume1172. In such a case, Physical Page Size Change Logic162may change size of the physical pages accessed while Host I/O Request Processing Logic140processes host I/O requests directed to Logical Storage Volume1142from the default page size to Optimal Page Size164by increasing the page size used in Backend I/O Operations172(e.g. Page Size A) from the default page size to Optimal Page Size164, e.g. by increasing the size of the physical pages of non-volatile data storage indicated by a mapping structure such as Mapping Tree152from the default page size to Optimal Page Size164.

In another example, Optimal Page Size164for Logical Storage Volume1142may be smaller than a default page size for Logical Storage Volume1142initially used in Backend I/O Operations172while processing host I/O requests directed to Logical Storage Volume1172. In such a case, Physical Page Size Change Logic162may change the size of the physical pages accessed while Host I/O Request Processing Logic140processes host I/O requests directed to Logical Storage Volume1142from the default page size to Optimal Page Size164by decreasing the page size used in Backend I/O Operations172(e.g. Page Size A) from the default page size to the Optimal Page Size164, e.g. by decreasing the size of the physical pages of non-volatile data storage indicated by a mapping structure such as Mapping Tree152from the default page size to Optimal Page Size164.

In some embodiments, Mapping Tree Change Logic166may change the size of the physical pages of non-volatile data storage indicated by a mapping structure such as Mapping Tree152by changing the size of the physical pages of non-volatile data storage indicated by the leaf nodes in a leaf level of Mapping Tree152from the default page size to the optimal page size for the logical storage volume.

In some embodiments, each leaf node in the leaf level of each mapping tree may individually include an indication of the size of the physical pages of non-volatile data storage indicated by that leaf node. In such embodiments, changing the size of the physical pages of non-volatile data storage indicated by a mapping structure such as Mapping Tree152by Mapping Tree Change Logic166may further include changing the indication of the size of the physical pages of non-volatile data storage indicated by each leaf node in Mapping Tree152from the default page size to Optimal Page Size164.

While the above description references changing the page size for Logical Storage Volume1142that is used for issuing backend I/O operations to Non-Volatile Data Storage Devices118while processing host I/O requests directed to Logical Storage Volume1142, the page size for other logical storage volumes provided by Data Storage System116may also be changed. For example, the page size for Logical Storage Volume2144that is used for issuing backend I/O operations to Non-Volatile Data Storage Devices118while processing host I/O requests directed to Logical Storage Volume2144may be independently changed to an optimal page size for Logical Storage Volume2144. Similarly, the page size for Logical Storage Volume3146that is used for issuing backend I/O operations to Non-Volatile Data Storage Devices118while processing host I/O requests directed to Logical Storage Volume3146may also independently be changed to an optimal page size for Logical Storage Volume3146.

FIG. 2is a block diagram showing an example of segments in a Logical Address Space208of a logical storage volume, and of the corresponding Leaf Level Nodes201in a mapping tree for the logical storage volume. As shown inFIG. 2, Logical Address Space208may be divided into segments, shown by Segment1210, Segment2212, and so on through Segment N214. The disclosed technology may be embodied using any specific length of logical address space, and using various specific sizes of segments within the logical address space. For example, each segment within the Logical Address Space208may have a size of 2 MB. For example, if the page size for the logical storage volume has been dynamically configured by the disclosed technology to be 4 KB, each leaf node may store up to 512 pointers, each one of which indicates a 4 KB physical page by pointing to a pointer in a virtual block that points to a 4 KB page of non-volatile data storage within a physical block. In another example, if the page size for the logical storage volume has been dynamically configured to be 8 KB, each leaf node may store up to 256 pointers, each one of which indicates an 8 KB physical page by pointing to a pointer in a virtual block that points to an 8 KB page of non-volatile data storage within a physical block. In another example, if the page size for the logical storage volume has been dynamically configured to be 16 KB, each leaf node may store up to 128 pointers, each one of which indicates a 16 KB physical page by pointing to a pointer in a virtual block that points to a 16 KB page of non-volatile data storage within a physical block. Those skilled in the art will recognize that the specific segment size and the specific page sizes given above are only examples, and that the disclosed technology is not limited to the use of any specific segment and/or page sizes.

In the example ofFIG. 2, Leaf Node1216corresponds to Segment1210, Leaf Node2222corresponds to Segment2212, and so on through Leaf Node N228, which corresponds to Segment N214.

Each leaf node in the Leaf Level Nodes201contains pointers that individually point to pointers that are contained in one or more of the virtual blocks in the Virtual Block Layer250. Virtual Block Layer250includes some number of virtual blocks, shown for purposes of illustration by Virtual Block252(containing Pointers258), Virtual Block254(containing Pointers260), and so on through Virtual Block256(containing Pointers262). Physical Layer270includes some number of physical blocks, shown for purposes of illustration by Physical Block272, Physical Block274, and so on through Physical Block276. Each physical block in Physical Layer270is a is a physically contiguous chunk of non-volatile data storage that may be used to store host data written by Host I/O Write Requests200to the logical storage volume, and is made up of pages indicated by pointers in the virtual blocks of the Virtual Block Layer250. For example, Physical Block272is made up of Pages278, Physical Block274is made up of Pages280, and so on through Physical Block276, which is made up of Pages282.

Each virtual block in Virtual Block Layer250contains pointers pointing to individual pages in one of the physical blocks in Physical Layer270. In some embodiments, a single physical block may be shared by multiple virtual blocks, and thus be pointed to by the pointers contained in the multiple virtual blocks. In the example ofFIG. 2, pointers in Virtual Block252point to individual pages in Physical Block272, pointers in Virtual Block254point to individual pages in Physical Block274, and so on, through Virtual Block256, which contains pointers that point to individual pages in Physical Block276. Each pointer in a virtual block points to a page of non-volatile storage that is used to store host data written to the segment or segments of the logical address space that correspond to one or more leaf nodes that include pointers to that pointer. Accordingly, Leaf Node1216contains Pointers218that point to pointers in the virtual blocks of Virtual Block Layer250that point to pages in Physical Layer270that store host data indicated by Host Writes202, because Host Writes202are directed to logical addresses (e.g. logical block addresses sometimes referred to as “LBAs”) that fall within Segment1210. Leaf Node2222contains Pointers224that point to pointers in the virtual blocks of Virtual Block Layer250that point to pages in Physical Layer270that store host data indicated by Host Writes204, because Host Writes204are directed to logical addresses (e.g. “LBAs”) that fall within Segment2212. The Leaf Level Nodes201continue on similarly through Leaf Node N228, which contains Pointers230that point to pointers in the virtual blocks of Virtual Block Layer250that point to pages in Physical Layer270that store host data indicated by Host Writes206, because Host Writes206are directed to logical addresses (e.g. “LBAs”) that fall within Segment N214.

The pointers in a given leaf node may, for example, be arranged sequentially, in correspondence with an order of LBAs within the corresponding segment of the logical address space. For example, a first pointer in Pointers218may point to a pointer to a page of non-volatile storage that is used to store the host data indicated by write operations directed to a first LBA within Segment1210(e.g. the lowest LBA in the segment), a second pointer in Pointers218may point to a pointer to a page of non-volatile storage that is used to store the host data indicated by write operations directed to a second LBA within Segment1210(e.g. the second lowest LBA in the segment), and so on.

FIG. 3is a block diagram showing the upper level nodes and leaf level nodes in a simplified example of a mapping tree in some embodiments. In the example ofFIG. 3, the Upper Level Nodes354include two levels: a first level (also referred to as “level 1”), and a second level (also referred to as “level 2”). The first level is shown including a Level 1 Node300. The second level is shown including Level 2 Node302, Level 2 Node304, Level 2 Node306, and Level 2 Node308. The Leaf Level Nodes356include Leaf Node310, Leaf Node312, Leaf Node314, and Leaf Node316.

In some embodiments, each level 1 node represents 512 GB of logical address space, each level 2 node represents 1 GB of logical address space, and each leaf node represents 2 MB of logical address space. Each node in level 1, level 2, and the leaf level may, for example, have a size of 4 KB, and store up to a maximum of 512 pointers to nodes at the next lower level. Accordingly, in such embodiments, each level 1 node may contain pointers to a maximum of 512 level 2 nodes, and each level 2 node may contain pointers to a maximum of 512 leaf nodes.

Each leaf node in Leaf Level Nodes356contains pointers to pointers to pages of non-volatile storage. For example, each leaf node in Leaf Level Nodes356may contain a maximum of 512 pointers to pointers (e.g. located within virtual blocks in a virtual block layer as shown inFIG. 2) to pages of non-volatile storage (e.g. located within physical blocks in a physical block layer as shown inFIG. 2) that are used to store host data written to the segment of the logical address space corresponding to that leaf node.

In some embodiments, the size of the nodes in the mapping tree may be fixed, and remain constant across modifications to the page size for the corresponding logical storage volume. In such embodiments, the minimum page size for a logical storage volume may be dependent on the maximum number of pointers that can be stored within a leaf node within the mapping tree.

In other embodiments, the size of the nodes in one or more levels of the mapping tree may be modifiable, and may be adjusted in response to modifications to the page size for the corresponding logical storage volume in order to optimize the size of the mapping tree. In such embodiments, the size of nodes within one or more levels of the mapping tree may be decreased when using larger page sizes, in order to lower the total amount of metadata required to store the mapping tree. Also in such embodiments, smaller minimum page sizes may be supported since the size of the nodes in one or more levels of the mapping tree may potentially be increased, and thereby store larger numbers of pointers per node so that relatively smaller page sizes can be supported.

FIG. 4is a flow chart showing an example of steps performed in some embodiments to increase the page size for a logical storage volume to increase the size of physical pages of non-volatile data storage accessed to process host I/O requests directed to the logical storage volume by modifying indications of physical pages in leaf nodes of a mapping tree corresponding to the logical storage volume.

At step400, Physical Page Size Change Logic162determines that the page size for the logical storage volume should be optimized by changing the page size of the logical volume from a current page size (e.g. a relatively smaller default page size) to a larger value (e.g. a relatively larger Optimal Page Size164). At step402, Physical Page Size Change Logic162marks the logical storage volume as “IN PAGE SIZE TRANSITION”, e.g. by modifying a current state of the logical storage volume in metadata of the storage volume. The “IN PAGE SIZE TRANSITION” state indicates that the logical storage volume may currently have a mixture of different page sizes.

At step403, Physical Page Size Change Logic162determines the ratio N between the optimal page size and the current page size. For example, the current page size for the virtual volume may be S1, and Optimal Page Size164for the logical volume may be a multiple of the current page size, e.g. S2, such that the ratio S2/S1is a whole number N.

At step404, Physical Page Size Change Logic162(e.g. Mapping Tree Change Logic166) scans all leaf nodes in the mapping tree for the logical storage volume. For each leaf node in the mapping tree, the following steps are performed:

i) A new physical block is allocated to store pages of the Optimal Page Size164that are indicated by the leaf node.

ii) All physical pages indicated by the leaf node are locked (e.g. the leaf node is locked until all after all pages indicated by the leaf node have been changed to pages of the Optimal Page Size164).

iii) The next N pointers in the leaf node are located that indicate pages of the current page size.

iv) The next N pointers in the leaf node located in step iii) are used to obtain the N pointers in one or more virtual blocks that they point to, in order to locate the N physical pages of the current block size in physical blocks that are pointed to by those virtual block pointers. The N pages of the current page size indicated by the leaf node are combined into a single page of Optimal Page Size164within the newly allocated physical block. At the time that the N pages of the current page size are combined into the single page of Optimal Page Size164, data reduction operations such as compression and/or data deduplication may be performed on the host data. A pointer to the newly created page of Optimal Page Size164may then be stored into a virtual block.

v) The N pointers in the leaf node located at step iii) are replaced in the leaf node by a single pointer indicating the newly created page of Optimal Page Size164, e.g. by replacing the N pointers in the leaf node that were located at step iii) with a pointer to the pointer pointing to the newly created page of Optimal Page Size164that was previously stored into a virtual block in step iv)

vi) If all the pointers in the leaf node pointing to pages of the current page size have not been processed, then go back to step iii)

vii) After all the pointers in the leaf node pointing to pages of the current page size have been processed, update the leaf node to indicate that the pages indicated by the leaf node have a size equal to Optimal Page Size164, and to also indicate the total number of pointers in the leaf node.

viii) After the leaf node has been updated to indicate that pages indicated by the leaf node have a size equal to Optimal Page Size164, and also to indicate the total number of pointers contained in the leaf node, all physical pages indicated by the leaf node are unlocked.

At step406, after all leaf nodes have been processed, Physical Page Size Change Logic162removes the indication of “IN PAGE SIZE TRANSITION” from the storage volume, e.g. by modifying a current state of the logical storage volume in metadata of the storage volume. By removing the “IN PAGE SIZE TRANSITION” indication, Physical Page Change Logic162indicates that the logical storage volume no longer has a mixture of different page sizes.

FIG. 5is a flow chart showing an example of steps performed in some embodiments to decrease the page size for a logical storage volume to decrease the size of physical pages of non-volatile data storage accessed to process host I/O requests directed to the logical storage volume by modifying indications of physical pages in leaf nodes of a mapping tree corresponding to the logical storage volume.

At step500, Physical Page Size Change Logic162determines that the page size for the logical storage volume should be optimized by changing the page size of the logical volume from a current page size (e.g. a relatively larger default page size) to a smaller value (e.g. a relatively smaller Optimal Page Size164).

At step502, Physical Page Size Change Logic162marks the logical storage volume as “IN PAGE SIZE TRANSITION”, e.g. by modifying a current state of the logical storage volume in metadata of the storage volume. The “IN PAGE SIZE TRANSITION” state indicates that the logical storage volume may currently have a mixture of different page sizes.

At step503, Physical Page Size Change Logic162determines the ratio N between the current page size and the optimal page size. For example, the Optimal Page Size164for the virtual volume may be S2, and the current page size for the logical volume may be a multiple of the Optimal Page164, e.g. S1, such that the ratio S1/S2is a whole number N.

At step504, Physical Page Size Change Logic162(e.g. Mapping Tree Change Logic166) scans all leaf nodes in the mapping tree for the logical storage volume. For each leaf node in the mapping tree, the following steps are performed:

i) A new physical block is allocated to store pages of the Optimal Page Size164that are indicated by the leaf node, and a temporary buffer is allocated to temporarily store new leaf pointers indicating the pages of Optimal Page Size164.

ii) All physical pages indicated by the leaf node are locked (e.g. the leaf node is locked until all after all pages indicated by the leaf node have been changed to pages of the Optimal Page Size164).

iii) The next pointer in the leaf node is located that indicates a page of the current page size.

iv) The page indicated by the pointer located in step iii) is split into N new pages of Optimal Page Size164, and those N new pages of Optimal Page Size164are stored in the new physical block. N pointers to the N new pages of Optimal Page Size164within the new physical block are then stored in one or more virtual blocks.

v) N pointers (e.g. new leaf pointers) to the N pointers in the virtual blocks are then stored in the temporary buffer. At the time that the page of the current page size is split into N new pages of Optimal Page Size164and stored in the new physical block, data reduction operations such as compression and/or data deduplication may be performed on the host data.

vi) If all the pointers in the leaf node pointing to pages of the current page size have not been processed, then go back to step iii)

vii) After all the pointers in the leaf node pointing to pages of the current page size have been processed, replace the pointers in the leaf node with the pointers stored in the temporary buffer, and update the leaf node to indicate that the pages indicated by the leaf node have a size equal to Optimal Page Size164and to also indicate the total number of pointers in the leaf node.

viii) After the leaf node has been updated to indicate that pages indicated by the leaf node have a size equal to Optimal Page Size164, and also to indicate the total number of pointers contained in the leaf node, all physical pages indicated by the leaf node are unlocked.

At step506, after all leaf nodes have been completely processed, Physical Page Size Change Logic162removes the indication of “IN PAGE SIZE TRANSITION” from the storage volume, e.g. by modifying a current state of the logical storage volume in metadata of the storage volume. By removing the “IN PAGE SIZE TRANSITION” indication, Physical Page Change Logic162indicates that the logical storage volume no longer has a mixture of different page sizes.

FIG. 6is a flow chart showing an example of steps performed in some embodiments to process host I/O requests while accommodating dynamic physical page size changes. The steps ofFIG. 6may, for example, be performed by Host I/O Request Processing Logic140simultaneously with the changing of one or more pages sizes for one or more of the logical storage volumes provided by Data Storage System116.

At step600, Host I/O Request Processing Logic140receives a host I/O request (e.g. read or write request) directed to a logical storage volume.

At step602, Host I/O Request Processing Logic140determines whether the logical storage volume is currently marked “IN PAGE SIZE TRANSITION”. If not, then the logical storage volume does not have a mixture of different page sizes, and the pages indicated by all the leaf nodes in the corresponding mapping tree are all the same size, and Host I/O Request Processing Logic140can process the host I/O request normally, without locking the page corresponding to the logical address before determining from the relevant leaf node the page size to be used while processing the host I/O request.

Otherwise, if the logical storage volume is marked “IN PAGE SIZE TRANSITION”, then at step604Host I/O Request Processing Logic140performs the following steps to perform the host I/O request:

i) Host I/O Processing Logic140first traverses the upper levels of the mapping tree for the logical storage volume based on the logical address indicated by the host I/O request to find the leaf node corresponding to the logical address.

ii) Before proceeding further, Host I/O Processing Logic140must then obtain a lock on the page corresponding to the logical address. If the page size is being changed for the relevant leaf node, e.g. by Mapping Tree Change Logic166, Host I/O Processing Logic140must wait until Mapping Tree Change Logic166completes the process of changing the page size for that leaf node, and releases the lock on the page corresponding to the logical address.

iii) After obtaining the lock on the page corresponding to the logical address, Host I/O Processing Logic140reads the page size indicated by the leaf node corresponding to the logical address, and the indication of the total number of entries in the leaf node.

iv) Host I/O Processing Logic140then processes the host I/O request using the page size and the indication of the total number of entries in the leaf node read from the leaf node.

v) After completing the processing of the host I/O request, Host I/O Processing Logic140releases the lock on the page corresponding to the logical address.

FIG. 7is a flow chart showing an example of steps performed in some embodiments to change the size of physical pages of non-volatile data storage accessed to process host I/O requests directed to a logical storage volume.

At step700, processing of host I/O requests directed to a logical storage volume is initially performed by accessing physical pages of non-volatile data storage having a default page size.

At step702, an indication of an optimal page size for the logical storage volume is received.

At step704, the size of the physical pages of non-volatile data storage accessed to process host I/O requests directed to the logical storage volume is changed from the default page size to the optimal page size for the logical storage volume at least in part by changing a size of the physical pages of non-volatile data storage that are indicated by a mapping structure that maps logical addresses in a logical address space of the logical storage volume to corresponding physical pages of non-volatile data storage from the default page size to the optimal page size for the logical storage volume.

As will be appreciated by those skilled in the art, the technologies disclosed herein may be embodied as a system, method or computer program product. Accordingly, each specific feature of the present disclosure may be embodied using hardware, software (including firmware, resident software, micro-code, etc.) or a combination of software and hardware. Furthermore, the technologies disclosed herein may take the form of a computer program product embodied in one or more non-transitory computer readable storage medium(s) having computer readable program code stored thereon for causing a processor and/or computer system to carry out those aspects of the present disclosure.

Any combination of one or more computer readable storage medium(s) may be utilized. The computer readable storage medium may be, for example, but not limited to, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any non-transitory tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.

The figures include block diagram and flowchart illustrations of methods, apparatus(s) and computer program products according to one or more embodiments of the invention. It will be understood that each block in such figures, and combinations of these blocks, can be implemented by computer program instructions. These computer program instructions may be executed on processing circuitry to form specialized hardware. These computer program instructions may further be loaded onto a computer or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create means for implementing the functions specified in the block or blocks. These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the block or blocks.

Those skilled in the art will readily appreciate that programs defining the functions of the present invention can be delivered to a computer in many forms; including, but not limited to: (a) information permanently stored on non-writable storage media (e.g. read only memory devices within a computer such as ROM or CD-ROM disks readable by a computer I/O attachment); or (b) information alterably stored on writable storage media.

While the invention is described through the above exemplary embodiments, it will be understood by those of ordinary skill in the art that modification to and variation of the illustrated embodiments may be made without departing from the inventive concepts herein disclosed.