Несмотря на то, что различные типы файловых систем существенно отличаются по внутренней архитектуре, современные версии UNIX обеспечивают одновременную работу с несколькими типами файловых систем. Среди них можно выделить локальные файловые системы различной архитектуры, удаленные и даже отличные от файловой системы UNIX, например DOS. Такое сосуществование обеспечивается путем разделения каждой файловой системы на зависимый и независимый от реализации уровни, последний из которых является общим и представляет для остальных подсистем ядра некоторую абстрактную файловую систему. Независимый уровень также называется виртуальной файловой системой. При этом дополнительные файловые системы различных типов могут быть встроены в ядро UNIX подобно тому, как это происходит с драйверами устройств.
Прежде чем может состояться работа с файлами, соответствующая файловая система должна быть встроена в соответствующее иерархическое дерево. Только после этого ядро сможет выполнять файловые операции.
Каждая подключенная файловая система представлена на независимом уровне в виде структуры vfs. Структуры vfs всех подключенных файловых систем организованны в виде односвязного списка. Первой записью списка всегда является корневая файловая система. Структура vfs содержит следующие поля:
« Vfs_next: следующая файловая система в списке монтирования;
« Vfs_op: операции файловой системы;
« Vfs_vnodecovered: (vnode) виртуальный индексный дескриптор, перекрываемый файловой системой. Структура данных vnode одинакова для всех файлов, независимо от типа реальной файловой системы, где фактически располагается файл.
« Vfs_flag: флаги;
« Vfs_bsize: размер блока файловой системы;
« Vfs_data: указатель на специфические данные, относящиеся к реальной файловой системе.
Поле vfs_data содержит указатель на данные реальной файловой системы. Например для s5fs, это поле указывает на операции файловой системы, которые называются виртуальными методами объекта vfs. Поля vfs_op заполняются указателями на соответствующие функции реальной файловой системы при её монтировании.
Для инициализации и монтирования реальной файловой системы UNIX хранит коммутатор файловых систем, адресующий процедурный интерфейс для каждого типа файловой системы, поддерживаемой ядром. UNIX System V для этого использует глобальную таблицу, каждый элемент которой соответствует определенному типу реальной файловой системы.
Монтирование файловой системы производится системным вызовом mount(2). В качестве аргументов передаются тип монтируемой файловой системы, имя каталога, к которому подключается файловая система (точка монтирования), флаги (например доступ к файловой системе только для чтения) и дополнительные данные, вид и содержимое которых зависит от реализации реальной файловой системы. После подключения файловая система может быть адресована по имени точки монтирования.