Файловые системы
Файловая система (ФС) определяет способ организации и хранения данных на носителях информации, таких как жесткие диски, SSD и USB-накопители. Она управляет тем, как данные записываются, хранятся и читаются с устройств хранения, предоставляя структуру каталогов и файлов.
ОС поддерживает различные файловые системы (ФС) для обеспечения гибкости и оптимальной производительности при работе с дисками и разделами. По умолчанию используется журналируемая файловая система Ext4. Однако во время установки Cистемы администратору предоставляется возможность выбора других файловых систем (см. раздел Установка ОС на рабочую станцию), таких как Ext3, XFS, и BTRFS. Также поддерживается работа с дисками, отформатированными в NTFS (файловая система Windows).
Поддерживаемые файловые системы
Рассмотрим общие аспекты поддерживаемых в Системе ФС:
- Ext4 (Fourth Extended Filesystem) является основной и рекомендованной ФС для ОС. Она представляет собой усовершенствованную версию Ext3, предлагая улучшенную производительность и дополнительные функции, такие как журналирование, поддержка больших файлов и разделов, быстрое выделение места для файлов и защита от фрагментации. Данная ФС предпочтительна при работе в ОС, поскольку является стабильным и широко поддерживаемым выбором для большинства пользователей. Журналирование обеспечивает сохранность данных в случае сбоев. Все изменения в каталогах сначала записываются в журнал и только после этого применяются к основным данным. Это гарантирует целостность файловой системы и минимизирует риск повреждения данных. Ext4 включает механизм автоматического выравнивания блоков данных и индексных записей, что помогает поддерживать высокую производительность даже в случае фрагментированных данных. Как и в других UNIX-подобных системах, в Ext4 доступ к каталогам управляется через систему прав доступа (rwx).
- Ext3 (Third Extended Filesystem) является предшественником Ext4 и также поддерживается ОС РОСА ХРОМ. Основное преимущество — журналирование, но она менее производительна и обладает меньшими возможностями по сравнению с Ext4. Ext3 может использоваться для совместимости с более старыми системами или программами.
- XFS — это высокопроизводительная файловая система. Она отличается хорошей масштабируемостью и эффективной работой с большими файлами и разделами. XFS также обладает функциями журналирования, быстрым выделением пространства для файлов и достаточно высокой производительностью при записи данных, но не поддерживает нативное создание снимков (snapshot), что ограничивает его функциональность в современных сценариях резервного копирования и восстановления данных.
- NTFS (New Technology File System) — в ОС РОСА "ХРОМ" поддержка NTFS реализована через драйверы, такие как ntfs-3g, позволяющие монтировать и работать с NTFS-разделами. NTFS часто используется для обмена данными между Linux-подобными ОС и ОС семейства Windows.
Просмотр поддерживаемых файловых систем
Для того чтобы просмотреть список всех ФС, поддерживаемых в ОС, нужно выполнить команду:
cat /proc/filesystems
В результате выполнения данной команды будет выведен список всех поддерживаемых ФС (рисунок 5).

Рисунок 5 - Список поддерживаемых ФС
Использование команды cat /proc/filesystems позволяет определить все ФС, которые поддерживаются в Системе.
Для поиска конкретной ФС можно использовать следующую команду (рисунок 16):
cat /proc/filesystems | grep btrfs
где btrfs – название искомой ФС.

Рисунок 6 - Поиск BTRFS в списке поддерживаемых ФС
Организация каталогов в Системе
Каталоги в файловой системе 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. Общий синтаксис команды:
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.
Примеры команд монтирования:
- Монтирование раздела жесткого диска:
mount /dev/hdb3 /mnt
- Монтирование всех ФС NFS, указанных в /etc/fstab:
mount -vat nfs
- Если возникли ошибки при монтировании, можно использовать команду:
mount -vf устройство точка_монтирования
Эта команда выполнит все действия, кроме монтирования, и выдаст подробный отчет о каждом шаге.
Файл /etc/fstab — это конфигурационный файл, который определяет порядок монтирования файловых систем в ОС. Этот файл играет ключевую роль в автоматическом подключении устройств и разделов при загрузке Системы, а также упрощает управление монтированием для системных администраторов.
Файл /etc/fstab состоит из строк, каждая из которых описывает отдельную файловую систему или устройство. Типовая структура файла fstab:
# <file system> <mount point> <type> <options> <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
Каждая строка включает следующие поля:
<file system>— идентификатор файловой системы, которая должна быть смонтирована. Обычно это UUID (уникальный идентификатор) раздела, но может быть также использован путь к блочному устройству (например, /dev/sda1). В рассмотренном выше примере строка:UUID=abcd1234-ef56-7890-abcd-1234567890ab, /dev/cdrom.<mount point>— точка монтирования, то есть каталог, в который будет подключена файловая система. В рассмотренном выше примере: /, /home, /var, /media/cdrom.<type>— тип файловой системы, который будет использоваться при монтировании. Это может быть ext4, xfs, btrfs, swap для разделов подкачки или auto для автоматического определения типа. В рассмотренном выше примере: ext4, xfs, swap, auto.<options>— монтировочные опции, которые определяют поведение файловой системы. Наиболее часто используются опции:defaults— включает стандартный набор опций:rw,suid,dev,exec,auto,nouser,async.noauto— файловая система не монтируется автоматически при загрузке.ro— монтирование в режиме только для чтения.
В рассмотренном выше примере: defaults, noauto,ro.
<dump>— опция для утилитыdump, которая выполняет резервное копирование файловой системы. Если установлено в"1", резервное копирование включено,"0"— отключено. В рассмотренном выше примере: 1, 0.<pass>— определяет порядок проверки файловых систем при загрузке:- 0 — файловая система не будет проверяться;
- 1 — корневая файловая система проверяется первой;
- 2 — другие файловые системы проверяются после корневой.
В рассмотренном выше примере: 1, 2, 0.
Редактирование файла /etc/fstab требует прав суперпользователя. Изменения в этом файле немедленно не применяются, поэтому после редактирования необходимо либо вручную смонтировать файловые системы командой 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
umount /mnt
В результате будет получено сообщение об ошибке, так как Система будет считать, что ФС занята. Чтобы успешно отключить /mnt, необходимо сначала выйти из этого каталога, перейдя в другой каталог.
Для принудительного отключения устройства, даже если оно используется, можно применить опцию -f:
umount -f /cdrom
Для безопасного извлечения сменных носителей можно использовать команду eject.
Более подробное описание команды доступно в справочном руководстве по команде:
man umount
Файловая система BTRFS
Файловая система BTRFS (B-Tree File System) — современная копируемая при записи (COW) файловая система, разработанная для повышения надежности данных и управления их объемом. Несмотря на то, что она поддерживает все аналогичные функции, как и Ext4, в некоторых сценариях (особенно на серверах) производительность BTRFS может уступать Ext4, особенно при высокой нагрузке на запись или в случае большого количества мелких файлов, а также при создании множества снимков. Документация и поддержка BTRFS могут быть менее обширными и детализированными, чем у Ext4, что может вызывать затруднения при администрировании ОС.
ОС включает поддержку BTRFS в составе ядра и репозитория пакетов, что позволяет использовать данную ФС без необходимости сборки модулей вручную.
Основные особенности эксплуатации BTRFS:
- При активном использовании снимков на HDD возможна сильная фрагментация. Фрагментация на copy-on-write файловых системах, к которым относится и BTRFS, неизбежна и приводит к замедлению работы. На SSD от фрагментации нет таких негативных эффектов.
- При активном использовании снимков в сочетании с низким количеством IOPS ядро ОС может не успевать в фоне сделать то, что делает btrfs balance при запуске вручную. Из-за этого может показаться, что свободного места достаточно, а при попытке записи его не будет хватать. Эту проблему можно решить балансировкой — перераспределением места между данными и метаданными.
- Существует набор скриптов и таймеров systemd btrfsbalance в одноименном пакете (доступен в репозитории) для регулярного выполнения балансировки.
- В репозитории доступны утилиты just-backup-btrfs и btrfs-sync, которые можно использовать для автоматизации создания снимков и при необходимости их передачи на удаленный сервер (передается дельта изменений, а не весь снимок целиком).
- BTRFS проверяет целостность блоков данных при их чтении, поэтому в случае их повреждения будет выведена ошибка.
- При установке ОС на BTRFS через программу установки Anaconda отдельный раздел /boot необязателен. Можно сделать подтом root с точкой монтирования / для удобства создания снимков в дальнейшем (так выполняется автоматическая разметка в BTRFS).
Полный список всех доступных команд и основных опций для работы с файловой системой BTRFS можно посмотреть с помощью команды btrfs help (рисунок 7).

Рисунок 7 - Список всех доступных команд и опций
Создание ФС
Создание файловой системы BTRFS выполняется командой:
sudo mkfs.btrfs /dev/sdb
где:
- mkfs.btrfs — утилита для создания файловой системы BTRFS;
- /dev/sdb — диск, на котором нужно создать ФС.
В результате выполнения команды sudo mkfs.btrfs /dev/sdb может появиться ошибка (рисунок 8). Она возникает, потому что Система не может определить существующую ФС на диске /dev/sdc или на диске есть повреждённая таблица разделов.

Рисунок 8 - Ошибка создания файловой системы
Для исправления ошибки нужно проверить наличие диска /dev/sdb в Системе с помощью команды sudo lsblk (рисунок 9).

Рисунок 9 - Список существующих дисков и разделов
В результате выполнения команды sudo lsblk видно, что диска /dev/sdb не существует. Вместо него используется диск /dev/sda, на котором и нужно создать файловую систему с помощью команды sudo mkfs.btrfs /dev/sda (рисунок 10).

Рисунок 10 - Успешное выполнение команды создания файловой системы
В результате выполнения команды sudo mkfs.btrfs /dev/sda файловая система BTRFS будет успешно создана на диске /dev/sda.
Важно — Если диск /dev/sdb существует, но команда sudo mkfs.btrfs /dev/sdb не создает ФС, значит на нем повреждена таблица разделов. В этом случае можно выполнить команду sudo mkfs.btrfs -f /dev/sdc, в которой используется ключ "-f". С помощью этого ключа BTRFS будет создана, но существующие данные будут удалены с диска.
Для проверки версии BTRFS используется команда (рисунок 11):
btrfs --version

Рисунок 11 - Проверка версии BTRFS
Для определения UUID и типа файловой системы на разделе используется следующая команда (рисунок 12):
sudo blkid /dev/sda

Рисунок 12 - Проверка типа BTRFS
Проверка целостности ФС
Для проверки целостности файловой системы можно выполнить одно из следующих действий:
- использовать команду
sudo btrfs check /dev/sda, если монтирование не проводилось (рисунок 13);

Рисунок 13 - Проверка целостности ФС, если монтирование не проводилось
- использовать команды
sudo btrfs scrub start /mnt/btrfs_diskиsudo btrfs scrub status /mnt/btrfs_disk, если монтирование проводилось (рисунок 14).

Рисунок 14 - Проверка целостности ФС, если монтирование проводилось
Если в результате выполнения команд появляется строка "no error found", значит проверка прошла успешно.
Ручное монтирование
Ручное монтирование подходит для быстрых проверок, но не для долгосрочной работы, поскольку результат не сохраняется после перегрузки Системы.
Ручное монтирование можно выполнить с помощью следующей команды:
sudo mount /dev/sda /mnt
где:
- /mnt — папка, в которую будет примонтирован диск /dev/sda.
Проверить успешность монтирования можно командой lsblk (рисунок 15).

Рисунок 15 - Список существующих дисков и разделов после монтирования
В результате выполнения команды lsblk видно, что диск /dev/sda был успешно примонтирован к папке /mnt.
Автоматическое монтирование
Для долгосрочной работы рекомендуется настроить автоматическое монтирование, при котором диск привязывается к точке монтирования через UUID.
Чтобы настроить автоматическое монтирование нужно выполнить следующие действия:
- создать точку монтирования с помощью команды:
sudo mkdir -p /mnt/btrfs_disk
где:
-p– флаг, необходимый для создания всех недостающих папок в пути, если бы их не было;
- получить UUID диска с помощью команды (рисунок 16):
sudo blkid /dev/sda

Рисунок 16 - Получение UUID диска
Примечание — Для надежного монтирования не следует использовать имя диска /dev/sda, потому что оно может измениться, а UUID диска остаётся неизменным,
- отредактировать файл /etc/fstab, в котором хранятся правила автоматического монтирования дисков при загрузке Системы. Для этого нужно использовать команду
sudo nano /etc/fstab, в результате выполнения которой файл /etc/fstab откроется в редакторе nano (рисунок 17);

Рисунок 17 - Файл /etc/fstab в редакторе nano
- вписать строку
"UUID=cd8a47ef-1f64-4d04-8a02-7933ebe127cb /mnt/btrfs_disk btrfs defaults 0 0"в конце файла (рисунок 18);

Рисунок 18 - Редактирование файла /etc/fstab
- использовать сочетание клавиш
Ctrl+Sдля сохранения изменений; - выйти из редактора nano с помощью сочетания клавиш
Ctrl+X; - выполнить монтирование всех разделов с помощью команды
sudo mount -; - проверить успешность монтирования с помощью команды
mount | grep btrfs(рисунок 19);

Рисунок 19 - Успешно выполненное монтирование
Балансировка
Балансировка в BTRFS — это процесс перераспределения данных и метаданных по блочным устройствам. Она необходима для оптимизации использования пространства и поддержания производительности.
Для проверки работы балансировки необходимо:
- создать демонстрационную нагрузку с помощью команды (рисунок 20):
sudo dd if=/dev/zero of=/mnt/btrfs_disk/@/largefile bs=1M count=100

Рисунок 20 - Создание нагрузки
- просмотреть статистику использования с помощью команды (рисунок 21):
sudo btrfs filesystem show /mnt/btrfs_disk

Рисунок 21 - Просмотр статистики использования
- просмотреть распределение данных с помощью команды (рисунок 22):
sudo btrfs filesystem df /mnt/btrfs_disk

Рисунок 22 - Просмотр распределения данных
- запустить балансировку с ограничением по заполнению командой:
sudo btrfs balance start /mnt/btrfs_disk
Важно — При запуске балансировки может возникнуть ошибка (рисунок 23). В таком случае можно использовать флаг --full-balance, который отключает предупреждение и сразу запускает балансировку (рисунок 24). Следует учесть, что использование флага --full-balance небезопасно, лучше всего использовать фильтры, как в пункте 5. текущей инструкции.

Рисунок 23 - Ошибка запуска балансировки
- запустить балансировку с ограничением по заполнению следующей командой (рисунок 25):
sudo btrfs balance start –dusage=50 /mnt/btrfs_disk

Рисунок 25 - Запуск балансировки с ограничением по заполнению
- проверить статус балансировки с помощью команды (рисунок 26):
sudo btrfs balance status /mnt/btrfs_disk

Рисунок 26 - Проверка статуса балансировки
Примечание — При необходимости можно запустить балансировку только метаданных. Для этого нужно выполнить следующую команду (рисунок 27):
sudo btrfs balance start -m /mnt/btrfs_disk

Рисунок 27 - Запуск балансировки метаданных
Работа с подтомами
Подтома ведут себя как отдельные файловые системы, но используют общее пространство диска.
Создание ФС
Для создания корневого подтома с именем "@" нужно выполнить следующую команду (рисунок 28):
sudo btrfs subvolume create /mnt/btrfs_disk/@

Рисунок 28 - Создание корневого подтома
Чтобы создать подтом @home для хранения пользовательских данных нужно выполнить команду (рисунок 29):
sudo btrfs subvolume create /mnt/btrfs_disk/@home

Рисунок 29 - Создание подтома @home
Чтобы создать подтом @data для хранения пользовательских данных отдельно от Системы нужно выполнить команду (рисунок 30):
sudo btrfs subvolume create /mnt/btrfs_disk/@data

Рисунок 30 - Создание подтома @data
Чтобы просмотреть список подтомов, нужно выполнить следующую команду (рисунок 31):
sudo btrfs subvolume list /mnt/btrfs_disk

Рисунок 31 - Просмотр списка подтомов
Примечание — Для просмотра детальной информации о подтоме нужно использовать команду (рисунок 32):
sudo btrfs subvolume show /mnt/btrfs_disk/@

Рисунок 32 - Просмотр информации о подтоме
Назначение подтома по умолчанию
Подтом по умолчанию (default subvolume) — это механизм BTRFS, который определяет, какой подтом будет монтироваться автоматически, если при монтировании не указан параметр subvol=.
Примечание — Без использования подтома по умолчанию, при каждом монтировании нужно указывать подтом. Например, с помощью команды:
sudo mount -o subvol=@ /dev/sda /mnt
Для назначения подтома "@" подтомом по умолчанию нужно выполнить команду:
sudo btrfs subvolume set-default 256 /mnt/btrfs_disk.
Для проверки того, что подтом по умолчанию действительно изменён, используется команда (рисунок 33):
sudo btrfs subvolume get-default /mnt/btrfs_disk

Рисунок 33 - Проверка подтома по умолчанию
Теперь при монтировании без указания подтома с помощью команды sudo mount /dev/sda /mnt автоматически будет монтироваться подтом "@".
Работа со снапшотами
С помощью снапшота можно сохранить состояние подтома в определенный момент времени и восстановить Систему при необходимости.
Создание снапшотов
Для создания снапшотов необходимо:
- создать тестовый файл в подтоме с помощью команды (рисунок 34):
echo "Данные для снапшота" | sudo tee /mnt/btrfs_disk/@/snapshot_test.txt
src: /image34.png sign: Рисунок 34 - Создание тестового файла в подтоме
::
- создать read-write снапшот с помощью команды (рисунок 35):
sudo btrfs subvolume snapshot /mnt/btrfs_disk/@ /mnt/btrfs_disk/@snap_rw
src: /image35.png sign: Рисунок 35 - Создание read-write снапшота
::
- сделать снапшот только для чтения с помощью команды (рисунок 36):
sudo btrfs subvolume snapshot -r /mnt/btrfs_disk/@ /mnt/btrfs_disk/@snap_ro
src: /image36.png sign: Рисунок 36 - Создание снапшота только для чтения
::
- просмотреть список созданных снапшотов с помощью команды (рисунок 37):
sudo btrfs subvolume list /mnt/btrfs_disk
src: /image37.png sign: Рисунок 37 - Просмотр списка снапшотов
::
Удаление снапшотов
Для удаления снапшота необходимо выполнить следующую команду (рисунок 38):
sudo btrfs subvolume delete /mnt/btrfs_disk/@snap_rw

Рисунок 38 - Удаление снапшота
Проверить удаление снапшота можно с помощью команды (рисунок 39):
sudo btrfs subvolume list /mnt/btrfs_disk

Рисунок 39 - Проверка удаления снапшота
Восстановление состояния Системы из снапшота
Для проверки восстановления утерянных данных необходимо:
- создать тестовый файл с помощью команды (рисунок 40):
echo "Важные данные" | sudo tee /mnt/btrfs_disk/@/important.txt

Рисунок 40 - Создание тестового файла для восстановления
- создать резервный снапшот с помощью команды (рисунок 41):
sudo btrfs subvolume snapshot /mnt/btrfs_disk/@ /mnt/btrfs_disk/@backup

Рисунок 41 - Создание резервного снапшота
- удалить созданный файл с помощью команды:
sudo rm /mnt/btrfs_disk/@/important.txt
- проверить удаление файла с помощью следующей команды (рисунок 42):
ls -la /mnt/btrfs_disk/@/

Рисунок 42 - Проверка удаления файла
- восстановить файл из снапшота с помощью команды:
sudo cp -a /mnt/btrfs_disk/@backup/important.txt /mnt/btrfs_disk/@/
- проверить, что файл действительно восстановлен и содержит исходные данные, с помощью команды (рисунок 43):
cat /mnt/btrfs_disk/@/important.txt

Рисунок 43 - Проверка восстановления файла
Включение и настройка квот
Квоты в BTRFS позволяют ограничивать использование дискового пространства для подтомов и их групп. В работе с квотами администратор может выполнить следующие действия:
- активировать подсистему поддержки квот на ФС с помощью команды
sudo btrfs quota enable /mnt/btrfs_disk, иначе квоты не будут работать; - просмотреть текущие группы квот с помощью следующей команды (рисунок 44):
sudo btrfs qgroup show /mnt/btrfs_disk

Рисунок 44 - Просмотр текущей группы квот
- создать пользовательскую группу квот с идентификатором 1/100 командой:
sudo btrfs qgroup create 1/100 /mnt/btrfs_disk
- установить лимит в 500 МБ для группы 1/100 командой:
sudo btrfs qgroup limit 500M 1/100 /mnt/btrfs_disk
Примечание — Когда суммарный размер данных в группе достигнет лимита, запись будет запрещена и появится ошибка
"No space left".
- привязать подтом к группе квот командой:
sudo btrfs qgroup assign 0/256 1/100 /mnt/btrfs_disk
- просмотреть существующие лимиты и их использование командой (рисунок 45):
sudo btrfs qgroup show -re /mnt/btrfs_disk

Рисунок 45 - Просмотр существующих лимитов
- отключить подсистему квот командой:
sudo btrfs quota disable /mnt/btrfs_disk
Примечание — При отключении подсистемы квот все лимиты перестают действовать, но информация о группах сохраняется. Поэтому при повторном включении настройки восстанавливаются.
Графическая программа snapshot-gui
Для более удобного администрирования BTRFS в Системе возможно использование графической утилиты btrfs-snapshot-gui (рисунок 46). С её помощью можно управлять снапшотами без необходимости использования командной строки.

Рисунок 46 - Графическая программа btrfs-snapshot-gui
Для установки пакета btrfs-snapshot-gui необходимо выполнить следующую команду:
sudo dnf install btrfs-snapshot-gui
Для запуска программы btrfs-snapshot-gui нужно выполнить одно из следующих действия:
- выполнить в консоли команду
btrfs-snapshot-gui; - нажать на иконку
Меню запуска приложенийв левом нижнем углу экрана, в строке поиска ввести название программы и нажать клавишуEnter.
В приложении доступны:
- создание снимка Системы по кнопке
Создать снимок; - удаление снимка Системы по кнопке
Удалить снимок; - создание снимка Системы по кнопке
Создать снимок; - восстановление Системы из снимка по кнопке
Восстановление из снимков.
Файловая система ZFS
Файловая система ZFS (Zettabyte File System) — это высокопроизводительная файловая система с поддержкой копирования при записи (COW). ZFS объединяет функции файловой системы и менеджера томов, обеспечивая расширенные возможности по управлению данными, их целостности и оптимизации хранения. Благодаря архитектуре ZFS особенно эффективна на серверах и в системах хранения данных, где требуются высокая надежность и масштабируемость.
Основные особенности ZFS:
- ZFS использует механизм копирования при записи (COW), что гарантирует целостность данных даже при сбоях питания. Транзакционная модель гарантирует, что файловая система всегда находится в согласованном состоянии;
- Для проверки целостности данных в ZFS используется механизм scrub, который считывает все данные и проверяет их контрольные суммы, автоматически исправляя ошибки при наличии избыточности;
- В репозитории доступны утилиты для автоматизации создания снапшотов и их передачи на удаленные серверы, которые позволяют отправлять только изменения между снапшотами.
Начало работы с ZFS
Перед началом работы необходимо убедиться, что в ОС установлена и загружена поддержка файловой системы ZFS. Для этого нужно выполнить команду:
lsmod | grep zfs
В результате её выполнения будет выведен список загруженных модулей ZFS, если они имеются в Системе (рисунок 47).

Рисунок 47 - Проверка загруженных модулей ZFS
Примечание — Если модули ФС не загружены, необходимо установить пакеты OpenZFS с помощью команды:
sudo dnf install zfs
После установки загрузить модули командой (рисунок 48):
sudo modprobe zfs

Рисунок 48 - Загрузка модулей ZFS
Полный список всех доступных команд и основных опций для работы с файловой системой ZFS можно посмотреть с помощью команды zpool help или zfs help (рисунок 49).

Рисунок 49 - Список всех доступных команд и опций ZFS
Создание ZFS-пула и датасетов
ZFS использует двухуровневую архитектуру: пулы хранения (zpools) и датасеты (datasets), которые создаются внутри пулов.
Создание пула
Пул в ZFS создается командой:
sudo zpool create tank /dev/sdb
где:
zpool create— команда для создания пула хранения;tank— имя создаваемого пула (может быть любым);/dev/sdb— диск, на котором нужно создать пул.
Проверить создание пула можно командой (рисунок 50):
sudo zfs list

Рисунок 50 - Проверка создания пула
Создание ФС
Создание файловой системы ZFS выполняется в пуле командой:
sudo zfs create tank/data
Проверить результат создания ZFS можно командой (рисунок 51):
sudo zpool status

Рисунок 51 - Проверка создания ФС
Проверить версию ZFS можно с помощью команды (рисунок 52):
zfs --version

Рисунок 52 - Проверка версии ZFS
Создание ZFS с указанием точки монтирования выполняется командой:
sudo zfs create -o mountpoint=/mnt/data tank/data
Создание датасетов
Датасеты в ZFS аналогичны подтомам в BTRFS.
Для создания корневого датасета используется команда;
sudo zfs create tank/ROOT
Датасет для пользовательских данных создается командой:
sudo zfs create tank/HOME
Датасет для хранения данных создается командой:
sudo zfs create tank/DATA
Просмотреть список всех датасетов можно командой (рисунок 53):
sudo zfs list

Рисунок 53 - Список всех датасетов
Проверка целостности ФС
Для проверки целостности данных в ZFS используется механизм scrub.
Для запуска scrub используется команда:
sudo zpool scrub tank
Для проверки статуса выполнения механизма scrub выполняется команда (рисунок 54):
sudo zpool status

Рисунок 54 - Проверка статуса выполнения механизма скраба
При обнаружении поврежденных блоков ZFS автоматически исправляет их, если пул настроен с избыточностью. В выводе команды zpool status строка "scan: scrub repaired 0B" означает, что ошибок не найдено.
Ручное монтирование
ZFS-пулы монтируются автоматически при создании и импорте, но при необходимости можно явно указать точку монтирования для датасета командой:
sudo zfs set mountpoint=/mnt/data tank/DATA
Проверить успешность монтирования можно командой (рисунок 55):
mount | grep tank

Рисунок 55 - Проверка монтирования датасетов ZFS
Автоматическое монтирование
ZFS автоматически монтирует все датасеты при импорте пула. Импорт пула можно выполнить по команде:
sudo zpool import tank
Для автоматического импорта при загрузке Системы нужно выполнить следующие команды:
sudo systemctl enable zfs-import-cache.service
sudo systemctl enable zfs-mount.service
Просмотреть свойства датасета, включая точку монтирования, можно с помощью команды (рисунок 56):
sudo zfs get mountpoint tank/DATA

Рисунок 56 - Просмотр точки монтирования датасета
Работа со снапшотами
Снапшоты в ZFS позволяют сохранять состояние датасета в определенный момент времени и занимают место только при изменении данных.
Создание снапшотов
Для создания снапшотов необходимо:
- создать тестовый файл с помощью команды (рисунок 57):
echo "Данные для снапшота" | sudo tee /tank/data/snapshot_test.txt

Рисунок 57 - Создание тестового файла
- создать снапшот командой (рисунок 58):
sudo zfs snapshot tank/DATA@snap1

Рисунок 58 - Создание снапшота
- просмотреть список созданных снапшотов с помощью команды (рисунок 59):
sudo sudo zfs list -t snapshot

Рисунок 59 - Просмотр списка снапшотов
Удаление снапшотов
Удаление снапшота выполняется командой (рисунок 60):
sudo zfs destroy tank/DATA@snap1

Рисунок 60 - Удаление снапшота
Проверить удаление снапшота можно с помощью следующей команды (рисунок 61):
sudo zfs list -t snapshot

Рисунок 61 - Проверка удаления снапшота
Восстановление данных из снапшота
Для проверки процедуры восстановления утерянных данных из снапшотов необходимо:
- создать тестовый файл с помощью команды (рисунок 62):
echo "Важные данные" | sudo tee /tank/data/important.txt

Рисунок 62 - Создание тестового файла для восстановления
- создать резервный снапшот с помощью команды:
sudo zfs snapshot tank/data@backup
- удалить созданный файл с помощью команды:
sudo rm /tank/data/important.txt
- проверить удаление файла с помощью команды (рисунок 63):
ls -la /tank/data/

Рисунок 63 - Проверка удаления файла
- восстановить файл из снапшота с помощью команды:
sudo zfs rollback tank/data@backup
- проверить, что файл действительно восстановлен и содержит исходные данные, с помощью команды (рисунок 64):
cat /tank/data/important.txt

Рисунок 64 - Проверка восстановления файла
Включение и настройка квот
ZFS поддерживает квоты на уровне датасетов, позволяя ограничивать использование дискового пространства.
В работе с квотами возможно выполнение следующих действий:
- просмотр текущего использования квот с помощью команды (рисунок 65):
sudo zfs list

Рисунок 65 - Просмотр текущего использования квот
- установка квоты (например, 500 МБ) для датасета с помощью команды:
sudo zfs set quota=500M tank/DATA
- просмотр списка установленных квот командой (рисунок 66):
sudo zfs get quota tank/DATA

Рисунок 66 - Список установленных квот
- установка ограничения максимального объёма данных в (например, 500 МБ для tank/DATA), с помощью параметра refquota:
sudo zfs set refquota=500M tank/DATA
- просмотр использования дискового пространства с учетом квот выполняется с помощью команды (рисунок 67):
sudo zfs get all tank/DATA | grep -E "quota|used"
где:
tank/DATA– раздел для которого выполняется проверка.

Рисунок 67 - Просмотр существующих лимитов
- снятие установленных квоты выполняется командой:
sudo zfs set quota=none tank/DATA
Файловая система 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 критично зависит от стабильности межузловых соединений.
Указатели
Ссылка на файл в ОС – это указатель на файл. Если проводить аналогию с ОС Windows, то ссылки схожи с ярлыками. То есть при создании ссылки, которая указывает на какой-либо файл или директорию, можно разместить эту ссылку в другом каталоге. Используя такую ссылку, обращение будет направляться к настоящему файлу или каталогу.
Ссылки в ОС бывают двух типов: символические и жесткие, которые имеют существенные отличия друг от друга.
Символическая ссылка (symbolic link) – это специальный файл, который является ссылкой на другой файл или каталог (их еще называют целевым файлом, целевым каталогом). Символические ссылки также называют символьными, мягкими ссылками (soft links) или сим-ссылками (sym-link).
Символическая ссылка не содержит в себе копию самого файла, на которую она указывает. Она является лишь указателем на файл, однако так же, как и файл обладает собственными правами доступа (которые не распространяются на целевой файл) и содержит путь до целевого файла. Можно создавать несколько символических ссылок на один файл и эти ссылки могут иметь разные имена.
Связь между символической ссылкой и файлом, на который она указывает, является "мягкой". Если удалить символическую ссылку, то файл, на который она указывает, не удаляется.
Жесткая ссылка (hard link) является своего рода синонимом для существующего файла. При создании жесткой ссылки создается дополнительный указатель на существующий файл, но не копия файла.
Жесткие ссылки выглядят в файловой структуре как еще один файл. Если жесткая ссылка создается в том же каталоге, где находится целевой файл, то они должны иметь разные имена. Жесткая ссылка на файл должна находится в той же ФС, что и другие жесткие ссылки на этот файл.
В ОС каждый файл имеет уникальный идентификатор индексный дескриптор (inode) – это число, которое однозначно идентифицирует файл в ФС. Жесткая ссылка и файл, для которой она создавалась, имеют одинаковые inode. Поэтому жесткая ссылка имеет те же права доступа, владельца и время последней модификации, что и целевой файл. Различаются только имена файлов.
Особенности жестких ссылок:
- нельзя создавать для директорий;
- не может указывать на несуществующий файл;
- редко используются в повседневной работе.
Создание и удаление ссылок
Для создания ссылок в ОС используется команда ln.
Синтаксис команды ln:
ln опции целевой_файл имя_ссылки
Обычно используется только одна опция -s. Полный список опций можно получить, выполнив следующую команду:
man ln
Чтобы создать символическую ссылку, нужно выполнить команду ln с опцией -s:
ln -s целевой_файл имя_символьной_ссылки
Чтобы создать жесткую ссылку нужно использовать команду ln без опции -s:
ln целевой_файл имя_жесткой_ссылки
Ссылки, как и обычные файлы, можно удалять, используя команду rm:
rm имя_ссылки
Безопасное удаление файлов
Для предотвращения восстановления удалённой информации операционная система предоставляет утилиту Rosa Shred, выполняющую многократную перезапись содержимого файла перед его удалением. Такая процедура снижает вероятность восстановления данных с носителей, особенно на классических HDD.
Следует учитывать, что полное гарантированное стирание данных на SSD-носителях не всегда достижимо из-за особенностей внутреннего управления памятью. В таких случаях рекомендуется использовать методы аппаратного сброса накопителей или шифрование данных перед использованием.
Установка утилиты Rosa Shred производится из встроенного репозитория командой:
sudo dnf install rosa-shred
Графическая оболочка Rosa Shred
Утилита Rosa Shred работает от имени пользователя, под учетной записью которого она была запущена. Таким образом, утилита может удалить лишь те файлы или каталоги, на которые у данного пользователя есть права, достаточные для удаления.
Утилита ROSA Shred несколько раз перезаписывает указанные файлы специальными битовыми последовательностями, чтобы сделать более трудоемким процесс восстановления данных даже в случае использования специального оборудования.
Для запуска утилиты необходимо перейти в главное меню ОС "Приложения → ROSA Shred" или выполнить команду rosa-shred.

Рисунок 68 – Интерфейс Rosa Shred
В окне слева (рисунок 68) представлена корневая файловая система ОС. Справа представлены опции удаления, которые можно установить для файлов или каталогов.
Опции перезаписи:
Количество проходов=N‒ переписать N раз вместо указанных (3) по умолчанию;Перезаписать в конце с нулями‒ перезаписать в конце с нулями, чтобы скрыть перемешивание;Удалить после перезаписи‒ перемешать и удалить файл после перезаписи;Не округлять размеры файлов‒ не округлять размеры файлов до следующего целого блока; по умолчанию – для нерегулярных файлов;Перезаписать число байт=N‒ очистить N байт, а не файл целиком.
Консольная утилита shred
Безопасное удаление файлов в консольном режиме осуществляется с помощью утилиты shred, которая позволяет перезаписать файл случайными данными несколько раз и затем удалить его. Основная форма команды:
shred -u имя_файла
Основные ключи утилиты:
-u— перезаписать файл и удалить его после завершения операции;-n <число>— задать количество дополнительных циклов перезаписи (по умолчанию выполняется 3 цикла);-v— отображать ход выполнения операции;-z— выполнить финальную перезапись нулями, чтобы скрыть факт использования механизма безопасного удаления;-f— принудительное изменение прав доступа к файлу, если это необходимо для выполнения операции;-s <размер>— ограничить объём данных для перезаписи указанным размером (в байтах);--random-source=<файл>— использовать указанный источник случайных данных вместо системного генератора;--remove=<метод>— задать способ удаления файла после перезаписи (например,unlinkилиwipe).
Например:
shred -u документ.txt
shred -u -n 5 имя_файла.dat