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

21 Мая 2021

zfs-1.jpgКазалось бы, объединив в единую архитектуру менеджер логических томов и концепцию файловой системы, можно существенно упростить управление дисковым массивом. На этом тривиальном принципе в 2005 году крупным производителем ПО Sun Microsystems и была основана во многом прорывная файловая система ZFS, интегрированная первоначально в ОС Solaris.

Zettabyte File System или ZFS — новейшая транзакционная файловая система, работающая с использованием механизма copy-on-write и оперирующая одновременно на нескольких уровнях абстракции данных.

Сейчас это продолжающий развиваться безопасный, масштабируемый и чрезвычайно удобный в администрировании опенсорсный инструмент.

Файловая система и менеджер томов ZFS отличаются в первую очередь целостностью данных и рядом встроенных функций хранения:

  • Репликация — процесс создания копий объектов.
  • Дедупликация избавляет от избыточных копий данных и сокращает издержки хранения.
  • Сжатие позволяет уменьшить количество битов, необходимых для представления данных.
  • Снапшоты — копия файлов и каталогов в определенный момент времени.
  • Клонирование — копирование системы и ее структуры один-в-один.
  • Защита данных — превентивные методы, позволяющие избежать потерь данных при внешних сбоях.

Принципы работы

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

ZFS сохраняет как минимум две копии метаданных каждый раз, когда данные записываются на диск. Метаданные включают в себя такую ​​информацию, как:

  • Секторы диска, в которых хранятся данные;
  • Размер блоков данных;
  • Контрольную сумму фрагмента данных в двоичной записи.

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

ZFS - это copy-on-write файловая система (или с механизмом копирования при записи), хотя Oracle называет используемый механизм еще как редирект при записи. Когда ZFS записывает данные на диск, они не перезаписывают данные на месте: ZFS записывает новый блок в другое место на диске и обновляет метаданные, чтобы оставить ссылку на вновь записанный блок, сохраняя при этом более старые версии данных.

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

ZFS — файловая система, пользующаяся спросом для сетевых систем хранения, использующих Network File System поверх файловой системы, а также в средах виртуальных серверов. Другой распространенный сценарий развертывания — это распределенные файловые системы, как, например, General Parallel File System (GPFS) или Lustre поверх ZFS для привязки дополнительных серверных узлов. Пользователи OpenStack могут развернуть ZFS в качестве базовой файловой системы для блочного хранилища Cinder и хранилища объектов Swift.

Аренда выделенного
сервера
Разместим оборудование
в собственном дата-центре
уровня TIER III.
Конфигуратор сервера
Подбор оборудования для решения Ваших задач и экономии бюджета IT

Ключевые особенности ZFS

Моментальные снимки. ZFS и OpenZFS могут создавать копии файловой системы в заданный момент времени буквально «на лету», поскольку система сохраняет все копии данных. Снимки представляют собой неизменяемые копии файловой системы, тогда как результаты клонирования системы можно изменять. Снапшоты интегрированы в загрузочные среды с ZFS на Solaris, что позволяет пользователям вернуться к любому состоянию системы, если что-то пойдет не так. Еще одно ключевое преимущество ZFS — это средство восстановления от программ-вымогателей.

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

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

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

Безопасность. ZFS и OpenZFS поддерживают делегированные разрешения и детализированные списки управления доступом для управления тем, кто может выполнять административные задачи. Пользователи могут настроить ZFS как доступную только для чтения, поэтому данные нельзя будет изменить. Oracle также поддерживает шифрование в ZFS на Solaris.

Массивы RAID-Z в ZFS

Массив дисков RAID-Z позволяет хранить одни и те же данные в нескольких местах для повышения отказоустойчивости и производительности. Система восстанавливает данные на утерянном диске, используя информацию, хранящуюся на других дисках системы. Подобно RAID 5, в ZFS RAID-Z распределяет информацию параллельно по каждому диску, чтобы система хранения могла функционировать даже в случае выхода из строя одного диска. Однако в случае с RAID-Z чередующиеся данные представляют собой блок динамического объема.

Хоть RAID-Z обычно и сравнивают с RAID 5, некоторые операции он выполняет иначе: так, например, в RAID-Z известен так называемый «write hole effect», когда система не может определить, какие данные или блоки были записаны на диск по причине сбоя питания или внезапного прекращения работы системы. Вендоры, использующие традиционный RAID, обычно решают эту проблему при помощи источника бесперебойного питания или специального оборудования.

RAID-Z2 поддерживает потерю двух устройств хранения, аналогично RAID 6, а RAID-Z3 может выдержать потерю трех устройств хранения. Пользователи могут объединять диски в группы, как в обычном массиве RAID. Например, система с двумя группами по шесть дисков, настроенная как RAID-Z3, может выдержать потерю трех дисков в каждой группе.

Преимущества и недостатки ZFS

zfs-2.pngZFS объединяет файловую систему и менеджер томов, поэтому пользователям не нужно использовать и изучать отдельные инструменты и наборы команд. ZFS бесплатно предлагает богатый набор функций и сервисов, так как он встроен в ОС Oracle — OpenZFS с открытым исходным кодом находится в свободном доступе. Файловую систему можно расширить, добавив диски в пул хранения. Традиционные файловые системы требуют изменения размера раздела диска для увеличения емкости, и пользователям зачастую требуется вспомогательный софт для управления томами.

Если распределенные файловые системы, в числе которых, например, GPFS и Lustre, можно масштабировать до нескольких серверов, то ZFS может работать только на одном сервере.

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

В сообществе Linux бытуют различные мнения о лицензировании в отношении распространения кода ZFS и бинарных модулей ядра. Например, производитель ПО Red Hat считает недопустимым распространять код, защищенный по CDDL, вместе с кодом, защищенным по общедоступной лицензии (GPL). Напротив, компания Canonical, распространяющая Ubuntu, пришла к выводу, что такой подход соответствует условиям лицензий CDDL и GPL.

ZFS и OpenZFS: в чем разница?

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

Список улучшений, которые Oracle внес в ZFS с 2010 года, включает:

  • шифрование;
  • сохранение сжатых данных при перезагрузках ОС в адаптивном кэше L2;
  • загрузочные метки, обеспечивающие поддержку физических дисков и томов виртуальных дисков размером более 2 ТБ;
  • квоты пользователей и групп по умолчанию;
  • мониторинг пула и файловой системы.

В числе обновлений OpenZFS, внесенных сообществом разработчиков ПО с открытым исходным кодом:

  • дополнительные алгоритмы сжатия;
  • возобновляемая отправка и загрузка, позволяющая перезапустить длительную операцию переноса ZFS в случае сбоя в работе;
  • сжатие данных при отправке и загрузке снимком ZFS, что позволяет системе перемещать сжатые данные из одного пула ZFS в другой без необходимости распаковывать и повторно сжимать данные;
  • сжатие ARC, позволяющее ZFS хранить сжатые данные в памяти, не занимая существенное пространство в кэше;
  • максимальный размер блока увеличен со 128 Кб до 16 Мб для повышения производительности при работе с большими файлами и ускорения восстановления данных после сбоя в работе накопителя.

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

Варианты использования

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

Системный администратор среднего бизнеса тратит 20% своего времени на планирование, изменение, администрирование и ремонт дисковых массивов трех серверов. С ZFS это время сокращается вдвое.

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

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

Еще один пользователь настроил 18-дисковый массив SAS для работы в зеркальном режиме, каждая группа из девяти дисков содержит одну ветвь RAIDZ2. На одном из дисков отказала механика внутри гермоблока. Он удаленно деактивирует диск, заменяет его новым, активирует этот диск, а затем использует команду ZFS zpool replace для замены неисправного диска. ZFS автоматически восстанавливает данные на этом диске с нулевым временем простоя и минимальным влиянием на передачу данных или производительность массива.

Популярные услуги
Получить консультацию специалиста
Персональный ассистент
Cloud.Xelent