Virtual file system

The purpose of a VFS is to allow client applications to access different types of concrete file systems in a uniform way.

A VFS can, for example, be used to access local and network storage devices transparently without the client application noticing the difference.

Therefore, it is easy to add support for new file system types to the kernel simply by fulfilling the contract.

John Heidemann developed a stacking VFS under SunOS 4.0 for the experimental Ficus file system.

Heidemann adapted this work for use in 4.4BSD as a part of his thesis research; descendants of this code underpin the file system implementations in modern BSD derivatives including macOS.

In Microsoft Windows, virtual filesystems can also be implemented through userland Shell namespace extensions; however, they do not support the lowest-level file system access application programming interfaces in Windows, so not all applications will be able to access file systems that are implemented as namespace extensions.

This makes it easy to treat an OS installation like any other piece of software—transferring it with removable media or over the network.

User Application Operating system Hardware
The position of the VFS layer within various parts of the Linux kernel 's storage stack. [ 1 ]