Po téměř dvou letech vývoje vydání , implementace souborového systému ZFS ve formě modulu pro jádro Linux. Funkčnost modulu byla ověřena s jádry Linux od 2.6.32 do 5.1. Hotové instalační balíčky budou k dispozici brzy. pro hlavní distribuce Linuxu, včetně Debianu, Ubuntu, Fedory, RHEL/CentOS. Modul ZFS na Linuxu už je součástí distribucí Debian, Ubuntu, Gentoo, Sabayon Linux a ALT Linux.
V rámci ZFS na Linuxu byla připravena implementace komponent ZFS, které se vztahují jak na fungování souborového systému, tak na činnost správce svazků. Byly implementovány komponenty: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) a ZPL (ZFS POSIX Layer). Projekt také nabízí možnost použití ZFS jako backend pro clusteringový souborový systém Lustre. Vývoj projektu se opírá o původní kód ZFS importovaný z projektu OpenSolaris a rozšířený o vylepšení a opravy od komunity Illumos. Projekt se vyvíjí za účasti zaměstnanců Livermore National Laboratory na základě smlouvy s ministerstvem energetiky USA.
Kód je distribuován pod svobodnou licencí CDDL, která není kompatibilní s GPLv2, což brání integraci ZFS na Linuxu do hlavní větve jádra Linux, protože míchání kódu licencovaných pod GPLv2 a CDDL je nepřípustné. Abychom se vyhnuli této licenční nekompatibilitě, bylo rozhodnuto distribuovat produkt zcela pod licencí CDDL formou samostatně stahovaného modulu, který je poskytován odděleně od jádra. Stabilita kódové základny ZFS na Linuxu se hodnotí jako srovnatelná s jinými souborovými systémy pro Linux.
Hlavní změny:
- Byla přidána vestavěná podpora pro šifrování uložených dat na úrovni souborového systému a oddílů. Pro šifrování se ve výchozím nastavení používá algoritmus aes-256-ccm. Pro načítání šifrovacích klíčů byla navržena příkaz „zfs load-key“;
- Byla implementována možnost přenosu šifrovaných dat při provádění příkazů „zfs send“ a „zfs receive“. Při použití volby „-w“ jsou již zašifrovaná data v poolu přenášena do jiného poolu tak, jak jsou, bez mezipaměťového dešifrování. Při této kopii zůstávají data chráněna klíčem odesílající strany, což umožňuje tento režim použít pro zálohování na nedůvěryhodné systémy (v případě kompromitace příjemce, bez klíče nemůže útočník získat přístup k datům);
- Byla přidána podpora pro odstranění primárních úložišť z úložného poolu, která mohou být připojena jak samostatně, tak v rámci zrcadlení. Odstranění se provádí pomocí příkazu „zpool remove“. Během odstraňování jsou data z vylučovaného úložiště kopírována na zbývající primární úložiště v poolu.
- Byl přidán příkaz „zpool checkpoint“ pro uložení aktuálního stavu poolu s možností vrátit budoucí změny do uloženého okamžiku (vytvoří se snapshot celého poolu). Tato funkce se může ukázat jako užitečná při provádění potenciálně nebezpečných složitých administrativních operací, které za normálních okolností vedou k nevratným změnám (například aktivace příznaků nové funkce ZFS nebo odstranění dat).
- Byl přidán příkaz „zpool trim“, který umožňuje informovat úložiště v poolu o sektorech, které již nejsou používané. Použití operace TRIM zvyšuje účinnost práce SSD úložišť a zabraňuje degradaci jejich výkonu. Pro aktivaci kontinuálního pozadí procesu přenosu příkazů TRIM bylo navrženo nová vlastnost „autotrim“.
- Byl přidán příkaz „zpool initialize“ pro inicializaci celého nealokovaného diskového prostoru, což umožňuje jeho okamžitou připravenost k použití, aniž by došlo k poklesu výkonu při prvním přístupu (například při umístění virtualizovaných úložišť, jako je VMware VMDK).
- Byla přidána podpora účtování a kvót na úrovni projektu, která doplňuje dříve dostupné kvóty na úrovni uživatele a skupiny. Projekty jsou v podstatě samostatným prostorem objektů spojených s jedinečným identifikátorem (project ID). Přiřazení se provádí pomocí operace 'chattr -p' nebo prostřednictvím dědičnosti atributů. Pro správu projektů byly představeny příkazy „zfs project“ a „zfs projectspace“, které umožňují spravovat vytváření projektů a nastavit pro ně limity diskového prostoru.
- Byla přidána možnost vytváření Lua skriptů pro automatizaci různých prací se ZFS. Skripty se spouští ve speciálních izolovaných prostředích pomocí příkazu „zpool program“.
- Byla realizována nová knihovna , která poskytuje stabilní API pro správu ZFS z aplikací napsaných v Pythonu. Knihovna je obal nad libzfs_core a nabízí identickou sadu funkcí, ale používá typy, které jsou pro Python bližší;
- Zajištěna kompatibilita utilit arcstat, arcsummary a dbufstat s Pythonem 3. Utility arcstat.py, arc_summary.py a dbufstat.py byly přejmenovány na varianty 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 vyrovnávací paměti a obchází cache;
- Představeny optimalizace výkonu:
- Zrychlena práce příkazů „scrub“ a „resilver“ rozdělením do dvou fází (byla vyčleněna samostatná fáze pro skenování metadat a určení umístění bloků s daty na disku, což umožňuje provést další kontrolu pomocí sekvenčního čtení dat);
- Přidána podpora tříd alokace (Allocation classes),
které umožňují zahrnout do poolu relativně malé SSD disky a používat je pouze pro ukládání určitého typu často používaných bloků, jako jsou metadata, data DDT a malé bloky s soubory; - Zvýšena výkonnost příkazů pro správu, jako jsou
„zfs list“ a „zfs get“, díky ukládání potřebných pro jejich fungování metadat do cache; - Přidána podpora paralelizace operací alokace bloků spuštěním samostatných procesů „allocator“ pro každou skupinu metaslab. Na běžných systémech je zaznamenán nárůst výkonu na úrovni 5-10 %, ale na velkých (8 128 GB SSD, 24 jádrové NUMA, 256 GB RAM) může nárůst operací alokace bloků dosahovat 25%;
- Přidána možnost odloženého provádění příkazu „resilver“ (rekonstrukce distribuce dat s ohledem na změnu konfigurace disků) — pokud při spuštění nové operace ještě nedokončila předchozí, nový zpracovatel začne fungovat až po dokončení předchozího;
- Do deníku ZIL (ZFS Intent Log) byly provedeny optimalizace, které umožňují vytváření a zpracovávání bloků při existenci bloků, které jsou ještě zpracovávány úložištěm;
- Zkrácena doba registrace oddílů (zvol) v systému. Když pool obsahuje velké množství oddílů, ty nyní obvykle zpřístupní ihned po provedení „zpool import“;
- Byla přidána podpora hardwarového zrychlení pro výpočty hashe SHA256 a operace šifrování AES-GSM za použití čipů s podporou technologie Intel QAT (Quick Assist Technology). Byla přidána podpora hardwarového zrychlení čipsetu Intel C62x a CPU Atom C3000.
Zdroj: opennet.ru
