След 11 месеца разработка, публикуван е релизът на проекта OpenZFS 2.4.0, който развива реализацията на файловата система ZFS за Linux и FreeBSD. Проектът стана известен като "ZFS on Linux" и преди това се ограничаваше до разработката на модул за ядрото на Linux, но след сливането с кода от FreeBSD беше признат за основна реализация на OpenZFS и преименуван.
Работата на OpenZFS е тествана с ядра на Linux от 4.18 до 6.18 и всички версии на FreeBSD, започвайки от 13.3. Кодът се разпространява под свободната лицензия CDDL. OpenZFS вече се използва в FreeBSD и е включен в дистрибуции на Debian, Ubuntu, Gentoo, NixOS и ALT Linux. Пакетите с новата версия скоро ще бъдат подготвени за основните дистрибуции на Linux, включително Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS предоставя реализация на компонентите на ZFS, свързани както с работата на файловата система, така и с функционирането на мениджъра на томове. Реализирани са компонентите: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) и ZPL (ZFS POSIX Layer). Проектът също така позволява използването на ZFS като бекенд за клъстерната файловата система Lustre. Разработките на OpenZFS са основани на оригиналния код на ZFS, импортиран от проекта OpenSolaris и разширен с подобрения и корекции от общността Illumos. Проектът се развива с участието на служителите на Ливърморската национална лаборатория по договор с Министерството на енергетиката на САЩ.
Кодът се разпространява под свободната лицензия CDDL, която не е съвместима с GPLv2, което не позволява интеграцията на OpenZFS в основната клонка на ядрото на Linux, тъй като смесването на код с лицензи GPLv2 и CDDL не е допустимо. За да се заобиколи лицензионната несъвместимост, е решено продуктът за Linux да се разпространява изцяло под лицензия CDDL във вид на отделно зареждащ модул, предлаган отделно от ядрото. Стабилността на кодовата база на OpenZFS се оценява като comparable с други файлови системи за Linux.
Основни промени:
- Реализирана е възможността за задаване на квоти по подразбиране за потребители, групи и проекти. В предишни версии квотите можеха да се задават само поотделно за всеки потребител. В новата версия се появи възможността за задаване на стойност по подразбиране, която ще се прилага, ако за конкретен потребител не е зададена квота.
- Добавена възможност за върнат режим на директно въвеждане/извеждане (O_DIRECT, Direct I/O) към използването на лек механизъм за некеширано въвеждане/извеждане (Uncached I/O) за заявки, които не са подравнени по страниците на паметта и не се поддържат в Direct I/O.
- Предложен е нов унифициран алгоритъм за ограничаване на скоростта на операции за запис и разполагане на блокове, който намалява фрагментацията на vdev (Virtual Device), чрез агрегация на няколко операции за запис и използване на по-големи непрекъснати свободни области вместо поставяне на резултатите от единични операции за запис в малки свободни области.
- Повишена производителност на криптиране чрез използване на инструкции AVX2 в реализацията на алгоритъма AES-GCM. В проведените тестове ускорение достига до 80%.
- Разрешено е разполагане на ZIL-блокове (ZFS Intent Log) не само на нормални vdev или на отделно устройство SLOG, но и на специални vdev. Ако нормалният vdev е свързан с твърд диск, а специалният vdev с SSD-накопител, промяната позволява да се избягват ситуации, при които данните се записват на SSD, а свързаните с тях блокове ZIL на твърд диск, което води до ненужни забавяния.
- Разрешава се задаването на свойството special_small_blocks за дялове (ZVOL), а не само за файлови системи, което позволява организирането на разполагането на малки блокове на отделен специален vdev, например на SSD-накопител.
- Добавен е режим за презаписване «zfs rewrite -P», който по възможност оставя логичното време на създаване непроменено, позволявайки различаване на блоковете, просто преместени в пула от блоковете, действително променени от потребителя.
- За командите «zpool trim», «zpool scrub» и «zpool initialize» е реализирана опция «-a» (—all), позволяваща изпълнение на тези команди веднага за всички импортирани пулове.
- Добавена е команда «zpool scrub -S -E» за изпълнение на проверка на контрольните суми на данните, попадащи в указаните интервали от време.
- Добавени са нови оптимизации на процеса на дедупликация.
Източник: opennet.ru
