Next: System V
VFS
It is the job of the Virtual Filesystem Switch (VFS) to make it possible for Linux to be able to mount and access all of the various filesystem types. The main task of the VFS is effectively to add a layer of indirection into the Linux filestore to switch filesystem calls to the appropriate routines in the code for the correct filesystem type.
There are many filesystem types currently supported by Linux via the VFS, these include:
- minix
- This is the earliest filesystem type supported by Linux; indeed, originally, it was the only supported filesystem type. Its two main disadvantages are that it only supports disk partitions up to 64Mb and it only allows file names up to 14 characters long.
- ext
- The extended filesystem was soon added to Linux and it overcame the problems with the minix filesystem by offering disk partitions up to 2Gb and file names up to 255 characters in length. However, it had its own problems in terms of facilities and performance and was soon superseded.
- xiafs
- This was one of two main attempts to replace the ext filesystem and was based largely on the minix filesystem but with extensions to overcome its problems. However, xiafs soon lost its popularity in favor of another filesystem type with greatly improved performance and facilities.
- ext2
- The second extended filesystem is now almost the universally accepted standard filesystem for Linux and it is also being ported to other operating systems. The system will allow disk partitions up to a staggering 4Tb in size
with file names up to 255 characters.
- System V
- The System V filesystem is the filesystem type supported by early UNIX systems and it is now also available under Linux. This is only for compatibility with existing System V systems and would not normally be used seriously unless the compatibility point was paramount. It suffers the same kinds of limitations as the minix filesystem.
- NFS
- The Network File System (NFS) originally developed by SUN, allows filesystems on one machine to be mounted over a directory on another machine, with the connection being made over a network. Apart from a small speed penalty, the network link is transparent and allows disk partitions and files to be shared all over a network.
- ISO 9660
- This is the filesystem associated with CD-ROM disks and has also been implemented for Linux. A CD can hold up to about 650 Mb of data, and many very useful Linux related CDs are available at this time. The standard ISO filesystem has a file name format like DOS though there are extensions to the standard which allow the more normal (for UNIX systems) long file names.
- /proc
- This is a special filesystem type built into the Linux kernel to allow access to the various parts of the system and its processes.
- msdos
- Standard DOS disks and partitions can be mounted and accessed under Linux. The system tries to make these filesystems appear as UNIX like as possible, though they are still subject to DOS limitations for things like file name length and format.
- UMSDOS
- This is a filesystem type used mainly to allow you to try out Linux on your DOS box without having to repartition your hard disks. Effectively, it allows you to put ordinary Linux files into a DOS partition and use them as though they were in an ordinary Linux filesystem. This is achieved by using index files to provide a transparent lookup arrangement between the standard Linux file names and the more limited DOS file names.
- vfat
- This is an extended form of the msdos filesystem and is used mainly by the Windows-95/NT operating systems. It allows Linux to read/write tyhe Windows long file names.
In order to understand some of the problems and choices associated with file system design, we will look briefly at a small selection of the filesystem types supported by Linux to see some of the evolution that has taken place in this area.
Next: System V