IP Library Granted Patent US 10,740,288
Granted Patent B2
US 10,740,288 · App. 15/367,846 · Granted Aug 11, 2020

Accessing objects in an erasure code supported object storage environment

Inventors: Sasikanth Eda (Vijayawada, IN); Rezaul S. Islam (Tucson, AZ); John T. Olson (Tucson, AZ); Sandeep R. Patil (Pune, IN)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F16/13
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 10,740,288
App. No.
15/367,846
Granted
Aug 11, 2020
Kind
B2
Abstract

Accessing objects in an erasure code supported object storage environment including receiving, from a requesting entity, a read request for an object stored in the object storage environment; identifying, using a placement data structure, an object fragment location of a first object fragment of the object; calculating, based on a filesystem root inode number and the object fragment location, a first inode address for the first object fragment of the object, wherein the first inode address identifies a location on a first storage node; reading, using the first inode address, the first object fragment and an inode structure, wherein the inode structure for the first inode address comprises a second inode address for a second object fragment of the object; reading the second object fragment using the second inode address, wherein the second inode address identifies a location on a second storage node; and providing, to the requesting entity, a reconstructed object comprising the first object fragment and the second object fragment.

Claims (39)

1. A method of accessing objects in an erasure code supported object storage environment, the method comprising:

receiving, from a requesting entity, a read request for an object stored in the object storage environment, wherein the object comprises a plurality of object fragments, and wherein the object corresponds to a plurality of inodes that each includes both an object fragment of the plurality of object fragments and collected inode addresses of each other object fragment of the object;

identifying, using a placement data structure, an object fragment location of a first object fragment of the object;

calculating, based on a filesystem root inode number and the object fragment location, a first inode address for the first object fragment of the object, wherein the first inode address identifies a location on a first storage node;

reading, using the first inode address, the first object fragment and an inode structure, wherein the inode structure for the first inode address comprises a second inode address for a second object fragment of the object, and wherein reading the inode structure for the first object fragment comprises reading, from the inode structure for the first object fragment, the second inode address for the second object fragment, without calculating the second inode address, based on the collected inode addresses of each other object fragment of the object;

reading the second object fragment using the second inode address, wherein the second inode address identifies a location on a second storage node; and

providing, to the requesting entity, a reconstructed object comprising the first object fragment and the second object fragment.

2. The method of claim 1 , wherein an inode structure for the second object fragment comprises the first inode address of the first object fragment.

3. The method of claim 1 , wherein each inode structure for each object fragment comprises each other inode address for each object fragment.

4. The method of claim 1 , wherein calculating, based on the filesystem root inode number and the object fragment location, the first inode address for the first object fragment of the object comprises instructing a thread on the first storage node to calculate the first inode address,

wherein reading, using the first inode address, the first object fragment comprises instructing the thread on the first storage node to read the first object fragment, and

wherein reading the second object fragment using the second inode address comprises instructing a thread on the second storage node to read the second object fragment.

5. The method of claim 1 , wherein the first storage node is selected based on resources available on the first storage node and the second storage node.

6. An apparatus for accessing objects in an erasure code supported object storage environment, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

receiving, from a requesting entity, a read request for an object stored in the object storage environment, wherein the object comprises a plurality of object fragments, and wherein the object corresponds to a plurality of inodes that each includes both an object fragment of the plurality of object fragments and collected inode addresses of each other object fragment of the object;

identifying, using a placement data structure, an object fragment location of a first object fragment of the object;

calculating, based on a filesystem root inode number and the object fragment location, a first inode address for the first object fragment of the object, wherein the first inode address identifies a location on a first storage node;

reading, using the first inode address, the first object fragment and an inode structure, wherein the inode structure for the first inode address comprises a second inode address for a second object fragment of the object, and wherein reading the inode structure for the first object fragment comprises reading, from the inode structure for the first object fragment, the second inode address for the second object fragment, without calculating the second inode address, based on the collected inode addresses of each other object fragment of the object;

reading the second object fragment using the second inode address, wherein the second inode address identifies a location on a second storage node; and

providing, to the requesting entity, a reconstructed object comprising the first object fragment and the second object fragment.

7. The apparatus of claim 6 , wherein an inode structure for the second object fragment comprises the first inode address of the first object fragment.

8. The apparatus of claim 6 , wherein each inode structure for each object fragment comprises each other inode address for each object fragment.

9. The apparatus of claim 6 , wherein calculating, based on the filesystem root inode number and the object fragment location, the first inode address for the first object fragment of the object comprises instructing a thread on the first storage node to calculate the first inode address,

wherein reading, using the first inode address, the first object fragment comprises instructing the thread on the first storage node to read the first object fragment, and

wherein reading the second object fragment using the second inode address comprises instructing a thread on the second storage node to read the second object fragment.

10. The apparatus of claim 6 , wherein the first storage node is selected based on resources available on the first storage node and the second storage node.

11. A computer program product for accessing objects in an erasure code supported object storage environment, the computer program product comprising a non-transitory computer readable storage medium having computer program instructions embodied therewith that, when executed, cause a computer to carry out the steps of:

receiving, from a requesting entity, a read request for an object stored in the object storage environment, wherein the object comprises a plurality of object fragments, and wherein the object corresponds to a plurality of inodes that each includes both an object fragment of the plurality of object fragments and collected inode addresses of each other object fragment of the object;

identifying, using a placement data structure, an object fragment location of a first object fragment of the object;

calculating, based on a filesystem root inode number and the object fragment location, a first inode address for the first object fragment of the object, wherein the first inode address identifies a location on a first storage node;

reading, using the first inode address, the first object fragment and an inode structure, wherein the inode structure for the first inode address comprises a second inode address for a second object fragment of the object, and wherein reading the inode structure for the first object fragment comprises reading, from the inode structure for the first object fragment, the second inode address for the second object fragment, without calculating the second inode address, based on the collected inode addresses of each other object fragment of the object;

reading the second object fragment using the second inode address, wherein the second inode address identifies a location on a second storage node; and

providing, to the requesting entity, a reconstructed object comprising the first object fragment and the second object fragment.

12. The computer program product of claim 11 , wherein an inode structure for the second object fragment comprises the first inode address of the first object fragment.

13. The computer program product of claim 11 , wherein each inode structure for each object fragment comprises each other inode address for each object fragment.

14. The computer program product of claim 11 , wherein calculating, based on the filesystem root inode number and the object fragment location, the first inode address for the first object fragment of the object comprises instructing a thread on the first storage node to calculate the first inode address,

wherein reading, using the first inode address, the first object fragment comprises instructing the thread on the first storage node to read the first object fragment, and

wherein reading the second object fragment using the second inode address comprises instructing a thread on the second storage node to read the second object fragment.

15. The computer program product of claim 11 , wherein the first storage node is selected based on resources available on the first storage node and the second storage node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2016
From: EDA, SASIKANTH; ISLAM, REZAUL S.; OLSON, JOHN T.; PATIL, SANDEEP R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 040497/0909 →
Continuity (1)
Related Publication 20180157671A1 · Jun 7, 2018