ProCloud Yandex
18.07.2023
читать 9 минут

Особенности файловой системы ZFS

/upload/iblock/46a/3a7izp396newciq3rkwkpnbvgmkzd9ez/AbstractBroswers2_%281%29.jpg

Linux считается очень гибкой операционной системой. Это позволяет постоянно вносить дополнения для решения новых специфических задач. Так, относительно недавно появилась файловая система ZFS Linux, которая работает на основе механизма copy-on-write. Она считается очень удобной для администрирования. Стоит подробнее рассмотреть, что представляет собой файловая система ZFS.

ZFS и ее отличия

ZFS – файловая система, считающаяся перспективной и весьма функциональной. В ней есть все необходимые инструменты для работы с дисковым пространством.

По сути, файловая система представляет собой структуру для хранения информации. Каждая из них разрабатывается с учетом определенных потребностей пользователей и администраторов. Например, система EXT считается наиболее простой и подходит новичкам. XFS создана для предоставления параллельного доступа к информации. ZFS, в свою очередь, считается оптимальным вариантом для работы с большими хранилищами данных.

Использование ZFS является целесообразным, так как эта файловая система обладает интуитивно понятным интерфейсом и «знает», что и где находится. К ее сильным сторонам можно отнести безопасное хранение информации, упор на целостность, наличие удобных инструментов для работы с большим объемом данных.

Основы ZFS

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

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

Важно. Необходимо понимать, что copy-on-write не гарантирует консистентность информации. Однако в ZFS используется Хэш-дерево, что позволяет предотвратить потерю данных во время работы с файловой системой.

Учитывая, что данная система пишет данные постоянно в разные места, есть проблема с фрагментацией, а также со скоростью чтения данных. Если на SSD данный вопрос более-менее решен, то с HDD дисками она стоит более остро.

Преимущества ZFS

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

  1. Консистентность и целостность. Несмотря на использование copy-on-write, в этой файловой системе очень высокий уровень надежности. Для каждого блока, начиная с самого нижнего, подсчитывается хеш-сумма и так до самого верхнего блока, что позволяет проверять состояние всей файловой системы. Метаданные имеют минимум две копии, которые хранятся в разных разделах диска. Считается, что ECC память требуется только для ZFS. На самом деле она с тем же успехом улучшит работу любой файловой системы, исключая запись неверных данных.
  2. Быстрое сжатие информации с использованием алгоритма LZ. Он позволяет обрабатывать до 800 Мб в секунду, что считается высоким показателем. Скорость чтения достигает 4,5 Гб в секунду.
  3. Атомарность, которая достигается за счет дерева Меркла. Это позволяет отказаться от ведения WAL-логов. Но надо понимать, что использование дерева Меркла “не бесплатно”. Подсчет всех хэш-сумм занимает ресурсы процессора. При получении доступа к записанной информации тоже приходится задействовать больше ресурсов в некоторых случаях. Таким образом, нужно оценить, что важнее: полная атомарность или ведение WAL-логов.
  4. Свободное создание снапшотов. Их можно передавать любым удобным способом, даже инкрементально. Целостность файла будет проверена и подтверждена получателем. С помощью снапшотов можно быстро развернуть систему при возникновении каких-либо сбоев.

Это основные преимущества ZFS файловой системы.

Архитектура ZFS

Стоит рассмотреть, как устроена эта файловая система изнутри. Представим, что есть набор дисков. Над ними появляется некая виртуальная сущность – устройство (device), которая данной файловой системой называется Vdev. Существуют разные виды Vdev. Например, Vdev Mirror дублирует информацию на разные диски и RAID-Z, который похож по принципу работы на RAID 5-7.

Выбор конкретного типа Vdev влияет на то, на что делается упор: на производительность или на объем доступного пространства.

Все логические элементы файловой системы можно разделить на 3 подсистемы:

  1. SPA. Она отвечает за распределение информации на диске и за ее хранение. Независимо от набора Vdev, пользователь будет видеть единое дисковое пространство.
  2. DMU. На этом уровне файловая система выступает объектным хранилищем в привычном его виде. Есть решения использования DMU ZFS с некоторыми модами.
  3. DSL. На этом уровне происходит использование объектного хранилища. То есть, здесь выполняется работа со снапшотами и ФС. 

Существуют и другие подсистемы, которые позволяют сделать работу с ZFS эффективнее.

ARC позволяет решить проблему чтения информации. Он сфокусирован на быстрое чтение часто используемых объектов и тех, которые были использованы недавно.

Важно. Проблема классического page cache заключается в том, что информация удаляется из кэша, если пользователь работает с файлом, размер которого превышает размер ОЗУ. ARC считается отличной заменой этой утилите. Он предполагает выполнение умного кэширования файлов с привлечением дополнительных ресурсов по мере необходимости.

При необходимости администратор может вынести кэш на отдельный SSD.

ZIL. Все сведения в ZFS записываются транзакциями. Это весьма ресурсоемкий процесс, что в некоторых случаях может стать проблемой. Таким образом, для оптимизации ресурсов необходимо максимально заполнить каждую транзакцию информацией. С помощью ZIL удается создать журнал (он занимает мало места) для обеспечения быстрой и синхронной записи.

Эти два слоя не являются обязательными, но они позволяют повысить надежность ZFS и увеличить ее производительность.

Паттерны использования ZFS и типовые конфигурации

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

  • в домашних условиях;
  • создание NFS-хранилища с использованием SSD-накопителей;
  • крупное хранилище, которое может включать в себя более 100 дисков.

Дополнительные блоки типа ARC и ZIL считаются виртуальными, поэтому их всегда можно вынести на быстрые отдельные носители. Сегодня существует много вариантов настройки ZFS, учитывая поставленную задачу. Примеры можно найти в Интернете, чтобы понять, что нужно делать в конкретно взятом случае.

ZFS vs аппаратное решение

К преимуществам аппаратного решения можно отнести следующее:

  • перенос вычислительной нагрузки на процессор;
  • использование RAID-контроллера для решения проблемы с синхронной записью.

В ZFS проблему синхронной записи требуется решать отдельно, однако в данном случае нет привязки к конкретно взятому железу, что является важным преимуществом. Достаточно указать директорию без порядка дисков, чтобы система автоматически создала пул.

К недостаткам аппаратного решения можно отнести необходимость использования полного аналога в случае возникновения проблем с техникой. При этом аппаратный RAID владеет информацией только о блоках, поэтому требуется оптимизация в зависимости от ситуации. Еще в аппаратном решении используются общие настройки для всей файловой системы. В ZFS можно настроить каждый пул отдельно.

При использовании ZFS метаданные о системе пишутся в заголовках диска. Таким образом, при поломке сервера можно вытащить диски, установить их в другой сервер, дождаться сканирования новой системы (важно, чтобы была совместимая версия ZFS), а после этого будет собран тот же пул автоматически. Если что-то пойдет не так, то ZFS сделает откат на несколько транзакций. То есть, администратор не потеряет все данные.

Таким образом, программное решение является более гибким по сравнению с аппаратным.

Особенности работы ZFS

К основным особенностям ZFS можно отнести следующее:

  1. Фрагментация данных. За счет использования copy-on-write, постоянно возникают новые блоки, но старые не всегда можно удалить. Из-за этого могут возникать пустые пространства, но они будут занимать мало места. За счет использования умного алгоритма записи информации эти свободные пространства в будущем заполняются.
  2. Запись данных. В ZFS чтение зачастую случайно, с учетом записи каждый раз в новый раздел, запись становится почти последовательной. Благодаря Write Throttling допускается использование неограниченного объема ОЗУ для подготовки txg-группы. С помощью SSD можно увеличить объем памяти для ускорения записи.
  3. Влияние количества дисков на скорость работы. При наличии многопоточной нагрузки можно использовать много Vdev. Линейного роста увидеть не удастся, но параллельная нагрузка будет эффективно распределена между имеющимися Vdev.
  4. Обработка запросов на запись с помощью системы диспетчеризации. С ее помощью можно задать приоритет.

OpenZFS и ZFS on Linux

Данные файловые системы мы уже упоминали ранее в нашей статье про типы файловых систем Linux.

Первоначально ZFS создавалась для ОС Solaris. Это была замена UFS. Однако в дальнейшем ZFS начали распространять с открытым кодом с использованием лицензии CDDL. Уже после появился форк под названием OpenZFS.

ZFS on Linux разрабатывался в США для работы с суперкомпьютерами. Задача файловой системы – заменить Ldiskfs.

В OpenZFS появилась проблема с версионированием, так как еще существует ZFS от Oracle. То есть, OpenZFS не может получать проприетарную версию от Oracle и ее исходный код.

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

Новинки последних релизов

К новинкам можно отнести следующее: нативное шифрование, позволяющее шифровать на стороне клиента без необходимости предоставлять ему ключ. Special Allocation Class – специальный Vdev, который позволяет создавать блоки данных до 4 Кб.

Планы по развитию ZFS

ZFS динамично развивается и пользуется популярностью у администраторов и программистов. Ожидается, что скоро может появиться версия для MS Windows.

На данный момент разработчики ставят на первое место повышение производительности. Например, ведутся исследования по оптимизации NVM.

Другое направление – улучшение интерфейса, чтобы он был более понятным для обычных пользователей.

Еще сейчас разрабатывают dRAID. Он позволяет оперативно восстановить избыточность, если один из HDD выходит из строя. В будущем его достаточно будет заменить. После сканирования системы пул будет обновлен.

Заключение

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

Статьи по теме:

читать 8 минут
arrow
arrow hover
читать 8 минут
arrow
arrow hover
Новости
27 декабря 202327.12.2023
Продуктовый дайджест 2023
20 декабря 202320.12.2023
читать 2 минутычитать 2 мин
Новые тарифы и возможности