Файловые системы

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

ОС поддерживает различные файловые системы (ФС) для обеспечения гибкости и оптимальной производительности при работе с дисками и разделами. По умолчанию используется журналируемая файловая система Ext4. Однако во время установки Системы администратору предоставляется возможность выбора других файловых систем (см. раздел Установка ОС на рабочую станцию), таких как Ext3, XFS, и BTRFS. Также поддерживается работа с дисками, отформатированными в NTFS (файловая система Windows).

Поддерживаемые файловые системы

Рассмотрим общие аспекты каждой из ФС:

  • Ext4 (Fourth Extended Filesystem) является основной и рекомендованной ФС для ОС. Она представляет собой усовершенствованную версию Ext3, предлагая улучшенную производительность и дополнительные функции, такие как журналирование, поддержка больших файлов и разделов, быстрое выделение места для файлов и защита от фрагментации. Даная ФС предпочтительна при работе в ОС поскольку является стабильным и широко поддерживаемым выбором для большинства пользователей.

Журналирование обеспечивает сохранность данных в случае сбоев. Все изменения в каталогах сначала записываются в журнал, и только после этого применяются к основным данным. Это гарантирует целостность файловой системы и минимизирует риск повреждения данных

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

Как и в других UNIX-подобных системах, в Ext4 доступ к каталогам управляется через систему прав доступа (rwx).

  • Ext3 (Third Extended Filesystem) является предшественником Ext4 и также поддерживается ОС РОСА ХРОМ. Основное преимущество — журналирование, но она менее производительна и обладает меньшими возможностями по сравнению с Ext4. Ext3 может использоваться для совместимости с более старыми системами или программами.
  • XFS — это высокопроизводительная файловая система, разработанная компанией Silicon Graphics. Она отличается хорошей масштабируемостью и эффективной работой с большими файлами и разделами. XFS также обладает функциями журналирования, быстрым выделением пространства для файлов и достаточно высокой производительностью при записи данных, но не поддерживает нативное создание снимков (snapshot), что ограничивает его функциональность в современных сценариях резервного копирования и восстановления данных.
  • BTRFS (B-Tree File System) — современная копируемая при записи (COW) файловая система, разработанная для повышения надежности данных и управления их объемом. Несмотря на то, что она поддерживает все аналогичные функции, как и Ext4, некоторых сценариях (особенно на серверах) производительность BTRFS может уступать Ext4, особенно при высокой нагрузке на запись или в случае большого количества мелких файлов, а также при создании множества снимков. Документация и поддержка BTRFS могут быть менее обширными и детализированными, чем у Ext4, что может вызывать затруднения при администрировании ОС.
  • NTFS (New Technology File System) — файловая система, разработанная Microsoft для ОС Windows. В ОС РОСА «ХРОМ» поддержка NTFS реализована через встроенные драйверы ядра, которые позволяют монтировать и работать с NTFS-разделами напрямую. NTFS часто используется для обмена данными между Linux-подобными ОС и ОС семейства Windows.

Организация каталогов в Системе

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

В Ext4 каталоги организованы как древовидная структура, где каждый каталог может содержать файлы и подкаталоги. Корневой каталог / является начальной точкой этой структуры. Внутри него находятся системные каталоги, такие как /bin, /etc, /home, /var и другие.

В Ext4 реализована схема HTree (сбалансированное дерево), которая позволяет увеличить скорость поиска и доступа к файлам в больших каталогах.

Пределы и ограничения на хранение данных в каталогах ФС:

  • Ext4 поддерживает каталоги размером до 2 ТБ, что существенно увеличивает их емкость по сравнению с Ext3.
  • В одном каталоге Ext4 может содержать до 1018 файлов, что практически не ограничивает количество файлов в каталоге.
  • Стандартная структура каталогов в ОС позволяет администраторам и пользователям эффективно управлять Системой и поддерживать её в рабочем состоянии.

Основные каталоги ОС, которые используются Системой по умолчанию:

  • / (Корневой каталог) - начальная точка всей ФС, все другие каталоги и файлы находятся внутри этого каталога;
  • /bin - содержит основные исполняемые файлы (команды), необходимые для работы Системы, которые могут использовать все пользователи (Например: bash, ls, cp);
  • /boot - содержит файлы, необходимые для загрузки системы, такие как ядро, загрузчик и начальный RAM диск;
  • /dev - содержит файловые интерфейсы к устройствам (драйверам). Здесь находятся файлы устройств, которые представляют периферийные устройства, такие как жесткие диски, терминалы и другие;
  • /etc - содержит конфигурационные файлы Системы и служб. Это место, где хранятся конфигурации практически всех программ и служб на Системе;
  • /home - содержит домашние каталоги пользователей. Каждый пользователь имеет свой собственный подкаталог, например /home/user;
  • /lib - содержит общие библиотеки, используемые системными программами, и модули ядра;
  • /media- место для автоматического монтирования съемных носителей, таких как CD-ROM, USB-диски и другие;
  • /mnt - каталог, используемый для временного монтирования файловых систем;
  • /opt - каталог для установки дополнительного ПО, которое не входит в стандартный набор программ ОС;
  • /proc - виртуальная файловая система, предоставляющая информацию о текущем состоянии Системы, включая информацию о процессах;
  • /root - домашний каталог пользователя root (суперпользователя);
  • /run - каталог для временных данных, которые нужны при запуске Системы, таких как PID-файлы;
  • /sbin - содержит системные программы, которые обычно используются только администратором Системы (root);
  • /srv - каталог, предназначенный для хранения данных, которые обслуживаются Системой, например веб-сервером или FTP-сервером;
  • /tmp - каталог для временных файлов. Эти файлы обычно удаляются при перезагрузке Системы;
  • /usr - содержит вторичные программы, библиотеки и документацию. Внутри него также находятся такие подкаталоги, как:
  • /usr/bin - дополнительные исполняемые файлы;
  • /usr/lib - дополнительные библиотеки;
  • /usr/share - общие файлы данных, такие как значки и документация;
  • /usr/local - место для установки программного обеспечения вручную, которое не будет затронуто при обновлении Системы;
  • /var - каталог, содержащий данные, которые изменяются во время работы Системы, такие как логи, файлы временного хранения, очереди задач и т.д.

В пользовательских каталогах наряду с персональными файлами также имеются и конфигурационные файлы, которые в целях безопасности срыты. Файлы и каталоги считаются скрытым, если их имена начинаются с точки (.). (например .config является скрытым).

Для того чтобы увидеть скрытые файлы в командной строке, можно использовать команду ls с параметром -a:

ls -a

Чтобы сделать файл или каталог скрытым, достаточно переименовать его, добавив в начало имени точку. Например, переименуем filename в .filename:

mv filename .filename

Монтирование

Прежде чем приступить к работе с ФС, её нужно смонтировать, что означает подключение к файловой структуре Системы. Этот процесс позволяет ОС правильно взаимодействовать с ФС, делая её доступной как обычный каталог, известный как точка монтирования.

Для успешного монтирования ФС, важно убедиться, что каталог, выбранный в качестве точки монтирования, существует в Системе. Если точка монтирования является не пустым каталогом, его содержимое будет недоступно до тех пор, пока файловая система не будет размонтирована. Поэтому рекомендуется использовать специально созданные каталоги для этой цели, которые обычно находятся в /mnt или /media.

Допустим, необходимо смонтировать ISO-образ в каталог /mnt. Этот каталог должен существовать заранее, иначе операция завершится неудачно. После успешного монтирования в каталоге появится содержимое ФС, в противном случае каталог останется пустым.

Чтобы определить, к какой ФС относится текущий каталог и объём свободного места на ней, используют команду:

df -h

В ОС для монтирования ФС используется команда mount. Общий синтаксис команды:

sudo mount устройство точка_монтирования

где:

  • устройство — это физический носитель данных, который необходимо подключить;
  • точка_монтирования — каталог, к которому будет привязана ФС.

Из соображений безопасности команда mount доступна для выполнения только с правами суперпользователя. Команда mount может включать дополнительные параметры, такие как:

  • -f - имитирует монтирование, выполняя все действия, кроме фактического монтирования файловой системы;
  • -v - предоставляет подробный отчёт о выполняемых действиях;
  • -w - монтирует файловую систему с доступом для чтения и записи;
  • -r - монтирует файловую систему только для чтения;
  • -n - монтирует без записи в файл /etc/mtab;
  • -t type - указывает тип монтируемой файловой системы;
  • -a - монтирует все файловые системы, указанные в /etc/fstab;
  • -o list_of_options - применяет список опций к файловой системе, где опции разделены запятыми, подробнее об этом см. в man mount.

Подробное описание опций команды mount доступно в руководстве man mount.

Если у команды не указаны опции, mount попытается определить их по файлу /etc/fstab.

Примеры команд монтирования:

  • Монтирование раздела жесткого диска:
sudo mount /dev/hdb3 /mnt
  • Монтирование всех ФС NFS, указанных в /etc/fstab:
sudo mount -vat nfs

Если возникли ошибки при монтировании, можно использовать команду:

sudo mount -vf устройство точка_монтирования

Эта команда выполнит все действия, кроме монтирования, и выдаст подробный отчет о каждом шаге.

Файл /etc/fstab — это конфигурационный файл, который определяет порядок монтирования файловых систем в ОС. Этот файл играет ключевую роль в автоматическом подключении устройств и разделов при загрузке Системы, а также упрощает управление монтированием для системных администраторов.

Файл /etc/fstab состоит из строк, каждая из которых описывает отдельную файловую систему или устройство. Рассмотрим типовую структуру файла fstab:

# <файловая система>   <точка монтирования>   <тип>   <параметры>   <dump>   <pass>
UUID=abcd1234-ef56-7890-abcd-1234567890ab  /          ext4    defaults        1 1
UUID=abcd1234-ef56-7890-abcd-1234567890ac  /home      ext4    defaults        1 2
UUID=abcd1234-ef56-7890-abcd-1234567890ad  /var       xfs     defaults        1 2
UUID=abcd1234-ef56-7890-abcd-1234567890ae  swap       swap    defaults        0 0
/dev/cdrom      /media/cdrom  auto    noauto,ro     0 0

Каждая строка включает следующие поля:

  • <файловая система> — идентификатор файловой системы, которая должна быть смонтирована. Обычно это UUID (уникальный идентификатор) раздела, но может быть также использован путь к блочному устройству (например, /dev/sda1).

В рассмотренном выше примере строка: UUID=abcd1234-ef56-7890-abcd-1234567890ab, /dev/cdrom.

  • <точка монирования> — каталог, в который будет подключена файловая система.

В рассмотренном выше примере: /, /home, /var, /media/cdrom.

  • <тип> — тип файловой системы, который будет использоваться при монтировании. Это может быть ext4, xfs, btrfs, swap для разделов подкачки, или auto для автоматического определения типа.

В рассмотренном выше примере: ext4, xfs, swap, auto.

  • <параметры> — монтировочные опции, которые определяют поведение файловой системы. Наиболее часто используются опции:
  • defaults — включает стандартный набор опций: rw, suid, dev, exec, auto, nouser, async.
  • noauto — файловая система не монтируется автоматически при загрузке.
  • ro — монтирование в режиме только для чтения.

В рассмотренном выше примере: defaults, noauto,ro.

  • — опция для утилиты dump, которая выполняет резервное копирование файловой системы. Если установлено в 1, резервное копирование включено, 0 — отключено.

В рассмотренном выше примере: 1, 0.

  • — определяет порядок проверки файловых систем при загрузке:
  • 0 — файловая система не будет проверяться.
  • 1 — корневая файловая система проверяется первой.
  • 2 — другие файловые системы проверяются после корневой.

В рассмотренном выше примере: 1, 2, 0.

Редактирование файла /etc/fstab требует прав суперпользователя. Изменения в этом файле немедленно не применяются, поэтому после редактирования необходимо либо вручную смонтировать файловые системы командой:

sudo mount -a

либо перезагрузить Систему для применения настроек.

Чтобы избежать ошибок при редактировании /etc/fstab, рекомендуется тщательно проверять правильность введенных данных, так как ошибки могут привести к тому, что Система не сможет загрузиться корректно.

Для получения полной информации о возможных опциях для файла /etc/fstab смотрите справочную страницу по команде man fstab.

Размонтирование

Для отключения файловой системы от ОС используется команда umount. Операция размонтирования может потребоваться для выполнения проверок и восстановления ФС с использованием команды fsck.

В случае проблем с сетью, удаленные ФС также могут быть отключены.

Команда umount имеет следующий формат:

- umount device : mountpoint
- umount -a
- umount -t fstype

Здесь device обозначает физическое устройство, которое нужно отключить, а mountpoint — каталог, к которому оно подключено (можно указать только device или mountpoint). Параметр -a отключает все подключенные ФС, а параметр -t fstype отключает ФС указанного типа.

Команда umount не сможет отключить ФС, если она в данный момент используется. Например, если ФС подключена к /mnt, и вы попытаетесь выполнить следующие команды:

cd /mnt
sudo umount /mnt

Вы получите сообщение об ошибке, так как Система будет считать, что ФС занята. Чтобы успешно отключить /mnt, необходимо сначала выйти из этого каталога, перейдя в другой каталог.

Для принудительного отключения устройства, даже если оно используется, можно применить опцию -f:

sudo umount -f /cdrom

Для безопасного извлечения сменных носителей можно использовать команду eject.

Более подробное описание команды доступно в справочном руководстве man umount.

Файловая система GFS2

Файловая система GFS2 (Global File System 2) является кластерной распределённой файловой системой, которая обеспечивает одновременный доступ к одному и тому же хранилищу с нескольких узлов под управлением ОС на базе Linux. Это решение позволяет организовать совместную работу серверов в кластере с общей файловой структурой при сохранении целостности данных и согласованности доступа.

ОС включают поддержку GFS2 в составе ядра и репозитория пакетов, что позволяет использовать данную файловую систему без необходимости сборки модулей вручную.

GFS2 использует модель общего доступа к блочному устройству (Shared Block Storage) с распределённым управлением блокировками через DLM (Distributed Lock Manager). Все узлы в кластере обнаруживают один и тот же том, а механизм DLM обеспечивает согласование одновременного чтения и записи.

Основные особенности GFS2:

  • согласованное использование метаданных между узлами;
  • управление журналами транзакций;
  • возможность расширения размера файловой системы;
  • работа поверх общих хранилищ, подключаемых через SAN, iSCSI или Fibre Channel.

Для координации работы нескольких серверов используется кластерный менеджер (Pacemaker/Corosync), который отвечает за согласование конфигурации кластера и мониторинг доступности узлов.

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

sudo dnf install gfs2-utils

Создание файловой системы GFS2 на общем устройстве выполняется командой:

sudo mkfs.gfs2 -p lock_dlm -t cluster_fs /dev/sdb

где:

  • lock_dlm — механизм блокировок DLM;
  • cluster_fs — имя кластера, которое должно соответствовать конфигурации Pacemaker/Corosync;
  • /dev/sdb — общий раздел или блочное устройство.

Для монтирования файловой системы GFS2 на сервере выполняются следующие действия:

sudo mkdir -p /mnt/gfs2
sudo mount -t gfs2 /dev/sdb /mnt/gfs2

На клиентских узлах монтирование производится аналогично, с указанием сетевого имени сервера:

sudo mount -t gfs2 server1:/mnt/gfs2 /mnt/gfs2

где server1 — DNS-имя или IP-адрес сервера.

Для обеспечения корректной синхронизации узлов в кластере используется связка Pacemaker и Corosync. Необходимо:

  • настроить Corosync для обмена сообщениями между узлами;
  • сконфигурировать Pacemaker для управления ресурсом файловой системы (в том числе fencing, если требуется);
  • зарегистрировать ресурс в Pacemaker, указав имя кластера, совпадающее с параметром -t при создании ФС.

Для мониторинга состояния GFS2 и диагностики возможных ошибок следует использовать следующие инструменты:

  • journalctl — просмотр системных сообщений и логов ядра;
  • gfs2_tool — проверка и получение состояния ФС;
  • gfs2_quota — управление квотами в GFS2;
  • fsck.gfs2 — проверка целостности файловой системы (применяется только при отключённом кластере).

Также рекомендуется контролировать загрузку сети и задержки, так как GFS2 критично зависит от стабильности межузловых соединений.