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
Новости
13 сентября 202413.09.2024
читать 2 минутычитать 2 мин
Дайджест обновлений продуктов
18 апреля 202418.04.2024
читать 2 минутычитать 2 мин
Дайджест обновлений продуктов Q1
5 апреля 202405.04.2024
читать 1 минутучитать 1 мин
ProCloud CPO Диана Беда в рейтинге ИТ-лидеров от Global CIO
Создать учетную
запись ProCloud
arrow
arrow hover
 
Имя, Фамилия*
Номер телефона
Электронный адрес*
Ваше сообщение*
Файл
Файл
Файл
Файл
Файл
Файл
Файл
Файл
Файл
Файл
Тип формы
ID тикета Zendesk
Продукт
IP
 

Создайте бесплатную учетную запись или напишите нам, чтобы узнать больше.

Нажимая «Отправить заявку» вы даете свое согласие на обработку своих персональных данных

Что еще советуем почитать:

Имитация сбоев: Как Хаос-Инжиниринг Повышает Надежность IT-Систем
Технологии
3 сентября 202403.09.2024
Имитация сбоев: Как Хаос-Инжиниринг Повышает Надежность IT-Систем

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

читать 12 минут
Какое облако подойдет для стартапа: выбор по ключевым параметрам
Технологии
13 августа 202413.08.2024
Какое облако подойдет для стартапа: выбор по ключевым параметрам

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

читать 12 минут
Управление и настройка ВМ на базе OPNsense
Технологии
15 июня 202415.06.2024
Управление и настройка ВМ на базе OPNsense

Узнайте, как управлять и настраивать роутер через консоль, SSH и веб-интерфейс. Наше пошаговое руководство охватывает настройку интерфейсов, назначение IP-адресов, смену паролей и сброс настроек с подробными инструкциями и полезными скриншотами.

читать 20 минут