Metadata pipelining and optimization in a file server
원문보기
IPC분류정보
국가/구분
United States(US) Patent
등록
국제특허분류(IPC7판)
G06F-007/00
G06F-017/00
출원번호
UP-0557941
(2006-11-08)
등록번호
US-7822728
(2010-11-15)
발명자
/ 주소
Chandler, Richard G.
Fridella, Stephen A.
Faibish, Sorin
Gupta, Uday K.
Jiang, Xiaoye
출원인 / 주소
EMC Corporation
대리인 / 주소
Auchterlonie, Richard
인용정보
피인용 횟수 :
7인용 특허 :
22
초록▼
A read-write access to a file in a file server includes an initial metadata access step, an asynchronous read or write of file data, and a metadata commit step. In order to parallelize access to a range locking database, an inode and indirect file block mapping database, and a pre-allocation data ba
A read-write access to a file in a file server includes an initial metadata access step, an asynchronous read or write of file data, and a metadata commit step. In order to parallelize access to a range locking database, an inode and indirect file block mapping database, and a pre-allocation data base, operations are pipelined within the metadata access step and also within the metadata commit step. The pipelined operations within the metadata access step include a first stage of range locking, a second stage of reading block mapping metadata, and a third stage of reading and updating a pre-allocation map for write access. The pipelined operations within the metadata commit step include a first stage of releasing range locks, a second stage of accessing old block metadata for write access, and a third stage of updating metadata and flushing the pre-allocation map for write access.
대표청구항▼
What is claimed is: 1. A method of operating a file server computer for providing clients with concurrent write access to respective byte ranges of a file in storage of the file server computer, the method comprising: the file server computer responding to a concurrent write request from a client b
What is claimed is: 1. A method of operating a file server computer for providing clients with concurrent write access to respective byte ranges of a file in storage of the file server computer, the method comprising: the file server computer responding to a concurrent write request from a client by accessing metadata of the file to obtain a block mapping for the concurrent write request, and then writing data from the client to the file using the block mapping for the concurrent write request, and then committing metadata changes to the file, the metadata changes including change in an allocation of file blocks to the file; wherein the file server computer accesses the metadata of the file to obtain the block mapping for the concurrent write request by accessing a range locking database in the file server computer to set a respective exclusive byte range lock upon one of the respective byte ranges of the file, accessing a file block mapping database in the file server computer, and accessing a pre-allocation database in the file server computer to pre-allocate a new file block to which the data from the client is written, and wherein the file server computer commits the metadata changes to the file by accessing the range locking database to release the respective exclusive byte range lock, accessing the file block mapping database, accessing the pre-allocation database, and writing the metadata changes to the storage of the file server computer to commit the new file block to the file in the storage the file server computer. 2. The method as claimed in claim 1, wherein the range locking database, the file block mapping database, and the pre-allocation database are accessed in memory of the file server computer. 3. The method as claimed in claim 2, which includes the file server computer maintaining the file block mapping database as a cache of on-disk file system metadata, wherein the file server computer maintains the file block mapping database as a hierarchical data structure including an inode containing metadata of an on-disk inode of the file, and including an indirect block containing metadata of an on-disk indirect block of the file. 4. The method as claimed in claim 3, wherein the metadata changes include changes to metadata of the indirect block of the file, and wherein the method includes the file server computer accessing the file block mapping database to commit the metadata changes by acquiring a shared lock on the inode in the file block mapping database, and then acquiring an exclusive lock on the indirect block in the file block mapping database, and then writing the changes to the metadata of the indirect block of the file to the indirect block in the file block mapping database. 5. The method as claimed in claim 1, wherein the file server computer commits the metadata changes to the file by accessing the file block mapping database to acquire exclusive access to old block metadata of the file, accessing the pre-allocation database to acquire exclusive access to new block metadata of the file, and then transferring the new block metadata from the pre-allocation database to the file block mapping database. 6. The method as claimed in claim 1, wherein the file server computer accesses the metadata of the file to obtain the block mapping for the file by accessing the range locking database to set the respective exclusive byte range lock, and then accessing the file block mapping database, and then accessing the pre-allocation database, and wherein the file server computer commits the metadata changes to the file by accessing the range locking database to release the respective exclusive byte range lock, and then accessing the file block mapping database, and then accessing the pre-allocation database, and then writing the metadata changes to the storage. 7. The method as claimed in claim 1, wherein the file server computer writes the metadata changes to the storage by writing the metadata changes to a file system log in storage. 8. The method as claimed in claim 1, which further includes the file server computer responding to a concurrent read request from at least one client by: accessing the range locking database to set a respective shared byte range lock, and accessing the file block mapping database to obtain a block mapping for the concurrent read request, and then reading data from the file using the block mapping for the concurrent read request, and sending the data read from the file to said at least one client, and then accessing the range locking database to release the respective shared byte range lock, and writing a file access metadata change to the storage of the file server computer. 9. A method of operating a file server computer for providing clients with concurrent write access to respective byte ranges of a file in storage of the file server computer, the method comprising: the file server computer responding to a concurrent write request from a client by accessing metadata of the file to obtain a block mapping for the file, and then asynchronously writing data from the client to the file using the block mapping for the file, and then committing metadata changes to the file the metadata changes including a change in an allocation of file blocks to the file, wherein the file server computer accesses the metadata of the file to obtain the block mapping for the file by accessing a range locking database in the file server computer to set a respective exclusive byte range upon one of the respective byte ranges of the and then accessing a file block mapping database in the file server computer to read file block metadata, and then accessing a pre-allocation database in the file server computer to pre-allocate a new file block to which the data from the client is written; wherein the file server computer commits the metadata changes to the file by accessing the range locking database to release the respective exclusive byte range lock, and then accessing the file block mapping database to acquire exclusive access to old block metadata, accessing the pre-allocation database to acquire exclusive access to new block metadata, and then transferring the new block metadata from the pre-allocation database to the file block mapping database to commit the new file block to the file in the storage of the file server computer. 10. The method as claimed in claim 9, which includes the file server computer maintaining the file block mapping database in memory of the file server computer as a cache of on-disk file system metadata, wherein the file block mapping database is maintained as a hierarchical data structure, the hierarchical data structure including an inode containing metadata of an on-disk inode of the file, and including an indirect block containing metadata of an on-disk indirect block of the file. 11. The method as claimed in claim 10, wherein the metadata changes include changes to metadata of the indirect block of the file, and wherein the method includes the file server computer accessing the file block mapping database to commit the metadata changes by acquiring a shared lock on the inode in the file block mapping database, and then acquiring an exclusive lock on the indirect block in the file block mapping database, and then writing the changes to the metadata of the indirect block of the file to the indirect block in the file block mapping database. 12. The method as claimed in claim 9 which further includes the file server computer responding to a concurrent read request from at least one client by: accessing the range locking database to set a respective shared byte range lock, and accessing the file block mapping database to obtain a block mapping for the concurrent read request, and then reading data from the file using the block mapping for the concurrent read request, and sending the data read from the file to said at least one client, and then accessing the range locking database to release the respective shared byte range lock, and writing a file access metadata change to the storage of the file server computer. 13. The method as claimed in claim 9, wherein the committing of the metadata changes to the file by the file server computer further includes the file server writing the metadata changes to a file system log in the storage. 14. A file server comprising: storage for storing a file, at least one processor coupled to the storage for access to the file, and memory for containing a range locking database, a file block mapping database, and a pre-allocation database, wherein said at least one processor is coupled to the memory and programmed for providing clients with concurrent write access to respective byte ranges of the file by the file server responding to a concurrent write request from a client by accessing metadata of the file to obtain a block mapping for the concurrent write request, and then writing data from the client to the file using the block mapping for the concurrent write request, and then committing metadata changes to the file, the metadata changes including a change in an allocation of file blocks to the file, wherein said at least one processor is programmed for accessing the metadata of the file to obtain the block mapping for the concurrent write request by accessing the range locking database in the memory to set a respective exclusive byte range lock upon one of the respective byte ranges of the file, accessing the file block mapping database in the memory, and accessing the pre-allocation database in the memory to pre-allocate a new file block to which the data from the client is written, and wherein said at least one processor is programmed for committing the metadata changes to the file by accessing the range locking database in the memory to release the respective exclusive byte range lock, accessing the file block mapping database in the memory, accessing the pre-allocation database in the memory, and writing the metadata changes to the storage to commit the new file block to the file in the storage of the file server. 15. The file server as claimed in claim 14, wherein said at least one processor is programmed for maintaining the file block mapping database in the memory as a cache of on-disk file system metadata, the cache of on-disk file system metadata including a hierarchical data structure, the hierarchical data structure including an inode containing metadata of an on-disk inode of the file, and an indirect block containing metadata of an on-disk indirect block of the file. 16. The file server as claimed in claim 15, wherein the metadata changes include changes to metadata of the indirect block of the file, and wherein said at least one processor is programmed for accessing the file block mapping database to commit the metadata changes by acquiring a shared lock on the inode in the file block mapping database, and then acquiring an exclusive lock on the indirect block in the file block mapping database, and then writing the changes to the metadata of the indirect block of the file to the indirect block in the file block mapping database. 17. The file server as claimed in claim 14, wherein said at least one processor is programmed for committing the metadata changes to the file by accessing the file block mapping database to acquire exclusive access to old block metadata of the file, accessing the pre-allocation database to acquire exclusive access to new block metadata of the file, and then transferring the new block metadata from the pre-allocation database to the file block mapping database. 18. The file server as claimed in claim 14, wherein said at least one processor is programmed for accessing the metadata of the file to obtain the block mapping for the file by accessing the range locking database in the memory to set the respective exclusive byte range lock, and then accessing the file block mapping database in the memory, and then accessing the pre-allocation database in the memory, and wherein said at least one processor is programmed for committing the metadata changes to the file by accessing the range locking database in the memory to release the respective exclusive byte range lock, and then accessing the file block mapping database in the memory, and then accessing the pre-allocation database in the memory, and then writing the metadata changes to the storage. 19. The file server as claimed in claim 14, wherein said at least one processor is programmed to write the metadata changes to the storage by writing the metadata changes to a file system log in storage. 20. The file server as claimed in claim 14, wherein said at least one processor is further programmed for responding to a concurrent read request from at least one client by: accessing the range locking database in the memory to set a respective shared byte range lock, and accessing the file block mapping database in the memory to obtain a block mapping for the concurrent read request, and then reading data from the file using the block mapping for the concurrent read request, and sending the data read from the file to said at least one client, and then accessing the range locking database in the memory to release the respective shared byte range lock, and writing a file access metadata change to the storage. 21. A method of operating a file server computer having storage storing a file, memory containing a range locking database, a file mapping database, and a pre-allocation database, and at least one processor coupled to the storage for access to the file and coupled to the memory for access to the range locking database, the file mapping data base, and the pre-allocation database, and said method comprising: said at least one processor providing clients with concurrent read-write access to non-overlapping byte ranges of the file including concurrent write access changing an allocation of file blocks to the file in the storage by pipelined processing of client requests for read-write access to the file though a sequence of three steps including a first step of metadata access followed by a second step of asynchronous reading or writing to the file followed by a third step of metadata commitment; said at least one processor pipelining operations within the first step of metadata access through a first stage of byte range locking for concurrent setting of byte range locks upon the non-overlapping byte range of the file, followed by a second stage of reading block mapping metadata, followed by a third stage of reading and updating a pre-allocation map for write access; and said at least one processor pipelining operations within the third step of metadata commitment through a first stage of releasing the byte range locks, followed by a second stage of accessing old block metadata for write access, followed by a third stage of updating metadata and flushing the pre-allocation map for write access. 22. The method as claimed in claim 21, wherein the updating of the metadata includes changes to metadata of an indirect block of the file, and wherein said at least one processor accesses the file block mapping database to commit the metadata changes by acquiring a shared lock on the inode in the file block mapping database, and then acquiring an exclusive lock on the indirect block in the file block mapping database, and then writing the changes to the metadata of the indirect block of the file to the indirect block in the file block mapping database. 23. The method as claimed in claim 21, wherein said at least one processor commits the metadata changes to the file by accessing the file block mapping database to acquire exclusive access to old block metadata of the file, accessing the pre-allocation database to acquire exclusive access to new block metadata of the file, and then transferring the new block metadata from the pre-allocation database to the file block mapping database. 24. A file server comprising: storage storing a file; at least one processor coupled to the storage for access to the file; and memory containing a range locking database, a file block mapping database, and a pre-allocation database; wherein said at least one processor is coupled to the memory for access to the range locking data base, the file mapping database, and the pre-allocation database, and said at least one processor is programmed to provide clients with concurrent read-write access to non-overlapping byte ranges of the file including concurrent write access changing an allocation of file blocks to the file in the storage by pipelined processing of client requests for read-write access to the file though a sequence of three steps including a first step of metadata access followed by a second step of asynchronous reading or writing to the file followed by a third step of metadata commitment; said at least one processor is programmed to pipeline operations within the first step of metadata access through a first stage of byte range locking for concurrent setting of byte range locks upon the non-overlapping byte range of the file, followed by a second stage of reading block mapping metadata, followed by a third stage of reading and updating a pre-allocation map for write access; and said at least one processor is programmed to pipeline operations within the third step of metadata commitment through a first stage of releasing the byte range locks, followed by a second stage of accessing old block metadata for write access, followed by a third stage of updating metadata and flushing the pre-allocation map for write access. 25. The file server as claimed in claim 24, wherein the updating of the metadata includes changes to metadata of an indirect block of the file, and wherein said at least one processor is programmed to access the file block mapping database to commit the metadata changes by acquiring a shared lock on the inode in the file block mapping database, and then acquiring an exclusive lock on the indirect block in the file block mapping database, and then writing the changes to the metadata of the indirect block of the file to the indirect block in the file block mapping database. 26. The file server as claimed in claim 24, wherein said at least one processor is programmed to commit the metadata changes to the file by accessing the file block mapping database to acquire exclusive access to old block metadata of the file, accessing the pre-allocation database to acquire exclusive access to new block metadata of the file, and then transferring the new block metadata from the pre-allocation database to the file block mapping database.
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
이 특허에 인용된 특허 (22)
Strickler Gary E. ; Knapp Herbert William ; Holenstein Bruce D. ; Holenstein Paul J., Bidirectional database replication scheme for controlling ping-ponging.
Jiang,Xiaoye; Ma,Gang; Zheng,Jiannan, Delegation of metadata management in a storage system by leasing of free file system blocks and i-nodes from a file system owner.
Uresh K. Vahalia ; Xiaoye Jiang ; Jeffrey Jon Darcy ; Boris Zuckerman ; Ronald Curtis Searls, File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration.
Vahalia, Uresh K.; Tzelnic, Percy, File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator.
Xiaoye Jiang ; Uresh K. Vahalia ; Uday Gupta ; Percy Tzelnic, File server system using connection-oriented protocol and sharing data sets among data movers.
Xu Yikang ; Vahalia Uresh K. ; Jiang Xiaoye ; Gupta Uday ; Tzelnic Percy, File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems.
Hitz David ; Malcolm Michael ; Lau James ; Rakitzis Byron, Method for maintaining consistent states of a file system and for creating user-accessible read-only copies of a file s.
Ananthanarayanan,Rajagopal; Becker Szendy,Ralph A.; Rees,Robert M.; Burns,Randal C.; Long,Darrell D. E.; Venkateswararao,Jujjuri; Wolfe,David M.; Young,Jason C., Method, system and computer program product for implementing copy-on-write of a file.
Vahalia Uresh K. ; Gupta Uday ; Porat Betti ; Tzelnic Percy, Network file server sharing local caches of file access information in data processors assigned to respective file systems.
Schmuck Frank B. ; Zlotek Anthony J. ; Shmueli Boaz,ILX ; Mandler Benjamin,ILX ; Yehudai Zvi Yosef,ILX ; Kish William A., Parallel file system with method using tokens for locking modes.
Federwisch,Michael L.; Owara,Shane S.; Manley,Stephen L., System and method for checkpointing and restarting an asynchronous transfer of data between a source and destination snapshot.
Glade,Bradford B.; Oliveira,Fernando; Brown,Jeffrey A.; McCann,Peter J.; Harvey,David; Wentworth, III,James A.; Caritj,Walter M.; Waxman,Matthew; VanTine,Lee W., System and method for managing storage networks and for managing scalability of volumes in such a network.
Bennett Robert Bradley ; Johnson Eugene ; Woodnorth Terrence L., System for awarding token to client for accessing first data block specified in client request without interference due.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.