Пускане на ZFS на Linux 0.8.0, реализации на ZFS за ядрото на Linux

След близо две години разработка представени освобождаване ZFS на Linux 0.8.0, реализация на файловата система ZFS, пакетирана като модул за ядрото на Linux. Модулът е тестван с Linux ядра от 2.6.32 до 5.1. Очаквайте скоро готови инсталационни пакети ще бъдат подготвени за основни Linux дистрибуции, включително Debian, Ubuntu, Fedora, RHEL/CentOS. Модулът ZFS on Linux вече е включен в дистрибуциите на Debian, Ubuntu, Gentoo, Sabayon Linux и ALT Linux.

Като част от ZFS на Linux е подготвена реализация на ZFS компоненти, свързани както с работата на файловата система, така и с функционирането на том мениджъра. По-специално са внедрени следните компоненти: SPA (Разпределител на пул за съхранение), DMU (Единица за управление на данни), ZVOL (ZFS емулиран том) и ZPL (ZFS POSIX слой). Освен това проектът предоставя възможност за използване на ZFS като бекенд за клъстерната файлова система Luster. Работата по проекта се основава на оригинален 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 и да се предотврати влошаване на тяхната производителност. Беше предложено ново свойство "autotrim", което да позволи непрекъснатия фонов процес на предаване на TRIM команди;
  • Добавена е команда "zpool initialize" за инициализиране на цялото неразпределено дисково пространство, което му позволява да бъде незабавно готов за използване, без влошаване на производителността при първи достъп (например, когато хоствате виртуализирани хранилища като VMware VMDK);
  • Добавена е поддръжка за счетоводство и квоти на ниво проект, в допълнение към наличните по-рано квоти на ниво потребител и група. По същество проектите са отделно пространство от обекти, свързани с отделен идентификатор (ID на проекта). Свързването се дефинира чрез операцията 'chattr -p' или чрез наследяване на атрибути. За управление на проекти са представени командите „zfs project“ и „zfs projectspace“, които ви позволяват да управлявате създаването на проекти и да задавате ограничения на дисковото пространство за тях;
  • Добавена е възможност за създаване на Lua скриптове за автоматизиране на различна работа със ZFS. Скриптовете се изпълняват в специални изолирани среди с помощта на командата "zpool program";
  • Внедрена нова библиотека pyzfs, който предоставя стабилен 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“ е ускорена поради разделяне на две фази (отделна фаза е разпределена за сканиране на метаданни и определяне на местоположението на блокове с данни на диска, което позволява допълнителна проверка с помощта на последователни данни четене);
    • Добавена поддръжка за класове за разпределение,
      позволявайки относително малки SSD да бъдат обединени и използвани за съхраняване само на определени типове често използвани блокове, като метаданни, DDT данни и малки файлови блокове;

    • Подобрена производителност на администраторски команди като
      "zfs list" и "zfs get", като кешират необходимите за работата им метаданни;

    • Добавена е поддръжка за паралелизиране на операциите за разпределяне на блокове чрез изпълнение на отделни процеси на разпределител за всяка група metaslab. При конвенционалните системи има увеличение на производителността от 5-10%, но при големите (8 128 GB SSD, 24 ядра 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

Добавяне на нов коментар