Vydání ZFS na Linuxu 0.8.0, implementace ZFS pro linuxové jádro

Po téměř dvou letech vývoje prezentovány uvolnění ZFS na Linuxu 0.8.0, implementace souborového systému ZFS zabaleného jako modul pro linuxové jádro. Modul byl testován s linuxovými jádry od 2.6.32 do 5.1. Připravené instalační balíčky již brzy bude připraveno pro hlavní distribuce Linuxu včetně Debian, Ubuntu, Fedora, RHEL/CentOS. Modul ZFS na Linuxu je již obsažen v distribucích Debian, Ubuntu, Gentoo, Sabayon Linux a ALT Linux.

V rámci ZFS na Linuxu je připravena implementace komponent ZFS souvisejících jak s provozem souborového systému, tak s fungováním volume manageru. Konkrétně jsou implementovány následující komponenty: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) a ZPL (ZFS POSIX Layer). Projekt navíc poskytuje možnost používat ZFS jako backend pro souborový systém clusteru Luster. Práce projektu je založena na původním kódu ZFS importovaném z projektu OpenSolaris a rozšířeném o vylepšení a opravy od komunity Illumos. Projekt je vyvíjen za účasti zaměstnanců Národní laboratoře v Livermore na základě smlouvy s ministerstvem energetiky USA.

Kód je distribuován pod bezplatnou licencí CDDL, která je nekompatibilní s GPLv2, což neumožňuje integraci ZFS na Linuxu do hlavní větve linuxového jádra, protože míchání kódu pod licencemi GPLv2 a CDDL není povoleno. Aby se předešlo této licenční nekompatibilitě, bylo rozhodnuto distribuovat celý produkt pod licencí CDDL jako samostatně načítatelný modul, který je dodáván odděleně od jádra. Stabilita ZFS na kódové základně Linuxu je hodnocena jako srovnatelná s jinými systémy souborů pro Linux.

Hlavní změny:

  • Přidána vestavěná podpora pro šifrování uložených dat na úrovni souborového systému a diskových oddílů. Výchozí šifrovací algoritmus je aes-256-ccm. Pro načtení šifrovacích klíčů byl navržen příkaz "zfs load-key";
  • Implementována schopnost přenášet šifrovaná data při provádění příkazů 'zfs send' a 'zfs receiver'. Když zadáte možnost „-w“, data již zašifrovaná ve fondu se přenesou do jiného fondu tak, jak jsou, bez přechodného dešifrování. Při takovém kopírování zůstávají data chráněna klíčem odesílatele, což umožňuje využít tento režim pro zálohování do nedůvěryhodných systémů (v případě kompromitace příjemce se útočník bez klíče k datům nedostane);
  • Přidána podpora pro odebírání primárních disků z fondu úložiště, připojených jednotlivě i jako součást zrcadlení. Odstranění se provádí příkazem "zpool remove". Proces odstranění zkopíruje data z vyloučené jednotky na zbývající primární jednotky ve fondu;
  • Přidán příkaz "zpool checkpoint" pro uložení aktuálního stavu fondu s možností vrátit zpět další změny do uloženého bodu v čase (vytvoří se snímek celého fondu). Tato funkce může být užitečná v procesu provádění potenciálně nebezpečné složité administrativní práce, která za normálních podmínek vede k nevratným změnám (například aktivace příznaků pro novou funkcionalitu ZFS nebo vymazání dat);
  • Byl přidán příkaz "zpool trim", který informuje jednotky používané ve fondu o sektorech, které se již nepoužívají. Použití operace TRIM umožňuje zvýšit účinnost SSD a zabránit degradaci jejich výkonu. Byla navržena nová vlastnost "autotrim", která umožňuje nepřetržitý proces přenosu příkazů TRIM na pozadí;
  • Přidán příkaz "zpool initialize" pro inicializaci veškerého nepřiděleného místa na disku, což umožňuje, aby byl okamžitě připraven k použití, bez snížení výkonu při prvním přístupu (například při hostování virtualizovaných úložišť, jako je VMware VMDK);
  • Přidána podpora pro účtování a kvóty na úrovni projektu, kromě dříve dostupných kvót na úrovni uživatelů a skupin. Projekty jsou v podstatě samostatným prostorem objektů spojeným se samostatným identifikátorem (ID projektu). Vazba je definována pomocí operace 'chattr -p' nebo prostřednictvím dědičnosti atributů. Pro správu projektů jsou uvedeny příkazy „zfs project“ a „zfs projectspace“, které umožňují spravovat vytváření projektů a nastavovat pro ně limity místa na disku;
  • Přidána možnost vytvářet Lua skripty pro automatizaci různé práce se ZFS. Skripty jsou spouštěny ve speciálních izolovaných prostředích pomocí příkazu "zpool program";
  • Implementována nová knihovna pyzfs, který poskytuje stabilní API pro správu ZFS z aplikací Python. Knihovna je obalem kolem libzfs_core a poskytuje identickou sadu funkcí, ale používá bližší typy Pythonu;
  • Obslužné programy arcstat, arcsummary a dbufstat byly upraveny tak, aby byly kompatibilní s Pythonem 3. Obslužné programy arcstat.py, arc_summary.py a dbufstat.py byly přejmenovány na verze bez přípony „.py“;
  • Přidána podpora pro rozhraní jádra Linux Direct IO (O_DIRECT), které umožňuje přístup k datům bez ukládání do vyrovnávací paměti a obcházení mezipaměti;
  • Zavedeny optimalizace výkonu:
    • Práce příkazů „scrub“ a „resilver“ byla urychlena díky rozdělení na dvě fáze (samostatná fáze byla přidělena pro skenování metadat a určování umístění bloků s daty na disku, což umožňuje další ověřování pomocí sekvenčních dat čtení);
    • Přidána podpora pro alokační třídy,
      umožnění sdružování a používání relativně malých SSD k ukládání pouze určitých typů běžně používaných bloků, jako jsou metadata, data DDT a bloky malých souborů;

    • Vylepšený výkon admin příkazů jako např
      "zfs list" a "zfs get", ukládáním metadat nezbytných pro jejich provoz do mezipaměti;

    • Přidána podpora pro paralelizaci operací alokace bloků spuštěním samostatných procesů alokátorů pro každou skupinu metaslabů. Na konvenčních systémech dochází ke zvýšení výkonu o 5-10 %, ale na velkých (8 128 GB SSD, 24 jader NUMA, 256 GB RAM) může nárůst operací alokace bloků dosáhnout 25 %;
    • Přidána možnost odloženého provedení příkazu „resilver“ (přebudování distribuce dat s přihlédnutím ke změnám v konfiguraci pohonů) – pokud předchozí ještě není dokončen při zahájení nové operace, pak nový handler začne provádět až po předchozí skončil;
    • Do ZIL (ZFS Intent Log) byly přidány optimalizace, které umožňují vytváření a zpracování bloků v přítomnosti bloků, které úložiště stále zpracovává;
    • Snížená doba registrace pro oddíly (zvol) v systému. Když fond obsahuje velký počet oddílů, jsou nyní dostupné ihned po provedení "importu zpool";
    • Přidána podpora pro hardwarově urychlený výpočet hashů SHA256 a operace šifrování AES-GSM pomocí čipů Intel QAT (Quick Assist Technology). Přidána podpora hardwarové akcelerace čipové sady Intel C62x a CPU Atom C3000.

Zdroj: opennet.ru

Přidat komentář