Több mint két év fejlesztése után megjelent az OpenZFS 2.2 projektkiadása, amely a ZFS fájlrendszer Linuxra és FreeBSD-re való megvalósítását fejleszti. A projekt a "ZFS on Linux" néven vált ismertté, és korábban a Linux kernelhez írt modul fejlesztésére korlátozódott, de a FreeBSD támogatásának átadásával az OpenZFS alapértelmezett megvalósításává vált és átnevezték.
Az OpenZFS működése ellenőrizve lett a Linux 3.10 és 6.5 közötti kerneljeivel, valamint a FreeBSD összes verziójával, kezdve a 12.2-RELEASE-től. A kód szabad CDDL licensz alatt terjed. Az OpenZFS-t már használják a FreeBSD-n és része a Debian, Ubuntu, Gentoo, Sabayon Linux és ALT Linux disztribúcióknak. A fő Linux disztribúciók, köztük a Debian, Ubuntu, Fedora, RHEL/CentOS számára a közeljövőben előkészítendő új verziójú csomagok várhatók.
Az OpenZFS megvalósítja a ZFS komponenseit, amelyek a fájlrendszer működésével és a kötetkezelő működésével kapcsolatosak. Különösen a következő komponensek lettek implementálva: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) és ZPL (ZFS POSIX Layer). Továbbá a projekt biztosította a ZFS használatának lehetőségét a Lustre klaszter fájl rendszerének backendjeként. A projekt munkája az eredeti ZFS kódra alapozva valósult meg, amely az OpenSolarisból került importálásra és a közösség Illumos által végzett fejlesztéseivel és javításaival bővült. A projekt a Livermore Nemzeti Laboratórium munkatársainak közreműködésével fejlődik az Egyesült Államok Energiaügyi Minisztériumával kötött szerződés keretében.
A kód egy szabad CDDL licenc alatt terjed, amely nem kompatibilis a GPLv2-vel, ami megakadályozza az OpenZFS integrálását a Linux kernel fő ágába, mivel a GPLv2 és CDDL licenc alatt álló kódok keveredése elfogadhatatlan. A licencelési inkompatibilitás kikerülésére azt a döntést hozták, hogy a terméket teljes egészében CDDL licenc alatt, külön letölthető modul formájában terjesztik, amely külön kerül forgalomba a kerneltől. Az OpenZFS kódalap stabilitása más Linux fájlrendszerekkel összehasonlíthatónak minősül.
Főbb változások:
- Bevezetésre került egy blokklonk mechanizmus, amely lehetővé teszi fájl vagy annak részének másolatának létrehozását adatduplikálás nélkül, az eredeti fájl már meglévő adaton tárolt blokkjaira való hivatkozás használatával. Amikor módosításokat hajtanak végre az eredeti fájlon vagy annak másolatán, a blokkok másolása történik, és a módosításokat a létrehozott másolatokba végzik el (copy-on-write fájl szinten). A klónozási mechanizmus alapján a reflink művelet valósult meg, amely különböző másoló programokban automatikus klónok létrehozására használható, például a Linux új verzióiban a /bin/cp-ben.
- Támogatást kapott a Linux konténerszigeteléséhez alkalmazott technológiák, például a renameat rendszerhívás, az overlayfs fájlrendszer, a felhasználói azonosítók térképezése a csatoláskor és a névtér delegálása a konténerek számára.
- Hibaüzenetek naplózása valósult meg a ellenőrző összeg (scrub) ellenőrzési műveletek végrehajtása során. A "zpool status" parancs végrehajtásakor információk jelennek meg az összes fájlrendszerről, pillanatképről és klónról, amelyeket a sérült blokk érint. A sérült blokkok ismert gyors helyreállításához a "zpool scrub -e" parancs használható.
- Lehetőség nyílt a BLAKE3 kriptográfiai hashfüggvény használatára az ellenőrző összegekhez, amely kiemelkedő, rendkívül magas hash számítási teljesítménnyel bír (háromszor gyorsabb, mint Edon-R, és jelentősen gyorsabb, mint a sha256 és sha512), miközben a SHA-3 szintű megbízhatóságot nyújt.
- Megvalósult a «zfs receive -c» művelet, amelyet a sérült adatok (nem a metaadatok) helyreállítására lehet használni a fájlrendszerben, pillanatfelvételekben és klónokban, abban az esetben, ha van egy korábban készített másolt biztonsági mentés a «zfs send» paranccsal.
- Hozzáadva a virtuális lemez vdev-ekhez való programozott tulajdonságok beállításának és olvasásának támogatása.
- Lehetőség nyílt tetszőleges felhasználói tulajdonságok vdev-hez és zpool-hoz való hozzárendelésére, hasonlóan a zfs dataset-ek felhasználói tulajdonságaihoz.
- Javítva lett az adaptív ARC (Adaptive Replacement Cache) megvalósítása, amely javítja az olvasási műveletek teljesítményét. Az ARC mostantól jobban alkalmazkodik a magas terhelésekhez, és minimalizálja a kézi beállításoptimalizálás szükségességét.
- Hozzáadva a SHA2 ellenőrző összegek számításának hardveres gyorsítása.
- Átírták és optimalizálták az Edon-R ellenőrző összegek megvalósítását.
- A zstd adatok tömörítésének alkalmazása esetén felgyorsult a tömörítés értelmetlenségének meghatározása (az adatok nem tömöríthetők).
- Fejlesztések történtek az előzetes betöltési (Prefetch) mechanizmusban, amelyek felgyorsítják a teljesítményt intenzív I/O esetén.
- Áttekinthető általános optimalizációk, amelyek javítják a teljesítményt.
Forrás: opennet.ru
