Senior
76
questionbank

Как устроена файловая система Ext4?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Ext4 — это журналируемая файловая система, использующая структуру на основе inode-ов и блоков.

Ключевые концепции:

  • Суперблок: Хранит метаданные о файловой системе (размер, количество блоков, inode-ов и т.д.). Находится в начале файловой системы и имеет резервные копии.
  • Группы блоков: Файловая система разбита на группы блоков для улучшения локальности данных и уменьшения фрагментации. Каждая группа имеет свой дескриптор.
  • Дескриптор группы блоков: Содержит информацию о конкретной группе: адрес таблицы inode-ов, bitmap блоков, bitmap inode-ов.
  • Bitmap блоков (Block Bitmap): Карта занятости блоков в группе.
  • Bitmap inode-ов (Inode Bitmap): Карта занятости inode-ов в группе.
  • Таблица inode-ов: Массив структур inode.
  • Инод (Inode): Структура, описывающая файл или директорию. Хранит метаданные: тип файла, права доступа, владелец, группа, размер, временные метки, указатели на блоки данных.
  • Блоки данных: Содержат собственно содержимое файлов. Размер блока настраивается при создании ФС (обычно 4KB).
  • Директория: Представляет собой файл, содержащий список записей. Каждая запись связывает имя файла или директории с его номером inode.

Указатели на блоки данных в inode:

  • Прямые указатели: Указывают непосредственно на блоки с данными. Обычно их несколько (e.g., 12), что позволяет быстро получить доступ к небольшим файлам.
  • Косвенные указатели: Указывают на блоки, содержащие указатели на блоки с данными. Бывают одинарными, двойными, тройными. Используются для больших файлов.
  • Extentы: Ext4 ввела extend-ы для улучшения производительности и работы с большими файлами. Extend представляет собой диапазон последовательных блоков, что уменьшает количество указателей в inode.

Журналирование: Ext4 имеет журнал, который записывает изменения перед их применением к основной файловой системе. Это позволяет быстро восстановить ФС после сбоя.

Особенности Ext4:

  • Поддержка очень больших файлов (до 16 TiB).
  • Поддержка очень больших файловых систем (до 1 EB).
  • Увеличение производительности за счет extend-ов.
  • Отложенное выделение блоков.
  • Контрольные суммы для целостности метаданных.
  • Быстрое fstrim/discard для SSD.