ZFS на базе проекта «ZFS on Linux» (Александр Клыга, LVEE-2019)
Материал из 0x1.tv
- Докладчик
- Александр Клыга
What is the project "openZFS"? It's concept evolution open source project "ZFS on Linux" in future.
Содержание
- 1 Видео
- 2 Презентация
- 3 Thesis
- 4 Архитектура, лицензионные ограничения и перспективы развития файловой системы ZFS в рамках проекта openZFS
- 5 Проблемы лицензионной совместимости с платформой ОС Linux
- 6 Решения проблемы лицензирования и реализации ZFS в ОС Linux
- 7 Решение проблемы архитектурной несовместимости ОС Solaris и Linux
- 8 Дальнейшее развитие ZFS в рамках проекта openZFS
- 9 Примечания и ссылки
Видео
Презентация
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
- Код ZFS распространяется под лицензией CDDL (Common Development and Distribution License), несовместимой с лицензией GPLv2 ядра Linux, что не дает возможность включения его в состав основной ветки ядра Linux, а изменение типа лицензии в силу исторических и иных причин уже невозможно.
- Официально все права на 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.
Дополнительно был реализован еще один компонент IL включенный в состав ZFS в 2009 году “Lustre” позволяющий использовать ZFS в роли бэкенда для кластерных и сетевых файловых систем, например Lustre или pNFS (рисунок [xx:klyga:fig2]).
Использование данного компонента позволяет упростить интеграцию распределенных и сетевых файловых систем с 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 и развивается отдельно.
Примечания и ссылки
- [ Talks page]
- Discuss on Facebook
- Discuss on VK
- ↑ Dustin Kirkland. ZFS Licensing and Linux http://blog.dustinkirkland.com/2016/02/zfs-licensing-and-linux.html
- ↑ ZFS on Linux. Release zfs-0.8.0 https://github.com/zfsonlinux/zfs/releases
Plays:622 Comments:4