IP Library Granted Patent US 12,596,816
Granted Patent B2
US 12,596,816 · App. 18/394,167 · Granted Apr 7, 2026

Performing deduplication on multi-tenancy dataset

Inventors: Ronald Karr (Palo Alto, CA); Constantine Sapuntzakis (Palo Alto, CA); John Colgrove (Los Altos, CA)
Assignee: PURE STORAGE, INC.
G06F21/602G06F3/0604G06F3/0619G06F3/0622G06F3/0623G06F3/065G06F3/0659G06F3/067G06F3/0673G06F11/1453G06F11/1464G06F16/164G06F16/1748G06F16/1824G06F21/6218H04L9/0816H04L9/14H04L67/1097G06F21/107H04L2209/30
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,596,816
App. No.
18/394,167
Granted
Apr 7, 2026
Kind
B2
Abstract

End-to-end encryption in a storage system with multi-tenancy, includes: performing deduplication on a first tenant dataset, the first tenant dataset including data encrypted using a first storage system encryption key; and performing deduplication on a second tenant dataset, the second tenant dataset including data encrypted using a second storage system encryption key, where deduplication is not performed between the first and second tenant datasets.

Claims (68)

1 . A method implemented by a storage system comprising a processor and a memory, the method comprising:

deduplicating, by the processor of the storage system, different decrypted datasets of a particular tenant of a plurality of tenants storing datasets in the storage system, wherein the different decrypted datasets were previously encrypted with different storage system encryption keys for the particular tenant, wherein deduplication data for a decrypted dataset includes limiting deduplication processes to data within a same decrypted dataset; and

storing, within the storage system, the deduplicated tenant datasets.

2 . The method of claim 1 , further comprising:

performing deduplication on a first tenant dataset by performing deduplication on first metadata associated with the first tenant dataset, wherein the first metadata includes one or more of a first set of key identifiers or one or more initialization vectors;

performing deduplication on a second tenant dataset by performing deduplication on second metadata associated with the second tenant dataset, wherein the second metadata includes one or more of a second set of key identifiers or one or more initialization vectors; and

deduplication is not performed between metadata of the first tenant dataset and the second tenant dataset.

3 . The method of claim 2 , further comprising:

receiving a write request of data to be stored in the first tenant dataset, wherein the data is encrypted by a host with a host encryption key; and

storing the data in the first tenant dataset, including:

decrypting the data utilizing the host encryption key;

performing data reduction on the decrypted data;

encrypting the data utilizing a first storage system encryption key; and

storing the data encrypted with the first storage system encryption key in the first tenant dataset.

4 . The method of claim 3 , further comprising:

receiving a write request of data to be stored in the second tenant dataset, wherein the data is encrypted by the host with a second host encryption key; and

storing the data in the second tenant dataset, including:

decrypting the data utilizing the second host encryption key;

performing data reduction on the decrypted data;

encrypting the data utilizing a second storage system encryption key; and

storing the data encrypted with the second storage system encryption key in the second tenant dataset.

5 . The method of claim 3 , wherein:

decrypting the data utilizing a first host encryption key by generating re-encryption information describing details of re-encrypting the data utilizing the first host encryption key.

6 . The method of claim 5 , wherein the re-encryption information comprises the first host encryption key and an initialization vector for use in re-encrypting the data.

7 . The method of claim 5 , wherein the re-encryption information specifies a method of calculating the first host encryption key and an initialization vector for use in re-encrypting the data.

8 . The method of claim 1 , further comprising:

receiving a read request for data stored in a tenant dataset;

decrypting the data from the tenant dataset utilizing a storage system encryption key associated with the tenant dataset; and

re-encrypting the data utilizing a host encryption key and re-encryption information.

9 . The method of claim 1 , wherein performing deduplication on the different decrypted tenant datasets comprises in-line deduplication.

10 . The method of claim 1 , wherein performing deduplication on the different decrypted tenant datasets comprises in-place deduplication.

11 . The method of claim 1 , further comprising:

performing deduplication on a first tenant dataset and generating a first block key for a first block of data in the first tenant dataset;

performing deduplication on a second tenant dataset and generating a second block key for a second block of data in the second tenant dataset, wherein the first block of data and the second block of data match and the first block key and the second block key match; and

storing, in metadata for the first tenant dataset and the second tenant dataset, a location of the matching block of data and the respective block key.

12 . A storage system, comprising:

a memory; and

a processing device, operatively coupled to the memory, configured to:

deduplicate, by the processing device of the storage system, different decrypted datasets of a particular tenant of a plurality of tenants storing datasets in the storage system, wherein the different decrypted datasets were previously encrypted with different storage system encryption keys for the particular tenant, wherein deduplication data for a decrypted dataset includes limiting deduplication processes to data within a same decrypted dataset; and

store, within the storage system, the deduplicated tenant datasets.

13 . The storage system of claim 12 , wherein the processing device is further configured to:

perform deduplication on a first tenant dataset by performing deduplication on first metadata associated with the first tenant dataset, wherein the first metadata includes one or more of a first set of key identifiers or one or more initialization vectors; and

perform deduplication on a second tenant dataset by performing deduplication on second metadata associated with the second tenant dataset, wherein the second metadata includes one or more of a second set of key identifiers or one or more initialization vectors.

14 . The storage system of claim 13 , wherein the processing device is further configured to:

receive a write request of data to be stored in the first tenant dataset, wherein the data is encrypted by a host with a host encryption key; and

store the data in the first tenant dataset, including:

decrypt the data utilizing the host encryption key;

perform data reduction on the decrypted data;

encrypt the data utilizing a first storage system encryption key; and

store the data encrypted with the first storage system encryption key in the first tenant dataset.

15 . The storage system of claim 14 , wherein the processing device is further configured to:

receive a write request of data to be stored in the second tenant dataset, wherein the data is encrypted by the host with a second host encryption key; and

store the data in the second tenant dataset, including:

decrypt the data utilizing the second host encryption key;

perform data reduction on the decrypted data;

encrypt the data utilizing a second storage system encryption key; and

store the data encrypted with the second storage system encryption key in the second tenant dataset.

16 . The storage system of claim 15 , wherein the processing device is further configured to:

decrypt the data utilizing a first host encryption key by generating re-encryption information describing details of re-encrypting the data utilizing the first host encryption key.

17 . The storage system of claim 16 , wherein the re-encryption information comprises the first host encryption key and an initialization vector for use in re-encrypting the data.

18 . The storage system of claim 16 , wherein the re-encryption information specifies a method of calculating the first host encryption key and an initialization vector for use in re-encrypting the data.

19 . The storage system of claim 18 , wherein the processing device is further configured to:

receive a read request for data stored in a tenant dataset;

decrypt the data from the tenant dataset utilizing a storage system encryption key associated with the tenant dataset; and

re-encrypt the data utilizing a host encryption key and re-encryption information.

20 . A non-transitory computer readable storage medium storing instructions which, when executed, cause a processor of a storage system to:

deduplicate, by the processor of the storage system, different decrypted datasets of a particular tenant of a plurality of tenants storing datasets in the storage system, wherein the different decrypted datasets were previously encrypted with different storage system encryption keys for the particular tenant, wherein deduplication data for a decrypted dataset includes limiting deduplication processes to data within a same decrypted dataset; and

store, within the storage system, the deduplicated tenant datasets.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 27, 2023
From: KARR, RONALD; SAPUNTZAKIS, CONSTANTINE; COLGROVE, JOHN
To: PURE STORAGE, INC.
Reel/Frame 065958/0858 →
Continuity (3)
Continuation 16937723 · Jul 24, 2020
Provisional Application 62944617 · Dec 6, 2019
Related Publication 20240311496A1 · Sep 19, 2024
References Cited (68)
US 5680538A · Jones · 1997 [cited by examiner]
US 7512814B2 · Chen · 2009 [cited by examiner]
US 7533256B2 · Walter · 2009 [cited by examiner]
US 7975115B2 · Wayda et al. · 2011 [cited by applicant]
US 8428265B2 · Bosson · 2013 [cited by examiner]
US 8504797B2 · Mimatsu · 2013 [cited by applicant]
US 8589697B2 · Subramanian · 2013 [cited by examiner]
US 8782151B2 · Wang · 2014 [cited by examiner]
US 8822155B2 · Sukumar et al. · 2014 [cited by applicant]
US 9280678B2 · Redberg · 2016 [cited by applicant]
US 9342465B1 · Meiri · 2016 [cited by examiner]
US 9395922B2 · Nishikido et al. · 2016 [cited by applicant]
US 9396341B1 · Chandra · 2016 [cited by examiner]
US 9418131B1 · Halevi · 2016 [cited by examiner]
US 9424269B1 · Gipp · 2016 [cited by examiner]
US 9602283B1 · Chandra · 2017 [cited by examiner]
US 9606870B1 · Meiri · 2017 [cited by examiner]
US 9742564B2 · Moffat · 2017 [cited by examiner]
US 9779269B1 · Perlman · 2017 [cited by examiner]
US 9959049B1 · Armangau · 2018 [cited by examiner]
US 9996539B1 · Natanzon · 2018 [cited by examiner]
US 10102390B2 · Cordella · 2018 [cited by examiner]
US 10324639B2 · Seo · 2019 [cited by applicant]
US 10387066B1 · Gonczi · 2019 [cited by examiner]
US 10567406B2 · Astigarraga et al. · 2020 [cited by applicant]
US 10846137B2 · Vallala et al. · 2020 [cited by applicant]
US 10877683B2 · Wu et al. · 2020 [cited by applicant]
US 11076509B2 · Alissa et al. · 2021 [cited by applicant]
US 11194707B2 · Stalzer · 2021 [cited by applicant]
US 20040085955A1 · Walter · 2004 [cited by examiner]
US 20070094507A1 · Rush · 2007 [cited by examiner]
US 20070294524A1 · Katano · 2007 [cited by examiner]
US 20080256141A1 · Wayda et al. · 2008 [cited by applicant]
US 20100306500A1 · Mimatsu · 2010 [cited by applicant]
US 20110035540A1 · Fitzgerald et al. · 2011 [cited by applicant]
US 20110283113A1 · Moffat · 2011 [cited by examiner]
US 20120250862A1 · Bosson · 2012 [cited by examiner]
US 20130227352A1 · Kumarasamy · 2013 [cited by examiner]
US 20140006797A1 · Cordella · 2014 [cited by examiner]
US 20140220561A1 · Sukumar et al. · 2014 [cited by applicant]
US 20150154418A1 · Redberg · 2015 [cited by applicant]
US 20160004716A1 · Akirav · 2016 [cited by examiner]
US 20160026397A1 · Nishikido et al. · 2016 [cited by applicant]
US 20160182542A1 · Staniford · 2016 [cited by applicant]
US 20160196320A1 · Borowiec · 2016 [cited by examiner]
US 20160248631A1 · Duchesneau · 2016 [cited by applicant]
US 20170169233A1 · Hsu · 2017 [cited by examiner]
US 20170255643A1 · Maheshwari · 2017 [cited by examiner]
US 20170262202A1 · Seo · 2017 [cited by applicant]
US 20180054454A1 · Astigarraga et al. · 2018 [cited by applicant]
US 20180081562A1 · Vasudevan · 2018 [cited by applicant]
US 20180143994A1 · Ohtsuji · 2018 [cited by examiner]
US 20180260125A1 · Botes · 2018 [cited by examiner]
US 20190073152A1 · Nagle · 2019 [cited by examiner]
US 20190087115A1 · Li · 2019 [cited by examiner]
US 20190215155A1 · Wang · 2019 [cited by examiner]
US 20190220315A1 · Vallala et al. · 2019 [cited by applicant]
US 20190324916A1 · Armangau · 2019 [cited by examiner]
US 20190332300A1 · Singh · 2019 [cited by examiner]
US 20190340136A1 · Irwin · 2019 [cited by examiner]
US 20200034560A1 · Natanzon · 2020 [cited by examiner]
US 20200326871A1 · Wu et al. · 2020 [cited by applicant]
US 20210149846A1 · McGregor · 2021 [cited by examiner]
US 20210360833A1 · Alissa et al. · 2021 [cited by applicant]
WO WO2021113488A1 · 2021 [cited by examiner]
Hwang K., et al., “RAID-x: A New Distributed Disk Array for I/O-Centric Cluster Computing,” Proceedings of The Ninth International Symposium On High-performance Distributed Computing, IEEE Computer Society, Los Alamitos… [cited by applicant]
Stalzer M.A., “FlashBlades: System Architecture and Applications,” Proceedings of the 2nd Workshop on Architectures and Systems for Big Data, Association for Computing Machinery, New York, NY, 2012, pp. 10-14. [cited by applicant]
Storer M.W., et al., “Pergamum: Replacing Tape with Energy Efficient, Reliable, Disk-Based Archival Storage,” 6TH Usenix Conference on File And Storage Technologies (FAST'08), San Jose, CA, USA, Feb. 26-29, 2008, 16 Pag… [cited by applicant]