If you are a big fan of Linux.org, then you probably have read many of the filesystem articles by Jarret W. Buse and the virtual/pseudo filesystem articles by DevynCJohnson. It may seem that the filesystems can be classified into groups as you are about to see here. Many users are familiar with "real" filesystems (the filesystems you put files on). The three types of "real" filesystems computer users are most familiar with are disk, flash, and optical disc filesystems. Disk filesystems are filesystems put on hard-drives and memory cards. Such filesystems are designed for this type of hardware. Common examples include NTFS, ext3, HFS+, UFS, XFS, and many others. Flash drives commonly use disk filesystems like FAT32. However, there is a filesystem that is specifically designed for taking advantage of the physical design of flash drives. Such a filesystem is known as F2FS, but other flash filesystems exist. An optical disc filesystem is a filesystem for an optical disc like a CD, DVD, Blu-ray, or others. ISO-9660 and UDF are two popular filesystems that are used on optical discs. Filesystems for tape storage devices are available, but very seldomly used due to the great invention of digital storage devices. IBM had developed the Linear Tape File System (LTFS) for tape storage devices. IBM-DB2 is a database filesystem. A database filesystem is a filesystem that is in the form of a database. Such systems are not used too often. The Amino and Valor filesystems belong to a type of filesystems called "transactional" filesystems. Filesystems in this group make changes to the contained data all at once (or appear to do so). Pseudo-filesystems (also called virtual filesystems, special filesystems, or synthetic filesystems) are filesystems that are "not actually there". That means the filesystem is not formatted on the device it seems to be on. Also, such filesystems are not meant for storing regular files. For example, ProcFS (Process FileSystem) is commonly seen in /proc/ on many Unix and Unix-like systems. However, ProcFS is not formatted on the hard-drive, neither can the user store files here. Instead, the kernel keeps information of processes on the memory and makes a link under /proc/. Network filesystems (Network Attached Storage [NAS]) are remote filesystems that are accessed using network protocols. A popular filesystem in this category is NFS. A cluster filesystem is a filesystem mounted to multiple computers at once (usually as root). Since clusters are physically many computers acting as one, they need a special filesystem that allows multiple machines simultaneous access to the contained data. Cluster filesystems are also considered shared filesystems since the filesystem is shared. Global Filesystem2 (GFS2) is an example of a cluster filesystem supported by Linux. Distributed (global) filesystems are filesystems that are spread across many physical storage devices. This concept is essential to cloud computing. An example of a distributed filesystem is GlusterFS which is supported by Linux as well as some other operating systems. GlusterFS is not formatted to any of the storage units. Instead, the storage units use a disk filesystem and GlusterFS acts as an extra layer that makes the many devices appear as one. NOTE: You may have noticed that some filesystems belong to more than one category/type. For example, a distributed filesystem is a network filesystem and cluster filesystems and distributed filesystems are both shared-filesystems. Cluster and Distributed filesystems are not actual filesystems that can be formatted. Rather, they act as a layer above the "real" filesystems on the storage devices. An encrypted filesystem may be its own filesystem (like ZFS) or it may be a layer/extension for a pre-existing filesystem (like eCryptFS). A layered filesystem is a filesystem that resides on top of a pre-existing filesystem. More about this type of filesystem will be discussed below. A helper filesystem is actually a program that communicates with the filesystem and applications to provide additional features to the filesystem. The difference between a helper and layered filesystem is simple. A helper filesystem enhances a pre-existing filesystem while a layered filesystem will dominate the pre-existing filesystem. Applications see layered filesystem but not helper filesystems. For instance, a program will see GlusterFS and not the underlying filesystems, but a program will not be aware of helpers. Minimal filesystems are "primitive" filesystems that usually do not even use filenames. An example of a device using minimal filesystems includes audio cassette tapes. Flat filesystems lack directories. Since storage devices are very large, files would be very hard to sort and find, so such filesystems are no longer used. As readers may have noticed, filesystems can be classified into different types, and these types may overlap. A large variety of filesystems exist and they each have a specific purpose to serve.