Linux файловая система со сжатием

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

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

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

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

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

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

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

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

Вот оптимальные параметры для SSD носителей. Описание каждого из них вы можете найти — здесь.

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

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

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

Но если вы хотите минимум возможных проблем, то оставьте флаг relatime.

space_cache можно заменить на space_cache=v2, что тоже даст определенную прибавку производительности.

Читайте также:  Открыть java на linux

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

../_images/file-systems-1.png

Параметр commit=600 может вызывать повышенное потребление оперативной памяти и портить данные на диске.

При использовании Btrfs для корневого раздела, обязательно установите пакет btrfs-progs.

Сжатие в файловой системе Btrfs¶

В файловой системе Btrfs есть возможность включения сжатия. Все записываемые файлы по возможности будут сжиматься и экономить пространство на носителе HDD или SSD.

Для SSD это может быть важно в связи с их ограниченным ресурсом на запись.

Согласно wiki Btrfs, официально имеется 3 поддерживаемых алгоритма:

  • zlib — высокая степень сжатия, но низкая скорость сжатия и распаковки
  • lzo — высокая скорость сжатия и распаковки, но наименьший уровень сжатия из представленных алгоритмов
  • zstd — степень сжатия сравнимая с zlib и более быстрые сжатие и распаковка, однако уступающие по скорости lzo

Для включения алгоритма сжатия в файловой системе необходимо:

  1. Убедиться в наличии необходимого алгоритма в системе или установить выбранный (zlib, lzo или zstd соответственно).
  2. Отредактировать файл etc/fstab , добавив для необходимого раздела или носителя следующий флаг монтирования:

(Где N — степень сжатия: для zlib — N = 1,2. 9; для lzo — выбор уровня сжатия не предусмотрен, поэтому :N — не указываются; для zstd — N =1,2. 15. Чем выше данный параметр, тем сильнее будут сжиматься данные, конечно при условии что это возможно, но также будет повышена нагрузка на процессор, поскольку сжатие выполняется за счет его ресурсов. Cогласно wiki Btrfs, оптимальным значением N по отношению степень сжатия / скорость считается 3 )

Например для zstd со степенью сжатия 3 запись будет выглядеть примерно следующим образом, если учесть приведенные выше флаги монтирования:

rw,relatime,compress=zstd:3,ssd,ssd_spread,space_cache=v2,max_inline=256,commit=600 

Сжатие файловой системы не работает вместе с флагом монтирования nodatacow .

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

sudo btrfs filesystem defragment -calg /path

(Где -calg — алгоритм (указывается как czlib, clzo или czstd в зависимости от выбранного алгоритма), path — путь к разделу или папке)

Читайте также:  Просмотр прав файла линукс

Для сжатия уже существующих данных в папке или целого раздела необходимо указать ключ -r перед -calg :

sudo btrfs filesystem defragment -r -calg /path

(Где path — путь к разделу или папке)

Степень сжатия в данном случае не указывается!

Определение эффективности сжатия¶

Если вы хотите определить эффективность сжатия на вашем разделе/диске, то вам необходимо воспользоваться программой compsize. Установить ее можно с помощью команды:

Для выполнения проверки на эффективность необходимо использовать команду:

(Где path — путь к разделу, папке или файлу)

../_images/compsize.png

  • Первый столбец:
    • Строка TOTAL — итоговые данные, которые учитывают все сжатые и не сжатые файлы и разные алгоритмы (если такие имеются).
    • Строка none — данные, которые не были сжаты.
    • Далее отображаются все использованные алгоритмы (в данном случае — zstd).

    Скорость обработки алгоритма zstd на примере AMD Ryzen 7 3700X¶

    Для сравнения степеней сжатия алгоритма zstd использовалась бенчмарк платформа phoronix-test-suite. В данной программе, для проверки скорости сжатия и распаковки данных, доступно три степени — 3 , 8 , 19 . Для получения информации о падении скорости выполнения сжатия нам будет достаточно и первых двух, поскольку степень сжатия 19 на данный момент не поддерживается (однако данные также приведены для ознакомления), и если обратить внимание на полученные данные, то это и не имеет особого смысла. Далее представлены результаты замеров:

    ../_images/zstd_3.png ../_images/zstd_8.png ../_images/zstd_19.png

    Как можно видеть из графиков, падение скорости при перехода от степени 3 к степени 8 сопровождается падением скорости сжатия более чем в 4,7 раз (неговоря о более высоких степенях сжатия) и практически не изменяется при выполнении распаковки, что может негативно сказаться на скорости установки программ и возможно в некоторых других ситуациях которые требует выполнения записи на диск.

    Стоит отметить, что в случае выполнения уставки игр с использованием степени сжатия 15 , было замечено повышение нагрузки на процессор вплоть до 72-75% в тех случаях, когда файлы поддавались сжатию.

    Список протестированных игр на эффективность сжатия (Спасибо @dewdpol!)¶

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

    Источник

    Файловые системы Btrfs vs. Ext4

    Файловые системы контролируют, где и как ваши данные хранятся и извлекаются с устройства хранения. У пользователей Windows и macOS мало причин беспокоиться о файловых системах, поскольку NTFS и HFS + являются единственным выбором файловых систем, которые у них есть, соответственно.

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

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

    Мы расскажем вам все, что вам нужно знать в этом посте.

    Что такое файловая система Ext4?

    Первая версия расширенной файловой системы (Ext4) вышла в октябре 2008 года и улучшила свою предшественницу Ext3. Многие дистрибутивы Linux начали использовать Ext4 в качестве файловой системы по умолчанию после ее запуска.

    Ext4 — это журнальная файловая система, которая просто означает, что она “записывает” расположение файлов на диске и отслеживает изменения на диске.

    Интересно, что первая версия файловой системы Ext4, Расширенная файловая система (“Ext”), вышла в 1992 году для ОС Minix. Позже он был разработан для Linux.

    Что такое файловая система Btrfs?

    В отличие от файловой системы Ext4, файловая система B-Tree является файловой системой копирования при записи. Это означает, что когда файл дублируется на Btrfs, он не создает другую копию файла. Вместо этого файл разделяется между оригиналом и фантомным файлом “копии”.

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

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

    Его название происходит от B-деревьев, которые файловая система использует для хранения внутренних файловых структур. Oracle впервые разработала Btrfs в 2007 году, но такие компании, как Facebook и Redhat, с тех пор внесли свой вклад в ее развитие.

    Разработчики создали Btrfs, чтобы иметь файловую систему с функциями, такими как моментальные снимки и контрольные суммы.

    Источник

Оцените статью
Adblock
detector