Existe um componente no kernel (chamado de sistema de arquivos virtuais , ou VFS abreviado) que fornece um arquivo genérico interface para todos os sistemas de arquivos. Ele entende coisas como tipos de arquivo (arquivos regulares, diretórios, links simbólicos,…), metadados (horas, permissões,…) e conteúdo do arquivo.
Cada processo do Linux vive em um namespace que especifica onde os sistemas de arquivos são montados. Muitas vezes, todos os processos vivem no mesmo namespace; Os namespaces são principalmente destinados a suportar virtualização. Um namespace é essencialmente uma coleção de caminhos, com uma referência interna do sistema de arquivos associada a cada caminho. Montar e desmontar consiste em mudar esse namespace.
Quando o processo acessa um arquivo, o componente VFS analisa o caminho com base no espaço de nomes do processo e no diretório atual e determina sob qual ponto de montagem o arquivo está localizado. O VFS envia o comando relacionado ao arquivo para o driver de sistema de arquivos apropriado com base na referência interna do sistema de arquivos associada ao ponto de montagem.
O trabalho do driver do sistema de arquivos é traduzir o comando para armazenamento ou recuperação de dados. Cada tipo de sistema de arquivos. A maioria dos drivers do sistema de arquivos não interage diretamente com o hardware, mas apenas com outros drivers. Um driver para um sistema de arquivos em disco (ext4, btrfs, vfat,…) traduz o comando em operações de armazenamento em bloco (leem e escrevem setores de uma partição ou outro dispositivo de bloco). Um driver para um sistema de arquivos com suporte de rede (nfs, cifs,…) converte o comando em comunicação através de um canal de rede. Um driver para um sistema de arquivos interno do kernel (proc, sysfs,…) funciona sozinho. O driver do sistema de arquivos FUSE passa o comando para um processo userland.