[tapg] zfs

Martin Schitter ms at mur.at
Di Sep 24 15:50:03 CEST 2013


Am 2013-09-24 12:50, schrieb otti:
> zfs snapshots + zfs send um das auf andere rechner zu clonen ist für
> sowas halt unschlagbar.

genau!

mittlerweile bietet allerdings auch btrfs send/receive die selbe 
funktionalität. ich hab heuer in den weihnachtsferien am "poodle" (unser 
debian-mirror) die vorraussetzungen geschaffen, um ihn auch in genau 
dieser weise innerhalb von mur.at für entsprechende tests und ein erstes 
sammeln von erfahrungen zu benutzen. rsync ist für das replizieren 
großer datenbestände leider wirklich ausgesprochen problematisch.

> Dennnoch wäre sicher ein 2ter Backup weg der
> nicht auf ZFS aufbaut nötig, sollte man das wirklich einsetzen.

ich geb dir da zwar prinzipell recht, sehe aber gleichzeitig kaum eine 
vernünftige lösung um derartiges effizient umzusetzen. würden die 
send/recive-operationen wenigstens einem standardisierten diff-schema 
folgen, könnte man sie vorsichtshalber zwischenbuffern oder vielleicht 
sogar zur zusammenarbeit mit anderen filesystemen überreden bzw. 
konvertieren. so wie die dinge stehen, ist man aber leider strikt an das 
jeweils gewählte system auf beiden seiten gebunden. auch all den damit 
verbundenen möglichen systematischen fehlern ist man ziemlich schutzlos 
ausgeliefert (replizierung einer schleichende inkonsistenz auf beiden 
seiten; fatale fehler während des replikationsvorgangs...). zfs hat 
gegenüber btrfs in dieses hinsicht höchstens den vorteil, dass man ggf. 
auf eine andere implementierung zurückgreifen kann, um kaputte systeme 
zu reparieren. leider ist aber diese binär-kompatibilität seit kurzem 
auch nicht mehr vollständig gegeben [mehr dazu weiter unten]

>> Weiß jemand zufällig, wie sich LVM bei Snapshots verhält?  Experimente
>> (vor Jahren) zeigten uns, dass das Filesystem nach ein paar Snapshots
>> quasi unbrauchbar (weil nicht mehr Performant) wird.  Hier punkten
>> btrfs/zfs natürlich voll.
> LVM snapshots wirken sich schlecht auf die Performance aus. (Snapshots
> führen dazu dass Write-Operationen vervielfacht werden). Das wird sich
> wohl auch nicht geändert haben.

naja -- es hat schon auch hier tlw. deutliche fortschritte gegeben. 
hauptsächlich im zusammenhang mit virtualisierungsszenarien bzw. 
thin-provisoning auf devicemapper ebene...

http://lxadm.wordpress.com/2012/10/17/lvm-thin-provisioning/
http://de.wikipedia.org/wiki/Device_Mapper#Thin_Provisioning

das ist aber etwas ausgesprochen exotisches, über das sich noch nicht 
viel brauchbares oder ermutigendes im netz finden lässt...

wichtig ist dieses detail aber vor allem auch deshalb, weil ja von den 
zentralen kernel-koordinatoren immer wieder verlangt wird, dass 
entsprechende schichten innerhalb des betriebssystems nicht mehrfach 
nebeneinander parallel implementiert werden. btrfs nutzt deshalb in 
solchen fragen tatsächlich weitestgehend dm-infrastruktur etc. ein 
großteil der entsprechenden entwicklungsverzögerungen und diskussionen 
rund um die integration in den kernel wurzelt ja bekanntlich in genau 
diesen diskussionen und veränderungsaufforderungen. mit zfs verhält es 
sich hier absolut gegenteilig. der entsprechende code ist wirklich nur 
durch zwei dünne wrapper-libraries an linux-/posix-nöte angepasst und 
reimplementiert unmengen an aufgaben in sun-/solaris typischer 
tradition. das ist einerseits ausgesprochen ineffizient (der ausufernde 
speicherverbrauch der zfsonlinux-implementierung zeigt das deutlich), 
führt aber auch zu ganz unguten problemen, die erst bei sehr hoher last 
auftreten und daraus resultieren, dass linux-spezifischen io-scheduler 
eigenheiten weitestgehend umgangen wurden. spätestens hier rächt es 
sich, dass der code nicht den selben beobachtungs- und 
durchsichtskonventionen unterliegt, die in anderen bereichen der 
linux-entwicklung als selbstverständlichkeit betrachtet werden und eine 
mindestmaß an qualität garantieren. in wahrheit ist die ganze 
zfsonlinux-umsetzung eine one-man-show -- im grunde sogar ein 
nebenprodukt einer ganz anderen forschungsaufgabe, nämlich der 
lustre-portierung auf den zpool-data-store...

>>> btrfs ist glaub ich immer noch nicht für den Normalbetrieb freigegeben.
>>> Falls man das einsetzt sollte man nen Fallback Plan haben falls sich das
>>> schrottet.
>>
>> Daran arbeite ich gerade, weil sich mein btrfs am Laptop vor einer Woche
>> geschrottet hat.  Mittlerweile weiß ich aber viel mehr darüber ;)

ja -- so etwas ist wirklich nicht erfreulich! :(

anderseits ist es wohl der einzige weg, tatsächlich erfahrungen und 
einsichten in komplexere zusammenhänge zu bekommen, wie man sie über 
irgendwelche werbeartige fanpost oder konservative traditionspflege nie 
erhält. es macht wirklich sinn, solche fragestellungen tatsächlich unter 
realistischen bedingungen am eigene desktop durchzuspielen, um auch den 
umgang mit problemen und vorsichtsmaßnahmen zu kennen, statt zu sehr auf 
einen einzigen ansatz in produktionszusammenhängen zu vertrauen.

>>> zfs on linux (das kernel modul, nicht die fuse implementierung) geht bei
>>> meinen tests auch recht zuverlässig. Es gilt aber natürlich das gleiche
>>> wie für btrfs.

ja -- zfsonlinux ist für viele geschichten sicher eine brauchbarer 
kompromiss. man kann damit zumindest einen guten einblick in jenen 
charakteristiken bekommen, die man von einem enterprise-grade filesystem 
unserer tage unbedingt erwarten können sollte. viele tradierte 
unix-filesysteme nehmen sich daneben wirklich fast so primitiv wie ein 
FAT32 aus -- was natürlich auch seine vorteile haben kann ;)

wenn es aber darum geht, einen möglichst zukunftsweisende lösung unter 
linux zu haben, dürfte btrfs die selben vorteile und vergleichbare 
stabilität bieten.

spannend wird die sache ohnehin erst dort, wo das ganze auch noch ein 
bisserl größer werden sollte bzw. cluster-ansätze in die diskusion 
hineinspielen. hier spürt man schnell, dass die entwicklung von zfs 
mittlerweile auch schon wieder lange zurück liegt, während btrfs/ceph 
langsam über diese ursprünglichen vorbilder hinauswachsen.

> zfs ist auch unter einer open source lizenz
> http://de.wikipedia.org/wiki/Common_Development_and_Distribution_License
> sie ist nur leider nicht GPL komplatibel. Aber z.B. mit BSD gibts kein
> problem, daher ists z.B. auch in debian/kfreebsd drin (wobei das jetzt
> keine empfehlung sein soll)
>
> Weiter entwickelt wird es auch noch aktiv
> http://www.heise.de/open/meldung/OpenZFS-1960413.html

vergiss es!!!! -- leider!!!

nexenta ist schon seit langer zeit die einzige firma, die hin und wieder 
ein paar bugfixes für zfs liefert. der ganze code ist mittlerweile tot!

und das natürlich nicht ohne oracle vorher noch die möglichkeit zu 
geben, dem ganzen den todesstoß zu versetzen. dort hat man nämlich mit 
der letzten unfreien solaris-version auch noch die binärkompatibilität 
von zfs-systemen wirksam durchkreuzt. mit der versionsnummer 30 wurde 
ein encyption feature eingeführt, das die freien implementationen bzw. 
den entsprechnden feature-versions-zählung folgenen ansätze nicht mehr 
unterstützen können. das mag zwar für viele praktische anwendungen 
ohnehin keine große rolle mehr spielen (bspw. die meisten 
bsd-implementation stützen sich ohnehin auf noch viel ältere 
feature-inkompatible versionen) aber z.b. zfsonlinux oder die 
openindiana implementierung stellt es vor große probleme. das ist 
vermutlich der grund, warum an dieser openzfs-geschichte möglicherweise 
mehr hängt als auf den ersten blick ersichtlich ist. außer nexenta steht 
aber in wahrheit niemand mehr richtig hinter der entsprechenden 
entwicklung. die ganze geschichte ist also vermutlich nur mehr 
computerhistorisch von relevanz. man kann wirklich einiges lernen von 
zfs, aber man bedient sich besser anderer mittel, um ähnliche resultate 
unter linux zu erreichen.

> und da es seit 2006 aktiv benutzt wird, ist es natürlich auch schon
> ziehmlich gereift im vergleich zu btrfs.

ja -- wir verwenden bekanntlich auch beides ganz praktisch im 
produktionseinsatz... beides ist wirklich brauchbar!

martin


Mehr Informationen über die Mailingliste Tapg