Een interface voor ZFSonLinux in Python - Wie helpt mee?

Door FireDrunk op maandag 2 juni 2014 17:54 - Reacties (19)
Categorie: -, Views: 6.302

Ik loop al tijden met het idee (en ben al wat speelprulsels verder) om een simpele, maar doeltreffende webinterface te maken in Python voor ZFSonLinux.

Het moet eigenlijk de volgende features hebben.
  • Basic ZFS Management
    • Pool management (View, Create, Delete)
    • Volume management (VDEV's etc)
    • Settings management per Filesystem (Compressie, Dedup)
    • ZVOL Management
  • Basic Disk Management
    • (GPT) Partitie Management
    • S.M.A.R.T. Informatie
    • Spindown settings
  • Basic Share Management
    • NFS
    • iSCSI
    • Samba
  • Basic Graphing
    • IOPS Monitoring (Per protocol: NFS, iSCSI, SMB, Lokaal)
En dit alles in Python icm Django en wat andere tools... Maar nu komt het... Ik kan dat *echt* niet alleen... Ik ben afgestudeerd programmeur, maar kan zo'n groot project niet alleen vorm geven.

Dus wat nu? Juist, lezers vragen!

Wie helpt er mee?

Volgende: Django-ZFS - Pre Alpha 06-'14 Django-ZFS - Pre Alpha
Volgende: ZFSonLinux - Hoe partitioneer ik nou mijn schijven? 05-'14 ZFSonLinux - Hoe partitioneer ik nou mijn schijven?

Reacties


Door Tweakers user i-chat, maandag 2 juni 2014 18:24

is dit niet een heel klein beetje het wiel opnieuw uitvinden,

openmediavault kan eigenlijk alles al, en volgens mij zijn die druk bezig met de laatste tuning aan een zfs plugin, wellicht kun je beter overwegen om daar eens naar te kijken en eventueel verbeteringen in aan te brengen.

Door Tweakers user CiPHER, maandag 2 juni 2014 18:53

Wat ik me afvraag is waarom je van het BSD platform naar Linux bent overgestapt. Zeker voor ZFS zie ik BSD wel als ideaal platform. Ook de ontwikkelingen met bhyve vind ik erg interessant. Wat zijn de kernredenen om toch voor Linux te kiezen?

Door Tweakers user FireDrunk, maandag 2 juni 2014 19:06

i-chat schreef op maandag 02 juni 2014 @ 18:24:
is dit niet een heel klein beetje het wiel opnieuw uitvinden,

openmediavault kan eigenlijk alles al, en volgens mij zijn die druk bezig met de laatste tuning aan een zfs plugin, wellicht kun je beter overwegen om daar eens naar te kijken en eventueel verbeteringen in aan te brengen.
Ah, ik wist niet dat OpenMediaVault een ZFS plugin had! Zij zijn toch de overblijvers van de FreeNAS 7.x Branch?
CiPHER schreef op maandag 02 juni 2014 @ 18:53:
Wat ik me afvraag is waarom je van het BSD platform naar Linux bent overgestapt. Zeker voor ZFS zie ik BSD wel als ideaal platform. Ook de ontwikkelingen met bhyve vind ik erg interessant. Wat zijn de kernredenen om toch voor Linux te kiezen?
Ik vind dat niet echt iets om hier te bediscussiŽren :)

[Reactie gewijzigd op maandag 2 juni 2014 19:07]


Door Tweakers user CiPHER, maandag 2 juni 2014 19:15

Akkoord. Al is het natuurlijk heel relevant voor je project en diens bestaansrecht; zeker als OpenMediaVault ook met ZFS bezig gaat.

Keuze voor Python klinkt wel goed. Zou je dan ook CurlyMo's webserver gebruiken of een gelijksoortige oplossing? Of wordt je project enkel een web-interface wat mensen op Apache/Nginx moeten installeren, zoals napp-it?

Door Tweakers user DXaroth, maandag 2 juni 2014 20:02

Mits er goed gekeken wordt naar het abstraheren van bepaalde lagen, zou het (uiteindelijk) weinig moeten uitmaken of het op BSD of Linux moet draaien, mits de platform-dependant libraries natuurlijk gelijk (genoeg) liggen.

Door Tweakers user johnkeates, maandag 2 juni 2014 20:54

Het is inderdaad niet heel ZoL specifiek. ZFS draait op Linux net zo goed als op BSD, en de commando's, input en output is nagenoeg identiek.

Je zal misschien een DAL-achtige constructie moeten maken voor het bewerken van statische configuratie bestanden die mogelijkerwijs op andere plekken staan of andere soorten rechten hebben, maar dat heb je altijd wel, zelfs binnen unices en linuxen tussen distributies.

Ik denk dat een goede universele (en stijlbare!) interface een uitkomst kan zijn voor de wildgroei aan NAS-software die ZFS ondersteunt. Leuk voor die tonnen ZFS distro's met BSD of Linux ondergrondjes, maar uiteindelijk zullen de meeste mensen naast de installer alleen maar een webinterface nodig hebben. Dan is al die tijd en moeite die nu in distro-specifieke zaken gaat een beetje verspilling als je ook samen 1 universele interface kan maken met optioneel laagjes of addons voor specifieke platformen.

Zo lang "zfs" en "zpool" beschikbaar zijn kan je eigenlijk al een interface maken die alleen daar al mee werkt. Goed, je zal je schijven moeten kunnen vinden en herkennen, maar dat is niet het grootste probleem, en daar zijn ook voldoende bibliotheken voor die in bijna alle talen in alle grote distro's te vinden zijn.

Ik denk dat een project als dit prima uitgevoerd kan worden als het goed universeel gebouwd wordt en niet op Linux of BSD specifieke zaken gebouwd wordt.

Daarentegen lijkt het me wel van belang om een doelgroep uit te kiezen. Ik zal zelf nooit een webinterface gaan gebruiken, ik SSH overal naartoe, HTTP is voor plaatjes en Facebook :+

Door Tweakers user i-chat, maandag 2 juni 2014 21:36

ergens snap ik het idee wel, maar als je dan een gui wilt maken voor zfs dan zou ik bijna eerder aanraden om een zfs framework ofzo te maken als een soort controller package die je in andere pakketen kunt intergeren, zodat je zaken als samba, nfs en dat soort zaken achterwegen kunt laten. op die manier nodig je veel meer uit (hoop ik) dat andren jouw werk in hun pakketten gaat opnemen, als point of reference zou je dan best een aplience kunnen maken waar die overige services wel in zitten, maar dat dan meer als een refentie-model, dan een stuk complete software.

Door Tweakers user FireDrunk, maandag 2 juni 2014 22:31

CiPHER schreef op maandag 02 juni 2014 @ 19:15:
Akkoord. Al is het natuurlijk heel relevant voor je project en diens bestaansrecht; zeker als OpenMediaVault ook met ZFS bezig gaat.

Keuze voor Python klinkt wel goed. Zou je dan ook CurlyMo's webserver gebruiken of een gelijksoortige oplossing? Of wordt je project enkel een web-interface wat mensen op Apache/Nginx moeten installeren, zoals napp-it?
Django bevat zelf een development webserver, die is in veel gevallen prima toereikend. Je moet Python absoluut niet vergelijken met PHP, waar PHP echt request -> starten interpreter -> uitvoeren -> resultaat -> client is. Is Django echt een draaiende applicatie en kan het gewoon zelfstandig taken uitvoeren. Een simpele webserver als die van CurlyMo is dus absoluut niet relevant hier.

Mocht het project uitgroeien tot iets groters is iets als Apache of Nginx wel een optie ja.
johnkeates schreef op maandag 02 juni 2014 @ 20:54:
Het is inderdaad niet heel ZoL specifiek. ZFS draait op Linux net zo goed als op BSD, en de commando's, input en output is nagenoeg identiek.

Je zal misschien een DAL-achtige constructie moeten maken voor het bewerken van statische configuratie bestanden die mogelijkerwijs op andere plekken staan of andere soorten rechten hebben, maar dat heb je altijd wel, zelfs binnen unices en linuxen tussen distributies.

Ik denk dat een goede universele (en stijlbare!) interface een uitkomst kan zijn voor de wildgroei aan NAS-software die ZFS ondersteunt. Leuk voor die tonnen ZFS distro's met BSD of Linux ondergrondjes, maar uiteindelijk zullen de meeste mensen naast de installer alleen maar een webinterface nodig hebben. Dan is al die tijd en moeite die nu in distro-specifieke zaken gaat een beetje verspilling als je ook samen 1 universele interface kan maken met optioneel laagjes of addons voor specifieke platformen.
Met een goede plugin architectuur (en die zit standaard in Django) is er al een prima basis.
Zo lang "zfs" en "zpool" beschikbaar zijn kan je eigenlijk al een interface maken die alleen daar al mee werkt. Goed, je zal je schijven moeten kunnen vinden en herkennen, maar dat is niet het grootste probleem, en daar zijn ook voldoende bibliotheken voor die in bijna alle talen in alle grote distro's te vinden zijn.
Oh? Zijn er Python libs voor: Samba, iSCSI, NFS, ZFS en Disk management? Want dan heb ik iets gemist :)
Ik denk dat een project als dit prima uitgevoerd kan worden als het goed universeel gebouwd wordt en niet op Linux of BSD specifieke zaken gebouwd wordt.

Daarentegen lijkt het me wel van belang om een doelgroep uit te kiezen. Ik zal zelf nooit een webinterface gaan gebruiken, ik SSH overal naartoe, HTTP is voor plaatjes en Facebook :+
Het grote voordeel van HTTP (of beter gezegd, HTML5, CSS etc) is dat het automatisch cross platform is, en clientless. Dat maakt het eigenlijk gewoon de makkelijkste interface in gebruik... Jij roept SSH, dat kan ik bijvoorbeeld niet zomaar gebruiken, omdat ik bij veel klanten achter een firewall zit... (Niet dat je een ZFS webinterface open wil zetten naar buiten, maar je snapt vast mijn punt). Niet elke interface is altijd handig...
Zo is disk management grafisch een stuk leuker dan via SSH...
i-chat schreef op maandag 02 juni 2014 @ 21:36:
ergens snap ik het idee wel, maar als je dan een gui wilt maken voor zfs dan zou ik bijna eerder aanraden om een zfs framework ofzo te maken als een soort controller package die je in andere pakketen kunt intergeren, zodat je zaken als samba, nfs en dat soort zaken achterwegen kunt laten. op die manier nodig je veel meer uit (hoop ik) dat andren jouw werk in hun pakketten gaat opnemen, als point of reference zou je dan best een aplience kunnen maken waar die overige services wel in zitten, maar dat dan meer als een refentie-model, dan een stuk complete software.
Een ZFS Framework? ZFS bevat zelf al een beheertool wat eigenlijk ook een framework is? In welk opzicht is een framework voor ZFS iets handigs? DXaroth heeft al een voorzet gemaakt voor een libzfs-python module, en dat is wel iets wat handig is ja. Maar dan heb je nog geen 'framework'. Dus wat bedoel je precies?

[Reactie gewijzigd op maandag 2 juni 2014 22:32]


Door Tweakers user DXaroth, dinsdag 3 juni 2014 01:18

Nog een groot voordeel van een web-based interface, is de makkelijke mogelijkheid om data weer te geven; grafieken werken niet (lekker) op een terminal, maar juist wel heel goed in een HTML5 omgeving; met een goed achterliggend systeem (zoals graphite+collectd oid), kan je heel snel van heel veel onderdelen goede informatie achterhalen (als je een demo wilt, stuur een dm), waarmee je als tweaker de juiste details kan achterhalen, en als non-tweaker je snel kan zien of iets wel of niet OK is.

Overigens heeft Django wel een goede plug-in structuur, maar wel een kleine waarschuwing; stateful (python) systemen, in tegenstelling tot stateless (php) lenen zich iets minder makkelijk om 'zomaar' even een nieuwe plug-in toe te voegen; waar bij php elke request apart afgehandeld kan worden, zal je met python veel liever (het is niet dat het niet -kan-, het is meer dat het niet -handig- is) je daemon een schop geven... gelukkig is dat niet zo moeilijk ( import uwsgi; uwsgi.reload() als je uwsgi gebruikt), maar je wilt er wel even bij stil staan. (verkeerd misbruik kan je namelijk enorm vele performance kosten, en om nu na elke plugin update/install/remove je hele bak te moeten herstarten zou je verwachten van een java systeem, niet een python systeem...)

Door Tweakers user analog_, dinsdag 3 juni 2014 01:57

Ik vraag me af of er niet meer waarde zit in bijvoorbeeld zfsbackup te porten naar linux of in debian/ubuntu te krijgen. Kleiner projectje dat effectief denk ik meer gebruiksgemak brengt. CLI is niet fout, maar geef het gemakkelijkere tooling.

[Reactie gewijzigd op dinsdag 3 juni 2014 01:58]


Door Tweakers user i-chat, dinsdag 3 juni 2014 06:02

@firedrunk, wat ik bedoelde te zeggen is niet, dat je de beheertools moet maken want, ja die zijn er overduidelijk al, maar wat ik bedoelde te zeggen, bouw liever een webbased gui die je zowel losstaand, alsook als module / plugin kunt gebruiken,

ik bedoel als je er teveel anderen dingen bij gaat nemen of gaat intergeren, loop je al snel in de richting van een nas distro, waarin je dingen moet gaan beheren als samba, nfsd, en voor je het weet willen mensen daap, calibre server dlna en al die andere zut.

echter als je kunt zorgen dat zoń interface makkelijk te intergeren is binnen andere software, kan het makkelijk opgenomen worden in anderen appliences zoals bijv een sbs-server clone,

Door Tweakers user FireDrunk, dinsdag 3 juni 2014 08:58

analog_ schreef op dinsdag 03 juni 2014 @ 01:57:
Ik vraag me af of er niet meer waarde zit in bijvoorbeeld zfsbackup te porten naar linux of in debian/ubuntu te krijgen. Kleiner projectje dat effectief denk ik meer gebruiksgemak brengt. CLI is niet fout, maar geef het gemakkelijkere tooling.
Ik snap eerlijk gezegd niet zo goed, waarom een tool als zfsbackup geport zou moeten worden terwijl we het hier over een webinterface hebben... Bedoel je dat je ZFS Send en Receive functionaliteit in de webinterface wil hebben? Want dat kan inderdaad prima ingebouwd worden... Of dat met een onderliggende 3rd-party tool gedaan moet worden of met ZFS' eigen commando's, is nu nog niet echt aan de orde. Dat komt wel tijdens een ontwerpfase :)
i-chat schreef op dinsdag 03 juni 2014 @ 06:02:
@firedrunk, wat ik bedoelde te zeggen is niet, dat je de beheertools moet maken want, ja die zijn er overduidelijk al, maar wat ik bedoelde te zeggen, bouw liever een webbased gui die je zowel losstaand, alsook als module / plugin kunt gebruiken,

ik bedoel als je er teveel anderen dingen bij gaat nemen of gaat intergeren, loop je al snel in de richting van een nas distro, waarin je dingen moet gaan beheren als samba, nfsd, en voor je het weet willen mensen daap, calibre server dlna en al die andere zut.

echter als je kunt zorgen dat zoń interface makkelijk te intergeren is binnen andere software, kan het makkelijk opgenomen worden in anderen appliences zoals bijv een sbs-server clone,
Het was sowieso mijn plan om er gewoon een APT package van te maken (Debian / Ubuntu) en uiteraard de sources beschikbaar te stellen zodat er ook een RPM / Whatever van gemaakt kan worden.

Het wordt zeer zeker niet vergelijkbaar met ZFSguru als dat is wat je bedoeld.

Een webbased GUI die je losstaand en als module kan gebruiken? Dat is een beetje onmogelijk... Voor welke applicatie zou het dan een plugin/module moeten zijn? Een plugin of een module is niets meer dan een term voor: Onderdeel van een ander programma... Het is niet een coding standaard die je gebruikt waardoor het ineens een plugin wordt...

Juist het gebruik van Django maakt dat iedereen het kan gebruiken, en dat het aan ongelofelijk veel standaarden moet voldoen (De Python wereld is een van de meest gestandaardiseerde programmeerwerelden voor zover ik weet).

Dat maakt het juist een 'module/plugin', namelijk voor Django.

[Reactie gewijzigd op dinsdag 3 juni 2014 09:00]


Door Tweakers user i-chat, dinsdag 3 juni 2014 10:29

op termijn zou iets als zentyal wel eens heel veel baat kunnen hebben bij een zfs on linux guy, hun huidige storage management is rampzalig at best :P maar als er een deb package komt zal ik tegen die tijd wel eens kijken of ik het toe kan weten te voegen....

Door Tweakers user FireDrunk, dinsdag 3 juni 2014 10:31

i-chat schreef op dinsdag 03 juni 2014 @ 10:29:
op termijn zou iets als zentyal wel eens heel veel baat kunnen hebben bij een zfs on linux guy, hun huidige storage management is rampzalig at best :P maar als er een deb package komt zal ik tegen die tijd wel eens kijken of ik het toe kan weten te voegen....
Ik heb zelf heel lang Zentyal gebruikt, maar er zit gewoon een commercieel bedrijf achter wat niet altijd even goed meewerkt volgens mij.

Bovendien doet ZFS geen (POSIX) ACL's waardoor een combinatie met Zentyal vrijwel onmogelijk is.

Door Tweakers user i-chat, dinsdag 3 juni 2014 11:31

zentyal doet niets meer met posix acls (of heeft eigenlijk nooit echt storage management gedaan, misschien moet je hier en daar wat scriptjes een heul klein beetje aanpassen om bepaalde data voortaan op andere locaties te krijgen, maar zentyal is over naar samba4 only...
dat maakt de intergratie volgens mij wel makkelijker, ???

of wilde je zeggen dat zfs on linux zowiso geen acls gaat ondersteunen want dat lijkt me zeer appart?

Door Tweakers user FireDrunk, dinsdag 3 juni 2014 11:36

i-chat schreef op dinsdag 03 juni 2014 @ 11:31:
zentyal doet niets meer met posix acls (of heeft eigenlijk nooit echt storage management gedaan, misschien moet je hier en daar wat scriptjes een heul klein beetje aanpassen om bepaalde data voortaan op andere locaties te krijgen, maar zentyal is over naar samba4 only...
dat maakt de intergratie volgens mij wel makkelijker, ???

of wilde je zeggen dat zfs on linux zowiso geen acls gaat ondersteunen want dat lijkt me zeer appart?
Er zijn wel ideeen om via xattr (een soort vage on disk attributes) POSIX ACL's te gaan ondersteunen, maar dat is nog pre-alpha...
Voor de rest: Alleen NFSv4 ACL's.

[Reactie gewijzigd op dinsdag 3 juni 2014 11:36]


Door Tweakers user analog_, dinsdag 3 juni 2014 16:15

FireDrunk schreef op dinsdag 03 juni 2014 @ 08:58:
[...]

Ik snap eerlijk gezegd niet zo goed, waarom een tool als zfsbackup geport zou moeten worden terwijl we het hier over een webinterface hebben... Bedoel je dat je ZFS Send en Receive functionaliteit in de webinterface wil hebben? Want dat kan inderdaad prima ingebouwd worden... Of dat met een onderliggende 3rd-party tool gedaan moet worden of met ZFS' eigen commando's, is nu nog niet echt aan de orde. Dat komt wel tijdens een ontwerpfase :)

[...]
Ik dacht dat je het ZoL landschap wou uitbreiden, Dit leek me iets meer hapbaar. Eitherway, keep up the good work.

Door Tweakers user goarilla, woensdag 4 juni 2014 12:25

Focus je op je 2 eerste puntjes en zorg dat dat robuust is voordat je aan
service management en monitoring gaat doen. Dat is toch wel het esentiele en iets wat je niet fout mag hebben. Ga je shellen naar andere utilities of ga je zelf naar de disken schrijven voor de paritionering ?

Door Tweakers user FireDrunk, woensdag 4 juni 2014 14:50

goarilla schreef op woensdag 04 juni 2014 @ 12:25:
Focus je op je 2 eerste puntjes en zorg dat dat robuust is voordat je aan
service management en monitoring gaat doen. Dat is toch wel het esentiele en iets wat je niet fout mag hebben. Ga je shellen naar andere utilities of ga je zelf naar de disken schrijven voor de paritionering ?
Zeker waar, dat is ook waar ik nu in de eerste pre-alpha-technology-preview aan werk.

Idee was om libzfs-python te gebruiken voor ZFS interactie, en gptfdisk als partitie utility.

Reactie formulier
(verplicht)
(verplicht, maar wordt niet getoond)
(optioneel)

Voer de code van onderstaand anti-spam plaatje in: