Найти в Дзене

Ядро Линукс


Работа с файловыми системами

Виртуальная файловая система (VFS)

Зачем нужна:

- В Linux существует множество файловых систем (ext4, XFS, Btrfs, NTFS, FAT и т.д.).
- Чтобы ядро не писало отдельный код под каждую, придумали виртуальную файловую систему (VFS) — единый «слой-абстракцию», через который всё работает одинаково.

Как устроена:

- VFS — это фундаментальный слой ядра, который представляет собой набор интерфейсов в виде структур данных, содержащих указатели на функции.

Основными являются:

- struct super_operations (операции с суперблоком)
- struct inode_operations (операции с inode)
- struct dentry_operations (операции с dentry)
- struct file_operations (операции с файлом)
- Эти интерфейсы описывают базовые операции: открыть файл, прочитать, записать, создать каталог, удалить и т.д.

Конкретная файловая система (например, ext4) предоставляет экземпляры структур, где указатели ведут на её функции (ext4_read(), ext4_write(), ext4_open())

Как это работает:

- Если новая файловая система хочет поддерживаться в Linux, она должна реализовать все эти функции у себя.
- То есть драйвер файловой системы — это реализация интерфейса, который определён в VFS.

Оптимизация работы:

- В ядре есть кэш (page cache, dentry cache и inode cache).
- Благодаря кэшу не всегда нужно лезть в «железо» (диск) при повторных операциях:
- часто используемые данные читаются из памяти,
- это сильно ускоряет работу с файлами.

dentry cache и inode cache — кэшируют структуру файловой системы (пути, метаданные).
page cache — кэширует содержимое самих файлов (те самые данные, которые вы читаете и записываете).

Итого:

- VFS = «единый интерфейс» для всех файловых систем. Он обеспечивает единообразие системных вызовов. Неважно, работает ли программа с файлом на ext4, XFS или FAT — она всегда использует одни и те же open(), read(), write(), close(). VFS перенаправляет эти вызовы нужной реализации.
- Конкретная файловая система = реализация этого интерфейса.
- Кэш = ускоритель, чтобы не дёргать диск по мелочам.
Ядро Линукс  Работа с файловыми системами  Виртуальная файловая система (VFS)  Зачем нужна:  - В Linux существует множество файловых систем (ext4, XFS, Btrfs, NTFS, FAT и т.д.).
1 минута