ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019)

Материал из 0x1.tv

(перенаправлено с «20190824BA»)
Докладчик
Александр Клыга.jpg
Александр Клыга

What is the project "openZFS"? It's concept evolution open source project "ZFS on Linux" in future.

Видео

on youtube

Презентация

Архитектура ZFS (Александр Клыга, LVEE-2019).pdf Архитектура ZFS (Александр Клыга, LVEE-2019).pdf Архитектура ZFS (Александр Клыга, LVEE-2019).pdf Архитектура ZFS (Александр Клыга, LVEE-2019).pdf Архитектура ZFS (Александр Клыга, LVEE-2019).pdf Архитектура ZFS (Александр Клыга, LVEE-2019).pdf
ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019).pdf

Thesis

Архитектура, лицензионные ограничения и перспективы развития файловой системы ZFS в рамках проекта openZFS

ZFS (Zettabyte File System) — 128 битная файловая система была разработана двумя инженерами компании Sun Microsystems для хранения больших объемов данных (например, максимальный общим объемом тома может достигать 256 зеттабайт), с использованием концепции динамического распределения блоков из общего хранилища. В ней используется модель объектных транзакций на основе механизма копирования при записи (Copy-On-Write COW), поддерживается проверка целостности информации с возможность автоматического восстановления, создание снимков, обеспечение отказоустойчивости с помощью технологии RAID-Z. В состав ее компонентов включен менеджер логических томов для управления виртуальными абстракциями пулов хранения данных на базе физических устройств, с возможностью облегченного администрирования с использованием интерфейса командной строки. Дополнительные возможности определяются версией пула (ZFS Pool Version) и его реализацией в зависимости от дистрибутива операционной системы.

В 2006 году начаты работы по включению файловой системы ZFS в состав операционной системы (ОС) Linux, несмотря на проблемы лицензирования и архитектурной не совместимости ОС Solaris и Linux.

Проблемы лицензионной совместимости с платформой ОС Linux

  1. Код ZFS распространяется под лицензией CDDL (Common Development and Distribution License), несовместимой с лицензией GPLv2 ядра Linux, что не дает возможность включения его в состав основной ветки ядра Linux, а изменение типа лицензии в силу исторических и иных причин уже невозможно.
  2. Официально все права на ZFS принадлежат компании Oracle, однако так как код ZFS распространяется под лицензией CDDL, порты для других операционных систем и платформ могут производиться без участия Oracle, что дает возможность делать собственную разработку на базе исходного проекта.

Решения проблемы лицензирования и реализации ZFS в ОС Linux

Первым решением по поддержке ZFS в Linux стало разработка порта FUSE, данное решение было представлено в 2006 году и позволило реализовать локальную файловую систему хранения данных большой емкости в пространстве пользователя.

Вторым решением стала разработка нативного порта (native port) для Linux, старт данному проекту был дан в 2008 году, а возглавил его Брайан Белендорф вместе с сотрудниками Ливерморской национальной лаборатории. В мае 2010 года, для обхода проблемы лицензирования он предложил метод реализации ZFS для Linux в виде загружаемого модуля (под лицензией CDDL) поставляемого отдельно от ядра. При этом, что бы соответствовать требованиям лицензии GPLv2 модуль ZFS поставляется в виде исходных кодов и собирается в системе пользователя, например, с использованием DKMS (Dynamic Kernel Module Support), непосредственно после установки пакета. Для дистрибутивов на базе RHEL/CentOS была добавлена возможность установки модуля ZFS в виде универсального kABI-tracking kmod пакета.

В дальнейшим все наработки в данном направлении стали основой проекта “ZFS on Linux” (ZOL).

В том же 2010 году было объявлено о закрытии проекта OpenSolaris, что стало поводом для создания ответвления (форка) в рамках которого были продолжены работы по развитию открытой спецификации ZFS.

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

Ключевым для развития ZFS на платформе Linux стал 2016 год, когда были опубликованы некоторые разъяснения по итогам анализа результатов исследования юристов компании Canonical о в лицензионной совместимости модуля ZFS и ядра Linux на предмет возможности его использования в дистрибутиве[1]. Несмотря на неоднозначные результаты и последующие дискуссии с правозащитной организацией Software Freedom Conservancy (SFC), сначала компания компании Canonical включила модуль поддержки ZFS в состав своего дистрибутива Ubuntu, а затем разработчики Debian добавили его в репозитории проекта.

Решение проблемы архитектурной несовместимости ОС Solaris и Linux

Архитектурно файловая система ZFS состоит их трех основных слоев:

  • «Interface Layer» (IL), основные компоненты «ZFS Emulated Volume» (ZVOL) и «ZFS POSIX Layer» (ZPL):
  • «Transactional Object Layer» (TOL), основной компонент «Data Management Unit» (DMU);
  • «Pooled Storage Layer» (PSL), основной компонент «Storage Pool Allocator» (SPA).

Четвертый компонент Layered Driver Interface (LDI) реализован только в ОС Solaris и представляет собой набор компонентов интерфейсов взаимодействия с физическими накопителями и реализации дополнительных функций обработки их отказов.

Поэтому в архитектуру ZFS (рисунок [xx:klyga:fig1]) были внесены изменения и вместо LDI был добавлен новый слой получивших название «Solaris Porting Layer» (SPL) в состав которого были включены реализации компонентов и вспомогательных утилит портированых из Solaris.

Файл:Xx klyga arch zfs
caption Архитектура ZFS для ОС Linux

Дополнительно был реализован еще один компонент IL включенный в состав ZFS в 2009 году “Lustre” позволяющий использовать ZFS в роли бэкенда для кластерных и сетевых файловых систем, например Lustre или pNFS (рисунок [xx:klyga:fig2]).

Файл:Xx klyga zfs lustre
caption Дополнительный компонент “Lustre”

Использование данного компонента позволяет упростить интеграцию распределенных и сетевых файловых систем с ZFS, однако, при этом она остается локальной файловой системой.

Возможности ZFS на базе проекта “ZFS on Linux”

Функциональные возможности ZFS на базе проекта “ZFS on Linux”:

  • режим multihost (MMP, Multi Modifier Protection);
  • расширенная система квот;
  • шифрование наборов данных;
  • раздельный выбор классов распределения блоков (allocation classes);
  • использование векторных процессорных инструкций для ускорения реализация RAIDZ и вычисления контрольных сумм;
  • поддержку хранения контрольных сумм с использованием более надёжных криптографических хэшей SHA-512, Skein и Edon-R;
  • защиту операций импорта пула в отказоусточивых конфигурациях;
  • поддержка больших dnode для оптимизации работы с метаданными;
  • дополнительные параметры (более 50) для тонкой настройки работы модуля ядра;
  • улучшенный инструментарий командной строки.

Дополнительные возможности определяются версией модуля и ядра дистрибутива ОС Linux.

Дальнейшее развитие ZFS в рамках проекта openZFS

До конца 2017 года основной вклад в развитие ZFS вносил проект “ZFS on Linux” совместно с компанией Delphix с использованием наработок основанных на оригинальном коде ZFS, импортированном из проекта OpenSolaris и расширенном улучшениями и исправлениями от сообщества Illumos.

Однако в 2018 году компания Delphix приняла решение о прекращении поддержки развития ZFS и переходе на использование кода проекта “ZFS on Linux” [1], что привело к стагнации проекта Illumos.

В конце 2018 года о намерении перейти на проект “ZFS on Linux” объявила команда разработчиков FreeBSD [2]. Таким образом вся активность по развитию и сопровождению проектов связанных с открытыми реализациями ZFS на базе проекта openZFS сократилась до одного “ZFS on Linux”.

Новый релиз модуля ZFS для ядра Linux версии 0.8.0 был представлен 23 мая 2019 года, и включает в себя много изменений и дополнений[2]. Однако, при этом необходимо учитывать, что реализация ZFS на базе проекта openZFS не обеспечивает полноценной совместимости с продуктами компании Oracle и развивается отдельно.

ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019)!.jpg

Примечания и ссылки

  1. Dustin Kirkland. ZFS Licensing and Linux http://blog.dustinkirkland.com/2016/02/zfs-licensing-and-linux.html
  2. ZFS on Linux. Release zfs-0.8.0 https://github.com/zfsonlinux/zfs/releases

Plays:622   Comments:4