Објавување на ZFS на Linux 0.8.0, имплементација на ZFS за кернелот Linux

По речиси две години развој презентирани ослободување ZFS на Linux 0.8.0, имплементација на датотечен систем ZFS, дизајниран како модул за кернелот Линукс. Модулот е тестиран со Linux кернели од 2.6.32 до 5.1. Подготвени инсталациски пакети доаѓаат наскоро ќе бидат подготвени за главните дистрибуции на Линукс, вклучувајќи 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 prime“ е имплементирана. При одредување на опцијата „-w“, податоците што се веќе шифрирани во базенот се пренесуваат во друг базен како што е, без средно дешифрирање. За време на таквото копирање, податоците остануваат заштитени со клучот на страната што испраќа, што овозможува овој режим да се користи за резервна копија на недоверливи системи (ако примачот е компромитиран, без клучот напаѓачот нема да може да пристапи до податоците);
  • Додадена е поддршка за отстранување на примарните дискови од базен за складирање, поврзани или поединечно или како дел од огледало. Отстранувањето се врши со командата „zpool remove“. За време на процесот на бришење, податоците од отстранетиот диск се копираат на преостанатите примарни дискови во базенот;
  • Додадена е командата „zpool checkpoint“ за зачувување на моменталната состојба на базенот со можност за враќање на понатамошните промени во зачуваната точка во времето (се креира снимка од целиот базен). Презентираната карактеристика може да биде корисна во процесот на извршување на потенцијално опасни сложени административни работи што вообичаено би довеле до неповратни промени (на пример, активирање знаменца за нова функционалност на ZFS или бришење податоци);
  • Додадена е командата „zpool trim“ за информирање на дисковите што се користат во базен за секторите што повеќе не се користат. Користењето на операцијата TRIM овозможува да се зголеми ефикасноста на SSD дисковите и да се спречи влошување на нивните перформанси. За да се овозможи континуиран процес во заднина за предавање на TRIM команди, предложено е ново својство „autotrim“;
  • Додадена е командата „zpool иницијализирај“ за да се иницијализира целиот нераспределен простор на дискот, осигурувајќи дека е веднаш подготвен за употреба без да влијае на перформансите при првиот пристап (на пример, кога е хостирана виртуелизирана меморија како што е VMware VMDK);
  • Додадена е поддршка за сметководство и квоти на ниво на проект, дополнувајќи ги претходно достапните квоти на корисничко и групно ниво. Во суштина, проектите се посебен простор на објекти поврзани со посебен идентификатор (проект 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“ е забрзана со нејзино делење на две фази (посебна фаза е распределена за скенирање на метаподатоци и одредување на локацијата на податочните блокови на дискот, што овозможува понатамошна верификација со користење на секвенцијално читање податоци) ;
    • Додадена е поддршка за класите за распределба,
      овозможување релативно мали SSD-дискови да се вклучат во базен и да се користат за складирање само одредени типови на често користени блокови, како што се метаподатоци, податоци DDT и мали блокови со датотеки;

    • Зголемено извршување на командите за администрација, како на пр
      „zfs list“ и „zfs get“, поради кеширање на метаподатоците неопходни за нивното работење;

    • Додадена е поддршка за паралелизирање на операциите за распределба на блокови со лансирање на одделни процеси „алокатор“ за секоја група мета-плочи. На редовните системи, има зголемување на перформансите од 5-10%, но на големите (8 GB SSD, 128 јадра NUMA, 24 GB RAM), зголемувањето на операциите за распределба на блокови може да достигне 256%;
    • Додадена е можност за одложено извршување на командата „resilver“ (обновување на дистрибуцијата на податоци земајќи ги предвид промените во конфигурацијата на дисковите) - ако, при започнување нова операција, претходната сè уште не е завршена, тогаш новиот управувач ќе започне извршување само откако претходното ќе заврши;
    • Направени се оптимизации во дневникот на ZIL (ZFS Intent Log) за да се овозможи создавање и обработка на блокови кога има блокови кои сè уште се обработуваат од складиштето;
    • Времето за регистрирање на партиции (zvol) во системот е намалено. Кога базенот содржи голем број на партиции, тие сега се достапни веднаш по извршувањето на „zpool import“;
    • Додадена е поддршка за хардверско забрзување на пресметките на хашот SHA256 и операциите за шифрирање AES-GSM со помош на чипови кои поддржуваат Intel QAT (Технологија за брза помош). Додадена е поддршка за хардверски алатки за забрзување за чипсетот Intel C62x и процесорот Atom C3000.

Извор: opennet.ru

Додадете коментар