След почти две години разработка релиз , реализирана файловата система 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-накопители в пула и използването им за съхранение само на определени типове често използвани блокове, като метаданни, данни 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
