IP Library Granted Patent US 11,507,512
Granted Patent B2
US 11,507,512 · App. 17/114,804 · Granted Nov 22, 2022

Fault tolerant cluster data handling

Inventors: Ben Ellerby (Bainbridge Island, WA); Austin Voecks (Bainbridge, WA); Evgeny Popovich (Port Coquitlam, CA)
Assignee: EMC IP Holding Company LLC
G06F12/0815G06F12/124G06F2212/1032G06F2212/608
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 11,507,512
App. No.
17/114,804
Granted
Nov 22, 2022
Kind
B2
Abstract

The described technology is generally directed towards fault tolerant cluster data handling techniques, as well as devices and computer readable media configured to perform the disclosed fault tolerant cluster data handling techniques. Nodes in a computing cluster can be configured to generate wire format resources corresponding to operating system resources. A wire format resource can comprise a cache key and a hint information to locate data, such as a file, corresponding to the operating system resource. The wire format resource can be stored in a resource cache along with a pointer that points to the operating system resource. The wire format resource can also be provided to client devices. Nodes in the computing cluster can be configured to receive and process client instructions that include wire format resources, as well as to use hint information to re-allocate data associated with a wire format resource.

Claims (62)

1. A method, comprising:

receiving, by a server comprising a processor, an instruction to open a file from a client;

in response to the instruction, storing, by the server, the file in a volatile memory;

allocating, by the server, an identifier to the file in the volatile memory, wherein the identifier is used by a server operating system to identify the file in the volatile memory;

creating, by the server, a cache key corresponding to the identifier;

storing, by the server, the cache key and a corresponding pointer in a resource cache, comprising cache keys and corresponding pointers,

wherein the corresponding pointer points to the identifier; and

sending, by the server, a wire format resource to the client, wherein the wire format resource comprises the cache key, wherein the server is a cluster server included in a cluster, and wherein the cache key is unique within the cluster of servers.

2. The method of claim 1 , wherein the instruction to open the file is included in a remote procedure call.

3. The method of claim 2 , further comprising:

after sending the wire format resource to the client, receiving, by the server, a subsequent remote procedure call from the client, the subsequent remote procedure call comprising the wire format resource and file modification information;

using, by the server, the cache key from the wire format resource included in the subsequent remote procedure call and the resource cache to retrieve the identifier; and

modifying, by the server, the file in the volatile memory according to the file modification information, wherein the modifying comprises using the identifier to locate the file in the volatile memory.

4. The method of claim 2 , further comprising:

after sending the wire format resource to the client, receiving, by the server, a subsequent remote procedure call from the client, the subsequent remote procedure call comprising the wire format resource and an instruction to close the file;

using, by the server, the cache key from the wire format resource included in the subsequent remote procedure call and the resource cache to retrieve the identifier;

deallocating, by the server, the file in the volatile memory, wherein the deallocating comprises using the identifier to deallocate the file in the volatile memory; and

removing, by the server, the corresponding pointer from the resource cache.

5. The method of claim 1 , wherein the wire format resource is a first wire format resource and the cache key is a first cache key, and further comprising:

receiving, by the server, a second wire format resource;

checking, by the server, the resource cache for a second cache key included in the second wire format resource; and

in response to a result of the checking being that the second cache key is absent from the resource cache, using, by the server, hint information from the second wire format resource to locate data in a shared cluster storage.

6. The method of claim 1 , wherein the wire format resource comprises hint information to enable locating the file in a shared cluster storage by a subsequent cluster server in the cluster.

7. The method of claim 1 , further comprising evicting, by the server, at least one cache key of the cache keys from the resource cache according to a least recently used eviction protocol.

8. A cluster server, comprising:

a processor; and

a memory that stores executable instructions that, when executed by the processor, facilitate performance of operations, the operations comprising:

establishing a connection with a client device subsequent to a failure of an initial cluster server initially connected to the client device;

receiving, from the client device via the connection, a remote procedure call comprising a wire format resource initially provided to the client device by the initial cluster server, wherein the wire format resource comprises a cache key and hint information to locate a file initially opened at the initial cluster server;

using the hint information to open the file, resulting in an opened file;

allocating an identifier to the opened file, wherein the identifier is used by a cluster server operating system to identify the opened file; and

storing the cache key and a corresponding pointer in a resource cache, wherein the resource cache comprises cache keys and corresponding pointers, and wherein the corresponding pointer points to the identifier.

9. The cluster server of claim 8 , wherein the operations further comprise checking the resource cache for the cache key, and wherein using the hint information to open the file is responsive to a result of the checking being that the cache key is not found in the resource cache.

10. The cluster server of claim 8 , wherein opening the file comprises locating the file in a shared cluster storage using the hint information.

11. The cluster server of claim 8 , wherein the operations further comprise:

receiving a subsequent remote procedure call from the client device, the subsequent remote procedure call comprising the wire format resource and file modification information;

using the cache key from the wire format resource and the resource cache to retrieve the identifier; and

modifying the opened file according to the file modification information, wherein the modifying comprises using the identifier to locate the opened file.

12. The cluster server of claim 8 , wherein the operations further comprise:

receiving a subsequent remote procedure call from the client device, the subsequent remote procedure call comprising the wire format resource and an instruction to close the file;

using the cache key from the wire format resource and the resource cache to retrieve the identifier;

deallocating the opened file in a volatile memory, wherein the deallocating comprises using the identifier to deallocate the file in the volatile memory; and

removing the corresponding pointer from the resource cache.

13. The cluster server of claim 8 , wherein the cache key is unique within a cluster comprising the cluster server and the initial cluster server.

14. The cluster server of claim 8 , further comprising evicting, by the cluster server, at least one cache key of the cache keys from the resource cache according to an eviction protocol.

15. A non-transitory machine-readable medium, comprising executable instructions that, when executed by a processor of a cluster server, facilitate performance of operations, the operations comprising:

sending resource information representative of a first wire format resource to a client device, wherein:

the first wire format resource comprises a first cache key and first hint information,

the first cache key corresponds to a first pointer,

the first cache key and first pointer are stored in a resource cache accessible by the cluster server, and

the first pointer points to a first identifier used by a cluster server operating system to locate first data in a volatile memory; and

in response to a first remote procedure call comprising the first wire format resource and a first instruction, using the first cache key and the first pointer in the resource cache to recover the first identifier, in order to perform a first operation on the first data in the volatile memory according to the first instruction.

16. The non-transitory machine-readable medium of claim 15 , wherein the operations further comprise, in response to receiving a second remote procedure call comprising second resource information representative of a second wire format resource and a second instruction:

checking the resource cache for a second cache key included in the second wire format resource;

in response to a result of the checking being that the second cache key is absent from the resource cache, using second hint information from the second wire format resource to locate second data in a shared cluster storage and loading the second data in the volatile memory;

allocating a second identifier to the second cache key, wherein the cluster server operating system uses the second identifier to locate the second data in the volatile memory;

storing the second cache key and a second pointer in the resource cache, wherein the second pointer points to the second identifier; and

performing a second operation on the second data in the volatile memory according to the second instruction.

17. The non-transitory machine-readable medium of claim 15 , wherein the first cache key is unique within a cluster comprising the cluster server.

18. The non-transitory machine-readable medium of claim 15 , wherein the operations further comprise in response to determining that the first cache key does not satisfy a recent use criterion, evicting the first cache key from the resource cache.

19. The non-transitory machine-readable medium of claim 15 , wherein the operations further comprise, in response to the first instruction comprising an instruction to deallocate the first data, deallocating the first data in the volatile memory and removing the first cache key and the first pointer from the resource cache.

20. The non-transitory machine-readable medium of claim 15 , wherein the first hint information comprises a file path or a global unique identifier associated with the first data.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0342) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0460 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0051) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0663 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056136/0752) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0771 →
RELEASE OF SECURITY INTEREST AT REEL 055408 FRAME 0697 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0553 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056136/0752 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0051 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0342 →
SECURITY AGREEMENT Recorded Feb 25, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 055408/0697 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2020
From: ELLERBY, BEN; VOECKS, AUSTIN; POPOVICH, EVGENY
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 054575/0073 →