Unified datapath architecture
First Claim
1. A method of managing host data of a set of hosts in a data storage apparatus, the method comprising:
- allocating a set of slices of a storage pool to a set of file systems of the data storage apparatus;
storing a first file in the set of slices, the first file provided as a file in the set of file systems and providing a file representation of a LUN (logical unit number) storing block-based host data, wherein the block-based host data stored in the first file is accessible to the set of hosts using a block-based protocol;
storing a second file in the set of slices, the second file provided as a file in the set of file systems and providing a file representation of a host file system storing file-based host data, wherein the file-based host data stored in the second file is accessible to the set of hosts using a file-based protocol;
deallocating a slice of the set of slices from the set of file systems in response to the slice storing block-based host data of the first file and then becoming empty;
reallocating the slice to the set of file systems in response to the host file system stored in the second file requiring additional storage space; and
while the first file is providing the LUN, storing portions of the second file on the reallocated slice, thereby allowing the slice previously used for storing portions of the LUN to be reused for storing portions of the host file system,wherein the method further comprises;
deallocating a second slice of the set of slices from the set of file systems in response to the slice storing file-based host data of the second file and then becoming empty;
reallocating the second slice to the set of file systems; and
while the second file is providing the host file system, storing portions of the first file on the reallocated second slice, thereby allowing the slice previously used for storing portions of the host file system to be reused for storing portions of the LUN;
wherein the method further comprises;
performing a data protection operation on the LUN by copying or snapping the first file to a first location; and
performing a data protection operation on the host file system by copying or snapping the second file to a second location,wherein the first location and the second location are each one of (i) a location within the data storage apparatus and (ii) a location geographically remote from the data storage apparatusand wherein the method further comprises;
storing in a configuration database of the data storage apparatus, a set of records defining at least one virtualized storage processor, the set of records identifying multiple file systems of each virtualized storage processor;
storing the file systems of each virtualized storage processor as respective files in the set of slices, each of the respective files provided as a file in the set of file systems and providing a file representation of a file system of the respective virtualized storage processor;
instantiating a set of host interfaces for each of the virtualized storage processors;
receiving, via the set of host interfaces for each of the virtualized storage processors, a respective set of read and write requests from the set of hosts; and
for each virtualized storage processor, processing the respective set of read and write requests received via the respective set of host interfaces, to read data from and write data to at least one of the file systems of the virtualized storage processor.
9 Assignments
0 Petitions
Accused Products
Abstract
An improved technique for a data storage apparatus that combines both block-based and file-based functionality in a unified data path architecture. The improved technique brings together IO processing of block-based storage systems and file-based storage systems by expressing both block-based objects (e.g., LUNs) and file-based objects (e.g., file systems) in the form of files. These files are parts of an underlying, internal set of file systems, which are stored on a set of storage units served by a storage pool. Because block and file-based objects are all expressed as files of this set of file systems, a common set of services can be applied across block-based and file-based objects. Also, storage units released by any file or files of the underlying, internal set of file systems can be reused by any other file or files, regardless of whether the files represent block-based objects or file-based objects. Inefficiencies of stranded storage are thus greatly reduced or eliminated altogether.
35 Citations
20 Claims
-
1. A method of managing host data of a set of hosts in a data storage apparatus, the method comprising:
-
allocating a set of slices of a storage pool to a set of file systems of the data storage apparatus; storing a first file in the set of slices, the first file provided as a file in the set of file systems and providing a file representation of a LUN (logical unit number) storing block-based host data, wherein the block-based host data stored in the first file is accessible to the set of hosts using a block-based protocol; storing a second file in the set of slices, the second file provided as a file in the set of file systems and providing a file representation of a host file system storing file-based host data, wherein the file-based host data stored in the second file is accessible to the set of hosts using a file-based protocol; deallocating a slice of the set of slices from the set of file systems in response to the slice storing block-based host data of the first file and then becoming empty; reallocating the slice to the set of file systems in response to the host file system stored in the second file requiring additional storage space; and while the first file is providing the LUN, storing portions of the second file on the reallocated slice, thereby allowing the slice previously used for storing portions of the LUN to be reused for storing portions of the host file system, wherein the method further comprises; deallocating a second slice of the set of slices from the set of file systems in response to the slice storing file-based host data of the second file and then becoming empty; reallocating the second slice to the set of file systems; and while the second file is providing the host file system, storing portions of the first file on the reallocated second slice, thereby allowing the slice previously used for storing portions of the host file system to be reused for storing portions of the LUN; wherein the method further comprises; performing a data protection operation on the LUN by copying or snapping the first file to a first location; and performing a data protection operation on the host file system by copying or snapping the second file to a second location, wherein the first location and the second location are each one of (i) a location within the data storage apparatus and (ii) a location geographically remote from the data storage apparatus and wherein the method further comprises; storing in a configuration database of the data storage apparatus, a set of records defining at least one virtualized storage processor, the set of records identifying multiple file systems of each virtualized storage processor; storing the file systems of each virtualized storage processor as respective files in the set of slices, each of the respective files provided as a file in the set of file systems and providing a file representation of a file system of the respective virtualized storage processor; instantiating a set of host interfaces for each of the virtualized storage processors; receiving, via the set of host interfaces for each of the virtualized storage processors, a respective set of read and write requests from the set of hosts; and for each virtualized storage processor, processing the respective set of read and write requests received via the respective set of host interfaces, to read data from and write data to at least one of the file systems of the virtualized storage processor. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A data storage apparatus, comprising:
-
a storage processor including control circuitry, memory accessible by the control circuitry, and multiple hardware interfaces arranged to connect to a set of hosts to enable the set of hosts to access host data stored on the data storage apparatus, wherein the memory stores instructions which, when carried out by the control circuitry, cause the control circuitry to; allocate a set of slices of a storage pool to a set of file systems of the data storage apparatus; store a first file in the set of slices, the first file provided as a file in the set of file systems and providing a file representation of a LUN (logical unit number) storing block-based host data, wherein the block-based host data stored in the first file is accessible to the set of hosts using a block-based protocol; store a second file in the set of slices, the second file provided as a file in the set of file systems and providing a file representation of a host file system storing file-based host data, wherein the file-based host data stored in the second file is accessible to the set of hosts using a file-based protocol; deallocate a slice of the set of slices from the set of file systems in response to the slice storing block-based host data of the first file and then becoming empty; reallocate the slice to the set of file systems in response to the host file system stored in the second file requiring additional storage space; and while the first file is stored to provide the LUN, store portions of the second file on the reallocated slice, to thereby allow the slice previously used for storing portions of the LUN to be reused for storing portions of the host file system, wherein the instructions, when carried out by the control circuitry, further cause the control circuitry to process IO requests received from the set of hosts via an IO stack, the IO stack having a front end and a back end, the front end including multiple protocol end points, for communicating with hosts using block and file protocols, a storage pool manager, and a cache manager, the back end including a RAID Manager for managing RAID groups used to provide slices from the storage pool. - View Dependent Claims (15, 16, 17, 18)
-
-
19. A computer program product having a non-transitory computer readable medium including instructions which, when executed by control circuitry of a data storage apparatus, cause the control circuitry to perform a method of managing host data of a set of hosts in a data storage apparatus, the method comprising:
-
allocating a set of slices of a storage pool to a set of file systems of the data storage apparatus; storing a first file in the set of slices, the first file provided as a file in the set of file systems and providing a file representation of a LUN (logical unit number) storing block-based host data, wherein the block-based host data stored in the first file is accessible to the set of hosts using a block-based protocol; storing a second file in the set of slices, the second file provided as a file in the set of file systems and providing a file representation of a host file system storing file-based host data, wherein the file-based host data stored in the second file is accessible to the set of hosts using a file-based protocol; deallocating a slice of the set of slices from the set of file systems in response to the slice storing block-based host data of the first file and then becoming empty; reallocating the slice to the set of file systems in response to the host file system stored in the second file requiring additional storage space; and while the first file is providing the LUN, storing portions of the second file on the reallocated slice, thereby allowing the slice previously used for storing portions of the LUN to be reused for storing portions of the host file system, wherein the method further comprises; storing in a configuration database of the data storage apparatus, a set of records defining at least one virtualized storage processor, the set of records identifying multiple file systems of each virtualized storage processor; storing the file systems of each virtualized storage processor as respective files in the set of slices, each of the respective files provided as a file in the set of file systems and providing a file representation of a file system of the respective virtualized storage processor; instantiating a set of host interfaces for each of the virtualized storage processors; receiving, via the set of host interfaces for each of the virtualized storage processors, a respective set of read and write requests from the set of hosts; and for each virtualized storage processor, processing the respective set of read and write requests received via the respective set of host interfaces, to read data from and write data to at least one of the file systems of the virtualized storage processor. - View Dependent Claims (20)
-
Specification