Object-based storage device with improved reliability and fast crash recovery
First Claim
1. A storage comprising:
- a non-volatile memory storing a first inode corresponding to a first file; and
a block manager configured to copy said first inode to a second inode, wherein said block manager is configured to change said second inode in response to updates to said first file, and wherein said block manager is configured to atomically update said first file in response to a commit of said first file by writing said second inode to said non-volatile memory.
3 Assignments
0 Petitions
Accused Products
Abstract
An object-based storage may employ a transactional interface and a copy on write protocol. The inode for the file (which is identified by the I-number and indicates one or more blocks storing the file data) may be copied to a working copy of the inode, and the working copy may be updated to indicate the newly allocated blocks. In response to a file commit (e.g. a file close or a file synchronization command), the working copy of the inode may be atomically written to a non-volatile storage. In this manner, the updates performed during the transaction may be atomically committed to the file. The inode itself may be stored in a file (referred to as the inode file), and the storage may perform updates to the inode file atomically as well. The inode file may be modified using the copy on write protocol described above, and the master inode (mapping the blocks of the inode file) may be atomically written to non-volatile storage to atomically update the inode file. In one particular embodiment, the storage employs a journal technique for updates to the inode file.
-
Citations
35 Claims
-
1. A storage comprising:
-
a non-volatile memory storing a first inode corresponding to a first file; and
a block manager configured to copy said first inode to a second inode, wherein said block manager is configured to change said second inode in response to updates to said first file, and wherein said block manager is configured to atomically update said first file in response to a commit of said first file by writing said second inode to said non-volatile memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 9, 10)
-
-
8. An apparatus comprising:
-
a computing node configured to perform one or more write commands to a file and a commit command committing the one or more write commands to said file; and
a storage coupled to receive said one or more write commands and said commit command, wherein said storage is configured to copy one or more blocks of said file to a copied one or more blocks, said one or more blocks updated by said one or more write commands, and wherein said storage is configured to update said copied one or more blocks with write data corresponding to said one or more write commands, and wherein said storage is configured to copy a first inode corresponding to said file to a second inode and to update pointers within said second inode corresponding to said one or more blocks to point to said copied one or more blocks, and wherein said storage is configured to atomically update said file by writing said second inode responsive to said commit command, and wherein said first inode is stored in an inode file, and wherein said inode file is identified by a master inode, and wherein said inode file is atomically updated with said second inode by writing said master inode subsequent to said commit command.
-
-
11. A method comprising:
-
copying a first inode corresponding to a first file to a second inode;
modifying said second inode in response to one or more changes to said first file; and
atomically updating said first file by establishing said second inode as the inode for said first file. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A storage comprising:
-
a non-volatile memory storing a first inode corresponding to a first version of a file; and
a block manager configured to copy said first inode to a second inode, wherein said block manager is configured to change said second inode in response to updates to the file, and wherein said block manager is configured to atomically update the file, producing a second version of the file, in response to a commit of the file by writing said second inode to said nonvolatile memory. - View Dependent Claims (22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35)
-
-
28. A method comprising:
-
copying a first inode corresponding to a first version of a file to a second inode;
modifying said second inode in response to one or more changes to the file, creating a second version of the file; and
atomically updating the file to the second version by establishing said second inode as the inode for the file.
-
Specification