IP Library › Granted Patent US 9,778,856
Granted Patent B2
US 9,778,856 · App. 13/598,990 · Granted Oct 3, 2017

Block-level access to parallel storage

Inventors: Bin Fan (Pittsburgh, PA); Asim Kadav (Madison, WI); Edmund Bernard Nightingale (Redmond, WA); Jeremy E. Elson (Seattle, WA); Richard F. Rashid (Prescott, AZ); James W. Mickens (Bellevue, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F3/0613G06F3/064G06F3/067
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,778,856
App. No.
13/598,990
Granted
Oct 3, 2017
Kind
B2
Abstract

The subject disclosure is directed towards one or more parallel storage components for parallelizing block-level input/output associated with remote file data. Based upon a mapping scheme, the file data is partitioned into a plurality of blocks in which each may be equal in size. A translator component of the parallel storage may determine a mapping between the plurality of blocks and a plurality of storage nodes such that at least a portion of the plurality of blocks is accessible in parallel. Such a mapping, for example, may place each block in a different storage node allowing the plurality of blocks to be retrieved simultaneously and in its entirety.

Claims (31)

1. In a computing environment, a system comprising:

a translator component coupled to a plurality of storage nodes and operative to parallelize input/output operations associated with file data within a binary large object, the plurality of storage nodes being associated with parallel storage of portions of the binary large object and each storage node being operative to serve a portion of the portions within a processing cycle, the translator component further operative to partition the file data into a plurality of blocks of which each block size is equal to the portion size, translate file-level addresses corresponding to offsets in the plurality of blocks into block-level addresses corresponding to an offset in the portion being served by the each storage node, and using the block-level addresses to retrieve the plurality of blocks within the processing cycle when handling the input/output operations.

2. The system of claim 1 , wherein the translator component further operative to map a byte offset in the file data to a block offset within the portions of the binary large object.

3. The system of claim 1 , wherein the translator component further operative to map a block sequence to random locations within the portions of the plurality of storage nodes.

4. The system of claim 1 further comprising a plurality of computing devices communicably coupled, within a physical boundary, to a storage node group, wherein the plurality of computing devices and the storage node group communicate data over a full bi-sectional bandwidth network.

5. The system of claim 1 , wherein the translator component further operative to modify the block size.

6. The system of claim 1 , wherein the translator component further operative to generate a file data representation comprising the block-level addresses and provide the file data representation to a computing device that uses the file data representation to initiate file system operations over a local area network.

7. In a computing environment, a method comprising:

parallelizing input/output operations associated with file data within a binary large object, a plurality of storage nodes being associated with parallel storage of portions of the binary large object and each storage node being operative to serve a portion of the portions within a processing cycle;

partitioning the file data into a plurality of blocks of which each block size is equal to the portion size;

translating file-level addresses corresponding to offsets in the plurality of blocks into block-level addresses corresponding to an offset in the portion being served by the each storage node; and

using the block-level addresses to retrieve the plurality of blocks within the processing cycle when handling the input/output operations.

8. The method of claim 7 further comprising mapping a byte offset in the file data to a block offset within the portions of the binary large object.

9. The method of claim 7 further comprising mapping a block sequence to random locations within the portions of the plurality of storage nodes.

10. The method of claim 7 wherein a plurality of computing devices are communicably coupled, within a physical boundary, to a storage node group, wherein the plurality of computing devices and the storage node group communicate data over a full bi-sectional bandwidth network.

11. The method of claim 7 further comprising modifying the block size.

12. The method of claim 7 further comprising generating a file data representation comprising the block-level addresses and providing the file data representation to a computing device that uses the file data representation to initiate file system operations over a local area network.

13. One or more computer-readable hardware media having computer-executable instructions stored thereon, which cause a computer to perform steps comprising:

parallelizing input/output operations associated with file data within a binary large object, a plurality of storage nodes being associated with parallel storage of portions of the binary large object and each storage node being operative to serve a portion of the portions within a processing cycle;

partitioning the file data into a plurality of blocks of which each block size is equal to the portion size;

translating file-level addresses corresponding to offsets in the plurality of blocks into block-level addresses corresponding to an offset in the portion being served by the each storage node; and

using the block-level addresses to retrieve the plurality of blocks within the processing cycle when handling the input/output operations.

14. The one or more computer-readable hardware media of claim 13 having further computer-executable instructions that cause the computer to perform further steps comprising:

mapping a byte offset in the file data to a block offset within the portions of the binary large object.

15. The one or more computer-readable hardware media of claim 13 having further computer-executable instructions that cause the computer to perform further steps comprising:

mapping a block sequence to random locations within the portions of the plurality of storage nodes.

16. The one or more computer-readable hardware media of claim 13 wherein a plurality of computing devices are communicably coupled, within a physical boundary, to a storage node group, wherein the plurality of computing devices and the storage node group communicate data over a full bi-sectional bandwidth network.

17. The one or more computer-readable hardware media of claim 13 having further computer-executable instructions that cause the computer to perform further steps comprising:

modifying the block size.

18. The one or more computer-readable hardware media of claim 13 having further computer-executable instructions that cause the computer to perform further steps comprising:

generating a file data representation comprising the block-level addresses and providing the file data representation to a computing device that uses the file data representation to initiate file system operations over a local area network.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2012
From: FAN, BIN; KADAV, ASIM; NIGHTINGALE, EDMUND BERNARD; ELSON, JEREMY E.; RASHID, RICHARD F.; MICKENS, JAMES W.
To: MICROSOFT CORPORATION
Reel/Frame 028875/0317 →
Continuity (1)
Related Publication 20140068224A1 · Mar 6, 2014