File System Hierarchy Standard (FHS)
A file system (or filesystem) is a means to organize data expected to be retained after a program terminates by providing procedures to store, retrieve and update data, as well as manage the available space on the device(s) which contain it. A file system organizes data in an efficient manner and is tuned to the specific characteristics of the device. A tight coupling usually exists between the operating system and the file system. Some file systems provide mechanisms to control access to the data and metadata. Ensuring reliability is a major responsibility of a file system. Some file systems allow multiple programs to update the same file at nearly the same time.
File systems are used on data storage devices, such as hard disk drives, floppy disks, optical discs, or flash memory storage devices, to maintain the physical locations of the computer files. They may provide access to data on a file server by acting as clients for a network protocol (e.g. NFS, SMB, or 9P clients), or they may be virtual and exist only as an access method for virtual data (e.g. procfs). This is distinguished from a directory service and registry.
Shared disk file systems may be symmetric where metadata is distributed among the nodes or asymmetric with centralized metadata servers.
Some of the distributed parallel file systems use object storage device (OSD) (In Lustre called OST) for chunks of data together with centralized metadata servers.
All file systems listed here focus on high availability, scalability and high performance unless otherwise stated below.
File systems are used on data storage devices, such as hard disk drives, floppy disks, optical discs, or flash memory storage devices, to maintain the physical locations of the computer files. They may provide access to data on a file server by acting as clients for a network protocol (e.g. NFS, SMB, or 9P clients), or they may be virtual and exist only as an access method for virtual data (e.g. procfs). This is distinguished from a directory service and registry.
Disk file systems
Disk file systems are usually block-oriented. Files in a block-oriented file system are sequences of blocks, often featuring fully random-access read, write, and modify operations.- ADFS – Acorn's Advanced Disc filing system, successor to DFS.
- AdvFS - Advanced File System, designed by Digital Equipment Corporation for their Digital UNIX (now Tru64 UNIX) operating system.
- AFS (Not to be confused with Andrew File System, below) – Acer Fast Filesystem, used on SCO OpenServer
- AFS - Ami File Safe, a commercial filesystem shipped on Amiga in the 1990s (AFS is structure compatible with PFS)
- AthFS - AtheOS File System, a 64-bit journaled filesystem now used by Syllable. Also called AFS
- BFS – the Be File System used on BeOS, occasionally misnamed as BeFS. Open source implementation called OpenBFS is used by the Haiku operating system.
- Btrfs - is a copy-on-write file system for Linux announced by Oracle in 2007 and published under the GNU General Public License (GPL).
- CBMFS – The filesystem used on most Commodore 64-compatible floppy drives including the venerable 1541.
- CMDFS – A filesystem extension added to CBMFS by Creative Micro Designs, for use in their 3.5 inch floppy drives, RAM disks, and hard drive controllers.
- CP/M file system — Native filesystem used in the CP/M (Control Program for Microcomputers) operating system which was first released in the late 1970s.
- DDFS – Data Domain File System, the data deduplication file system that ships in the Data Domain Deduplication Storage Systems which are an alternative to tape for storing backups and archives.[1]
- DTFS – Desktop File System, featuring file compression, used by SCO OpenServer
- DOS 3.x - Original floppy operating system and file system developed for the Apple II
- EAFS – Extended Acer Fast Filesystem, used on SCO OpenServer
- Extent File System (EFS) – an older block filing system under IRIX.
- ext – Extended file system, designed for Linux systems
- ext2 – Second extended file system, designed for Linux systems.
- ext3 – A journaled form of ext2.
- ext4 – A follow up for ext3 and also a journaled filesystem with support for extents.
- ext3cow – A versioning file system form of ext3.
- FAT – File Allocation Table, used on DOS and Microsoft Windows; FAT12, FAT16 and FAT32 for 12-, 16- and 32-bit table depths.
- VFAT – Optional layer on Microsoft Windows FAT system to allow long (up to 255 character) filenames instead of only the 8.3 filenames allowed in the plain FAT filesystem.
- FATX – A modified version of Microsoft Windows FAT system that is used on the original Xbox console.
- FFS (Amiga) – Fast File System, used on Amiga systems. This FS has evolved over time. Now counts FFS1, FFS Intl, FFS DCache, FFS2.
- FFS – Fast File System, used on *BSD systems
- Fossil – Plan 9 from Bell Labs snapshot archival file system.
- Files-11 – OpenVMS file system; also used on some PDP-11 systems; supports record-oriented files
- HFS – Hierarchical File System, in use until HFS+ was introduced on Mac OS 8.1. Also known as Mac OS Standard format. Successor to Macintosh File System (MFS) & predecessor to HFS+; not to be confused with IBM's HFS provided with z/OS
- HFS+ – Updated version of Apple’s HFS, Hierarchical File System, supported on Mac OS 8.1 & above, including Mac OS X. Supports file system journaling, enabling recovery of data after a system crash. Also referred to as 'Mac OS Extended format or HFS Plus
- HPFS – High Performance File System, used on OS/2
- HTFS – High Throughput Filesystem, used on SCO OpenServer
- ISO 9660 – Used on CD-ROM and DVD-ROM discs (Rock Ridge and Joliet are extensions to this)
- JFS – IBM Journaling file system, provided in Linux, OS/2, and AIX. Supports extents.
- JXFS used in AmigaOS 4.1.
- LisaFS - Filesystem used by Apple Lisa's operating system. Unique in that it allowed two different files with exactly same name ("foo" and "foo").
- LFS – 4.4BSD implementation of a log-structured file system
- MFS – Macintosh File System, used on early Mac OS systems. Succeeded by Hierarchical File System (HFS).
- Next3 – A form of ext3 with snapshots support.[2]
- MFS – TiVo's Media File System, a proprietary fault tolerant format used on Tivo hard drives for real time recording from live TV.
- Minix file system – Used on Minix systems
- NILFS – Linux implementation of a log-structured file system
- NTFS – (New Technology File System) Used on Microsoft's Windows NT-based operating systems
- NetWare File System - The original NetWare 2.x - 5.x file system, used optionally by later versions.
- NSS – Novell Storage Services. This is a new 64-bit journaling file system using a balanced tree algorithm. Used in NetWare versions 5.0-up and recently ported to Linux.
- OneFS - One File System. This is a fully journaled, distributed file system used by Isilon. OneFS uses FlexProtect and Reed-Solomon encodings to support up to four simultaneous disk failures.
- OFS – Old File System, on Amiga. Good for floppies, but fairly useless on hard drives.
- PFS – and PFS2, PFS3, etc. Technically interesting file system available for the Amiga, performs very well under a lot of circumstances. Very simple and elegant.
- ProDOS - Operating system and file system successor to DOS 3.x, for use on Apple’s computers prior to the Macintosh & Lisa computers, the Apple series, including the IIgs
- Qnx4fs - File system that is used in QNX version 4 and 6.
- Qnx6fs - New copy-on-write file system presented in QNX 6.4.0 and used as default since 6.4.1.
- ReFS (Resilient File System) - New file system by Microsoft that is built on the foundations of NTFS and is intended to be used with the soon to be released Windows Server 8 operating system.
- ReiserFS – File system that uses journaling
- Reiser4 – File system that uses journaling, newest version of ReiserFS
- Reliance – Datalight's transactional file system for high reliability applications
- Reliance Nitro – Tree-based transactional file system developed for high-performance embedded systems, from Datalight
- S51K – AT&T UNIX System V 1KB Filesystem, used by SCO OpenServer
- SkyFS - Developed for SkyOS to replace BFS as the operating system's main file system. It is based on BFS, but contains many new features.
- SFS – Smart File System, journaling file system available for the Amiga platforms.
- SpadFS - Linux - non-journaling, hashing lookup
- STL (standard language file system) - a file system developed by IBM.[3]
- TRFS - Experimental, design only
- Tux3 - An experimental versioning file system intended as a replacement for ext3
- UDF – Packet based file system for WORM/RW media such as CD-RW and DVD, now supports hard drives and flash memory as well.
- UFS – Unix File System, used on Solaris and older BSD systems
- UFS2 – Unix File System, used on newer BSD systems
- VxFS Veritas file system, first commercial journaling file system[citation needed]; HP-UX, Solaris, Linux, AIX
- VLIR (Variable Length Indexed Record) – a filesystem extension added by Berkeley Softworks to CBMFS, allowing full random access read and write operations, for computers running GEOS.
- WAFL – Write Anywhere File Layout. High performance, log-structured like file system. WAFL uses RAID-DP to protect against multiple disk failures, and NVRAM for transaction log replays. Used on NetApp systems
- XFS – Used on SGI IRIX and Linux systems
- ZFS - Sun Microsystems ZFS open source specification ported to IBM zSeries systems.
File systems with built-in fault-tolerance
These file systems have built-in checksumming and either mirroring or parity for extra redundancy on one or several block devices.- Btrfs - A filesystem based on B-Trees, created by Oracle Corporation.
- HAMMER - DragonflyBSD's primary filesystem, created by Matt Dillon
- Reliance – A transactional file system with CRCs, created by Datalight.
- Reliance Nitro – A tree-based transactional file system with CRCs, developed for high performance and reliability in embedded systems, from Datalight.
- ZFS – Created by Sun Microsystems for use on Solaris 10 and OpenSolaris, ported to FreeBSD 7.0, NetBSD (as of 08/2009), Linux[4] and to FUSE (not to be confused with the two zFSes from IBM)
File systems optimized for flash memory, solid state media
Main article: Flash file system
Solid state media, like flash memory, are similar to disks in their interfaces, but have different problems. While practically eliminating seek times, they require special handling such as wear leveling and different error detection and correction algorithms.- CASL is a filesystem designed by Nimble Storage that uses Solid State Devices to cache traditional hard drives.
- ETFS - Embedded Transactional File System. Designed primarily for NAND devices by QNX Software Systems.
- exFAT - Microsoft proprietary system intended for flash cards[5]
- ExtremeFFS - Internal file system for SSDs.
- FFS2 (presumably preceded by FFS1), one of the earliest flash file systems. Developed and patented by Microsoft in the early 1990s.[6]
- JFFS – Original log structured Linux file system for NOR flash media
- JFFS2 – Successor of JFFS, for NAND and NOR flash
- LogFS – Intended to replace JFFS2, better scalability. In early development.
- Non-Volatile File System -- the "non-volatile file system" for flash memory introduced by Palm, Inc..
- OneFS - OneFS is a file system utilized by Isilon. It supports selective placement of meta-data directly onto flash SSD.
- Segger Microcontroller Systems emFile - File system for deeply embedded applications which supports both NAND and NOR flashes. Wear leveling, fast read and write, and very low RAM usage.
- TFAT – A transactional version of the FAT filesystem.
- TrueFFS - Internal file system for SSDs, implementing error correction, bad block re-mapping and wear levelling.
- UBIFS – Successor of JFFS2 optimized to utilize non-volatile DRAM
- UFFS - Ultra low cost flash file system for embedded system [7]
- Unison RTOS - Fsys-Nand/Nor small footprint low cost flash file system for embedded systems [8]
- Write Anywhere File Layout - WAFL is an internal file system utilized by NetApp within their DataONTAP OS, originally optimized to use non-volatile DRAM
- XCFiles – an exFAT implementation from Datalight for Wind River VxWorks and other embedded operating systems
- YAFFS – A Log structured file system designed for NAND flash, but also used with NOR flash.
- ZFS - Allows placing write-ahead log (ZIL) on flash, and using flash as a second-level read cache (L2ARC)
Record-oriented file systems
In record-oriented file systems files are stored as a collection of records. They are typically associated with mainframe and minicomputer operating systems. Programs read and write whole records, rather than bytes or arbitrary byte ranges, and can seek to a record boundary but not within records. The more sophisticated record-oriented file systems have more in common with simple databases than with other file systems.- Files-11 – early versions were record-oriented; support for "streams" was added later
- Michigan Terminal System (MTS) - provides "line files" where record lengths and line numbers are associated as metadata with each record in the file, lines can be added, replaced, updated with the same or different length records, and deleted anywhere in the file without the need to read and rewrite the entire file.[9]
- OS4000 for GEC's OS4000 operating system, on the GEC 4000 series minicomputers
- Queued sequential access method (QSAM) – also for IBM's z/OS and z/VSE operating systems; see Access methods and Data set (IBM mainframe) for more examples
- Pick Operating System - A record-oriented filesystem and database that uses hash-coding to store data.
- RSD (record sequential delimited) - A record-oriented file system from IBM [3]
- Structured File Server (SFS) — A record-oriented file system from IBM, originally part of the Encina [10] system, now integrated into CICS Transaction Server.[11]
- Virtual storage access method (VSAM) – for IBM's z/OS and z/VSE operating systems
Shared disk file systems (also called shared storage file systems, SAN file system, Clustered file system or even cluster file systems) are primarily used in a storage area network where all nodes directly access the block storage where the file system is located. This makes it possible for nodes to fail without affecting access to the file system from the other nodes. Shared disk file systems are normally used in a high-availability cluster together with storage on hardware RAID. Shared disk file systems normally do not scale over 64 or 128 nodes.
Shared disk file systems may be symmetric where metadata is distributed among the nodes or asymmetric with centralized metadata servers.
- CXFS (Clustered XFS) from Silicon Graphics (SGI). Available for Linux, Mac, Windows, Solaris, AIX and IRIX,. Asymmetric.
- DataPlow SAN File System (SFS) from DataPlow. Available for IRIX, Linux, Solaris and Windows. Asymmetric.
- EMC Celerra HighRoad from EMC. Available for Linux, AIX, HP-UX, IRIX, Solaris and Windows. Asymmetric.[citation needed]
- Files-11 on VMSclusters, released by DEC in 1983, now from HP. Symmetric.
- GFS2 (Global File System) from Red Hat. Available for Linux under GPL. Symmetric (GDLM) or Asymmetric (GULM).
- IBM General Parallel File System (GPFS) Windows, Linux, AIX . Parallel
- HP Cluster File System (CFS) (TruCluster) from HP. Available for Tru64 UNIX.
- Nasan File System from DataPlow. Available for Linux and Solaris. Asymmetric.
- Oracle ACFS from Oracle Corporation. Available for Linux (Red Hat Enterprise Linux 5 and Oracle Enterprise Linux 5 only). Symmetric.
- OCFS2 (Oracle Cluster File System) from Oracle Corporation. Available for Linux under GPL. Symmetric.
- PolyServe file system (PSFS) from PolyServe [1] is used in their PolyServe Matrix Server [12] which focus on exporting to clients over CIFS or NFS as well as Microsoft SQL Server and Oracle 9i RAC and 10g. Available for Linux and Windows. Symmetric.
- pNFSpNFS development has been guided by a multi-vendor consortium of interested HPC vendors, including NetApp, Panasas, and even IBM.
- StorNext File System from Quantum. Asymmetric. Available for AIX, HP-UX, IRIX, Linux, Mac OS, Solaris and Windows. Interoperable with Xsan. Formerly known as CVFS.
- Blue Whale Clustered file system (BWFS) from Zhongke Blue Whale. Asymmetric. Available for Microsoft Windows, Linux, and Mac OS X.
- QFS from Sun Microsystems. Available for Linux (client only) and Solaris (metadata server and client). Asymmetric.
- Veritas Storage Foundation from Symantec. Available for AIX, HP-UX, Linux and Solaris. Asymmetric.
- Xsan from Apple Inc.. Available for Mac OS. Asymmetric. Interoperable with StorNext File System.
- VMFS from VMware/EMC Corporation. Available for VMware ESX Server. Symmetric.
Distributed file systems
Distributed file systems are also called network file systems. Many implementations have been made, they are location dependent and they have access control lists (ACLs), unless otherwise stated below.- 9P, the Plan 9 from Bell Labs and Inferno distributed file system protocol. One implementation is v9fs. No ACLs.
- Amazon S3
- Andrew File System (AFS) is scalable and location independent, has a heavy client cache and uses Kerberos for authentication. Implementations include the original from IBM (earlier Transarc), Arla and OpenAFS.
- Apple Filing Protocol (AFP) from Apple Inc.. AFP may use Kerberos authentication.
- DCE Distributed File System (DCE/DFS) from IBM (earlier Transarc) is similar to AFS and focus on full POSIX file system semantics and high availability. Available for AIX and Solaris under a proprietary software license.
- File Access Listener (FAL) is an implementation of the Data Access Protocol (DAP) which is part of the DECnet suite of network protocols created by Digital Equipment Corporation.
- Microsoft Office Groove shared workspace, used for DoHyki
- NetWare Core Protocol (NCP) from Novell is used in networks based on NetWare.
- Network File System (NFS) originally from Sun Microsystems is the standard in UNIX-based networks. NFS may use Kerberos authentication and a client cache. (4.1 only)
- OS4000 Linked-OS provides distributed filesystem across OS4000 systems.
- Secure File System (SFS) [2]
- Self-certifying File System (SFS), a global network file system designed to securely allow access to file systems across separate administrative domains.
- Server Message Block (SMB) originally from IBM (but the most common version is modified heavily by Microsoft) is the standard in Windows-based networks. SMB is also known as Common Internet File System (CIFS). SMB may use Kerberos authentication.
Distributed fault-tolerant file systems
Distributed fault-tolerant replication of data between nodes (between servers or servers/clients) for high availability and offline (disconnected) operation.- Coda from Carnegie Mellon University focuses on bandwidth-adaptive operation (including disconnected operation) using a client-side cache for mobile computing. It is a descendant of AFS-2. It is available for Linux under the GPL.
- Distributed File System (Microsoft) (Dfs) from Microsoft focuses on location transparency and high availability. Available for Windows under a proprietary software license.
- InterMezzo from Cluster File Systems uses synchronization over HTTP. Available for Linux under GPL but no longer in development since the developers are working on Lustre.
- Moose File System (MooseFS) from Gemius SA is a networking, distributed file system. It spreads data over several physical locations (servers), which are visible to a user as one resource. Works on Linux, FreeBSD, NetBSD, OpenSolaris and Mac OS X. Master server and chunkservers can also run on Solaris and Windows with Cygwin.
- Tahoe-LAFS [13] is an open source secure, decentralized, fault-tolerant filesystem utilizing encryption as the basis for a least-authority replicated design.
Distributed parallel file systems
Distributed parallel file systems stripe data over multiple servers for high performance. They are normally used in high-performance computing (HPC).Some of the distributed parallel file systems use object storage device (OSD) (In Lustre called OST) for chunks of data together with centralized metadata servers.
- Fraunhofer Parallel File System (FhGFS) from the Fraunhofer Society Competence Center for High Performance Computing. Available free of charge for Linux under a proprietary license. (High availability features are on the roadmap.)
- Parallel Virtual File System (PVFS, PVFS2). Developed to store virtual system images, with a focus on non shared writing optimizations. Available for Linux under GPL.
- Starfish is a POSIX-compatible, N-way redundant file system created by Digital Bazaar Inc. and published under a pseudo open source license. Available for Linux and Mac OS. Windows support is available via Samba.
Distributed parallel fault-tolerant file systems
Distributed file systems, which also are parallel and fault tolerant, stripe and replicate data over multiple servers for high performance and to maintain data integrity. Even if a server fails no data is lost. The file systems are used in both high-performance computing (HPC) and high-availability clusters.All file systems listed here focus on high availability, scalability and high performance unless otherwise stated below.
- CloudStore from Kosmix is a Google File System workalike, available under Apache License 2.0.
- Cosmos (Microsoft internal) focuses on fault tolerance, high throughput and scalability. Designed for terabyte and petabyte sized data sets and processing with Dryad.
- dCache by DESY and others. A write once filesystem, accessible via various protocols.
- ExaFS distributed file system from Exanet. Runs as part of ExaStore, a Linux based NAS solution that runs on commodity Intel based hardware, serving NFS v2/v3, SMB/CIFS and AFP to Windows, Mac OS, Linux and other UNIX clients. Available under a proprietary software license.
- FS-Manager from CDNetworks focused on Content Delivery Network. Available for Linux under proprietary software license.
- Gfarm file system uses OpenLDAP or PostgreSQL for metadata and FUSE or LUFS for mounting. Available for Linux, Mac OS X, FreeBSD, NetBSD and Solaris under X11 License.
- General Parallel File System (GPFS) from IBM. Support replication between attached block storage. Available for AIX, Linux and Windows. Symmetric or asymmetric (configurable). (proprietary)
- GlusterFS is a general purpose distributed file system for scalable storage. It aggregates various storage bricks over Infiniband RDMA or TCP/IP interconnect into one large parallel network file system. Released under GNU General Public License v3.
- Google File System (GFS) from Google focus on fault tolerance, high throughput and scalability. Only available for use through Google App Engine.
- IBRIX Fusion from IBRIX. Available for Linux under a proprietary software license.
- Lustre is a POSIX-compliant, high-performance filesystem originally developed by Cluster File Systems and currently supported by Whamcloud. Lustre has high availability via storage failover. Freely available for Linux under GPL.
- MogileFS from Danga Interactive is not POSIX compliant, uses a flat namespace, application level, uses MySQL or Postgres for metadata and HTTP for transport. Available for Linux (but may be ported) under GPL.
- OneFS distributed file system from Isilon. BSD based OS on dedicated Intel based hardware, serving NFS v3 and SMB/CIFS to Windows, Mac OS, Linux and other UNIX clients under a proprietary software license.
- Panasas ActiveScale File System (PanFS) from Panasas uses object storage devices. Available for Linux under a proprietary software license.
- PeerFS from Radiant Data Corporation focus on high availability and high performance and uses peer-to-peer replication with multiple sources and targets. Available for Linux under a proprietary software license.
- TerraGrid Cluster File System from Terrascale Technologies Inc implements on demand cache coherency and uses industrial standard iSCSI and a modified version of the XFS file system. Available for Linux under a proprietary software license.
- XtreemFS [3] is a free and open-source (GPL) cross-platform file system for wide area networks. It replicates the data for fault tolerance and caches metadata and data to improve performance over high-latency links. SSL and X.509 certificates support makes XtreemFS usable over public networks. It also supports Striping for usage in a cluster.
- Chiron FS [14] is a fuse-based, transparent replication file system, layering on an existing file system and implementing at the file system level what RAID 1 does at the device level. A notably convenient consequence is the possibility of picking single target directories, without the need of replicating entire partitions. (The project has no visible activity after 2008, a status request in Oct. 2009 in the chironfs-forum is unanswered)
- PlasmaFS [15] is a free and open-source (GPL) userspace filesystem focusing on data safety and security. PlasmaFS provides a transactional API which is accessible over a SunRPC-based protocol. PlasmaFS can also be mounted as NFS volume, and is POSIX-compliant. Both data and metadata are replicated.
- WebDFS An Open Source scalable, decentralized file store similar to MogileFS in function and purpose. Uses HTTP as the transport. Data is automatically and optimally re-arranged to accommodate the addition of new resources. The lack of central meta data management greatly simplifies deployment and use.
- Ceph from University of California, Santa Cruz which utilized entire block devices. Available for Linux under the LGPL. Merged for Linux kernel 2.6.34.
- zFS from IBM (not to be confused with ZFS from Sun Microsystems or the zFS file system provided with IBM's z/OS operating system) focus on cooperative cache and distributed transactions and uses object storage devices. Under development and not freely available.
- Hadoop Distributed File System - free GoogleFS clone produced by Apache. http://hadoop.apache.org/
- HAMMER/ANVIL by Matt Dillon
- OASIS from ETRI. Very similar to the Lustre or Panasas. Available for Linux via. special technology transfer program provided by ETRI.
- GLORY-FS also from ETRI. Very similar to the Google File System or Hadoop, but it is fully POSIX compliant. It is specially optimized for large-scale web 2.0 content services. Version 2.5 is available for Linux via. special technology transfer program provided by ETRI. Windows version is under development.
- parallax [16]
- PNFS (Parallel NFS) - Clients available for Linux and OpenSolaris and back-ends from NetApp, Panasas, EMC Highroad and IBM GPFS [17]
- Coherent Remote File System (CRFS) - requires Btrfs
- Parallel Optimized Host Message Exchange Layered File System (POHMELFS) and Distributed STorage (DST). POSIX compliant, added to Linux kernel 2.6.30
- Sector [4] from National Center for Data Mining. Sector is a high performance, scalable, and secure distributed file system. Available under Apache License 2.0
- StarFS from CDNetworks. The StarFS is a global storage platform which supports virtualization of distributed file system and event-driven file synchronization with remote StarFS clusters.
- Unilium [5] provides a decentralized, versioning file system stored in content addressable storage, whose data may be hosted across heterogeneous data storage nodes.
Peer-to-peer file systems
- CFS is a read-only file system based on the Chord DHT
- Cleversafe uses Cauchy Reed-Solomon Information Dispersal Algorithms (IDAs) to separate data into unrecognizable slices and distribute them, via secure Internet connections, to multiple storage locations.
- Infinit is a peer-to-peer file system, coded in C++, allowing users to store, access and share their files in a safe and collaborative way from any Internet-connected device.
- Ivy [18] is a multi-user read/write peer-to-peer file system. Ivy has no centralized or dedicated components, and it provides useful integrity properties without requiring users to fully trust either the underlying peer-to-peer storage system or the other users of the file system.
- Pastis file system is a French peer-to-peer file system developed in Java
- ColonyFS emphasises anonymity, security and dependability, is written in Java and C#, and is released under the GPL
Special purpose file systems
- archfs (archive)
- aufs an enhanced version of UnionFS stackable unification file system
- AXFS (small footprint compressed read-only, with XIP)
- Barracuda WebDAV plug-in. Secure Network File Server for embedded devices.
- Boot File System was used on UnixWare to store files necessary to its boot process.
- Cascade File System – provides file system access to Subversion and Perforce repositories and caches their contents locally
- cdfs (reading and writing of CDs)
- Compact Disc File System (reading and writing of CDs; experimental)
- cfs (caching)
- cvsfs (presents the CVS contents as mountable file system).
- Dokan LGPL FUSE for Windows analog
- compFUSEd (overlay transparent read-write compression, FUSE based)
- FuseCompress (overlay transparent read-write compression, FUSE based)
- Cramfs (small footprint compressed read-only)
- Cromfs is a user-space (FUSE based) read-only filesystem using an efficient LZMA compression algorithm.
- Davfs2 (WebDAV)-
- Freenet – Decentralized, censorship-resistant
- FTPFS/CurlFtpFS (ftp access)
- GmailFS (Google Mail File System)
- lnfs (long names)
- mhddfs - Join several filesystems together to form a single larger one
- mini fo (The mini fanout overlay file system) – Redirects modifying operations to a writeable location called "storage directory", and leaving the original data in the "base directory" untouched. When reading, the file system merges the modified and original data so that only the newest versions will appear. Most prominently used in OpenWrt[19]
- MVFS – MultiVersion File System, proprietary, used by Rational ClearCase.
- MTFS – stackable file system, reliability improvement mechanism for Lustre and other file systems based on replication.
- nntpfs (netnews)
- ParFiSys (Experimental parallel file system for massively parallel processing)
- pramfs - Protected and Persistent RAM Filesystem
- RAIF Redundant Array of Independent Filesystems - stackable RAID-like file system
- romfs
- SODA: a Lease-based Consistent Distributed File System - (early 1990s)
- SquashFS (compressed read-only)
- SysmanFS (based on FUSE, a virtual file system for cluster system management)
- tmpfs in-memory temporary file system (on Linux platforms).
- UMSDOS - FAT file system extended to store permissions and metadata, used for Linux
- UnionFS - stackable unification file system, which can appear to merge the contents of several directories (branches), while keeping their physical content separate
- Venti - Plan 9 de-duplicated storage used by Fossil.
- wikifs (Plan 9) (wiki wiki)
- WDK.VFS - SiteAdmin CMS Virtual File System introduced by Evgenios Skitsanos
- Datalight Reliance - transactional file system for 32-bit embedded systems from Datalight, Inc.
- ERTFS ProPlus64 - it comes with integrated Failsafe operation, it contains a default journaling mode.
- WBFS - Wii Backup FileSystem
- whefs - WanderingHorse.net Embedded Filesystem is an open source C library implementing an embedded/embeddable filesystem.
Pseudo- and virtual file systems
- devfs – Virtual file system in Unix-like operating systems for managing devices on-the-fly
- procfs – Pseudo-file system, used to access kernel information about processes
- specfs – Special File System for device files
- sysfs – Virtual file system in Unix-like operating systems holding information about buses, devices, firmware, filesystems, etc.
- WinFS – Windows Future Storage, was planned as the successor to NTFS for Windows Vista.
Encrypted file systems
- eCryptfs - a stacked cryptographic file system in the Linux kernel since 2.6.19
- Secure Shell File System (SSHFS) - locally mount a remote directory on a server using only a secure shell login.
- EncFS, GPL Encrypted file system in user-space
- Rubberhose filesystem
- PhoneBookFS
- Solid File System - (SolFS) cross-platform single-file virtual file system with encryption and compression
- EFS – Encrypted file system for Microsoft Windows systems and AIX. An extension of NTFS
- FSFS - Fast Secure File System Project Home page
- ZFS Encryption Support Project Home page
Files system interfaces
These are not really file systems; they allow access to file systems from an operating system standpoint.
Red Hat Enterprise Linux uses the Filesystem Hierarchy Standard (FHS) file system structure, which defines the names, locations, and permissions for many file types and directories.
The FHS document is the authoritative reference to any FHS-compliant file system, but the standard leaves many areas undefined or extensible. This section is an overview of the standard and a description of the parts of the file system not covered by the standard.
Compliance with the standard means many things, but the two most important are compatibility with other compliant systems and the ability to mount a /usr/ partition as read-only. This second point is important because the directory contains common executables and should not be changed by users. Also, since the/usr/ directory is mounted as read-only, it can be mounted from the CD-ROM or from another machine via a read-only NFS mount.
The complete standard is available online at http://www.pathname.com/fhs/.
The X11/ and skel/ directories are subdirectories of the /etc/ directory:
The /etc/X11/ directory is for X Window System configuration files such as XF86Config. The/etc/skel/ directory is for "skeleton" user files, which are used to populate a home directory when a user is first created.
A package placing files in the /opt/ directory creates a directory bearing the same name as the package. This directory, in turn, holds files that otherwise would be scattered throughout the file system, giving the system administrator an easy way to determine the role of each file within a particular package.
For example, if sample is the name of a particular software package located within the /opt/ directory, then all of its files are placed in directories inside the /opt/sample/ directory, such as /opt/sample/bin/ for binaries and /opt/sample/man/ for manual pages.
Large packages that encompass many different sub-packages, each of which accomplish a particular task, are also located in the /opt/ directory, giving that large package a way to organize itself. In this way, our sample package may have different tools that each go in their own sub-directories, such as /opt/sample/tool1/ and /opt/sample/tool2/, each of which can have their own bin/, man/, and other similar directories.
Due to the great variety of data available within /proc/ and the many ways this directory can be used to communicate with the kernel, an entire chapter has been devoted to the subject. For more information, please refer to Chapter 5 The proc File System.
At a minimum, the following programs should be in /sbin/:
Under the /usr/ directory, the bin/ directory contains executables, dict/ contains non-FHS compliant documentation pages, etc/ contains system-wide configuration files, games is for games, include/ contains C header files, kerberos/ contains binaries and other Kerberos-related files, and lib/ contains object files and libraries that are not designed to be directly utilized by users or shell scripts. The libexec/ directory contains small helper programs called by other programs, sbin/ is for system administration binaries (those that do not belong in the /sbin/ directory), share/ contains files that are not architecture-specific, src/ is for source code, and X11R6/ is for the X Window System (XFree86 on Red Hat Enterprise Linux).
The /usr/local/ directory is similar in structure to the /usr/ directory. It has the following subdirectories, which are similar in purpose to those in the /usr/ directory:
In Red Hat Enterprise Linux, the intended use for the /usr/local/ directory is slightly different from that specified by the FHS. The FHS says that /usr/local/ should be where software that is to remain safe from system software upgrades is stored. Since software upgrades can be performed safely with Red Hat Package Manager (RPM), it is not necessary to protect files by putting them in /usr/local/. Instead, the /usr/local/ directory is used for software that is local to the machine.
For instance, if the /usr/ directory is mounted as a read-only NFS share from a remote host, it is still possible to install a package or program under the /usr/local/ directory.
Below are some of the directories found within the /var/ directory:
The FHS document is the authoritative reference to any FHS-compliant file system, but the standard leaves many areas undefined or extensible. This section is an overview of the standard and a description of the parts of the file system not covered by the standard.
Compliance with the standard means many things, but the two most important are compatibility with other compliant systems and the ability to mount a /usr/ partition as read-only. This second point is important because the directory contains common executables and should not be changed by users. Also, since the/usr/ directory is mounted as read-only, it can be mounted from the CD-ROM or from another machine via a read-only NFS mount.
3.2.1. FHS Organization
The directories and files noted here are a small subset of those specified by the FHS document. Refer to the latest FHS document for the most complete information.The complete standard is available online at http://www.pathname.com/fhs/.
3.2.1.1. The /boot/ Directory
The /boot/ directory contains static files required to boot the system, such as the Linux kernel. These files are essential for the system to boot properly.Do not remove the /boot/ directory. Doing so will render the system unbootable. |
3.2.1.2. The /dev/ Directory
The /dev/ directory contains file system entries which represent devices that are attached to the system. These files are essential for the system to function properly.3.2.1.3. The /etc/ Directory
The /etc/ directory is reserved for configuration files that are local to the machine. No binaries are to be put in /etc/. Any binaries that were once located in /etc/ should be placed into /sbin/ or /bin/.The X11/ and skel/ directories are subdirectories of the /etc/ directory:
/etc |- X11/ |- skel/ |
3.2.1.4. The /lib/ Directory
The /lib/ directory should contain only those libraries needed to execute the binaries in /bin/ and /sbin/. These shared library images are particularly important for booting the system and executing commands within the root file system.3.2.1.5. The /mnt/ Directory
The /mnt/ directory is for temporarily mounted file systems, such as CD-ROMs and 3.5 diskettes.3.2.1.6. The /opt/ Directory
The /opt/ directory provides storage for large, static application software packages.A package placing files in the /opt/ directory creates a directory bearing the same name as the package. This directory, in turn, holds files that otherwise would be scattered throughout the file system, giving the system administrator an easy way to determine the role of each file within a particular package.
For example, if sample is the name of a particular software package located within the /opt/ directory, then all of its files are placed in directories inside the /opt/sample/ directory, such as /opt/sample/bin/ for binaries and /opt/sample/man/ for manual pages.
Large packages that encompass many different sub-packages, each of which accomplish a particular task, are also located in the /opt/ directory, giving that large package a way to organize itself. In this way, our sample package may have different tools that each go in their own sub-directories, such as /opt/sample/tool1/ and /opt/sample/tool2/, each of which can have their own bin/, man/, and other similar directories.
3.2.1.7. The /proc/ Directory
The /proc/ directory contains special files that either extract information from or send information to the kernel.Due to the great variety of data available within /proc/ and the many ways this directory can be used to communicate with the kernel, an entire chapter has been devoted to the subject. For more information, please refer to Chapter 5 The proc File System.
3.2.1.8. The /sbin/ Directory
The /sbin/ directory stores executables used by the root user. The executables in /sbin/ are only used at boot time and perform system recovery operations. Of this directory, the FHS says:/sbin contains binaries essential for booting, restoring, recovering, and/or repairing the system in addition to the binaries in /bin. Programs executed after /usr/ is known to be mounted (when there are no problems) are generally placed into /usr/sbin. Locally-installed system administration programs should be placed into /usr/local/sbin.
At a minimum, the following programs should be in /sbin/:
arp, clock, halt, init, fsck.*, grub ifconfig, lilo, mingetty, mkfs.*, mkswap, reboot, route, shutdown, swapoff, swapon |
3.2.1.9. The /usr/ Directory
The /usr/ directory is for files that can be shared across multiple machines. The /usr/ directory is often on its own partition and is mounted read-only. At minimum, the following directories should be subdirectories of /usr/:/usr |- bin/ |- dict/ |- doc/ |- etc/ |- games/ |- include/ |- kerberos/ |- lib/ |- libexec/ |- local/ |- sbin/ |- share/ |- src/ |- tmp -> ../var/tmp/ |- X11R6/ |
3.2.1.10. The /usr/local/ Directory
The FHS says:The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is updated. It may be used for programs and data that are shareable among a group of hosts, but not found in/usr.
The /usr/local/ directory is similar in structure to the /usr/ directory. It has the following subdirectories, which are similar in purpose to those in the /usr/ directory:
/usr/local |- bin/ |- doc/ |- etc/ |- games/ |- include/ |- lib/ |- libexec/ |- sbin/ |- share/ |- src/ |
For instance, if the /usr/ directory is mounted as a read-only NFS share from a remote host, it is still possible to install a package or program under the /usr/local/ directory.
3.2.1.11. The /var/ Directory
Since the FHS requires Linux to mount /usr/ as read-only, any programs that write log files or needspool/ or lock/ directories should write them to the /var/ directory. The FHS states /var/ is for:...variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files.
Below are some of the directories found within the /var/ directory:
/var |- account/ |- arpwatch/ |- cache/ |- crash/ |- db/ |- empty/ |- ftp/ |- gdm/ |- kerberos/ |- lib/ |- local/ |- lock/ |- log/ |- mail -> spool/mail/ |- mailman/ |- named/ |- nis/ |- opt/ |- preserve/ |- run/ +- spool/ |- at/ |- clientmqueue/ |- cron/ |- cups/ |- lpd/ |- mail/ |- mqueue/ |- news/ |- postfix/ |- repackage/ |- rwho/ |- samba/ |- squid/ |- squirrelmail/ |- up2date/ |- uucppublic/ |- vbox/ |- tmp/ |- tux/ |- www/ |- yp/
|
Very good to read the post
ReplyDeleteSQL DBA training in chennai
Amazing article. Your blog helped me to improve myself in many ways thanks for sharing this kind of wonderful informative blogs in live.
ReplyDeletejavascript training in chennai | javascript training institute in chennai | javascript course in chennai | javascript certification in chennai