Namespace management in a distributed file system
First Claim
1. A computer-implemented method for performing namespace operations in a distributed file system disposed on a plurality of partition servers, each partition server controlling access to a subset of shared storage objects in the distributed file system, wherein the shared storage objects are hierarchically related, and each namespace operation involves a namespace object and a target object that are part of the shared storage objects, comprising:
- serializing namespace operations received at each partition server;
performing steps (a)-(d) in response to a link namespace operation;
(a) writing a link log record that describes the link operation to a log file in retentive storage;
(b) modifying the target object consistent with the link namespace operation after the writing step;
(c) after the modifying step inserting a reference in the namespace object to the target object; and
(d) deleting the link log record after the inserting step;
performing steps (e)-(h) in response to an unlink namespace operation;
(e) writing an unlink log record that describes the unlink operation to the log file in retentive storage;
(f) removing a reference in the namespace object to the target object after writing the log record;
(g) after the removing step, modifying the target object consistent with the unlink namespace operation; and
(h) deleting the unlink log record after the modifying step (g).
2 Assignments
0 Petitions
Accused Products
Abstract
Method and system for performing a namespace operation in a distributed file system. The file system is disposed on a plurality of partition servers, and each partition server controls access to a subset of hierarchically-related, shared storage objects. Each namespace operation involves a namespace object and a target object that are part of the shared storage objects. Namespace operations received at each partition server are serialized. In response to an unlink namespace operation, a reference in the namespace object to the target object is removed, and after removal the target object is modified in accordance with the unlink operation. In response to a link operation, the target object is modified consistent with the link operation. After modification of the target object, a reference to the target object is inserted in the namespace object. A log record is stored in association with each namespace operation when the operation is started, and a log record is deleted upon completion of the associated operation.
72 Citations
10 Claims
-
1. A computer-implemented method for performing namespace operations in a distributed file system disposed on a plurality of partition servers, each partition server controlling access to a subset of shared storage objects in the distributed file system, wherein the shared storage objects are hierarchically related, and each namespace operation involves a namespace object and a target object that are part of the shared storage objects, comprising:
-
serializing namespace operations received at each partition server;
performing steps (a)-(d) in response to a link namespace operation;
(a) writing a link log record that describes the link operation to a log file in retentive storage;
(b) modifying the target object consistent with the link namespace operation after the writing step;
(c) after the modifying step inserting a reference in the namespace object to the target object; and
(d) deleting the link log record after the inserting step;
performing steps (e)-(h) in response to an unlink namespace operation;
(e) writing an unlink log record that describes the unlink operation to the log file in retentive storage;
(f) removing a reference in the namespace object to the target object after writing the log record;
(g) after the removing step, modifying the target object consistent with the unlink namespace operation; and
(h) deleting the unlink log record after the modifying step (g). - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
if a namespace object referenced by the link log record is present on the namespace site, then deleting the link log record; and
if a namespace object referenced by the link log record is not present on the namespace site, then performing steps (b) through (d) for the namespace object and target object referenced in the link log record.
-
-
6. The method of claim 5, further comprising for each unlink log record in the log file:
-
if a namespace object referenced by the unlink log record is present on the namespace site, then performing steps (f) through (g); and
if a namespace object referenced by the unlink log record is not present on the namespace site, then performing step (g).
-
-
7. The method of claim 6, further comprising, in recovering namespace operations in the log file in response to a failure that requires rebooting the namespace site, performing recovery on all namespace operations in the log file before processing newly received namespace operations.
-
8. The method of claim 6, further comprising:
-
storing unique link generation numbers in association with references from namespace objects to target objects, respectively;
storing in an unlink log record the link generation number associated with the namespace object and target object specified in the unlink operation; and
in recovering an unlink namespace operation from the log file, removing a reference from a namespace object to a target object as specified in an unlink log record only if the link generation number in the unlink log record matches the link generation number in the namespace object.
-
-
9. The method of claim 6, further comprising sending to a requester an acknowledgment that indicates completion of the link operation after the inserting step and before deleting the link log record.
-
10. The method of claim 6, further comprising sending to a requester an acknowledgment that indicates completion of the unlink operation after the removing step and without waiting for completion of the modifying step (g).
Specification