The Virtual Filesystem (also known as Virtual Filesystem Switch or VFS) is a kernel software layer that handles all system calls related to a standard Unix filesystem. Its main strength is providing a common interface to several kinds of filesystems.
For instance, let us assume that a user issues the shell command:
$ cp /floppy/TEST /tmp/test
where /floppy is the mount point of an MS-DOS diskette and /tmp is a normal Ext2 (Second Extended Filesystem) directory. As shown in Figure 12-1 (a), the VFS is an abstraction layer between the application program and the filesystem implementations. Therefore, the cp program is not required to know the filesystem types of /floppy/TEST and /tmp/test. Instead, cp interacts with the VFS by means of generic system calls well known to anyone who has done Unix programming (see also Section 1.5.6 in Chapter 1); the code executed by cp is shown in Figure 12-1 (b).
Filesystems supported by the VFS may be grouped into three main classes:
Manage the memory space available in a local disk partition. The official Linux disk-based filesystem is Ext2. Other well-known disk-based filesystems supported by the VFS are:
Filesystems for Unix variants like System V and BSD
Microsoft filesystems like MS-DOS, VFAT (Windows 98), and NTFS (Windows NT)
ISO9660 CD-ROM ...