A ZFS kiadása Linux 0.8.0 rendszeren, a ZFS megvalósítása a Linux kernelhez

Közel két év fejlesztés után bemutatott kiadás ZFS Linuxon 0.8.0, a ZFS fájlrendszer megvalósítása modulként csomagolva a Linux kernelhez. A modult 2.6.32 és 5.1 közötti Linux kernelekkel tesztelték. Hamarosan kész telepítőcsomagok érkeznek készülni fognak nagyobb Linux disztribúciókhoz, mint például a Debian, Ubuntu, Fedora, RHEL/CentOS. A ZFS on Linux modul már megtalálható a Debian, Ubuntu, Gentoo, Sabayon Linux és ALT Linux disztribúciókban.

A Linuxon futó ZFS részeként elkészült a fájlrendszer működésével és a kötetkezelő működésével kapcsolatos ZFS komponensek implementációja is. Különösen a következő összetevőket valósítják meg: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) és ZPL (ZFS POSIX Layer). Ezenkívül a projekt lehetővé teszi a ZFS-t a Luster fürt fájlrendszer háttérprogramjaként. A projekt munkája az OpenSolaris projektből importált eredeti ZFS-kódon alapul, amelyet az Illumos közösségtől származó fejlesztésekkel és javításokkal bővítettek. A projekt fejlesztése a Livermore National Laboratory munkatársainak részvételével zajlik az Egyesült Államok Energiaügyi Minisztériumával kötött szerződés alapján.

A kód ingyenes CDDL licenc alatt kerül terjesztésre, ami nem kompatibilis a GPLv2-vel, ami nem teszi lehetővé a Linuxon futó ZFS integrálását a Linux kernel fő ágába, mivel a kód keverése GPLv2 és CDDL licencek alatt nem megengedett. A licenc-összeférhetetlenség megkerülése érdekében úgy döntöttek, hogy a teljes terméket a CDDL licenc alatt külön-külön betölthető modulként terjesztik, amelyet a magtól külön szállítanak. A Linux kódbázison futó ZFS stabilitása összehasonlítható más Linux fájlrendszerekkel.

Nagy változások:

  • Hozzáadott beépített támogatás a tárolt adatok titkosításához a fájlrendszer és a partíciók szintjén. Az alapértelmezett titkosítási algoritmus az aes-256-ccm. A "zfs load-key" parancsot javasolták a titkosítási kulcsok betöltésére;
  • Megvalósította a titkosított adatok átvitelének lehetőségét a „zfs send” és „zfs Receive” parancsok végrehajtásakor. A „-w” opció megadásakor a készletben már titkosított adatok átkerülnek egy másik készletbe, közbenső visszafejtés nélkül. Az ilyen másolásnál az adatokat a küldő kulcsa védi, ami lehetővé teszi, hogy ezzel a móddal biztonsági másolatot készítsünk megbízhatatlan rendszerekre (ha a címzettet feltörik, a támadó nem tud hozzáférni az adatokhoz a kulcs nélkül);
  • Hozzáadott támogatás az elsődleges meghajtók tárolókészletből való eltávolításához, külön-külön és tükör részeként is csatlakoztatva. Az eltávolítás a "zpool remove" paranccsal történik. A törlési folyamat átmásolja az adatokat a kizárt meghajtóról a készlet többi elsődleges meghajtójára;
  • Hozzáadtuk a "zpool checkpoint" parancsot a készlet jelenlegi állapotának mentéséhez, amely lehetővé teszi a mentett időpont további módosításainak visszaállítását (a teljes készletről pillanatkép készül). Ez a funkció hasznos lehet a potenciálisan veszélyes összetett adminisztrációs munka során, amely normál körülmények között visszafordíthatatlan változásokhoz vezet (például új ZFS-funkciók jelzőinek aktiválása vagy adatok törlése);
  • A "zpool trim" parancs hozzáadásra került, hogy tájékoztassa a készletben használt meghajtókat a már nem használt szektorokról. A TRIM művelet használata lehetővé teszi az SSD-k hatékonyságának növelését és teljesítményük romlásának megelőzését. Egy új "autotrim" tulajdonságot javasoltak, amely lehetővé teszi a TRIM parancsok továbbításának folyamatos háttérfolyamatát;
  • Hozzáadott "zpool inicializálás" parancs az összes le nem osztott lemezterület inicializálására, amely lehetővé teszi, hogy azonnal használatra készen álljon, anélkül, hogy az első hozzáféréskor csökkenne a teljesítmény (például virtualizált tárolók, például VMware VMDK tárolásakor);
  • Hozzáadott támogatás a könyveléshez és a projektszintű kvótákhoz, a korábban elérhető felhasználói és csoportszintű kvóták mellett. Lényegében a projektek külön azonosítóval (projektazonosítóval) társított objektumok külön tere. Az összerendelés a 'chattr -p' művelettel vagy az attribútum öröklődésével definiálható. A projektkezeléshez a „zfs project” és a „zfs projectspace” parancsok jelennek meg, amelyek lehetővé teszik a projektek létrehozásának kezelését és a lemezterület korlátozásának beállítását;
  • Hozzáadtuk a Lua szkriptek létrehozásának lehetőségét a ZFS-sel végzett különféle munkák automatizálásához. A parancsfájlok speciális izolált környezetekben futnak a "zpool program" paranccsal;
  • Új könyvtár bevezetése pyzfs, amely stabil API-t biztosít a ZFS Python alkalmazásokból történő adminisztrálásához. A könyvtár a libzfs_core körüli burkolóanyag, és azonos függvénykészletet biztosít, de közelebbi Python-típusokat használ;
  • Az arcstat, arcsummary és dbufstat segédprogramokat kompatibilissé tették a Python 3-mal. Az arcstat.py, arc_summary.py és dbufstat.py segédprogramokat átnevezték a „.py” kiterjesztés nélküli verziókra;
  • Hozzáadott támogatás a Linux Direct IO (O_DIRECT) kernel interfészhez, amely lehetővé teszi az adatok elérését pufferelés és a gyorsítótár megkerülése nélkül;
  • Bevezetett teljesítményoptimalizálások:
    • A „scrub” és „resilver” parancsok munkája felgyorsult a két fázisra osztás miatt (külön fázist jelöltek ki a metaadatok szkennelésére és a lemezen lévő adatokat tartalmazó blokkok helyének meghatározására, amely lehetővé teszi a további ellenőrzést szekvenciális adatok felhasználásával olvasás);
    • Kiosztási osztályok támogatása,
      lehetővé teszi a viszonylag kisméretű SSD-k összevonását, és csak bizonyos típusú, általánosan használt blokkok, például metaadatok, DDT adatok és kis fájlblokkok tárolására való felhasználását;

    • Az adminisztrátori parancsok jobb teljesítménye, mint pl
      "zfs list" és "zfs get" a működésükhöz szükséges metaadatok gyorsítótárazásával;

    • Támogatás hozzáadva a blokkkiosztási műveletek párhuzamosításához, külön lefoglaló folyamatok futtatásával minden metaslab csoporthoz. A hagyományos rendszereken 5-10%-os teljesítménynövekedés tapasztalható, de a nagyokon (8 128 GB SSD, 24 magos NUMA, 256 GB RAM) a blokkkiosztási műveletek növekedése elérheti a 25%-ot is;
    • Hozzáadtuk a "resilver" parancs késleltetett végrehajtásának lehetőségét (az adatelosztás újraépítése a meghajtók konfigurációjában bekövetkezett változások figyelembevételével) - ha az előző még nem fejeződött be új művelet indításakor, akkor az új kezelő csak azután kezdi meg a végrehajtást. az előző befejeződött;
    • A ZIL-hez (ZFS Intent Log) optimalizálások kerültek, amelyek lehetővé teszik a blokkok létrehozását és feldolgozását a tároló által még feldolgozott blokkok jelenlétében;
    • Csökkentett partíciók regisztrációs ideje (zvol) a rendszerben. Ha egy készlet nagyszámú partíciót tartalmaz, ezek a "zpool import" végrehajtása után azonnal elérhetőek;
    • Hozzáadott támogatás az SHA256 kivonatok hardveresen gyorsított kiszámításához és az AES-GSM titkosítási műveletekhez Intel QAT (Quick Assist Technology) chipek használatával. Hozzáadott támogatás az Intel C62x lapkakészlet és az Atom C3000 CPU hardveres gyorsításához.

Forrás: opennet.ru

Hozzászólás