IP Library Granted Patent US 8,626,726
Granted Patent B2
US 8,626,726 · App. 12/302,625 · Granted Jan 7, 2014

Method and system for transformation of logical data objects for storage

Inventors: Haim Koifman (Rishon Lezion, IL); Nadav Kedem (Tel Aviv, IL); Avi Zohar (Rosh Haain, IL)
Assignee: International Business Machines Corporation
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 8,626,726
App. No.
12/302,625
Granted
Jan 7, 2014
Kind
B2
Abstract

A method and system for transforming a logical data object for storage in a storage device operable with at least one storage protocol, creating, reading, writing, optimization and restoring thereof. Transforming the logical data object comprises creating in the storage device a transformed logical data object comprising a header and one or more allocated accommodation sections with predefined size; sequentially obtaining one or more data chunks corresponding to the transforming logical data object; verifying if obtained data chunks match certain criterion and processing the chunks in accordance with verification results thus giving rise to the processed data chunks, wherein, resulting from said processing, a processed data chunk holds transformed data if the criterion is matched and holds non-transformed data if the criterion is not matches; sequentially accommodating the processed data chunks into said accommodation sections in accordance with an order said chunks received, and facilitating mapping between the data in the logical data object and the data accommodated in the accommodation sections.

Claims (57)

1. A method of transforming a logical data object for storage in a storage device operable with at least one storage protocol, said method comprising:

in response to a respective request, creating in the storage device a transformed logical data object comprising a header and a plurality of storage sections with a predefined size;

obtaining a plurality of data chunks corresponding to the transformed logical data object; determining if the plurality of obtained data chunks exceed a predetermined threshold based on one of a time to compress each obtained data chunk and an amount of available storage space in a particular storage section that is dependent upon whether the particular storage section includes sufficient storage space to store a next uncompressed data chunk queued for storage;

compressing each obtained data chunk if the predetermined threshold based on time is not exceeded and not compressing each obtained data chunk if the predetermined threshold based on time is exceeded;

compressing each obtained data chunk if the predetermined threshold based on the amount of available storage space is exceeded and not compressing each obtained data chunk if the predetermined threshold based on the amount of available storage space is not exceeded, wherein compressing comprises:

compressing each obtained data chunk, and

accumulating the compressed data chunks to form compressed blocks, the compressed data chunks accumulated until a size of a compressed block includes the predefined size;

storing each compressed block into said storage sections subsequent to accumulating said compressed data chunks, said compressed blocks stored in an order said plurality of obtained data chunks are received for storage; and

facilitating mapping between the data in the logical data object and the data stored in the storage sections.

2. The method of claim 1 , wherein said compressing further comprises applying one of an encryption technique, an encoding technique, a conversion technique, and a combination thereof to each obtained data chunk if the predetermined threshold is not exceeded.

3. The method of claim 1 , wherein the predetermined threshold is related to at least one characteristic selected from a group comprising characteristics of the logical data object, characteristics of each obtained data chunk, characteristics of each storage section, characteristics of a transforming operation, and a combination thereof.

4. The method of claim 1 , wherein the predetermined threshold related to the time to compress each obtained data chunk is 30 milliseconds.

5. The method of claim 1 , wherein the predetermined threshold related to the compressed size is 95% of an original size of each obtained data chunk.

6. The method of claim 5 , wherein the predetermined threshold related to the time to compress each obtained data chunk is 30 milliseconds.

7. The method of claim 4 , further comprising applying one of an encryption technique, an encoding technique, a conversion technique, and a combination thereof to each obtained data chunk if the predetermined threshold is not exceeded, and the threshold time is related separately to each technique.

8. The method of claim 7 , wherein the compressed obtained data chunk comprises a first portion of compressed data and a second portion of uncompressed data if the predetermined threshold is exceeded in relation to part of techniques of data compression, wherein said first portion is provided by techniques related to the predetermined threshold.

9. The method of claim 3 , wherein one or more characteristics of the logical data object are selected from a group comprising a type of logical data object, a size of the logical data object, and an authorization mark associated with the logical data object.

10. The method of claim 1 , wherein the determination is provided for each compressed obtained data chunk.

11. The method of claim 1 , wherein the mapping is provided with a help of at least one index section constituting a part of the compressed logical data object, said index section comprising at least one entry holding at least information related to compressed obtained data chunks stored in at least one storage section, an indication of compressed/uncompressed form of data held in said obtained data chunks, and indication of physical storage location pertaining to said storage section.

12. The method of claim 1 , wherein the predefined size is equal for all storage sections.

13. The method of claim 1 , wherein the size of the storage section is selected from a list of predefined sizes in accordance with predetermined criterion.

14. The method of claim 1 , wherein the header of the compressed logical data object comprises a unique descriptor of the transformed logical data object, information related to a size of the compressed logical data object, and an indication if the compressed logical data object holds data in an uncompressed form.

15. The method of claim 1 , wherein the storage section comprises a header containing a unique identifier of the storage section and an indication if the storage section holds data in an uncompressed form.

16. The method of claim 1 , wherein the compressed data chunks are stored in a log form.

17. The method of claim 16 , wherein a log of a particular obtained data chunk comprises a log header containing information in respect of an offset of the particular obtained data chunk within the compressed logical data object, a size of said particular obtained data chunk, an identifier allowing associating the log with the storage section storing the log, and an indication of compressed/uncompressed form of data held in the log.

18. The method of claim 1 operable with at least file access storage protocol.

19. The method of claim 1 operable with at least block mode access storage protocol.

20. A system for transforming a logical data object for storage in a storage device operable with at least one storage protocol, said system comprising:

means for creating in the storage device a transformed logical data object comprising a header and a plurality of storage sections with a predefined size;

means for obtaining a plurality of data chunks corresponding to the transformed logical data object;

means for determining if the plurality of obtained data chunks exceed a predetermined threshold based on one of a time to compress each obtained data chunk and an amount of available storage space in a particular storage section that is dependent upon whether the particular storage section includes sufficient storage space to store a next uncompressed data chunk queued for storage;

means for compressing each obtained data chunk if the predetermined threshold based on time is not exceeded and not compressing each obtained data chunk if the predetermined threshold based on time is exceeded;

means for compressing each obtained data chunk if the predetermined threshold based on the amount of available storage space is exceeded and not compressing each obtained data chunk if the predetermined threshold based on the amount of available storage space is not exceeded, wherein compressing comprises:

compressing each obtained data chunk, and

accumulating the compressed data chunks to form compressed blocks, the compressed data chunks accumulated until a size of a compressed block includes the predefined size;

means for storing each compressed block into said storage sections in an order said plurality of obtained data chunks are received for storage; and

means for facilitating mapping between the data in the logical data object and the data stored in the storage sections.

21. A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps of transforming a logical data object for storage in a storage device operable with at least one storage protocol, said method comprising:

in response to a respective request, creating in the storage device a transformed logical data object comprising a header and a plurality of storage sections with a predefined size;

obtaining a plurality of data chunks corresponding to the transformed logical data object;

determining if the plurality of obtained data chunks exceed a predetermined threshold based on one of a time to compress each obtained data chunk and an amount of available storage space in a particular storage section that is dependent upon whether the particular storage section includes sufficient storage space to store a next uncompressed data chunk queued for storage;

compressing each obtained data chunk if the predetermined threshold based on time is not exceeded and not compressing each obtained data chunk if the predetermined threshold based on time is exceeded;

compressing each obtained data chunk if the predetermined threshold based on the amount of available storage space is exceeded and not compressing each obtained data chunk if the predetermined threshold based on the amount of available storage space is not exceeded, wherein compressing comprises:

compressing each obtained data chunk, and

accumulating the compressed data chunks to form compressed blocks, the compressed data chunks accumulated until a size of a compressed block includes the predefined size;

storing each compressed block into said storage sections subsequent to accumulating said compressed data chunks, said compressed blocks stored in an order said plurality of obtained data chunks are received for storage; and

facilitating mapping between the data in the logical data object and the data stored in the storage sections.

22. A computer program product comprising a computer useable medium having computer readable program code embodied therein for transforming a logical data object for storage in a storage device operable with at least one storage protocol, said computer program product comprising:

in response to a respective request, creating in the storage device a transformed logical data object comprising a header and a plurality of storage sections with a predefined size;

obtaining a plurality of data chunks corresponding to the transformed logical data object;

determining if the plurality of obtained data chunks exceed a predetermined threshold based on one of a time to compress each obtained data chunk and an amount of available storage space in a particular storage section that is dependent upon whether the particular storage section includes sufficient storage space to store a next uncompressed data chunk queued for storage;

compressing each obtained data chunks if the predetermined threshold based on time is not exceeded and not compressing each obtained data chunk if the predetermined threshold based on time is exceeded;

compressing each obtained data chunk if the predetermined threshold based on the amount of available storage space is exceeded and not compressing each obtained data chunk if the predetermined threshold based on the amount of available storage space is not exceeded, wherein compressing comprises;

compressing each obtained data chunk, and

accumulating the compressed data chunks to form compressed blocks, the compressed data chunks accumulated until a size of a compressed block includes the predefined size;

storing each compressed block into said storage sections subsequent to accumulating said compressed data chunks, said compressed blocks stored in an order said plurality of obtained data chunks are received for storage; and

facilitating mapping between the data in the logical data object and the data stored in the storage sections.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2012
From: STORWIZE LTD.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 027872/0017 →
RELEASE OF SECURITY INTEREST Recorded Jan 6, 2012
From: KREOS CAPITAL III LIMITED
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 027496/0815 →
RELEASE OF SECURITY INTEREST Recorded Dec 31, 2011
From: KREOS CAPITAL III LIMITED
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 027467/0182 →
RELEASE Recorded Sep 2, 2010
From: SILICON VALLEY BANK
To: STORWIZE, INC.; STORWIZE, LTD.
Reel/Frame 024930/0960 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2009
From: KOIFMAN, HAIM; KEDEM, NADAV; ZOHAR, AVI
To: STORWIZE LTD.
Reel/Frame 023040/0527 →
SECURITY AGREEMENT Recorded Apr 13, 2009
From: STORWIZE, INC.; STORWIZE LTD.
To: KREOS CAPITAL III LIMITED; SILICON VALLEY BANK
Reel/Frame 022537/0686 →
Continuity (5)
Provisional Application 60809382 · May 31, 2006
Provisional Application 60819369 · Jul 10, 2006
Provisional Application 60834165 · Jul 31, 2006
Provisional Application 60904782 · Mar 5, 2007
Related Publication 20100017423A1 · Jan 21, 2010