ZFS on Linux Performance Evaluation

  • Published on
    05-Jan-2017

  • View
    214

  • Download
    1

Embed Size (px)

Transcript

  • ZFS on Linux Performance Evaluation

    Norbert Schramm 6146299

    MasterprojektFachbereich InformatikUniversitt Hamburg

    30. Mrz 2016

    1

  • Inhaltsverzeichnis

    1. Einleitung 31.1. ZFS Entwicklung und Geschichte . . . . . . . . . . . . . . . . . . . . . . . 31.2. Funktionen von ZFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2. ZFS im Vergleich 62.1. verwendete Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.1.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1.2. Betriebssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.3. Benchmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2.2. Messergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    3. ZFS on Linux 163.1. Messaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2. Messergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3. Kompression und Deduplikation in der Praxis . . . . . . . . . . . . . . . . 23

    4. Lustre on ZFS 254.1. Lustre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.2. Messaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    4.2.1. verwendete Benchmarks . . . . . . . . . . . . . . . . . . . . . . . . 274.3. Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    5. Zusammenfassung 31

    A. Scripte 33A.1. Installation von ZFS unter Linux mit modifiziertem Kernel . . . . . . . . . 33A.2. Benchmark-scripte fr Bonnie++ . . . . . . . . . . . . . . . . . . . . . . . 34

    2

  • 1. Einleitung

    Zur Speicherung von Daten auf einem Computer ist ein Dateisystem notwendig, dassdie Daten korrekt speichert, verwaltet und das wieder abrufen ermglicht. Hierbei kannman in die verfgbaren Dateisysteme in zwei Gruppen unterteilen, die klassischen unddie modernen Dateisysteme. Zu den Klassischen zhlen bekannte und weit verbreiteteDateisysteme, wie ext4 unter Linux oder NTFS unter Windows. Sie sind seit Jahrenetabliert und ermglichen es, Daten zuverlssig zu speichern. Darber hinaus sind inder jngeren Zeit allerdings neue Herausforderungen hinzugekommen, die ein modernesDateisystem erfllen muss. Unter Linux gibt es hier zum Beispiel im Zusammenhang mitRAID-Verbnden Probleme, wie etwa das langsame wiederherstellen grerer Platten-verbnde oder das Write-Hole-Problem, welches zur Dateninkonsistenz fhren kann.Moderne Dateisysteme, wie ZFS besitzen einen erweiterten Funktionsumfang, um die

    Mglichkeiten des Dateisystems zu erweitern oder die Datensicherheit zu erhhen (sieheKapitel 1.2. In diesem Fall beschftigen wir uns mit dem Dateisystem ZFS. Da diesesursprnglich von Sun Microsystems fr ihr Betriebssystem Solaris entwickelte Dateisy-stem erst auf andere Betriebssysteme portiert werden musste, kann es zu Leistungsunter-schieden kommen. Zustzlich kommt hinzu, dass der Code von ZFS unter der CommonDevelopment and Distribution License (CDDL) von Sun Microsystems verffentlicht wur-de. Diese ist inkompatibel zu der von Linux verwendeten GNU General Public License(GPL), weshalb eine direkt in die Kernelsourcen integrierte Linux-Implementierung nichtmglich ist. Das Projekt ZFS on Linux (ZoL) baute daher den Funktionsumfang in Formeines Kernelmoduls fr Linux nach. Seit April 2013 gilt diese Version als stable relea-se und hat somit das experimentelle Stadium hinter sich gelassen und zur produktivenNutzung freigegeben.Im Kapitel 2 fhre ich daher einen Vergleich von drei unterschiedlichen unixoiden

    Betriebssystemen (Illumos, FreeBSD, Ubuntu) durch, die ZFS untersttzen, um zu un-tersuchen, wie performant die Portierung von ZoL im Vergleich zur originalen Versionist.Im Kapitel 3 wird mit Hilfe des Programms wrstat die ZoL-Version unter Ubuntu

    genauer betrachtet.Das Netzwerkdateisystem Lustre basiert auf dem lokalen Dateisystem ldiskfs, welches

    eine Weiterentwicklung von ext4 ist. Seit dem stable release von ZoL gibt es unter Lustreauch die Mglichkeit, ZFS als lokales Dateisystem zu verwenden. Diese Kombination wirdin Kapitel 4 kurz betrachtet.

    1.1. ZFS Entwicklung und Geschichte

    Der Name ZFS stand ursprnglich fr den Namen Zettabyte File System und wurde vonSun Microsystems seit 2001 als closed source Dateisystem fr das hauseigene Betriebssy-stem Solaris entwickelt [3]. Zusammen mit der Umwandlung von Solaris in OpenSolarisin ein Opensource-Projekt unter der ebenfalls von Sun entwickelten CDDL wurde ZFS2005 verffentlicht. Nach der bernahme von Sun durch Oracle wurden die Arbeiten anOpenSolaris 2010 eingestellt. Zur Weiterentwicklung wurde der ZFS-fork OpenZFS ge-

    3

  • grndet, dessen Mitglieder unter anderem aus Entwicklern der Betriebssysteme Illumos,FreeBSD oder einiger Linux-Distributionen bestehen.Bereits 2006 gab es die erste FUSE-Implementierung, um ZFS unter Linux nutzen zu

    knnen. Da ZFS allerdings eher fr den Einsatz in leistungsstarken Umgebungen ent-wickelt wurde und etwas mehr Rechenleistung der CPU bentigt, als klassische Datei-systeme, verbreitete sich diese Lsung nicht sehr stark. Grter Nachteil von FUSE-Dateisystemen ist der verringerte Datendurchsatz, da die Implementierung im Userspaceerfolgt.Pawel Jakub Dawidek portierte 2008 mit Hilfe von Sun-Entwicklern ZFS in das Be-

    triebssystem FreeBSD, welches ZFS in der Version 7.0 als experimentelles Dateisystemund in Version 8.0 als stabile Variante nutzt. Diese Version ist direkter Bestandteil desBetriebssystems.Nachdem die Arbeiten an Solaris 2010 eingestellt wurden, nahm Illumos als neue Re-

    ferenzplattform fr ZFS seinen Platz ein. Viele Abwandlungen von ZFS auf anderenBetriebssystemen stammen von der unter Illumos genutzten ZFS-Version ab.Das Projekt ZFS on Linux umgeht das Problem der unterschiedlichen Lizenzen (CDDL,

    GPL) und pflegt eine eigene Portierung von ZFS. Diese kann einfach heruntergeladen unddas Linux-Dateisystem damit gepatched werden, um ZFS direkt als performantes Kernel-Modul nutzen zu knnen. Seit der Version 0.6.1 ist ZoL fr den produktiven Einsatzfreigegeben [1]. Laut der Aussage eines Hauptentwicklers aus dem Jahr 2014 liegt ZoL0.6.3 effektiv nur noch nur noch 18 Funktionen hinter der Referenz zurck"[10] wovones fr neun jedoch bereits Workarounds gibt und die restlichen neun mit der folgendenVersion 0.6.4 implementiert werden sollen. Die aktuelle Versionnummer ist 0.6.5.6, womitdavon ausgegangen werden kann, dass ZoL im Funktionsumfang der Illumos-Version innichts nachsteht. Dennoch war es bei meinen Messungen in einem Versuch noch nichtmglich, einen unter Illumos erstellten ZFS-Pool unter Linux zu importieren. Das ProjektOpenZFS hat unter anderem diese Interoperabilitt zum Ziel. Die Version 1.0 soll erreichtwerden, wenn die ioctl-Schnittstelle /dev/zfs fertig entwickelt und stabil ist.

    Im laufe der Entwicklung wurden im originalen ZFS weitere Funktionen hinzugefgt,wie verschiedene Kompressionsalgorithmen und komplexere Partitts-modi fr grereArrays (siehe folgendes Kapitel).

    1.2. Funktionen von ZFS

    Dieses Kapitel beinhaltet eine kurze Auflistung und Erklrung einiger besonderer Funk-tionen, die fr ZFS besonders sind und es von klassischen Dateisystemen unterscheiden.Ein wesentliches Merkmal von ZFS sind 128bit lange Pointer, mit denen Dateien

    adressiert werden. Dies ermglicht es, eine rechnerische Menge von 2128 Bytes gespeichertwerden. Da die meisten Betriebssysteme jedoch aktuell 64bit-Systeme sind, ist der aktuellverfgbare Adressraum auf 264 Bytes beschrnkt, was 16 EiB entspricht. Bei spterenImplementationen ist eine Erweiterung auf 128 Bit ohne Probleme mglich. Bisher werdendie ersten 64 Bit einfach mit 0 dargestellt. Die maximale Dateigre betrgt ebenfalls 264

    Byte, die maximale Anzahl mglicher Dateien im Dateisystem und maximale Anzahl anOrdnern ist auf 248 begrenzt. Laut Marketingaussagen des Chefentwicklers Jeff Bonwick

    4

  • wrde das vollstndige Fllen eines 128 Bit groen Speicherpools mehr Energie bentigenals fr das Verdampfen der Weltmeere von Nten wre[2]. Diese Aussauge untermauertauch die Philosophie von ZFS, ein vorausschauendes und langlebiges Dateisystem zuwerden.Die Datenintegritt spielt bei ZFS ebenfalls eine Groe Rolle. Fr jede Datei wird

    ein Hashwert erstellt und auf dem selben Speichermedium abgelegt. Von jedem Ordnerund dem Ordner darber werden ebenfalls Hashes berechnet, sodass es am oberen Endeeinen Master-Hash gibt, der fr die Datenintegritt aller unter ihm gespeicherten Datengarantiert. Fehlerhafte Daten knnen so erkannt werden und bei redundanter Speicherungselbststndig behoben werden. Daher spricht man bei ZFS gelegentlich auch von einemselbstheilenden Dateisystem. Der Overhead zur Berechnung der Prfsummen und derdafr zustzlich bentigte Speicherplatz sind nur minimal, sodass die IO-Leistung vonZFS nur minimal schlechter ist, als von einem ext4-Dateisystem [8]. Die Garantie, zujedem Zeitpunkt (auch nach einem Stromausfall) ein konsistentes Dateisystem zu haben,macht Tests, wie fsck in klassischen Dateisystemen berflssig.Zur Erhhung der Redundanz in einem Array aus mehreren Festplatten werden hufig

    RAID-Verbnde genutzt. Gerade bei groen Verbnden, wie RAID-5 oder RAID-6 miteiner bzw. zwei Parittsfestplatten, dauert das erstellen und wiederherstellen eines Arrayszum Teil sehr lange, da fr jedes Bit eine Paritt berechnet werden muss. Dies ist demUmstand geschuldet, dass Volumemanager (z.B. mdadm) und Dateisystem nicht kommu-nizieren. ZFS kombiniert die Funktionen beider und arbeitet dadruch viel effizienter. Somuss ein RAID-5 quivalent (unter ZFS raidz genannt) nicht initialisiert werden, sondernkann direkt genutzt werden. Die Paritten fr geschriebene Daten werden erst whrenddes Schreibvorgangs berechnet. Bei einer Wiederherstellung nach einem Ausfall mssenso auch nur vorhandene Daten wiederhergestellt werden und nicht smtliche Blcke desArrays. In der aktuellen Version beherrscht ZFS mit dem Modus raidz3 sogar eine 3-facheParitt. Andere RAID-Modi, wie 0,1,10 werden ebenfalls quivalent untersttzt.Durch die Unterteilung in Storage-Pools knnen Unterverzeichnisse mit unterschied-

    lichen Eigenschaften (Kompression, Deduplikation) ausgestattet werden. Des weiterenknnen verschiedene RAID-Konfigurationen zu einem Pool zusammengesetzt werden,zum Beispiel einer raidz und ein raidz2 zu einem Storage-Pool. Zustzlich knnen zueinem Pool auch noch schnelle Speichermedien als Read-Cache (L2ARC) oder Write-Log(ZIL) zugeordnet werden, um die Leistung des Pools zu erhhen.Ebenfalls zur Datensicherheit trgt die Copy on Write Funktionalitt von ZFS bei.

    Wird eine Datei gelesen, modifiziert und gespeichert, wird die neue Version an eine freieStelle des Dateisystems geschrieben. Erst nach dem erfolgreichen Schreiben wir die alteDatei als inaktiv markiert und der Pointer auf die neue Datei umgeschwenkt. Somit kanneine Datei durch einen Systemabsturz nicht zerstrt werden. Durch CoW wird ebenfallsdas vom RAID-5 bekannte Write-Hole-Problem behoben, bei dem eine Datei trotz Parittzerstrt werden kann, wenn das System whrend des Schreibvorgangs abstrzt.Hand in Hand mit CoW gehen auch Snapshots. Diese ermglichen eine platzsparende

    Versionierung des Dateisystems. Wird ein Snapshot erstellt, werden alle Daten eingefro-ren und nur neu geschriebene oder modifizierte Dateien bentigen weiteren Speicherplatzauf dem Pool.

    5

  • Mit der Einfhrung von Deduplikation knnen bei hnlichen Daten groe Mengen anSpeicherplatz gespart werden. Hierbei wird berprft, ob identische Datenblcke bereitsauf der Festplatte liegen. Ist dies der Fall, so wird fr die neue Datei lediglich ein refe-renzierende Pointer auf die bereits bestehende Datei geschrieben und der Speicherplatzkomplett eingespart. Da dieses Verfahren jedoch sehr viel RAM bentigt (rund 5 GBfreien Hauptspeicher pro TB Speicherplatz [16]), ist es nur bedingt sinnvoll. Pro Daten-block werden 320 Byte RAM bentigt. Nehmen wir an, dass 5 TB Daten eine mittlereBlockgre von 64 kb haben, so entspricht dies 78125000 Blcken. Multipliziert mit 320Byte ergibt das rund 25 GB fr die Dedup-Tabelle.Durch transparente Kompression durch das Dateisystem knnen je nach zu spei-

    cherndem Datentyp groe Mengen an Speicherplatz eingespart werden. Wird eine Dateiauf die Festplatte geschrieben, werden sie vom Prozessor komprimiert und dann auf denDatentrger geschrieben. Dies ermglicht bei gut komprimierbaren Daten nicht nur einenverminderten Speicherplatzbedarf sondern auch Datenraten, die hher sind als die phy-sikalischen Lese-/Schreibraten der Festplatte, siehe Kapitel 2.2.

    2. ZFS im Vergleich

    Da der Funktionsumfang von allen getesteten ZFS-Versionen gleich ist, kann die Perfor-mance der Funktionen direkt mit einander vergleichen werden. Schwerpunkt lag hierbeineben dem eigentlichen Vergleich der unterschiedlichen Betriebssystemversionen auch dieUntersuchung der Funktionen Kompression und Deduplikation.Da der erste Test auf zu alter Hardware stattfand, habe ich mit insgesamt drei verschie-

    denen Computern die Tests auf allen drei Betriebssystemen ausgefhrt, um so gleichzeitigeine Abhngigkeit der Leistung von ZFS in Abhngigkeit von der verwendeten Hardwarezeigen zu knnen. Trotz einer unterschiedlichen Festplatte in einem der drei Systeme istdennoch eine Tendenz zur Abhngigkeit vom Prozessor zu erkennen.

    2.1. verwendete Komponenten

    2.1.1. Hardware

    Insgesamt wurden drei Computer verwendet. Ein Rack-Server Dell R710, eine Worksta-tion von Fujitsu-Siemens-Computers und ein normaler Desktop-Computer. Die Systemesind der Leistung nach aufsteigend aufgezhlt.

    System 1 : Die Workstation von FSC hat einen Intel Xeon E3110 Prozessor mit 2x3.0GHz Takt. Der Prozessor stammt von Intels Core2-Architektur ab und ist seit Q108verfgbar. Er ist damit der lteste getestete Prozessor. Es sind 8 GB RAM verbaut. Frdie getestete Festplatte wurde eine Western Digital Black 1 TB verwendet, welche direktan einem SATA-Port am Server angeschlossen war.

    System 2 : Der Dell-Server hat einen Intel Xeon X5677-Prozessor mit 4 Kernen und 3.46GHz Taktung. Die CPU stammt aus der Nehalem-Architektur und ist somit der zweil-

    6

  • teste Prozessor (Verffentlicht: Q110). Hier waren 32 GB RAM verbaut. Die Festplattewar eine 136 GB 15K SAS-Festplatte, welche ber den integrierten RAID-ControllerPERC6/i als RAID-0 mit einer Festplatte durchgereicht wurde.System 3 : Das modernste System im Test basiert auf einem Intel Corei-5 2500k mit

    4x3.3 GHz Takt. Er stammt aus der Sandy Bridge-Serie von Intel und ist somit eineGeneration neuer, als das vorherige Modell (Verffentlicht: Q111). Als Arbeitsspeicherwurden wieder 8 GB RAM verwendet. Es wurde die gleiche WD Black 1 TB Festplattean einem SATA-Port verwendet, wie im ersten System.

    2.1.2. Betriebssysteme

    Fr einen Vergleich wurden drei unixoide Betriebssysteme verwendet:

    OpenIndiana: OpenIndiana ist ein auf Illumos basierendes Betriebssystem. Da Illumosnach der Einstellung der Entwicklung von OpenSolaris als neue Referenzplattform frZFS gilt, ist OpenIndiana ein Betriebssystem aus Solaris-Basis, fr das ZFS ursprnglichentwickelt wurde. Genutzt wurde die Version oi_151a...

Recommended

View more >