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
Стоит обратить внимание на сильные стороны данной файловой системы, чтобы администраторы могли понимать, насколько она будет полезна в работе.
- Консистентность и целостность. Несмотря на использование copy-on-write, в этой файловой системе очень высокий уровень надежности. Для каждого блока, начиная с самого нижнего, подсчитывается хеш-сумма и так до самого верхнего блока, что позволяет проверять состояние всей файловой системы. Метаданные имеют минимум две копии, которые хранятся в разных разделах диска. Считается, что ECC память требуется только для ZFS. На самом деле она с тем же успехом улучшит работу любой файловой системы, исключая запись неверных данных.
- Быстрое сжатие информации с использованием алгоритма LZ. Он позволяет обрабатывать до 800 Мб в секунду, что считается высоким показателем. Скорость чтения достигает 4,5 Гб в секунду.
- Атомарность, которая достигается за счет дерева Меркла. Это позволяет отказаться от ведения WAL-логов. Но надо понимать, что использование дерева Меркла “не бесплатно”. Подсчет всех хэш-сумм занимает ресурсы процессора. При получении доступа к записанной информации тоже приходится задействовать больше ресурсов в некоторых случаях. Таким образом, нужно оценить, что важнее: полная атомарность или ведение WAL-логов.
- Свободное создание снапшотов. Их можно передавать любым удобным способом, даже инкрементально. Целостность файла будет проверена и подтверждена получателем. С помощью снапшотов можно быстро развернуть систему при возникновении каких-либо сбоев.
Это основные преимущества ZFS файловой системы.
Архитектура ZFS
Стоит рассмотреть, как устроена эта файловая система изнутри. Представим, что есть набор дисков. Над ними появляется некая виртуальная сущность – устройство (device), которая данной файловой системой называется Vdev. Существуют разные виды Vdev. Например, Vdev Mirror дублирует информацию на разные диски и RAID-Z, который похож по принципу работы на RAID 5-7.
Выбор конкретного типа Vdev влияет на то, на что делается упор: на производительность или на объем доступного пространства.
Все логические элементы файловой системы можно разделить на 3 подсистемы:
- SPA. Она отвечает за распределение информации на диске и за ее хранение. Независимо от набора Vdev, пользователь будет видеть единое дисковое пространство.
- DMU. На этом уровне файловая система выступает объектным хранилищем в привычном его виде. Есть решения использования DMU ZFS с некоторыми модами.
- 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 можно отнести следующее:
- Фрагментация данных. За счет использования copy-on-write, постоянно возникают новые блоки, но старые не всегда можно удалить. Из-за этого могут возникать пустые пространства, но они будут занимать мало места. За счет использования умного алгоритма записи информации эти свободные пространства в будущем заполняются.
- Запись данных. В ZFS чтение зачастую случайно, с учетом записи каждый раз в новый раздел, запись становится почти последовательной. Благодаря Write Throttling допускается использование неограниченного объема ОЗУ для подготовки txg-группы. С помощью SSD можно увеличить объем памяти для ускорения записи.
- Влияние количества дисков на скорость работы. При наличии многопоточной нагрузки можно использовать много Vdev. Линейного роста увидеть не удастся, но параллельная нагрузка будет эффективно распределена между имеющимися Vdev.
- Обработка запросов на запись с помощью системы диспетчеризации. С ее помощью можно задать приоритет.
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 имеет открытый код и активно используется разными компаниями, сейчас ведется активная работа по аккумулированию данных в одном месте для централизации кода. За счет высокого уровня надежности и относительно простого управления эта файловая система часто применяется при работе с большими хранилищами. У нее большой потенциал, что считается важным преимуществом. Скорее всего, она будет использоваться еще много лет и станет полноценной заменой для многих файловых систем, которые применяются в хранилищах сейчас.