След почти две години разработка релиз , реализиращи файловата система ZFS, оформена като модул за ядро на Linux. Работата на модула е проверена с ядра на Linux от 2.6.32 до 5.1. Готови инсталационни пакети ще бъдат налични скоро за основните дистрибуции на Linux, включително Debian, Ubuntu, Fedora, RHEL/CentOS. Модулът ZFS на Linux вече е включен в дистрибуциите Debian, Ubuntu, Gentoo, Sabayon Linux и ALT Linux.
В рамките на ZFS на Linux е подготвена реализация на компонентите ZFS, свързани както с работата на файловата система, така и с функционирането на мениджъра на томове. По-специално, реализирани са компонентите: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) и ZPL (ZFS POSIX Layer). Допълнително проектът осигурява възможност за използване на ZFS като бекенд за клъстерната файловата система Lustre. Разработките на проекта са базирани на оригиналния код на ZFS, импортиран от проекта OpenSolaris и разширен с подобрения и корекции от общността Illumos. Проектът се развива с участието на служители на Ливерморската национална лаборатория по контракт с Министерството на енергетиката на САЩ.
Кодът се разпространява под свободната лицензия CDDL, която е несъвместима с GPLv2, което не позволява интегрирането на ZFS на Linux в основната част на ядрото на Linux, тъй като смесването на код под лицензите GPLv2 и CDDL е недопустимо. За да се заобиколи това лицензионно несъответствие, бе решено продуктът да се разпространява изцяло под лицензия CDDL под формата на отделно зареждан модул, който се предлага отделно от ядрото. Стабилността на кодовата база на ZFS на Linux се оценява като сравнима с други ФС за Linux.
Основни промени:
- Добавена е вградена поддръжка за криптиране на съхраняваните данни на ниво файловата система и дялове. По подразбиране за криптиране се използва алгоритъм aes-256-ccm. За зареждане на ключовете за криптиране е предложена команда „zfs load-key“;
- Реализирана е възможността за предаване на криптирани данни при изпълнение на командите „zfs send“ и „zfs receive“. При посочване на опцията „-w“ вече криптираните данни в пула се предават на друг пул без междинна декрипция. При подобно копиране данните остават защитени с ключа на изпращащата страна, което позволява използването на този режим за резервно копиране на ненадеждни системи (в случай на компрометиране на получателя, без ключа атакуващият няма да може да получи достъп до данните);
- Добавена поддръжка за премахване на първични носители от хранилищния пул, свързани както поотделно, така и в състава на огледало. Премахването се извършва с командата «zpool remove». В процеса на премахване данните от изключения носител се копират на оставащите в пула първични носители;
- Добавена е команда «zpool checkpoint» за запазване на текущото състояние на пула с възможност за възстановяване на измененията до запазения момент (създава се снимка на целия пул). Предоставената функционалност може да бъде полезна при изпълнението на потенциално опасни сложни административни дейности, които при нормални условия водят до необратими промени (например, активиране на флагове за нова функционалност на ZFS или почистване на данни);
- Добавена е команда «zpool trim», позволяваща да се уведомят използваните в пула носители за секторите, които вече не се използват. Прилагането на операцията TRIM дава възможност за повишаване на ефективността на SSD носителите и предотвратяване на деградацията на техните производителност. За включване на непрекъснат фонов процес за предаване на команди TRIM е предложено ново свойство «autotrim»;
- Добавена е команда «zpool initialize» за инициализиране на всичкото неразпределено дисково пространство, което позволява неговата мигновена готовност за използване, без загуба на производителност при първия достъп (например, при разполагане на виртуализирани хранилища, като VMware VMDK);
- Добавена е поддръжка за счетоводство и квоти на ниво проект, допълващи преди това наличните квоти на ниво потребител и група. По същество проектите са отделно пространство от обекти, свързани с отделен идентификатор (project ID). Привързването се определя чрез операцията ‘chattr -p’ или чрез наследяване на атрибути. За управление на проектите са представени командите «zfs project» и «zfs projectspace», позволяващи управление на създаването на проекти и задаване на лимити за дисково пространство;
- Добавена е възможност за създаване на Lua скриптове за автоматизация на различни работи с ZFS. Скриптовете се изпълняват в специализирани изолирани среди с помощта на командата «zpool program»;
- Реализирана е нова библиотека , предоставяща стабилен API за администриране на ZFS от приложения на Python. Библиотеката е обвивка над libzfs_core и предоставя идентичен набор функции, но прилага близки до Python типове;
- Обезпечена съвместимост на утилитите arcstat, arcsummary и dbufstat с Python 3. Утилитите arcstat.py, arc_summary.py и dbufstat.py са преименувани в варианти без разширение «.py»;
- Добавена е поддръжка на интерфейса на ядрото Linux Direct IO (O_DIRECT), позволяващ достъп до данните без буфериране и извън кеша;
- Представени са оптимизации на производителността:
- Ускорена е работата на командите «scrub» и «resilver» чрез разделяне на две фази (отделена фаза за сканиране на метаданни и определяне на местоположението на блоковете с данни на диска, което позволява допълнителна проверка с последователно четене на данни);
- Добавена е поддръжка на класове за разположение на данни (Allocation classes),
позволяващи да се включват в пула относително малки SSD-дискoве и да се използват само за съхранение на определени типове често използвани блокове, като метаданни, данни DDT и малки блокове с файлове; - Увеличена е производителността на командите за администриране, като
«zfs list» и «zfs get», чрез кеширане на необходимите метаданни за тяхната работа; - Добавена е поддръжка на паралелизиране на операциите по разпределение на блокове чрез стартиране на отделни процеси «allocator» за всяка група metaslab. На обикновени системи се наблюдава увеличение на производителността от 5-10%, но на големи (8 128 GB SSD, 24 core NUMA, 256 GB RAM) увеличението на операциите по разпределение на блокове може да достигне 25%;
- Добавена е възможност за отложено изпълнение на команда «resilver» (преструктуриране на разпределението на данните с оглед на промяната в конфигурацията на дисковете) — ако при стартиране на нова операция предишната все още не е приключила, то новият обработчик ще започне да се изпълнява само след завършване на предишния;
- В журнала ZIL (ZFS Intent Log) са направени оптимизации, позволяващи създаване и обработка на блокове при наличие на блокове, които все още се обработват от хранилището;
- Съкращено е времето за регистрация на разпределения (zvol) в системата. Когато пула съдържа голям брой разпределения, те сега стават достъпни веднага след изпълнение на «zpool import»;
- Добавена поддръжка на хардуерно ускорение на изчисленията за хешове SHA256 и AES-GSM криптографски операции с използване на чипове, поддържащи Intel QAT (Quick Assist Technology). Добавена е поддръжка на хардуерното ускорение на чипсета Intel C62x и CPU Atom C3000.
Източник: opennet.ru
