kisg blogja

Projektötlet: Natív Samba 4 / NFSv4 ACL támogatás ZFS-ben Linuxon - mindez Zentyal-ba integrálva

A HUP-on indítottam egy szavazást a címben olvasható projektötletről. Alább olvasható kicsit több részlet a projektről kérdés - válasz formában.

Mik azok az ACL-ek? Egyáltalán miért kell ezzel foglalkozni?

ACL = Access Control List

A hagyományos Unix jogosultságoknál sokkal részletesebb jogosultságbeállításokat tesznek lehetővé.

Jó szokás szerint különböző ACL szabványok alakultak ki:

  • A Windows ACL megoldását a Microsoft 1993-ben vezette be
  • A POSIX.1e szabvány tervezet a hagyományos "Unix" jogosultságokat terjeszti ki
  • Az IETF szabványosította az NFSv4 protokoll részeként az NFSv4 ACL-eket. Ez a modell a Windows ACL-ein alapul. Könnyű az átjárás az NFSv4 és a Windows ACL-ek között.

Jelenleg Linux-on két gond van az ACL-ekkel:

  • A POSIX és NFSv4 / Windows modellek nem egyenértékűek -> POSIX ACL-ek konvertálhatók NFSv4 / Windows ACL-lé, de visszafele ez nem igaz, csak tökéletlen konverziók léteznek.
  • Linux alatt a POSIX modell lett implementálva.
  • A POSIX.1e tervezet sosem lett ratifikálva, és hivatalosan is megszakították a szabványosítási törekvéseket. Ennek folyománya, hogy nincs egy elfogadott szabvány ami miatt a megvalósításoknak konvergálniuk kellene.

Mik azok a Samba4 ACL-ek?

A Samba4 megvalósítja a Windows ACL-ek kezelését. Azokon a rendszereken, ahol van natív NFSv4 ACL kezelés (pl. Solaris / FreeBSD), a fájlrendszerben tárolja el azokat. Linux-on ehelyett Samba specifikus Extended Attribute ("xattr")-okat tárol el a fájlrendszerben. Ezzel a probléma, hogy erről csak a Samba tud, a rendszer többi része (pl. helyi programok, NFS szerver) nem.

Hogy jön a képbe a ZFS?

A ZFS egy modern, sok hasznos funkcióval (snapshotok, zfs send/receive, zvol, raidz, deduplikálás ... stb.) rendelkező fájlrendszer. Jelenleg Linuxon az egyetlen alternatívája a btrfs. Azonban mind a Btrfs-nek, mind a ZFS-nek vannak problémái.

Mik a problémák a Btrfs-sel?

A btrfs fejlesztése a vanilla kernelben folyik. Ennek folyománya, hogy a régebbi kernelekre épülő rendszerek támogatása akkor biztosított, ha ezt a fejlesztő megoldja.

Ha a mostani stabil, szerverekhez ajánlott, Linux terjesztéseket nézzük, akkor:

  • Ubuntu 12.04 LTS esetén a 3.2-es Linux kernelben levő implementáció támogatott, vicces ismert bugokkal
  • Oracle és SUSE esetén támogatott a BtrFS, azonban a pontos feature set, amit ez a támogatott BtrFS nyújt, vagy nyújtani fog, nem ismert (a Suse 11 SP2 release notes is inkább terveket ír le).
  • A RedHat-nál az RHEL6-ban a btrfs "tech preview" állapotban érhető el.

Mik a problémák a ZFS-sel?

Ezzel szemben a ZFS Linux implementációja (zfsonlinux.org, a zfs-fuse egy halott projekt, ne keverjük ide) licenc és technikai okok miatt is a hivatalos Linux kernelen kívül karbantartott modulokból áll. A disztribúciók támogatása nagyon jó, gyakorlatilag minden elterjedt verzióhoz elérhető csomag, pl. Ubuntu LTS-en simán "apt-get install" segítségével telepíthető. A kódbázis két részből áll:

  • Solaris Porting Layer (SPL), ami a Solaris kernel adatstruktúráit szimulálja
  • maga ZFS implementáció
  • A mi tesztjeink során eddig nem futottunk bele hibába, de az issue tracker alapján akadnak szép számmal. A felhasználói bázis is relatíve kicsi.

    Ugyanakkor a ZFS kódbázis nem Linux specifikus része stabil, jól kitesztelt kód. A Linuxos port az adatokat ugyanabban a formában tárolja, mint a Solaris (-11), vagy a FreeBSD. Ha tehát a Linuxos implementációval kapcsolatban nagyon sok gond derülne ki, még mindig van lehetőség akár FreeBSD, akár OpenSolaris irányába migrálni.

    Hát ez elég elkeserítő. Nekem egyik megoldás sem tetszik. Nincs más lehetőség?

    Nekünk sem tetszik. Ha Linux-nál maradunk, akkor marad az ext4, azonban így le kell mondani a Btrfs és ZFS előnyeiről. Samba 4 / NFSv4 ACL-ek persze itt sem lesznek integrálva a rendszerrel.

    Mi alapvetően Ubuntu LTS-t használunk, és nem is tervezünk váltani technikai és menedzsment okokból sem. Ebből adódik, hogy a btrfs következő támogatott nagy upgrade-je a 14.04-es Ubuntu-val fog számunkra érkezni. Marad a ZFS, ami az eddigi tesztek alapján óvatos optimizmusra ad okot, mindenesetre úgy tudjuk majd ezt a komponenst frissíteni, hogy továbbra is a hivatalos Ubuntu kernelt használhatjuk.

    Van már NFSv4 ACL támogatás Linuxon?

    Van egy RichACL nevű projekt, ami megvalósítja az NFSv4 kompatibilis ACL-eket néhány kiterjesztéssel. Ez kernel patchekből, és felhasználói segédprogramokból áll. A kernel patch a közös infrastruktúra (VFS) módosításokon kívül az ext4 fájlrendszerhez és a kernelben levő NFSv4 szerverhez is hozzáadja a támogatást.

    Már többször megpróbálták ezt a patchsetet beolvasztani a mainline / vanilla kernelbe. Alapvető problémák (pl. az ötlet teljes elutasítása) nincsenek vele, de eddig még nem sikerült végigvinni a folyamatot. Az utóbbi időszakban a RichACL fő fejlesztője az IBM-nél más kernel projekteken dolgozik, és nem tudni, hogy mikor lesz ideje ismét a RichACL-en dolgozni.

    A Samba fejlesztők számára is ismert a RichACL projekt, és tervezik a támogatását, amint beolvasztásra kerül a kernelbe. Sőt: egy fejlesztői változat már elérhető belőle itt: v4acls-experimental/samba.git

    Egy jó összefoglaló a projektről olvasható itt: http://www.fmeh.org/ols-2010-implementing-richacl-slides.pdf

    Hogy jön ide a Zentyal?

    A Zentyal 3 egy kényelmesen használható, kisvállalati kiszolgáló, ami Ubuntu LTS-re épül. A legújabb verziója már Samba 4-et használ, ami lehetővé teszi, hogy korlátozásokkal Active Directory-ként is használjuk. A jogosultságok beállítása legkönnyebben a Windows eszközeivel lehetséges. Ezeket a beállításokat, ahogy fentebb írtam, a Samba eltárolja, azonban a rendszer többi részének erről nincs tudomása.

    A Zentyal ZFS-t egyáltalán nem támogat. Természetesen az Ubuntu csomagok telepíthetők rá, de nincs integrálva a menedzsment felületbe, az adminisztrátornak a parancssorban kell bűvészkednie. Így a Zentyal elsődleges célcsoportja számára nem elérhető.

    Pontosan mit terveztek csinálni?

    1. RichACL támogatás hozzáadása a ZFS Linux portjához. Ezt meg lehet tenni a kernel többi részének módosítása nélkül, mivel a user space -> kernel adatátvitelhez a RichACL is az xattr API-t használja. Innen kell a ZFS modulban kiolvasni a beállításokat, és konvertálni a natív ZFS beállításokra. A ZFS implementáció ezután már kezelni fogja az így beállított ACL-eket.

    2. A Samba4 RichACL modul frissítése, és beküldése a hivatalos fába. Elérni, hogy a Zentyal-ban ezzel a modullal fordított Samba-t szállítsanak.

    3. A Zentyal-hoz egy ZFS modul kifejlesztése, ami lehetővé teszi a poolok, datasetek, zvolok, snapshotok, clone-ok, és backupok (zfs send / receive) kezelését. Amennyiben lehetséges, a modul bejuttatását a következő (3.1, 3.2?) hivatalos Zentyal kiadásba.

    4. Az első 3 pont sikere esetén megkezdjük a munkát a RichACL patchset vanilla kernelbe olvasztásán.

    Alkalmasak vagytok a feladatra?

    Cégünknek jelentős tapasztalata van nyílt forráskódú fejlesztésekkel és a kernel fejlesztéssel is, a legkülönfélébb platformokon.

    Konkrétan a ZFS illetve a Samba projektekkel még nem dolgoztunk, de a forráskód rövid átnézése alapján mindkét projekt jól kezelhető, nem fog problémát jelenteni.

    Mire szolgál ez a szavazás?

    Jelenleg egy ekkora projektet önerőből nem tudunk bevállalni. Csak úgy tudunk nekikezdeni, ha valamilyen formában finanszírozókat találunk. Ennek egyik formája a crowdsourcing alapú előfinanszírozás (pl. Kickstarter). Egy másik forma lehet az utólagos támogatások használata (PayPal, Flattr ... stb.).

    Ezzel a szavazással megpróbáljuk felmérni, hogy van-e érdeklődés a projekt iránt, érdemes-e további energiát belefektetnünk.

    iPhone vs Android Konferencia

    Előadást tartottam (Kis Gergely) az iPhone vs Android konferencián multiplatform szoftverfejlesztésről "iPhone és Android két jó barát..." címmel.

    Az előadás diái letölthetők erről az oldalról.

    Emellett végre feltöltöttük a korábbi Android előadások anyagait is a Publikációk oldalra.

    Google Android fejlesztői szemmel - Előadás a szegedi Szabad Szoftver Konferencián

    Előadást tartottam a szegedi Szabad Szoftver Konferencián "Google Android fejlesztői szemmel" címmel.

    Az előadás után egy workshop keretében a gyakorlatban is bemutattam, hogy milyen kényelmes az Android fejlesztői környezete. Példaprogramként az általunk fejlesztett PreziMote alkalmazás szolgált, amely az OpenOffice.org bemutatókat tudja vezérelni Bluetooth-on keresztül.

    A diák letölthetők innen.

    67TB RAID6 tárhely 4U szerverben 1.5 millió forintért

    Egy érdekes blog bejegyzést tettek közzé a BackBlaze Blogján, amelyben leírják, hogy hogyan készítettek saját adattároló megoldást a hasonló kereskedelmi megoldások árának 10-edéből.

    Kis ízelítő a specifikációból:

    • 45 db 1500 GB-os merevlemez
    • 9 db SATA port többszöröző
    • 4 db SATA vezérlő kártya
    • 1 db Intel alaplap és processzor
    • 4 GB RAM
    • 2 db ATX tápegység

    Robbantott nézet a BackBlaze Storage Pod-ról

    A teljes blog bejegyzés itt olvasható.

    A teljes képhez természetesen hozzátartozik, hogy ez egy backup szolgáltatásra és nem például adatbázisok kiszolgálására tervezett hardver.

    Vélemény: El kell-e fogadni a felkínált lehetőséget

    A Nyílt forrás a közszférában sorozat 5. részében ezt írtam:

    "Ez (a közbeszerzés) egy olyan lehetőség, amelyet a nyílt forráskódot és a nyílt szabványokat támogató közösségnek meg kell ragadnia."

    Erre válaszul egy régi kedves ismerősöm és kollégám a következőket írta:

    Nyílt forrás a közszférában (5. rész): Első pillantás a közbeszerzési felhívásra

    Az ígéreteknek megfelelően megjelent a közbeszerzési értesítőben a szoftverlicencek beszerzésére kiírt részvételi felhívás.

    Ez egy olyan lehetőség, amelyet a nyílt forráskódot és a nyílt szabványokat támogató közösségnek meg kell ragadnia: ez az első eset, hogy lehetőség van ezeknek a megoldásoknak a jelentősebb elterjesztésére a közigazgatásban és az oktatásban.

    A siker alapvetően azon múlik, hogy képesek-e a különböző profitorientált és non-profit szervezetek összefogni a közös cél érdekében.

    A következőkben áttekintjük a kiírás tartalmát.

    Nyílt forrás a közszférában (4. rész): Buktatók és lehetőségek

    Az előző részekben röviden áttekintettük a nyílt forráskódú licenceket, és a nyílt forrásra építő üzleti modelleket.

    Ebben a részben néhány, a nyílt forrású szoftverek alkalmazásának eredményességét veszélyeztető buktatóra szeretnénk felhívni a figyelmet, valamint azt járjuk körül, hogy milyen konkrét előnyökkel jár a nyílt forrású szoftverekre történő átállás.
    Végül egy vázlatot adunk egy hosszú távon költséghatékony szoftverfejlesztési és -karbantartási modellre, amely a nyílt forráskódú szoftverek használatára épít.

    Frissítés: Átfogalmaztam a modellvázlat leírását a jobb érthetőség érdekében.

    Nyílt forrás a közszférában (3. rész): Példák nyílt forrásra épülő üzleti modellekre

    Az előző részben áttekintettük a leggyakoribb nyílt forráskódú licenctípusokat, és a nyílt forrásra alapuló üzleti modelleket.

    Most néhány ismertebb példával mutatjuk be a különböző modellek gyakorlati felhasználását:

    Nyílt forrás a közszférában (2. rész): Nyílt forrásra épülő üzleti modellek

    A sorozat első részében röviden áttekintettük a kormányzat terveit a nyílt forrású szoftverek beszerzésére kiírandó 12 milliárd forint keretösszegű közbeszerzésről.

    A sajtó sajnos a legritkább esetben tesz különséget a nyílt forráskódú (open source) és az ingyenes (freeware) szoftverek között. Ugyan a legismertebb nyílt forráskódú szoftverek valóban licencdíj fizetése nélkül hozzáférhetők, a nyílt forráskódú szoftverek legnagyobb előnye, hogy a felhasználó nemcsak a felhasználás jogát kapja meg a szoftver gyártójától, hanem a továbbfejlesztés és a továbbértékesítés jogát és lehetőségét is.

    Tartalom átvétel