Coda (file system)
Encyclopedia
Coda is a distributed file system
developed as a research project at Carnegie Mellon University
since 1987 under the direction of Mahadev Satyanarayanan
. It descended directly from an older version of AFS
(AFS-2) and offers many similar features. The InterMezzo
file system was inspired by Coda. Coda is still under development, though the focus has shifted from research to creating a robust product for commercial use.
Coda uses a local cache to provide access to server data when the network connection is lost. During normal operation, a user reads and writes to the file system normally, while the client fetches, or "hoards", all of the data the user has listed as important in the event of network disconnection. If the network connection is lost, the Coda client's local cache serves data from this cache and logs all updates. This operating state is called disconnected operation. Upon network reconnection, the client moves to reintegration state; it sends logged updates to the servers. Then it transitions back to normal connected-mode operation.
Also different from AFS is Coda's data replication method. AFS uses a pessimistic replication strategy with its files, only allowing one read/write server to receive updates and all other servers acting as read-only replicas. Coda allows all servers to receive updates, allowing for a greater availability of server data in the event of network partitions, a case which AFS cannot handle.
These unique features introduce the possibility of semantically diverging copies of the same files or directories, known as "conflicts". Disconnected operation's local updates can potentially clash with other connected users' updates on the same objects, preventing reintegration. Optimistic replication can potentially cause concurrent updates to different servers on the same object, preventing replication. The former case is called a "local/global" conflict, and the latter case a "server/server" conflict. Coda has extensive repair tools, both manual and automated, to handle and repair both types of conflicts.
platforms. Currently, it has been incorporated into the 2.6 Linux kernel. It has also been ported to FreeBSD
. Efforts have been made to port Coda onto Microsoft Windows
platforms, from the Windows 95
/Windows 98
era, Windows NT
to Windows XP
, by means of open source projects like the DJGCC DOS C Compiler
and Cygwin
.
Distributed file system
Network file system may refer to:* A distributed file system, which is accessed over a computer network* Network File System , a specific brand of distributed file system...
developed as a research project at Carnegie Mellon University
Carnegie Mellon University
Carnegie Mellon University is a private research university in Pittsburgh, Pennsylvania, United States....
since 1987 under the direction of Mahadev Satyanarayanan
Mahadev Satyanarayanan
Mahadev Satyanarayanan is an experimental computer scientist who has pioneered research in mobile and pervasive computing. One outcome is the Coda file system, which supports mobility in low-bandwidth and intermittent wireless networks through disconnected and bandwidth-adaptive operation.Key...
. It descended directly from an older version of AFS
Andrew file system
The Andrew File System is a distributed networked file system which uses a set of trusted servers to present a homogeneous, location-transparent file name space to all the client workstations. It was developed by Carnegie Mellon University as part of the Andrew Project. It is named after Andrew...
(AFS-2) and offers many similar features. The InterMezzo
InterMezzo (file system)
InterMezzo is an obsolete distributed file system written for Linux, distributed under the GPL. The kernel component is not included in the current 2.6 kernel. It was included in the standard Linux kernel from kernel version 2.4.15 but was dropped from the 2.6 kernel...
file system was inspired by Coda. Coda is still under development, though the focus has shifted from research to creating a robust product for commercial use.
Features
Coda has many features that are desirable for network file systems, and several features not found elsewhere.- Disconnected operation for mobile computing
- Is freely available under a liberal license
- High performance through client side persistent caching
- Server replication
- Security model for authentication, encryption and access control
- Continued operation during partial network failures in server network
- Network bandwidth adaptation
- Good scalability
- Well defined semantics of sharing, even in the presence of network failures
Coda uses a local cache to provide access to server data when the network connection is lost. During normal operation, a user reads and writes to the file system normally, while the client fetches, or "hoards", all of the data the user has listed as important in the event of network disconnection. If the network connection is lost, the Coda client's local cache serves data from this cache and logs all updates. This operating state is called disconnected operation. Upon network reconnection, the client moves to reintegration state; it sends logged updates to the servers. Then it transitions back to normal connected-mode operation.
Also different from AFS is Coda's data replication method. AFS uses a pessimistic replication strategy with its files, only allowing one read/write server to receive updates and all other servers acting as read-only replicas. Coda allows all servers to receive updates, allowing for a greater availability of server data in the event of network partitions, a case which AFS cannot handle.
These unique features introduce the possibility of semantically diverging copies of the same files or directories, known as "conflicts". Disconnected operation's local updates can potentially clash with other connected users' updates on the same objects, preventing reintegration. Optimistic replication can potentially cause concurrent updates to different servers on the same object, preventing replication. The former case is called a "local/global" conflict, and the latter case a "server/server" conflict. Coda has extensive repair tools, both manual and automated, to handle and repair both types of conflicts.
Supporting platforms
Coda has been developing upon the LinuxLinux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
platforms. Currently, it has been incorporated into the 2.6 Linux kernel. It has also been ported to FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...
. Efforts have been made to port Coda onto Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
platforms, from the Windows 95
Windows 95
Windows 95 is a consumer-oriented graphical user interface-based operating system. It was released on August 24, 1995 by Microsoft, and was a significant progression from the company's previous Windows products...
/Windows 98
Windows 98
Windows 98 is a graphical operating system by Microsoft. It is the second major release in the Windows 9x line of operating systems. It was released to manufacturing on 15 May 1998 and to retail on 25 June 1998. Windows 98 is the successor to Windows 95. Like its predecessor, it is a hybrid...
era, Windows NT
Windows NT
Windows NT is a family of operating systems produced by Microsoft, the first version of which was released in July 1993. It was a powerful high-level-language-based, processor-independent, multiprocessing, multiuser operating system with features comparable to Unix. It was intended to complement...
to Windows XP
Windows XP
Windows XP is an operating system produced by Microsoft for use on personal computers, including home and business desktops, laptops and media centers. First released to computer manufacturers on August 24, 2001, it is the second most popular version of Windows, based on installed user base...
, by means of open source projects like the DJGCC DOS C Compiler
DJGCC
DJGCC is a C development suite for x86 PCs that runs under DOS or compatibles. It is guided by DJ Delorie, who started the project in 1989...
and Cygwin
Cygwin
Cygwin is a Unix-like environment and command-line interface for Microsoft Windows. Cygwin provides native integration of Windows-based applications, data, and other system resources with applications, software tools, and data of the Unix-like environment...
.
See also
- List of file systems, Distributed file systems section
- MooseFSMoose File SystemMoose File System is a distributed file system developed by Gemius SA. The lead developer is Jakub Kruszona-Zawadzki. MooseFS aims to be fault-tolerant, scalable, POSIX compliant, general-purpose file system for datacenters...
- CephCeph-External links:* *...
- Global filesystemGlobal filesystemA global filesystem is one which guarantees that the same path name corresponds to the same object on all computers deploying the filesystem. That implies#usage of a global network#prohibition of host-dependent mountpoints...
- GlusterFSGlusterFSGlusterFS is a scale-out NAS file system developed by Gluster. It aggregates various storage servers over Ethernet or Infiniband RDMA interconnect into one large parallel network file system. GlusterFS is based on a stackable user space design without compromising performance. It has found a...
- Google File SystemGoogle File SystemGoogle File System is a proprietary distributed file system developed by Google Inc. for its own use. It is designed to provide efficient, reliable access to data using large clusters of commodity hardware...
- InterMezzoInterMezzo (file system)InterMezzo is an obsolete distributed file system written for Linux, distributed under the GPL. The kernel component is not included in the current 2.6 kernel. It was included in the standard Linux kernel from kernel version 2.4.15 but was dropped from the 2.6 kernel...
External links
- Coda website at Carnegie Mellon University
- The Coda Distributed Filesystem for Linux, Bill von Hagen, October 7, 2002.
- The Coda Distributed File System with Picture representation, Peter J. Braam, School of Computer Science,