.. ARU (c) 2018 - 2021, Pavel Priluckiy, Vasiliy Stelmachenok and contributors

   ARU is licensed under a
   Creative Commons Attribution-ShareAlike 4.0 International License.

   You should have received a copy of the license along with this
   work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.

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

.. contents:: Содержание:
  :depth: 2

.. role:: bash(code)
  :language: shell

======================================================
Нюансы выбора файловой системы и флагов монтирования
======================================================

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

Основные высокопроизводительные файловые системы:

**EXT4** - универсальный солдат, что подходит, как для SSD носителей, так и для HDD. Имеет самое большое распространение и документацию.
Обеспечивает высокие показатели чтения и записи.
Из минусов стоит отметить, что данная файловая система начинает проигрывать более новым представителям на рынке и требует ручного допиливания для SSD
(SATA, NVMe, PCI и т.п.).
Хорошо подходит для домашнего компьютера и файлопомойки, а также серверам которым необходима максимальная стабильность.

**BTRFS** - Т1000 из мира файловых систем.
Является наследником идей EXT2-3, и прекрасно подходит для SSD носителей,
ибо имеет модули автодетекта, что позволяет не сильно запариваться с настройкой TRIM и флагов монтирования.
Скорости чтение сопоставимы, а иногда (Особенно при высоких нагрузках) превышают показатели EXT4.
Идеальный выбор для игровой/домашней системы на базе Linux.

**ZFS** - Новая странная файловая система, по отзывам других людей неплоха для масштабных серверов, т.к. 128 битная, но зачем тогда такие размеры если ограничена в 255 символов?
В любом случае, не рекомендуется использовать на декстопе ввиду большой возни с её настройкой и установкой, т.к.
её поддержка официально отсутствует в ядре Linux из-за проблем с её лицензированием.

----------------------------------
Оптимальные флаги монтирования
----------------------------------

Прежде всего, изменяем *realtime* на *noatime* или *lazytime* - все два параметра отвечают за запоминания времени доступа к файлу и прочий бред, что только портит отклик.

Параметр noatime выключает полностью данную функцию, что может привести к некоторым багам в приложениях зависимых от времени (например git),
но автор никогда не встречал данной проблемы.
Параметр *lazytime* успешно будет выполнять все функции, но выполнять их запись в оперативной памяти,
что позволит избежать замедления без потери функционала, но говорят *lazytime* чудит, автор советует *noatime*.
*space_cache* можно заменить на *space_cache=v2*, что тоже даст определенную прибавку производительности.

Вот оптимальные параметры для SSD носителей.
Описание каждого из них вы можете найти - `здесь <https://zen.yandex.ru/media/id/5d8ac4740a451800acb6049f/linux-uskoriaem-sistemu-4-5e91d777378f6957923055b9>`_.::

 rw,relatime,ssd,ssd_spread,space_cache=v2,max_inline=256,commit=600,nodatacow

Прописывать их нужно в файл :bash:`/etc/fstab` для корневого и домашнего разделов.
Некоторые из данных флагов будут применяться только для новых файлов.

.. attention:: При использовании Btrfs для корневого раздела, обязательно установите пакет `btrfs-progs <https://archlinux.org/packages/core/x86_64/btrfs-progs/>`_.
