IP Library Granted Patent US 9,311,015
Granted Patent B2
US 9,311,015 · App. 14/092,169 · Granted Apr 12, 2016

Storage system capable of managing a plurality of snapshot families and method of operating thereof

Inventors: Josef Ezra (Even Yehuda, IL); Yechiel Yochai (Moshav Aviel, IL); Ido Ben-Tsion (Ramat Gan, IL); Efraim Zeidner (Haifa, IL)
Assignee: INFINIDAT LTD.
G06F3/065G06F3/0604G06F3/0605G06F3/0614G06F3/0683G06F3/0689G06F11/1446G06F11/1458G06F12/0864G06F17/30088G06F2201/84
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 9,311,015
App. No.
14/092,169
Granted
Apr 12, 2016
Kind
B2
Abstract

There is provided a storage system comprising a control layer operable to manage a plurality of snapshot families, each family constituted by snapshot family members having hierarchical relations therebetween. The method of operating the storage system comprises searching a cache memory for an addressed data block corresponding to an addressed LBA and associated with an addressed snapshot family and an addressed SF member. In a case of missing the addressed data block in the cache memory, identifying in the cache memory all dirty data blocks corresponding to the addressed LBA and associated with the addressed snapshot family (candidate data blocks); identifying among SF members of the addressed snapshot family a destage owner, and in a case when the identified destage owner is associated with a candidate data block, reading from the cache memory such candidate data block.

Claims (48)

1. A method of operating a storage system comprising a control layer with a cache memory, the control layer operable to manage a plurality of snapshot families, each family constituted by snapshot family (SF) members having hierarchical relations therebetween, the method comprising:

upon receiving a read request specifying logical unit number (LUN) of an addressed logical volume and addressed logical block address (LBA) therein, the control layer

identifying an addressed snapshot family and an addressed SF member therein corresponding to the addressed LUN;

searching the cache memory for an addressed data block corresponding to the addressed LBA and associated with the addressed snapshot family and the addressed SF member;

in a case of missing the addressed data block in the cache memory, identifying in the cache memory all dirty data blocks corresponding to the addressed LBA and associated with the addressed snapshot family, thus giving rise to candidate data blocks;

identifying for the addressed snapshot family an SF member representing, upon virtual destaging all candidate data blocks, the addressed LBA in a mapping data structure, thus giving rise to a destage owner,

wherein the mapping data structure is configured to provide mapping between a given LBA and one or more physical addresses corresponding to SF members such that a given physical address is represented by one and only one SF member among SF members sharing the given physical address; and

in a case when the identified destage owner is associated with a candidate data block, reading from the cache memory such candidate data block.

2. The method of claim 1 further comprising modifying the cache memory to adopt the data block associated with the identified destage owner as the addressed data block.

3. The method of claim 1 , wherein the cache memory comprises a cache directory comprising hash entries each associated with one or more chained headers, wherein all data blocks with the same LBA and associated with different SF members of a given snapshot family correspond to chained headers associated with a hash entry corresponding to the addressed snapshot family and the addressed LBA.

4. The method of claim 3 , wherein identifying the candidate data blocks is provided by searching headers associated with respective hash entry corresponding to the addressed snapshot family and the addressed LBA.

5. The method of claim 1 , wherein the cache memory comprises a cache directory comprising, respectively associated with each given data block, data indicative of LBA corresponding to a given data block, SF member identifier indicative of SF member associated with a given data block, and Snap_version identifier indicative of the latest SF member existing at the time of writing a given data block to the cache memory.

6. The method of claim 5 , wherein the virtual destaging comprising: the control layer

identifying for each of the candidate data blocks a pair constituted by SF member identifier and Snap_version identifier, thus giving rise to a “dirty set” comprising the pairs identified for all candidate data blocks;

generating a copy of the mapping data structure; and

modifying the generated copy of the mapping data structure by simulating, in consideration of respective Snap_versions, destage of the data blocks corresponding to the “dirty set”, thereby identifying the destage owner.

7. The method of claim 6 , wherein selecting data blocks during the destage simulating is provided in an arbitrary order.

8. A storage system comprising a control layer with a cache memory, the control layer configured to manage a plurality of snapshot families, each family constituted by snapshot family (SF) members having hierarchical relations therebetween, wherein the control layer is further configured:

to identify, upon receiving a read request specifying logical unit number (LUN) of an addressed logical volume and addressed logical block address (LBA) therein, an addressed snapshot family and an addressed SF member therein corresponding to the addressed LUN;

to search the cache memory for an addressed data block corresponding to the addressed LBA and associated with the addressed snapshot family and the addressed SF member;

in a case of missing the addressed data block in the cache memory, to identify in the cache memory all dirty data blocks corresponding to the addressed LBA and associated with the addressed snapshot family, thus giving rise to candidate data blocks;

to identify for the addressed snapshot family an SF member representing, upon virtual destaging all candidate data blocks, the addressed LBA in a mapping data structure, thus giving rise to a destage owner,

wherein the mapping data structure is configured to provide mapping between a given LBA and one or more physical addresses corresponding to SF members such that a given physical address is represented by one and only one SF member among SF members sharing the given physical address; and

in a case when the identified destage owner is associated with a candidate data block, to read from the cache memory such candidate data block.

9. The storage system of claim 8 , wherein the control layer is further configured to modify the cache memory to adopt the data block associated with the identified destage owner as the addressed data block.

10. The storage system of claim 8 , wherein the cache memory comprises a cache directory comprising hash entries each associated with one or more chained headers, wherein all data blocks with the same LBA and associated with different SF members of a given snapshot family correspond to chained headers associated with a hash entry corresponding to the addressed snapshot family and the addressed LBA.

11. The storage system of claim 10 , wherein the control layer is further configured to identify the candidate data blocks by searching headers associated with respective hash entry corresponding to the addressed snapshot family and the addressed LBA.

12. The storage system of claim 8 , wherein the cache memory comprises a cache directory comprising, respectively associated with each given data block, data indicative of LBA corresponding to a given data block, SF member identifier indicative of SF member associated with a given data block, and Snap_version identifier indicative of the latest SF member existing at the time of writing a given data block to the cache memory.

13. The storage system of claim 12 , wherein the control layer is further configured:

to identify for each of the candidate data blocks a pair constituted by SF member identifier and Snap_version identifier, thus giving rise to a “dirty set” comprising the pairs identified for all candidate data blocks;

to generate a copy of the mapping data structure; and

to modify the generated copy of the mapping data structure by simulating, in consideration of respective Snap_versions, destage of the data blocks corresponding to the “dirty set”, thereby identifying the destage owner.

14. The storage system of claim 13 , wherein the control layer is configured to select, during the destage simulating, data blocks in an arbitrary order.

15. A non-transitory computer readable storage medium comprising computer readable program code embodied therein for operating a storage system comprising a control layer with a cache memory, the control layer operable to manage a plurality of snapshot families, each family constituted by snapshot family (SF) members having hierarchical relations therebetween, the computer readable program code causing the control layer:

upon receiving a read request specifying logical unit number (LUN) of an addressed logical volume and addressed logical block address (LBA) therein,

to identify an addressed snapshot family and an addressed SF member therein corresponding to the addressed LUN;

to search the cache memory for an addressed data block corresponding to the addressed LBA and associated with the addressed snapshot family and the addressed SF member;

in a case of missing the addressed data block in the cache memory, to identify in the cache memory all dirty data blocks corresponding to the addressed LBA and associated with the addressed snapshot family, thus giving rise to candidate data blocks;

to identify for the addressed snapshot family an SF member representing, upon virtual destaging all candidate data blocks, the addressed LBA in a mapping data structure, thus giving rise to a destage owner,

wherein the mapping data structure is configured to provide mapping between a given LBA and one or more physical addresses corresponding to SF members such that a given physical address is represented by one and only one SF member among SF members sharing the given physical address; and

in a case when the identified destage owner is associated with a candidate data block, to read from the cache memory such candidate data block.

16. A method of operating a storage system comprising a control layer with a cache memory, the control layer operable to manage a plurality of snapshot families, each family constituted by snapshot family (SF) members having hierarchical relations therebetween, the method comprising:

upon receiving a read request, the control layer

searching the cache memory for an addressed data block corresponding to LBA addressed in the read request and associated with snapshot family and the SF member corresponding to the read request;

in a case of missing the addressed data block in the cache memory, identifying in the cache memory all dirty data blocks corresponding to the addressed LBA and associated with the addressed snapshot family, thus giving rise to candidate data blocks;

identifying among SF members of the addressed snapshot family a destage owner; and

in a case when the identified destage owner is associated with a candidate data block, reading from the cache memory such candidate data block.

17. The method of claim 16 wherein the destage owner is identified by identifying an SF member representing, upon virtual destaging all candidate data blocks, the addressed LBA in a mapping data structure configured to provide mapping between a given LBA and one or more physical addresses corresponding to SF members such that a given physical address is represented by one and only one SF member among SF members sharing the given physical address.

Assignments (10)
SECURITY INTEREST Recorded Jan 30, 2025
From: INFINIDAT LTD
To: KREOS CAPITAL VII AGGREGATOR SCSP,
Reel/Frame 070056/0458 →
RELEASE OF SECURITY INTEREST IN IP RECORDED AT R/F 55653/0854 Recorded Jan 18, 2024
From: SILICON VALLEY BANK
To: INFINIDAT LTD.
Reel/Frame 066344/0064 →
SECURITY INTEREST Recorded Jan 11, 2024
From: INFINIDAT LTD
To: KREOS CAPITAL VI (EXPERT FUND) L.P.; KREOS CAPITAL 2020 OPPORTUNITY L.P.
Reel/Frame 066270/0359 →
SECURITY INTEREST Recorded Jan 10, 2024
From: INFINIDAT LTD
To: HSBC BANK PLC
Reel/Frame 066268/0584 →
RELEASE OF SECURITY INTEREST Recorded Mar 30, 2021
From: BANK LEUMI LE-ISRAEL B.M.
To: INFINIDAT LTD.
Reel/Frame 055776/0526 →
RELEASE OF SECURITY INTEREST Recorded Mar 30, 2021
From: BANK LEUMI LE-ISRAEL B.M.
To: INFINIDAT LTD.
Reel/Frame 055776/0597 →
SECURITY INTEREST Recorded Mar 18, 2021
From: INFINIDAT LTD.
To: SILICON VALLEY BANK
Reel/Frame 055653/0854 →
SECURITY INTEREST Recorded Apr 12, 2018
From: INFINIDAT LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 045914/0276 →
LIEN Recorded Jul 18, 2016
From: INFINIDAT LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 039361/0161 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2014
From: EZRA, JOSEF; YOCHAI, YECHIEL; BEN-TSION, IDO; ZEIDNER, EFRAIM
To: INFINIDAT LTD.
Reel/Frame 032503/0595 →
Continuity (2)
Provisional Application 61730988 · Nov 29, 2012
Related Publication 20140149664A1 · May 29, 2014