Выпуск ZFS on Linux 0.8.0, рэалізацыі ZFS для ядра Linux

Пасля амаль двух гадоў распрацоўкі прадстаўлены рэліз ZFS on Linux 0.8.0, рэалізацыі файлавай сістэмы ZFS, аформленай у выглядзе модуля для ядра Linux. Праца модуля праверана з ядрамі Linux c 2.6.32 па 5.1. Гатовыя ўсталявальныя пакеты хуткім часам будуць падрыхтаваны для асноўных дыстрыбутываў Linux, уключаючы Debian, Ubuntu, Fedora, RHEL/CentOS. Модуль ZFS on Linux ужо ўваходзіць у склад дыстрыбутываў Debian, Ubuntu, Gentoo, Sabayon Linux і ALT Linux.

У рамках ZFS on 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 on Linux у склад асноўнай галіны ядра Linux, бо змешванне кода пад ліцэнзіямі GPLv2 і CDDL недапушчальна. Для абыходу дадзенай ліцэнзійнай несумяшчальнасці было вырашана распаўсюджваць прадукт цалкам пад ліцэнзіяй CDDL у выглядзе асобна загружанага модуля, які пастаўляецца асобна ад ядра. Стабільнасць кодавай базы ZFS on 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";
  • Рэалізавана новая бібліятэка 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" за кошт разбіцця на дзве фазы (вылучана асобная фаза для сканавання метададзеных і вызначэння размяшчэння блокаў з дадзенымі на дыску, што дазваляе выканаць далейшую праверку з выкарыстаннем паслядоўнага чытання дадзеных);
    • Дададзена падтрымка класаў размяшчэння дадзеных (Allocation classes),
      якія дазваляюць уключаць у пул адносна невялікія SSD-назапашвальнікі і выкарыстоўваць іх для захоўвання толькі вызначаных тыпаў часта выкарыстоўваных блокаў, такіх як метададзеных, дадзеныя DDT і дробныя блокі з файламі;

    • Павялічана прадукцыйнасць каманд для адміністравання, такіх як
      "zfs list" і "zfs get", за кошт кэшавання неабходных для іх працы метададзеных;

    • Дададзена падтрымка распаралельвання аперацый вылучэння блокаў праз запуск асобных працэсаў "allocator" для кожнай групы metaslab. На звычайных сістэмах адзначаецца прырост прадукцыйнасці на ўзроўні 5-10%, але на буйных (8 GB SSD, 128 core NUMA, 24 GB АЗП) прырост аперацый выдзялення блокаў можа дасягаць 256%;
    • Дададзена магчымасць адкладзенага выканання каманды "resilver" (перастраенне размеркавання дадзеных з улікам змены канфігурацыі назапашвальнікаў) - калі пры запуску новай аперацыі яшчэ не адпрацавала папярэдняя, ​​то новы апрацоўшчык пачне выконвацца толькі пасля заканчэння працы папярэдняга;
    • У часопіс ZIL (ZFS Intent Log) унесены аптымізацыі, якія дазваляюць ствараць і апрацоўваць блокі пры наяўнасці блокаў, яшчэ апрацоўваных сховішчам;
    • Скарочаны час рэгістрацыі раздзелаў (zvol) у сістэме. Калі пул утрымоўвае вялікую колькасць падзелаў яны зараз становяцца даступныя адразу пасля выканання «zpool import»;
    • Дададзена падтрымка апаратнага паскарэння вылічэння хэшаў SHA256 і аперацый шыфравання AES-GSM c выкарыстаннем чыпаў з падтрымкай тэхналогіі Intel QAT (Quick Assist Technology). Дададзена падтрымка сродкаў апаратнага паскарэння чыпсэта Intel C62x і CPU Atom C3000.

Крыніца: opennet.ru

Дадаць каментар