A Cisco bemutatta az új PuzzleFS fájlrendszert, amely egy Rust nyelven írt modulként van megvalósítva a Linux kernelhez. A fájlrendszer izolált konténerek elhelyezésére lett tervezve, és folytatja az Atomfs fájlrendszerben javasolt elképzelések fejlődését. A megvalósítás jelenleg prototípus fázisban van, támogatja a linux rust-next branch-re való fordítást, és az Apache 2.0 és MIT licencek alatt érhető el.
A projekt célja az OCI (Open Container Initiative) formátumú konténerképek használatakor felmerülő korlátozások megkerülése. A PuzzleFS olyan feladatokat old meg, mint a duplikált adatok hatékony tárolása, közvetlen csatolás lehetősége, a képek ismételt összeállítása és a memória biztonságos kezelése.
A különböző konténerekben ismétlődő adatok deduplikálásához a FastCDC (Fast Content-Defined Chunking) algoritmust alkalmazzák, amely véletlenszerű méretű adathalmazon keresztül osztja fel az adatokat, és indexet vezet a feldolgozott darabok hash-eivel. Az ismétlődő darabokat egyszer tárolják, és közösen indexelik az összes FS réteg számára, azaz a deduplikálás különböző csatlakozási pontokat is átfoghat (új FS réteg indítható meglévő alapjából, és felhasználhatja a benne elérhető adatdarabokat a deduplikálás során).
Az ismétlődő konténerképek összeállítása a konténerképek formátumának kanonikus képviselőjének meghatározásán keresztül valósul meg. A közvetlen csatolás (direct-mount) lehetővé teszi az OCI formátumú konténerkép globálisan megosztott tárolóból való csatolását, anélkül, hogy azt előzetesen ki kellene csomagolni, és a konténer manifesztből származó tartalom hash-ét használja az azonosítóként. Az adatainak integritásának ellenőrzésére a megosztott tároló használata esetén az fs-verity mechanizmus alkalmazható, amely a fájlokhoz való hozzáférés során ellenőrzi a bináris indexben megadott hash-ek és a tényleges tartalom összhangját.
A Rust nyelvet választották, mert egyesíti a kész kód magas teljesítményét a memóriabiztonság lehetőségeivel, így csökkentve a sebezhetőségek kockázatát, amelyek a memóriaterület felszabadítása utáni hivatkozásból és a puffertúllépésből eredhetnek. A Rust alkalmazása a kernel modul számára lehetővé tette a kód közös használatát a kernelben és a felhasználói térben futó komponensek között, így létrehozva egy egységes védett megvalósítást.
A projekt egyéb céljai között szerepel: rendkívül gyors képépítés és montírozás, lehetőség opcionális köztes lépés alkalmazására a képek átalakítására (canonicalization), az mtree-stílusú fájlrendszer felülvizsgálatának kötelező elkerülése több rétegű struktúra használatakor, valamint az casync-stílusú változtatások alkalmazása és egyszerűen megvalósítható architektúra.
Forrás: opennet.ru
