Embodiments of the invention provide data reduction in storage systems. In one embodiment, a computer comprises: a memory; and a controller operable to manage information, which corresponds to a plurality of addresses, of one or more volumes provided from a storage system to the computer and including at least one set of multiple storage areas sharing same data to be stored in the storage system. The controller is operable to manage storing of the shared same data in the memory of the computer by using the information of the storage areas.
Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.
1. A computer coupled to a storage system which includes a plurality of virtual volumes, the computer comprising: a memory; and a controller operable to manage information stored in the memory, which corresponds to a plurality of addresses, of the plurality of virtual volumes provided from the storage system to the computer and including at least one set of multiple storage areas sharing same data to be stored in the storage system, wherein the controller is operable to manage storing of the shared same data in the memory of the computer by using the information of the at least one set of multiple storage areas, wherein the information of the at least one set of multiple storage areas comprises information relating to virtual volume identifiers (IDs) of the plurality of virtual volumes, virtual volume addresses of the plurality of virtual volumes, pool addresses in a pool of physical storage areas in the storage system which correspond to the virtual volume IDs and the virtual volume addresses, and memory addresses in the memory of the computer which correspond to the pool addresses indicating storing of data of the pool addresses in the memory of the computer, wherein the controller sends an I/O command to the storage system specifying a virtual volume ID of the virtual volume IDs and a virtual volume address of the virtual volume addresses to access the shared same data, and wherein the controller receives the information relating to the pool addresses from the storage system and stores the pool addresses in the memory.
A computer connected to a storage system with virtual volumes manages data reduction by identifying and storing shared data efficiently. The computer has memory and a controller. The controller manages information about virtual volumes, including virtual volume IDs, virtual volume addresses, and corresponding pool addresses in the storage system, as well as where the data for those pool addresses is stored in the computer's memory. When the computer needs data, it sends a request (I/O command) specifying the virtual volume ID and address. The storage system responds with the pool address. The computer then stores the pool address information in its memory, enabling it to locate the shared data.
2. The computer according to claim 1 , wherein the controller is operable to use the information relating to any pool address of the pool addresses to determine whether data of the pool address is already stored in the memory of the computer, and if the data of the pool address is not already stored in the memory, then allocate an area in the memory to store the data of the pool address.
Building upon the computer described in Claim 1, before storing data associated with a pool address, the controller checks if that data is already in memory. Specifically, the computer checks if the data of the pool address is already stored in the memory of the computer using the information relating to the pool address. If it's not already stored, the controller allocates a new memory area to store the data for that pool address, thereby avoiding redundant copies and conserving memory.
3. The computer according to claim 1 , wherein the controller is operable to update the information as a result of any of an update of the virtual volume IDs and the virtual volume addresses, an update of the pool addresses which correspond to the virtual volume IDs and the virtual volume addresses, or an update of the memory addresses which correspond to the pool addresses.
Expanding on the computer described in Claim 1, the controller maintains up-to-date information about the locations of data. The information about data locations is updated if any of the following changes: the virtual volume IDs or addresses change; the corresponding pool addresses in the storage system change; or the memory addresses where the data is stored within the computer change. This ensures the computer always has the correct mapping of virtual volumes to physical storage locations and cached data.
4. The computer according to claim 1 , wherein, for reading data from a read target region of the storage system if the data in the read target region is not already stored in the memory of the computer, the controller is operable to: receive data from the storage system and a first pool address in the pool of physical storage areas in the storage system which corresponds to a first virtual volume identifier (ID) and a first virtual volume address of the target region; allocate an area in the memory and store the received data in the allocated area in the memory; and update the information to reflect any changes to a correspondence between the first virtual volume ID and the first virtual volume address and the first pool address, and any changes to a correspondence between a first memory address of the allocated area in the memory and the first pool address.
Using the computer described in Claim 1, when reading data from the storage system, if the requested data is not already in the computer's memory, the controller fetches the data and associated pool address from the storage system. Then, the controller allocates space in its memory, stores the received data, and updates its internal information (virtual volume ID, virtual volume address, pool address, memory address) to reflect the new location of the data, enabling future access from the computer's memory.
5. The computer according to claim 1 , wherein, for writing write data to a write destination region of the storage system, the controller is operable to: receive a completion message of writing the write data to the write destination region of the storage system and a first pool address in the pool of physical storage areas in the storage system which corresponds to a first virtual volume identifier (ID) and a first virtual volume address of the write destination region; determine whether the received first pool address corresponding to the first virtual volume ID and the first virtual volume address of the write destination region is registered in a pool address table and whether the received first pool address corresponding to the first virtual volume ID and the first virtual volume address of the write destination region has changed in the pool address table, the pool address table showing a correspondence between the first pool address and the first virtual volume ID and the first virtual volume address; if the received first pool address is registered in the pool address table and if the received first pool address corresponding to the first virtual volume ID and the first virtual volume address of the write destination region has not changed in the pool address table, then determine whether the memory has an area allocated for the received first pool address and, if yes, then store the write data in the memory and, if no, then allocate an area in the memory, update information on a correspondence between the received first pool address and a memory address of the allocated area in the memory, and store the write data to the allocated area in the memory; and if the received first pool address is not registered in the pool address table or if the received first pool address corresponding to the first virtual volume ID and the first virtual volume address of the write destination region has changed in the pool address table, then update the pool address table to register the first received pool address corresponding to the first virtual volume ID and the first virtual volume address of the write destination region, allocate an area in the memory, update information on a correspondence between the received first pool address and a memory address of the allocated area in the memory, and store the write data to the allocated area in the memory.
In the computer described in Claim 1, when writing data, the controller receives a completion message and pool address from the storage system after the data has been written to the storage. It then consults a pool address table that maps virtual volume locations to pool addresses. If the pool address is already registered and unchanged, the controller checks if the corresponding data is already cached in memory. If so, the new write data is stored into allocated area in the memory. If there is no allocated area, then the controller allocates an area to store the write data to the allocated area in the memory. If the pool address is new or changed, the controller updates the table, allocates a new memory area, and stores the data there.
6. The computer according to claim 1 , wherein, for releasing an area in the memory corresponding to a first virtual volume identifier (ID) and a first virtual volume address, the controller is operable to: delete a record of the first virtual volume ID and the first virtual volume address and a corresponding first pool address in a pool address table showing a correspondence between the first pool address and the first virtual volume ID and the first virtual volume address; and if the first pool address has a corresponding memory address indicating storing of data of the first pool address in an area of the memory at the memory address and if there is no other virtual volume ID and virtual volume address corresponding to the first pool address, then release the area of the memory at the memory address and update information on a correspondence between the first pool address and the memory address to reflect release of the area at the memory address.
Concerning the computer from Claim 1, when releasing memory, the controller removes the entry for the released virtual volume ID and address (and its corresponding pool address) from a pool address table. If the pool address had a corresponding memory address and is no longer associated with any other virtual volume, the controller releases the memory area and updates the memory address information to reflect the release. This ensures that memory is freed up only when it's no longer needed by any virtual volume.
7. The computer according to claim 1 , wherein, for writing, in write back mode, write data to a write destination region having a write target address which is a first virtual volume identifier (ID) and a first virtual volume address in the storage system, the controller is operable to: if a write back value of the write target address to write data in the storage system is ON indicating the write data is cached in an allocated area in the memory but has not yet been written to the storage system, writing the write data in the allocated area in the memory of the computer; if the write back value of the write target address to write data in the storage system is not ON, and if there is no memory address in the memory corresponding to a first pool address which corresponds to the write target address or if the pool address corresponds to multiple virtual volume addresses in the storage system, then allocate an area in the memory, update information on a correspondence between the first pool address and the write target address, update information on a correspondence between the valid first pool address and a memory address of the allocated area in the memory, and store the write data to the allocated area in the memory; if the write back value of the write target address to write data in the storage system is not ON, and if there is a memory address in the memory corresponding to the first pool address which corresponds to the write target address, and if the first pool address does not correspond to multiple virtual volume addresses in the storage system, then store the write data to the allocated area in the memory; and write the write data in the memory to the write target address in the storage system asynchronously.
Using the computer from Claim 1, in a write-back mode, the computer caches write data in its memory before writing it to the storage system. If a "write back" flag is ON (indicating the data is cached but not yet written), the data is written in the allocated memory area of the computer. If it's OFF and there's no corresponding memory address for the pool address (or the pool address is shared across multiple virtual volumes), the controller allocates memory, updates mappings, and stores the data there. If it's OFF and there's a corresponding memory address that's not shared, the write data is stored to the allocated area in the memory. The data in memory is then asynchronously written back to the storage system.
8. The computer according to claim 1 , wherein the computer is a first computer that shares a virtual volume of the storage system with a second computer and stores data in the shared virtual volume to a memory address in the memory of the first computer which is a first memory, the data also to be stored in a second memory of the second computer, and wherein if the data in the shared virtual volume is updated in the memory of the second computer, the second computer sends an invalidation message to the first computer, and the controller of the first computer is operable to delete the data from the memory address in the first memory and delete a correspondence between the memory address and a first virtual volume ID (identifier) and a first virtual volume address of the shared virtual volume.
Extending Claim 1, consider a scenario where two computers share a virtual volume. If the second computer updates data in the shared volume, it sends a message to the first computer. Upon receiving this message, the first computer's controller deletes the outdated data from its memory and removes the mapping between the memory address, the virtual volume ID, and the virtual volume address. This ensures data consistency across the shared virtual volume.
9. A storage system having a plurality of volumes in a system which includes the storage system and a computer coupled to the storage system that stores in a memory data to be stored in the storage system, including data which is same data shared by at least one set of multiple storage areas in the storage system, the storage system comprising: a storage device to provide a plurality of volumes to a computer for storing data, the plurality of volumes including the at least one set of multiple storage areas sharing the same data to be stored in the storage device; and a storage controller operable to receive an I/O (Input/Output) command from the computer specifying a virtual volume identifier (ID) and an address of a volume of the plurality of volumes in the storage device, calculate a pool address in a pool of physical storage areas in the storage device which corresponds to the specified virtual volume ID and the specified address of the volume, and send the pool address corresponding to the specified virtual volume ID and the specified address of the volume to the computer.
A storage system is designed to reduce data storage by identifying and handling shared data. It includes a storage device for storing volumes and a controller. When the computer sends a request specifying a virtual volume ID and address, the storage controller calculates the corresponding pool address (physical storage location). The controller then sends this pool address back to the computer so the computer can access the data.
10. The storage system according to claim 9 , wherein the I/O command is a write command to write write data to a write destination region having the specified virtual volume ID and the specified address of the volume, and wherein the storage controller is operable to: if no pool area is allocated to the specified virtual volume ID and specified address of the volume or if the calculated pool address is shared by the at least one set of multiple storage areas, calculate a hash value for the write data, determine if there is any same data stored in the storage system having the hash value, update the pool address of the write data to a pool address of the same data having the hash value if the same data having the hash value is already stored in the storage system, allocate an area in the pool having an allocated pool address in the pool and update the pool address of the write data to the allocated pool address if there is no same data stored in the storage system, and send to the computer the updated pool address corresponding to the specified virtual volume ID and the specified address of the volume; and if a pool area is allocated to the specified virtual volume ID and specified address of the volume and if the calculated pool address is not shared by multiple volume addresses, store the write data to the calculated pool address, and send to the computer the calculated pool address corresponding to the specified virtual volume ID and the specified address of the volume.
In the storage system of Claim 9, when the computer sends a write command, the storage controller checks if a pool area is already allocated. If not, or if the calculated pool address is shared, the controller calculates a hash of the data. If identical data (same hash) already exists, the controller updates the write data's pool address to point to the existing data. Otherwise, it allocates a new pool area, updates the write data's pool address, and sends the updated pool address back to the computer. If a pool area is allocated and the pool address is not shared, write data to calculated pool address, and sends the calculated pool address back to the computer.
11. The storage system according to claim 9 , wherein, upon receiving an area release command for releasing an area in the memory corresponding to a virtual volume ID and an address of the volume in the storage device, the controller is operable to: calculate a pool address corresponding to the virtual volume ID and address of the volume corresponding to the area in the memory to be released; if the calculated pool address corresponds to multiple volume addresses, then delete a correspondence between a hash value of data in the virtual volume ID and the address of the volume and the virtual volume ID and the address of the volume which corresponds to the area in the memory to be released; and if the calculated pool address does not correspond to multiple volume addresses, then release a pool area corresponding to the calculated pool address, delete a correspondence between a hash value of data in the calculated pool address and the calculated pool address, and delete the correspondence between the hash value of data in the virtual volume ID and the address of the volume and the virtual volume ID and the address of the volume which corresponds to the area in the memory to be released.
Expanding on the storage system of Claim 9, when the computer requests to release a memory area, the storage controller calculates the corresponding pool address. If this pool address is shared by multiple virtual volumes, the controller only removes the association between the data's hash value and the specific virtual volume ID/address being released. If the pool address is *not* shared, the controller releases the pool area, removes the hash value association, and removes the virtual volume ID/address mapping.
12. The storage system according to claim 9 , wherein the I/O command is a read command to read data from a read target region having the specified virtual volume ID and the specified address of the volume, and wherein, upon receiving from the computer a pool address obtainment command for obtaining a pool address corresponding to the specified virtual volume ID and the specified address of the volume in the storage device prior to reading the data, the storage controller is operable to: calculate a pool address of the specified virtual volume ID and the specified address of the volume based on a correspondence between the specified virtual volume ID and the specified address of the volume and a hash value of data in the specified virtual volume ID and the specified address of the volume and a correspondence between the hash value and the pool address; and send the calculated pool address to the computer.
Building upon the storage system from Claim 9, when the computer needs to read data, it first sends a request to the storage system to obtain the pool address. The storage controller calculates the pool address based on the virtual volume ID, address, and hash value of the data. The storage controller then sends the calculated pool address back to the computer, which can then retrieve the data.
13. A system comprising: a storage system having a storage device to provide a plurality of volumes for storing data, and a storage controller; a computer coupled to the storage system and having a memory, and a controller operable to manage information stored in the memory, which corresponds to a plurality of addresses, of the plurality of volumes provided from the storage system to the computer and including at least one set of multiple storage areas sharing same data to be stored in the storage system, wherein the controller is operable to manage storing of the shared same data in the memory of the computer by using the information of the at least one set of multiple storage areas, and wherein the information of the at least one set of multiple storage areas comprises information relating to virtual volume identifiers (IDs) and addresses of the plurality of volumes, pool addresses in a pool of physical storage areas in the storage system which correspond to the virtual volume IDs and addresses of the plurality of volumes, and memory addresses in the memory of the computer which correspond to the pool addresses indicating where data of the pool addresses are stored in the memory, and wherein the controller receives the information relating to the pool addresses from the storage system and stores the pool addresses in the memory.
A system comprised of a storage system and a computer working together to reduce data storage. The storage system provides virtual volumes via a storage device and storage controller. The computer, with its memory and controller, manages information about these volumes, including virtual volume IDs, addresses, and corresponding pool addresses in the storage system. The computer stores the pool addresses in its memory, indicating where the data resides. The computer manages storing the shared same data in the memory of the computer by using the information of the at least one set of multiple storage areas.
14. The system according to claim 13 , wherein the storage controller is operable to receive an Input/Output (I/O) command from the computer specifying a first virtual volume ID and a first address of a volume in the storage device, calculate a first pool address in a pool of physical storage areas in the storage device which corresponds to the first virtual volume ID and the first address of the volume, and send the first pool address corresponding to the first virtual volume ID and the first address of the volume to the computer, and wherein the controller is operable to determine whether data of the first pool address is already stored in the memory of the computer, and if the data of the first pool address is not already stored in the memory, then allocate an area in the memory to store the data of the first pool address.
Based on the system from Claim 13, when the computer sends a read request specifying a virtual volume ID and address, the storage controller calculates the corresponding pool address and sends it back to the computer. The computer then checks if the data for that pool address is already stored in its memory. If not, it allocates a new memory area to store the data.
15. The system according to claim 13 , wherein the storage controller is operable to: receive a write command from the computer to write write data to a write destination region having a first virtual volume identifier (ID) and a first address of the volume; if no pool area is allocated to the first virtual volume ID and the first address of the volume or if a calculated first pool address is shared by the at least one set of multiple storage areas, calculate a hash value for the write data, determine if there is any same data stored in the storage system having the hash value, update the first pool address of the write data to a second pool address of the same data having the hash value if the same data having the hash value is already stored in the storage system; and if a pool area is allocated to the first virtual volume ID and the first address of the volume and if the calculated first pool address is not shared by multiple virtual volume addresses, store the write data to the calculated first pool address, and send to the computer the calculated first pool address corresponding to the first virtual volume ID and the first address of the volume.
Using the system of Claim 13, when the computer wants to write data, the storage controller first checks if a pool area is already allocated to the specified virtual volume and address. If not, or if the calculated pool address is shared, the controller calculates a hash of the write data. If identical data (same hash) already exists, the pool address is updated to point to the existing data's pool address. Otherwise, it stores the write data to the calculated pool address, and sends the calculated pool address back to the computer.
16. The system according to claim 15 , wherein the controller is operable to: receive a completion message of writing the write data to the write destination region of the storage system and the first pool address from the storage system; determine whether the received first pool address corresponding to the first virtual volume ID and the first address of the volume is registered in a pool address table and whether the received first pool address corresponding to the first virtual volume ID and the first address of the volume has changed in the pool address table, the pool address table showing a correspondence between the first pool address and the first virtual volume ID and the first address of the volume; if the received first pool address is registered in the pool address table and if the received first pool address corresponding to the first virtual volume ID and the first address of the volume has not changed in the pool address table, then determine whether the memory has an area allocated for the received first pool address and, if yes, then store the write data in the memory and, if no, then allocate an area in the memory, update information on a correspondence between the received first pool address and a memory address of the allocated area in the memory, and store the write data to the allocated area in the memory; and if the received first pool address is not registered in the pool address table or if the received first pool address corresponding to the first virtual volume ID and the first address of the volume has changed in the pool address table, then update the pool address table to register the received first pool address corresponding to the first virtual volume ID and the first address of the volume, allocate an area in the memory, update information on a correspondence between the received first pool address and a memory address of the allocated area in the memory, and store the write data to the allocated area in the memory.
In the system defined in Claim 15, after writing data, the computer receives a completion message and the pool address from the storage system. The computer checks a pool address table to see if the pool address is already registered and unchanged. If so, and if the data isn't already in memory, the computer allocates memory and stores the data. If the pool address is new or has changed, the computer updates the table, allocates memory, and stores the data.
17. The system according to claim 13 , wherein, upon receiving from the computer an area release command for releasing an area in the memory corresponding to a first virtual volume identifier (ID) and the first address of the volume in the storage device, the controller is operable to: calculate a first pool address corresponding to the first virtual volume ID and the first address of the volume corresponding to the area in the memory to be released; if the calculated first pool address corresponds to multiple virtual volume addresses, then delete a correspondence between a hash value of data in the first virtual volume ID and the first address of the volume and the first virtual volume ID and the first address of the volume which corresponds to the area in the memory to be released; and if the calculated first pool address does not correspond to multiple virtual volume addresses, then release a pool area corresponding to the calculated first pool address, delete a correspondence between a hash value of data in the calculated first pool address and the calculated first pool address, and delete the correspondence between a hash value of data in the first virtual volume ID and the first address of the volume and the first virtual volume ID and the first address of the volume which corresponds to the area in the memory to be released.
Considering the system of Claim 13, if the computer releases a memory area, the controller calculates the corresponding pool address. If that pool address is shared across multiple virtual volume addresses, only the mapping between the data's hash value and the specific released virtual volume ID/address is removed. If the pool address is not shared, the pool area is released, the hash value mapping is removed, and the virtual volume ID/address mapping is removed from the pool.
18. The system according to claim 17 , wherein the controller is operable to: receive the calculated first pool address from the storage system; delete a record of the first virtual volume ID and the first address of the volume and a corresponding first pool address in a pool address table showing a correspondence between the first pool address and the first virtual volume ID and the first address of the volume; and if the first pool address has a corresponding memory address indicating storing of data of the first pool address in an area of the memory at the memory address and if there is no other virtual volume ID and address of the volume corresponding to the first pool address, then release the area of the memory at the memory address and update information on a correspondence between the first pool address and the memory address to reflect release of the area at the memory address.
Within the system of Claim 17, the computer receives the pool address from the storage system. Then, the computer removes the entry for the released virtual volume ID and address (and its corresponding pool address) from a pool address table. If that pool address is no longer associated with any other virtual volume, the computer releases the memory area and updates the memory address information to reflect the release.
19. A storage system having a plurality of storage areas and which is connected to a computer, the storage system comprising: a storage device which includes at least one set of multiple storage areas sharing same data to be stored in the storage device; and a storage controller operable to receive a command from the computer specifying one storage area of the at least one set of multiple storage areas, calculate an ID regarding the data shared by the one storage area, and send the ID to the computer, wherein the storage controller is operable to receive an Input/Output (I/O) command from the computer specifying a virtual volume identifier (ID) and an address of a volume in the storage device corresponding to the one storage area, calculate a pool address in a pool of physical storage areas in the storage device which corresponds to the specified virtual volume ID and the specified address of the volume, and send the pool address corresponding to the specified virtual volume ID and the specified address of the volume to the computer as the ID regarding the data shared by the one storage area.
A storage system connected to a computer that manages shared data in multiple storage areas. The storage device contains multiple storage areas which share the same data. The storage controller receives a command from the computer specifying one of these storage areas, calculates an ID related to shared data, and sends this ID to the computer. The controller receives an I/O command from the computer specifying a virtual volume ID and address, and calculates a pool address corresponding to the specified virtual volume ID and address of the volume, and sends the pool address to the computer as the ID.
20. The storage system according to claim 19 , wherein the storage device provides a plurality of volumes to the computer for storing data, the plurality of volumes including the at least one set of multiple storage areas sharing same data to be stored in the storage device.
The storage system described in Claim 19, includes a storage device that provides multiple volumes to the computer for storing data, including sets of multiple storage areas that share the same data.
21. The storage system according to claim 19 , wherein the I/O command is a write command to write write data to a write destination region having the specified virtual volume ID and the specified address of the volume, and wherein the storage controller is operable to: if no pool area is allocated to the specified virtual volume ID and specified address of the volume or if the calculated pool address is shared by the at least one set of multiple storage areas, calculate a hash value for the write data, determine if there is any same data stored in the storage system having the hash value, update the pool address of the write data to a pool address of the same data having the hash value if the same data having the hash value is already stored in the storage system, allocate an area in the pool having an allocated pool address in the pool and update the pool address of the write data to the allocated pool address if there is no same data stored in the storage system, and send to the computer the updated pool address corresponding to the specified virtual volume ID and the specified address of the volume; and if a pool area is allocated to the specified virtual volume ID and specified address of the volume and if the calculated pool address is not shared by multiple virtual volume addresses, store the write data to the calculated pool address, and send to the computer the calculated pool address corresponding to the specified virtual volume ID and the specified address of the volume.
For the storage system of Claim 19, when the computer sends a write command, the storage controller determines whether the data already exists. If there is no existing data, or if the calculated pool address is shared, the controller calculates a hash value for the write data, searches for existing data with the same hash value, and if the same data already exists, then update the pool address of the write data to the pool address of the same data. If the same data doesn't exist, the controller allocates a pool area. If there is an allocated pool area, and if the calculated pool address is not shared by multiple virtual volume addresses, stores the write data to the calculated pool address, and sends the calculated pool address back to the computer.
22. The storage system according to claim 19 , wherein, upon receiving an area release command for releasing an area in the memory corresponding to a virtual volume ID and an address of a volume in the storage device, the controller is operable to: calculate a pool address corresponding to the virtual volume ID and an address corresponding to the area in the memory to be released; if the calculated pool address corresponds to multiple virtual volume addresses, then delete a correspondence between a hash value of data in the virtual volume ID and the address and the virtual volume ID and the address which corresponds to the area in the memory to be released; and if the calculated pool address does not correspond to multiple virtual volume addresses, then release a pool area corresponding to the calculated pool address, delete a correspondence between a hash value of data in the calculated pool address and the calculated pool address, and delete the correspondence between a hash value of data in the virtual volume ID and the address of the volume and the virtual volume ID and the address which corresponds to the area in the memory to be released.
Based on the storage system in Claim 19, when the computer sends a command to release a memory area, the controller calculates a pool address and, if the pool address is shared by multiple virtual volume addresses, deletes a correspondence between a hash value of data in the virtual volume ID and the address and the virtual volume ID and the address corresponding to the area in the memory to be released. If the calculated pool address isn't shared by multiple virtual volume addresses, releases a pool area, deletes a correspondence between a hash value of data in the calculated pool address and the calculated pool address, and deletes the correspondence between the hash value of data and the virtual volume ID and address.
23. The storage system according to claim 19 , wherein the I/O command is a read command to read data from a read target region having the specified virtual volume ID and the specified address of the volume, and wherein, upon receiving from the computer a pool address obtainment command for obtaining a pool address corresponding to the specified virtual volume ID and the specified address of the volume in the storage device prior to reading the data, the storage controller is operable to: calculate a pool address of the specified virtual volume ID and the specified address of the volume based on a correspondence between the specified virtual volume ID and the specified address of the volume and a hash value of data in the specified virtual volume ID and the specified address of the volume and a correspondence between the hash value and the pool address; and send the calculated pool address to the computer.
For the storage system described in Claim 19, when the computer sends a command to retrieve a pool address to read the data from a read target region, prior to actually reading the data, the storage controller calculates the pool address based on the virtual volume ID and address, the hash value, and the correspondence between the hash value and pool address, and sends the calculated pool address back to the computer.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
January 17, 2013
March 28, 2017
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.