Nuno Luís (2009)

MSc Student

in

MSc dissertation: A Transactional File System Over FUSE (in Portuguese)   
Period: September 2008 — December 2009
Grade: 15/20

With the emergence and widespread use of microprocessors with multiple cores, there is a clear trend in a growing interest for concurrent programming, and in particular for parallel programming, by both the academic community and the industry of software development. However, the development of concurrent programs is difficult, partly because of the increased inherent complexity of these programs. The mechanisms for concurrency control most commonly used have a low level of abstraction and are therefore difficult to use and error prone. The transaction model has been used successfully in the context of databases systems for many years. These systems allow multiple clients to access a single database concurrently, with such accesses verifying the ACID properties (Atomicity, Consistency, Isolation and Durability). These properties from transactions allow the development of applications that, although accessing concurrently the data repository, have a near sequential semantics, more predictable and easier to use. The databases systems can be used to persistently store large amounts of data with support for transactional processing. However, access to these systems is done through a specific database interface, thus imposing limitations on their use. Moreover, file systems are accessible through a well defined and standardized interface and are frequently used by many applications to store data permanently. However, concurrency control in filesystems is achieved with a very limited set of low level services, limiting the functionality of applications and its capabilities to exploit concurrency in access to data in the file system. This dissertation aims at proposing the architecture and design of a transactional filesystem and describes its implementation over the FUSE infrastructure. In this new file system, transactions may be initiated by applications either explicitly or implicitly. In the former, the programmer explicitly specified the transaction boundaries that enclose a set of accesses to the file system. In the latter, aiming at ensuring compatibility with legacy systems, transactional blocks are defined implicitly by the classical file system operations of opening and closing files. The implementation of the proposed system was also assessed in the perspectives of functionality and performance. Functional assessment aimed at ensuring that the transactional semantics is properly supported and available to applications. Performance evaluation aimed at assessing the performance penalty introduced by the transactional support in file system.

Keywords: Transaction System, File System, Transaction File System, FUSE, Concurrency Control