Назад в библиотеку

Источник: Тенденции развития науки и образования: научный журнал — 2024. — Санкт-Петербург: СПбГУ, 2024.— С. 147–151.

Толокольников В.В.1, Вьюнов Д.А.1, Аленин А.М.2, Прокофьева И.А.2
1Пензенский колледж информационных и промышленных технологий
2Пензенский государственный технологический университет
(Россия, Пенза)
doi: 10.18411/trnio-11-2024-719

Типы файловых систем в операционной системе «GNU/Linux»

Аннотация
В статье рассматривается различные типы файловых систем в операционной системе «GNU/Linux». Производится сравнительный анализ нежурналируемых и журналируемых файловых систем. Обозревается принцип работы операционных систем, при использовании различных файловый систем.
Ключевые слова:
директории, операционная система GNU/Linux, файловая система, связный список, иерархия, нежурналируемые файловые системы, журналируемые файловые системы.
Abstract
The article discusses various types of file systems in the GNU/Linux operating system. A comparative analysis of non-journaled and journaled file systems is performed. The principle of operation of operating systems when using various file systems is reviewed.
Keywords:
directories, GNU/Linux operating system, file system, linked list, hierarchy, non-journaling file systems, journaling file systems.

Введение

В любом домашнем компьютере есть компоненты, без которых запуск операционной системы невозможен. Внутренние накопители -- одни из таких. Они бывают разными (HDD, SSD, NVMe SSD, SSHDD и т.п.) и нужны для того, чтобы устанавливать на них операционные системы и хранить большие объемы двоичных данных в их долговременной памяти. При взаимодействии с накопителями мы обращаемся к файловым системам, которые создаются путем форматирования, и они следят за целостностью информации, почти всегда позволяют восстанавливать её в случае сбоев, определяет способ хранения файлов на накопителе, а также манипулировать ими: создавать и удалять, сортировать, объединять в каталоги («Папки», «Директории»), переименовывать, выполнять команду TRIM и так далее. ФС поддерживают очень много функций по взаимодействию с накопителями и все что описано выше лишь малая часть их функций.

Статья посвящена типам файловых систем и их структурам в семействе UNIX-подобных операционных систем под названием «GNU/Linux». Дистрибутивы данного семейства поддерживают немалое количество файловых систем (ФС) и их разнообразных переосмыслений в зависимости от нужд пользователя (например, ext3cow и next3 содержат в своей основе исходный код ext3). Пользователь может сам выбрать какая ФС ему подходит во время установки дистрибутива. Для начала стоит изучить системную утилиту «mount», далее узнать, что такое точки монтирования, разобраться в чем заключаются отличия файловых систем нового поколения от обычных и затронуть несколько прочих поддерживаемых возможностей, а затем перейти к их устройству наиболее распространенных в Linux ФС непосредственно.

Утилита mount и точки монтирования

mount - системный инструмент, взаимодействие с которым осуществляется либо через командную строку (терминал), либо через различные программы для управления ФС с графическим интерфейсом. Используется как на уровне ОС, так и на уровне обычного пользователя, чтобы монтировать файловые системы с различными опциями, влияющими на их функции.

Рисунок 1. Список доступных опций и ключей утилиты mount.

Подробнее изучить работу «mount» можно введя команду «man mount». Выведется текст со всей справочной информацией.

Существует такое понятие как точка монтирования - это директория в файловой системе, к которой был привязан физический носитель информации, к которому можно получить доступ через данную директорию. Корневой раздел (root) является главной точкой монтирования, которая дает начало всем каталогам системы и возможность создания других точек монтирования.

Пользователь может смонтировать файловую систему в точку монтирования с определенными параметрами, которые можно объявить с помощью программы mount с ключом -o, либо вписать в специально предназначенный для этого файл /etc/fstab, чтобы накопитель монтировался с ними на этапе загрузки ОС. С помощью параметров можно настроить поведение файловой системы, например: запретить выполнение исполняемых файлов на разделе (noexec), включить режим только для чтения (ro), чтения и записи (rw), запретить пользователю без прав администратора монтировать раздел и вносить изменения на диск (nouser), или, наоборот, разрешить (user).

Структуры данных и методы хранения информации

Файловые системы создаются расчетом на выполнение тех или иных задач, под которые реализуются методы хранения данных и дополнительные функции. Нам предстоит рассмотреть несколько определений и функций, затрагивающих напрямую или косвенно устройство файловых систем.

Для определения метода хранения информации на файловых системах прибегают к структурам данных и способам размещения файлов:

Связный список - структура данных, состоящая из узлов информации, которые помимо нее содержат ссылки на последующие узлы (применяется в ext4).

Рисунок 2. Изображение линейного связного списка.

B-tree (B-дерево) - структура данных, располагающая узлы информации в виде древа по которому осуществляется поиск элемента (применяется в ext4, btrfs).

Рисунок 3. Изображение B-дерева.

B+-tree(B+-дерево) - структура данных, основанная на B-tree, расширяющая поиск информации (применяется в JFS, XFS).

Хеш-таблица - структура данных, являющаяся массивом с парами ключей и значений. Способна добавлять пары, удалять и искать их (взята за основу LSM-дерева в f2fs).

Битовая карта - Способ размещения информации списком последовательно расположенных разрядов двоичных данных. (применяется в ext4, JFS)

Экстент (Extent) - способ размещения информации. Это область памяти, блоки данных в которой расположены непрерывно. На жестком диске файл имеет свойство дробиться на фрагменты, которые хранятся в разных областях файловой системы, из-за чего увеличивается время доступа нему. Экстенты помогают снизить влияние фрагментации, так как части файла внутри него расположены подряд, применяется в ext4, btrfs, JFS, XFS, f2fs.

Типы файловых систем: журналируемые и нежурналируемые

Современные ФС в Linux бывают двух типов: журналируемые и нежурналируемые. В журналируемых существует место в адресном пространстве накопителя, зарезервированное под журнал изменений, в который вводятся данные о каких-либо действиях над файлами ещё до того, как эти действия осуществлятся. Если попытка записи файла на диск была прервана, например, неудачной перезагрузкой ОС, есть возможность воспользоваться информацией об этом файле из журнала изменений и продолжить запись, это происходит автоматически на этапе монтирования накопителей при загрузке системы. В нежурналируемых ФС журнала нет, поэтому риск потери данных больше, зато скорость работы с файлами выше (хоть и незначительно в современных реалиях) из-за отсутствия необходимости фиксировать изменения над ними.

Дедупликация данных - функция файловой системы, благодаря которой устраняются лишние, «неуникальные» копии хранимой информации, поддерживается несколько уровней детализации. Позволяет оптимизировать место на накопителе.

CoW («copy-on-write», «копирование при записи») - механизм оптимизации взаимодействия с памятью, экономящий пространство накопителя путем использования адресов на данные вместо создания новых их копий.

Сравнительный анализ ext4 и BtrFS

Из большого количества файловых систем, которые поддерживает Linux, рождающихся практически каждый день, в силу того что любой желающий может создать свою собственную, предпочтительнее всего для обзора выбрать две наиболее используемых ФС, одна из которых является обычной файловой системой, а вторая - нового поколения ext4 и BtrFS.

ext4 (fourth extended file system) - представляет собой ФС журналируемого типа. Размещает файлы списком последовательных разрядов двоичных данных и экстентами, совмещает структуры данных связного списка и B-дерева. Максимальный размер файла - 16 тебибайт, а размер раздела 1 эксбибайт. Её тестовые были выпущены еще в 2006 году. Стала заменой ext3, с которой у нее присутствует обратная совместимость, являясь при этом улучшенной и доработанной ее версией. Является самой распространенной файловой системой в Linux на данный момент на которую чаще всего устанавливается корневой раздел. Создается с помощью программы mkfs (mkfs.ext4).

Рисунок 4. Список доступных опций mkfs.ext4.

BtrFS (B-tree FS) - ФС нового поколения, которая была добавлена в ядро Linux в 2018 году. Работает по принципу CoW c жуналированием при записи. Использует экстенты и B-дерево. Максимальный размер как файла так и раздела 16 Эксбибайт. Одни из ключевых элементов данной файловой системы - создание подтомов (subvolumes) и снимков состояния (snapshots). Подтом (subvolume) - Один из верхних слоев представления данных файловой системы BtrFS, позволяющий удобно взаимодействовать с адресным пространством низших слоев, поддерживает снимки состояния. Снимок состояния (snapshot) - подтом, который по сути является копией subvolumes с которого был создан. Расчет в создании BtrFS делался на повышенную отказоустойчивость, увеличение шанса восстановить данные и простоту взаимодействия как с разделами, так и с функциями восстановления. Создается с помощью mkfs (mkfs.btrfs).

Рисунок 5. Список доступных опций mkfs.btrfs.

Заключение

Пользователь, а правильнее будет сказать «администратор», ведь когда речь заходит о Linux серверные конфигурации тоже берутся во внимание, имеет выбор из множества файловых систем, предоставляемых дистрибутивом.

Семейство файловых систем «ext» зарекомендовало себя как в использовании на домашних конфигурациях, так и на серверных, потому что дорабатывалось очень много лет из версии в версию. Если отсутствует необходимость в расширенном функционале современных файловых систем стоит остановиться на ext4. Если же требуются такие возможности как создание и управление подтомами, поддержка собственных реализаций сжатия ФС, тот же механизм дедупликации и так далее, то можно рассмотреть BtrFS, но стоит учитывать, что она совсем недавно вышла из экспериментального этапа разработки, поэтому не исключено возможное появление проблем во время использования. Тем не менее, она активно разрабатывается, поэтому вполне перспективна. Помимо этих двух в Linux есть еще целое множество файловых систем, все они имеют разный функционал и хороши в выполнении задач, под которые проектировались и продолжают дорабатываться.

Список литературы

  1. Операционная система GNU [Электронный ресурс] URL: https://www.gnu.org/home.html (Дата обращения: 01.03.24)
  2. Хабр [Электронный ресурс] URL: https://habr.com/ru/articles/531872/ (Дата обращения: 01.03.24)
  3. Basis.gnulinux.pro [Электронный ресурс] URL https://basis.gnulinux.pro/ru/latest/basis/01/01._Операционные_системы_и_GNU-Linux.html (Дата обращения: 01.03.24)