Ядро Linux: Виртуальная файловая система
Ядро Linux поддерживает виртуальную файловую систему (VFS), что позволяет ядру поддерживать несколько конкретных файловых систем. Подобная структура реализована, например, в операционной системе SunOS
Под системными вызовами ядра находится слой VFS, на котором расположены фактические файловые системы. Под файловыми системами находится блочный уровень, на котором находятся драйверы устройств. Уровень VFS — это уровень абстракции, который отделяет POSIX-совместимый интерфейс от реализаций, специфичных для файловой системы.
Виртуальная файловая система ядра linux
Ключевыми объектами в реализации VFS являются:
- инод («индекс индекса»)
- dentry («запись в каталоге»)
- файл _
- суперблок («основной блок»)
Superblock содержит высокоуровневые метаданные о файловой системе, несколько копий которых есть на диске для целей резервного копирования, и содержит информацию о монтировании. Dentry содержит один компонент каталога (часть пути к каталогу) в иерархической структуре, которая хранится только в памяти, а не на диске. Индексный дескриптор содержит метаданные об одном файле, за исключением его имени и фактического содержания: индексный дескриптор также может относиться к другим типам данных, таким как устройства или память.
VFS предоставляет функции для пользовательских приложений, а также внутренний интерфейс абстракции ядра для функций ядра.
С VFS ядро поддерживает блочные файловые системы ( Btrfs , ext2 / ext3 / ext4 , JFS , XFS , ISO 9660 , UDF ), сетевые ( NFS , coda , AFS , SMB , 9P ), составные системы (overlayfs, unionfs), используемые с RAM-диском (tmpfs, ramfs ) и предназначенные для целей изоляции (debugfs, sysfs). Особенно флэш-памятьпредназначен для использования с f2fs и ubifs . zonefs — это простая файловая система, поддерживающая зоны , которая не скрывает необходимость последовательной записи за интерфейсом POSIX и, таким образом, ближе к прямой блочной записи. Также поддерживаются файловые системы, используемые в кластерах , такие как GFS и OCFS2 . Ceph — это распределенная файловая система, поддерживающая POSIX-совместимое использование.
Linux расширяет исходный принцип Unix по использованию файловых дескрипторов («Все есть файл») также, среди прочего, на планирование событий, сетевой интерфейс и новые типы устройств, которых не существовало во время разработки Unix.