Object-based storage device with improved reliability and fast crash recovery
First Claim
1. A storage including a non-volatile computer readable storage medium, the storage comprising:
- a non-volatile memory storing a first mode locating a first file in said storage and also storing a journal comprising a list of committed inodes; and
a block manager configured to copy said first mode 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, whereby said second inode locates said first file in said storage, and wherein said block manager is configured to record said second inode in said journal.
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
31 Claims
-
1. A storage including a non-volatile computer readable storage medium, the storage comprising:
-
a non-volatile memory storing a first mode locating a first file in said storage and also storing a journal comprising a list of committed inodes; and a block manager configured to copy said first mode 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, whereby said second inode locates said first file in said storage, and wherein said block manager is configured to record said second inode in said journal. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. An apparatus comprising:
-
a computing node comprising at least one computer system, the 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 including a non-volatile computer readable storage medium, the 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 locating said file in said storage to a second inode and to update pointers within said second inode pointing 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. - View Dependent Claims (8, 9)
-
-
10. A method comprising:
-
copying a first inode to a second inode, wherein said first inode locates a first file in a storage; 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, wherein said establishing comprises storing said second inode in a journal stored in a nonvolatile memory. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A storage including a non-volatile computer readable storage medium, the storage comprising:
-
a non-volatile memory storing a first inode locating a first version of a file in said storage and also storing a journal comprising a list of committed inodes; 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 non-volatile memory, wherein said second inode locates said second version of said file in said storage, and wherein said block manager is configured to record said second inode in said journal. - View Dependent Claims (20, 21, 22, 23, 24)
-
-
25. A method comprising:
-
copying a first inode to a second inode, wherein said first inode locates a first version of a file in a storage; 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, wherein said establishing comprises storing said second inode in a journal stored in a nonvolatile memory. - View Dependent Claims (26, 27, 28, 29, 30, 31)
-
Specification