IP Library Granted Patent US 12,045,487
Granted Patent B2
US 12,045,487 · App. 17/878,869 · Granted Jul 23, 2024

Preserving data deduplication in a multi-tenant storage system

Inventors: Swapnil Chandrashekhar Nagle (Sunnyvale, CA); Virendra Prakashaiah (Sunnyvale, CA); Ronald Karr (Palo Alto, CA)
Assignee: PURE STORAGE, INC.
G06F3/0641G06F3/0608G06F3/0623G06F3/067G06F3/0683G06F16/137G06F21/6218H04L9/08H04L9/0894H04L9/3239H04L9/3297H04L9/50
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,045,487
App. No.
17/878,869
Granted
Jul 23, 2024
Kind
B2
Abstract

A method includes receiving a request to write a data block to a volume resident on a multi-tenant storage array, wherein the request is associated with a first tenant of the multi-tenant storage array, and determining whether the data block matches an existing data block on the multi-tenant storage array, wherein the existing block corresponds to a second tenant. In response to determining that the decrypted data block matches the existing data block: encrypting the existing data block with a shared volume encryption key; encrypting the shared volume encryption key with a first tenant encryption key and providing the shared volume encryption key encrypted with the first tenant encryption key to the first tenant; and encrypting the shared volume encryption key with a second tenant encryption key and providing the shared volume encryption key encrypted with the second tenant encryption key to the second tenant.

Claims (41)

1. A multi-tenant storage system that includes one or more storage devices, the multi-tenant storage system also including a storage controller configured for:

determining that at least some portion of a dataset that is associated with a first tenant in the multi-tenant storage system matches at least some portion of a dataset that is associated with a second tenant in the multi-tenant storage system;

encrypting the portion of the dataset that is associated with the first tenant and the matching portion of the dataset that is associated with a shared encryption key;

encrypting, with an encryption key that is unique to the first tenant, a portion of the dataset that is associated with the first tenant that is unique to the first tenant; and

encrypting, with an encryption key that is unique to the second tenant, a portion of the dataset that is associated with the second tenant that is unique to the second tenant.

2. The system of claim 1 , wherein determining that at least some portion of the dataset that is associated with the first tenant in the multi-tenant storage system matches at least some portion of a dataset that is associated with the second tenant in the multi-tenant storage system further comprises:

receiving a request to write a data block to the multi-tenant storage system, wherein the request is associated with the first tenant;

based on a determination that the data block is deduplicatable, decrypting the data block to generate a decrypted data block; and

determining that the decrypted data block matches an existing data block associated with the second tenant of the multi-tenant storage system.

3. The system of claim 2 , wherein the storage controller is further configured for, based on the determination that the decrypted data block matches the existing data block, generating the shared encryption key.

4. The system of claim 2 , wherein to decrypt the data block to generate the decrypted data block, the storage controller is further configured for retrieving the first tenant encryption key based on a determination that the first tenant owns the data block.

5. The system of claim 4 , wherein to retrieve the first tenant encryption key, the storage controller is further configured for retrieving the first tenant encryption key from a key management server.

6. The system of claim 1 , wherein the storage controller is further configured for storing, in a tenant key data structure, the shared encryption key encrypted with a first tenant encryption key and the shared encryption key encrypted with a second tenant encryption key.

7. The system of claim 1 , wherein the storage controller is further configured for generating the shared encryption key based on a determination that the shared encryption key does not already exist.

8. The system of claim 1 , wherein in response to determining that a first hash value associated with the data block does not match a second hash value associated with the multi-tenant storage system, or that the decrypted data block does not match the existing data block, the storage controller is further configured for encrypting the with an encryption key that is unique to the first tenant with a first tenant key.

9. A method comprising:

determining that at least some portion of a dataset that is associated with a first tenant in a multi-tenant storage system matches at least some portion of a dataset that is associated with a second tenant in the multi-tenant storage system;

encrypting the portion of the dataset that is associated with the first tenant and the matching portion of the dataset that is associated with a shared encryption key;

encrypting, with an encryption key that is unique to the first tenant, a portion of the dataset that is associated with the first tenant that is unique to the first tenant; and

encrypting, with an encryption key that is unique to the second tenant, a portion of the dataset that is associated with the second tenant that is unique to the second tenant.

10. The method of claim 9 , wherein determining that at least some portion of the dataset that is associated with the first tenant in the multi-tenant storage system matches at least some portion of a dataset that is associated with the second tenant in the multi-tenant storage system further comprises:

receiving a request to write a data block to the multi-tenant storage system, wherein the request is associated with the first tenant;

based on a determination that the data block is deduplicatable, decrypting the data block to generate a decrypted data block; and

determining that the decrypted data block matches an existing data block associated with the second tenant of the multi-tenant storage system.

11. The method of claim 10 , further comprising, based on the determination that the decrypted data block matches the existing data block, generating the shared encryption key.

12. The method of claim 10 , further comprising retrieving the first tenant encryption key based on a determination that the first tenant owns the data block.

13. The method of claim 12 , wherein retrieving the first tenant encryption key further comprises retrieving the first tenant encryption key from a key management server.

14. The method of claim 9 , further comprising storing, in a tenant key data structure, the shared encryption key encrypted with a first tenant encryption key and the shared encryption key encrypted with a second tenant encryption key.

15. The method of claim 9 , further comprising generating the shared encryption key based on a determination that the shared encryption key does not already exist.

16. The method of claim 9 , further comprising, responsive to determining that a first hash value associated with the data block does not match a second hash value associated with the multi-tenant storage system, or that the decrypted data block does not match the existing data block, encrypting the with an encryption key that is unique to the first tenant with a first tenant key.

17. An apparatus that includes a computer memory, the computer memory including computer program instructions that, when executed, cause the apparatus to carry out the steps of:

determining that at least some portion of a dataset that is associated with a first tenant in a multi-tenant storage system matches at least some portion of a dataset that is associated with a second tenant in the multi-tenant storage system;

encrypting the portion of the dataset that is associated with the first tenant and the matching portion of the dataset that is associated with a shared encryption key;

encrypting, with an encryption key that is unique to the first tenant, a portion of the dataset that is associated with the first tenant that is unique to the first tenant; and

encrypting, with an encryption key that is unique to the second tenant, a portion of the dataset that is associated with the second tenant that is unique to the second tenant.

18. The apparatus of claim 17 , wherein determining that at least some portion of the dataset that is associated with the first tenant in the multi-tenant storage system matches at least some portion of a dataset that is associated with the second tenant in the multi-tenant storage system further comprises:

receiving a request to write a data block to the multi-tenant storage system, wherein the request is associated with the first tenant;

based on a determination that the data block is deduplicatable, decrypting the data block to generate a decrypted data block; and

determining that the decrypted data block matches an existing data block associated with the second tenant of the multi-tenant storage system.

19. The apparatus of claim 18 , further comprising computer program instructions that, when executed, cause the apparatus to carry out the step of, based on the determination that the decrypted data block matches the existing data block, generating the shared encryption key.

20. The apparatus of claim 17 , further comprising computer program instructions that, when executed, cause the apparatus to carry out the step of generating the shared encryption key based on a determination that the shared encryption key does not already exist.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2022
From: NAGLE, SWAPNIL CHANDRASHEKHAR; PRAKASHAIAH, VIRENDRA; KARR, RONALD
To: PURE STORAGE, INC.
Reel/Frame 060690/0622 →
Continuity (5)
Continuation 16171907 · Oct 26, 2018
Continuation In Part 15494360 · Apr 21, 2017
Provisional Application 62750764 · Oct 25, 2018
Provisional Application 62639009 · Mar 6, 2018
Related Publication 20230004315A1 · Jan 5, 2023