Prestandaskillnader mellan olika ZFS-implementationer

Relevanta dokument
Prestandatest av sekventiella läs- och skrivoperationer i UNIX-liknande operativsystem 4 hp

Prestandajämförelse - Sekventiell skrivhastighet i RAID 4 och RAID 5

Advanced Format. Examensarbete i Datavetenskap. En prestandajämförelse av sektorer i RAID. B-nivå. Författare: Jesper Lindgren

Linuxadministration I 1DV417 - Laboration 3 Installation av ny hårddisk, RAID och logisk volymhantering

Diskprestanda Tester

ZFS. Linuxadministration I 1DV417. Wednesday, January 23, 13

Prestandaundersökning och återställning av degraderade RAIDsystem

Introduktion till hårdvara, mjukvara och operativsystem

Prestandamätning av RAID-lösningar

Linuxadministration I 1DV417 - Laboration 1 Installation. Marcus Wilhelmsson 15 januari 2013

ZFS Zettabyte Filsystemet

Open Source - Eller som vi säger, Fri programvara

Linuxadministration I 1DV417 - Laboration 1 Installation, användare och allmänt Linuxhandhavande

Open Source - Eller som vi säger, Fri programvara

Avslutning. Kapitel Komprimering av filer

Handbok Simond. Peter H. Grasch

Du kan installera Widgitprodukter på ett nätverk. Följande program och tillägg hanteras (du kanske inte har licens att installera all dessa):

Sun Fire V490/V890 konfigurationshandbok för processor-/minnesmodul

Fria upphovsrättslicenser underlättar kunskapsdelning och lärande

Programvaror - Jo, tack, det vill vi ha...

Innehåll. 1 Inledning 5. 2 Förinställning 6. 3 Anpassa användargränssnittet 7. 4 Anpassa interna inställningar 9. 5 Förbereda att bränna en skiva 10

Handbok KAppTemplate. Anne-Marie Mahfouf Översättare: Stefan Asserhäll

Institutionen för Datavetenskap Department of Computer Science

PCI Express 2.0 SATA III 6 Gbps RAIDkontrollerkort. nivåindelad SSD-lagring Product ID: PEXSAT34RH

Handbok Kfloppy diskettformaterare

Jämförelse av prestanda mellan SMB och NFS i WAN och LAN. Examensarbete inom huvudområdet Datalogi Grundnivå 15 högskolepoäng Vårtermin 2013

Prestandapåverkan på databashanterare av flertrådiga processorer. Jesper Dahlgren

Open Source - Program och hur man väljer

Filöverföring i Windowsmiljö

DDR PC SOFTWARE 2 RELEASENOTES VERSION 2.5. Swerob Service AB Global Robot Parts AB

Marcus Wilhelmsson 12 april 2013

Linux på skrivbordet - Myt eller möjlighet

FileMaker. Köra FileMaker Pro 10 på Terminal Services

Högpresterande extern lagring med hög kapacitet

Svenska Linuxföreningen. Fri programvara Mycket mer än bara gratis 1(29)

PCI Express 2.0 SATA III 6 Gbps RAIDkontrollerkort med 3 portar, msata och HyperDuo nivåindelad SSD-lagring

SSDs påverkan på MySQL En prestandajämförelse

Projekt Fake för Virtutech

Systemkrav WinServ II Edition Release 2 (R2)

Installation, Novaschem 2005

SUSE Linux Enterprise Desktop 10

Programmering i C++ Kompilering från kommandoraden

Svenska Linuxföreningen. Fri programvara Mycket mer än gratis 1(36) Copyright 2005, 2006 Marcus Rejås

Vad är en databas? Databasutveckling Med MySQL/MariaDB

LAJKA-GUIDE. Så kör du. Windows på din Mac. 7 Fler spel och program 7 Enklare än Bootcamp 7 Körs direkt i OSX 7 Helt gratis

Linux på skrivbordet - Myt eller möjlighet

Installationsguide ELCAD 7.10

Installation av WinPig Slakt

Installation av atmel Studio på mac / linux

SiteVision 2.0. Driftdokumentation

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya

UNIX Introduktion UNIX. Datorerfarenhet. Vad menar man med operativsystem

Handbok Dela Skrivbord. Brad Hards Översättare: Stefan Asserhäll

Linuxadministration I 1DV417 - Laboration 1 Installation, användare och allmänt Linuxhandhavande

Dedikerad Server Vilket operativsystem ska jag välja? Är ni i startgroparna och ska beställa en dedikerad server eller en virtuell server?

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

1. Revisionsinformation

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016

Svensk Bruksanvisning

Inledande programmering med C# (1DV402) Introduktion till C#

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser

Linuxadministration I 1DV417 - Laboration 5 Brandvägg och DNS. Marcus Wilhelmsson marcus.wilhelmsson@lnu.se 19 februari 2013

DIG IN TO Dator och nätverksteknik

Denna presentation är inte klar, kommentarer mottages tacksamt! CyberRymden

Operativsystem och användargränssnitt

Uppsatser. Programmet för IT-tekniker Våren Innehåll

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

Installationshandbok för SunForum 3.2

Din guide till. Teknisk Specifikation Säljstöd

Datorhårdvaruteknik 1DV426 - Laboration Migrering av lagring från DAS till SAN

Virtuell Server Tjänstebeskrivning

Linuxadministration I 1DV417 - Laboration 2 Filsystemet och kickstart. Marcus Wilhelmsson

Installationsanvisningar. till IST Analys

INSTALLATIONSINSTRUKTIONER FÖR VIDA INNEHÅLL

Hogias Ekonomisystem. Systemkrav för enanvändarinstallation fr o m version av GENERELLA KRAV

HP StoreEasy 5000 Network Storage Solution Installation and Startup Service

Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q3

Övning Installation av Gentoo och/eller Arch Linux

Systemkrav 2014 för enanvändarinstallation fr o m version av

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

Produktinformation för Sun Enterprise 420R

Öppen/Fri programvara

PUBLICERINGSNOTISER TRIMBLE ACCESS SOFTWARE. Version Revidering A Oktober 2013

LABORATIONSRAPPORT Operativsystem 1 Laboration 1, Ghost, pingpong och Windows 2003 installation

Beställning av Förlitandepart-certifikat Version

Din egen webserver med Apache

Administration / Disk Management. EC Utbildning AB

TRUST USB VIDEO EDITOR

Uppstart av OS med resp. utan krypering

Produktinformation för Sun Enterprise 220R

Svensk version. Inledning. Innehåll. Specifikationer. PU101 Sweex 2 Port Serial ATA RAID PCI Card

Sokigo AB OVK 2.0. Pentium- eller AMD-processor (x64 processor) på 1,6 GHz Dual Core eller motsvarande.

Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2015.Q1

Säkerhetskopiering och återställning

Svenska Linuxföreningen. Fri programvara Mycket mer än gratis 1(24) Copyright 2005 Marcus Rejås

Handbok för Nero ImageDrive

2,5" hårddiskkabinett med två fack - USB 3.0 till SATA III 6 Gbps med RAID

Svenska Linuxföreningen. Presentationens namn 1(24) Copyright 2004 Marcus Rejås

Laboration 2 Datorverktyg vid LiU

Instruktioner för uppdatering från Ethiris 5.x till 6.0

Transkript:

Examensarbete i Datavetenskap B-nivå Prestandaskillnader mellan olika ZFS-implementationer Författare: Jacob Carlsson Johnas Lindell Handledare: Marcus Wilhelmsson Termin: VT11 Kurskod: 1DV41E

Abstrakt Denna uppsats undersöker prestandaskillnader som kan uppstå när olika operativsystem använder filsystemet ZFS. Utvecklat av Sun Microsystems är ZFS utvecklat för deras UNIX-baserade operativsystem Solaris, men finns nu även tillgängligt för Linux och andra operativsystem. Då det saknas vetenskapliga artiklar om prestandaskillnaderna i ZFS med RAID-Z i Linux, så är syftet att ta reda på skillnaderna i prestanda mellan tre operativsystem som kan använda ZFS. Arbetet visar hur prestandan i en RAID-Z1 skiljer sig mellan Linux-distributionen Ubuntu, operativsystemen FreeBSD och OpenIndiana. På operativsystemen i fråga testades läs- och skrivprestandan mot RAID-poolen med två olika testverktyg, Bonnie++ och IOzone. Testerna med Bonnie++ och till vissa delar även IOzone visar att Ubuntu presterar bäst i skrivhastighet, vilket kan tyckas märkligt då Ubuntu inte tillhör de operativsystem som har inbyggt stöd för ZFS. Nyckelord: Linux, OpenIndiana, FreeBSD, ZFS, RAID-Z, Prestandatest

Förord Detta arbete är skrivet av två studenter på Linnéuniversitetet i Kalmar som läser programmet Nätverksadministration/Systemteknik. Arbetet kommer ge en uppfattning om vilket operativsystem som bör användas då bästa prestandan vill uppnås. Detta arbete är riktat till personer som har ett intresse och behov för att säkra upp sin digitala lagring i såväl företag som hem. Vi valde att skriva om detta ämne då säker lagring är något som intresserar oss. Vi skulle vilja tacka Marcus Wilhelmsson för handledningen av rapporten och ideér och tips när det gäller UNIX och ZFS. Vi vill även passa på och tacka Stefan Petersson som har bidragit med hårdvara för att kunna utföra testerna, samt Marcus Carlsson som varit till stor hjälp under testerna.

Innehåll 1 Introduktion 6 1.1 Inledning 6 1.2 Tidigare forskning 6 1.3 Problemformulering 7 1.4 Syfte 7 1.5 Avgränsning 8 2 Teknisk bakgrund 9 2.1 Operativsystem 9 2.2 ZFS 11 2.3 Mjukvarulicenser 12 3 Metod 14 3.1 Val av metod 14 3.2 Genomförande 14 3.3 Analys 20 3.4 Tillförlitlighet 20 4 Resultat 21 4.1 IOzone 21 4.2 Bonnie++ 25 5 Analys och diskussion 27

5.1 IOzone 27 5.2 Bonnie++ 28 5.3 Metodreflektion och tillförlitlighet 29 6 Slutsats 30 6.1 Resultat 30 6.2 Förslag till fortsatt forskning 30 7 Referenser 31

1 Introduktion Avsnittet kommer bland annat ta upp en kort inledning och tidigare forskning kring området. Syftet med uppsatsen, samt avgränsningar kommer även att diskuteras. Detta arbete handlar om prestandaskillnader som kan uppstå när olika operativsystem som använder filsystemet ZFS jämförs. 1.1 Inledning Idag är säker datalagring en viktig del i både en företagsmiljö och i vissa fall även en hemmamiljö där dataintegritet är viktigt. När man designar sin lagringslösning kan operativsystemet vara en viktig aspekt om man vill ha ut maximal prestanda ur sin lösning. Idag finns det många val när det gäller operativsystem till filservrar. Ett filsystem som många väljer att använda är ZFS då det är relativt nytt och använder flera olika tekniker för dataintegritet, som till exempel copy-on-write (Solaris ZFS, 2005). Det är intressant att undersöka hur läs- och skrivhastigheten skiljer sig mellan de olika Linux- och UNIX-systemen. Filsystemet ZFS och Linuxdistributionen Ubuntu går under två skilda licenser som inte är kompatibla med varandra. Då det idag inte är möjligt att släppa ett projekt som kombinerar Linux och ZFS är det intressant att se hur prestandan eventuellt kan komma att påverkas när ZFS används i Linux i form av en modul istället för vara implementerat i kärnan (Sun, 2004). 1.2 Tidigare forskning Enligt Traeger, et al. (2008) är det viktigt att prestandamätningar utförs på ett korrekt sätt. De nämner att det är viktigt att man gör tillräckligt många mätningar. De ska även utföras under tillräckligt lång tid samt med minst två olika mätverktyg. Ett som fokuserar på att göra små, korta tester på en begränsad del av systemet, som man kallar Micro-Benchmarks. Sedan ett 6 (34)

som gör lite längre tester på hela systemet, som kallas Macro-Benchmarks. De testverktyg som används i detta arbete tas upp i avsnittet Bakgrund. Karlsson och Carlsson (2010) belyste återställningen av ett RAID-system i bland annat RAID-Z där de undersökte hur mycket läs- och skrivhastigheter påverkas under en återuppbyggnad av RAID-systemet. För sina tester valde de att använda sig av OpenSolaris för RAID-Z under ZFS och Ubuntu för mdadm för Ext4. Då de jämförde prestandan i RAID-Z mot mdadm i Ubuntu är det intressant att i detta arbete jämföra prestandan i RAID-Z mellan olika operativsystem som stödjer RAID-Z. 1.3 Problemformulering Detta arbete kommer att behandla prestandaskillnader som kan uppstå när olika operativsystem som använder filsystemet ZFS. Arbetet kommer fokusera på vilken implementation som ger bäst prestanda i form av läs- och skrivhastigheter. Efter att ha läst undersökningen Karlsson och Carlsson (2010) gjorde känns det intressant att undersöka hur prestandan kan skilja sig mellan olika operativsystem, när samma filsystem används. 1.4 Syfte Syftet med uppsatsen är att undersöka prestandan mellan olika Linux- och UNIX-baserade operativsystem. Olika RAID-lösningar är mycket vanligt och syftet är att få en bredare kunskap inom just ZFS egna RAID-lösning RAID- Z. ZFS är skapat för UNIX-system, därför är det intressant att se om man kan få en likvärdig prestanda i Linux-system. Det finns inte några tidigare vetenskapliga artiklar om prestandaskillnaderna i ZFS med RAID-Z, därför är syftet att utföra prestandatester för att kunna få en bild av skillnaderna. Syftet med denna undersökning utmynnar i följande frågeställning. Hur effektivt utnyttjas ZFS av operativsystemen FreeBSD, OpenIndiana och Ubuntu? 7 (34)

1.5 Avgränsning Det finns många inställningar och parametrar i ZFS som kan komma att påverka prestandan. Testerna som innefattar ZFS och RAID-Z kommer att utföras med standardinställningar för att kunna genomföras inom tidsramen av planeringen. Då Oracle Solaris 11 Express inte tillåter publicering av prestandamätningar kommer OpenIndiana, ett operativsystem baserat på OpenSolaris att användas istället (OTDL Terms, 2010). 8 (34)

2 Teknisk bakgrund De tekniker och begrepp som kommer att behandlas i detta arbete kommer här förklaras djupare. Områden som kommer behandlas är bland annat vad ett operativsystem är och vilka vi kommer att använda. Avsnittet kommer även på att en lite djupare nivå förklara vad ett filsystem har för funktion och vad som utmärker ZFS. 2.1 Operativsystem Operativsystemet kan ses som en central del i datorn, genom att vara länken mellan hårdvaran och de applikationer som användaren vill använda. Det bär ansvaret för hanteringen av hårdvara, fördelningen av resurser samt uppsättningen av regelverk som bestämmer hur program och användare ska hanteras. Ett operativsystem delas ofta in i följande tre delar: kärnan, applikationer och systembibliotek. Kärnan är den viktigaste komponenten i operativsystemet, den hanterar datorns resurser och fördelar dessa över de program som körs. Applikationer är de program som körs på datorn, både av användare och av systemet. Systembiblioteket är slutligen den samling av program som ger systemets grundläggande struktur (Silberschatz, et al. 2005). 2.1.1 OpenIndiana OpenIndiana är ett projekt som siktar på att utveckla och distribuera en egen version av OpenSolaris, från den senaste versionen. Projektet kommer att ledas av Illumos-Stiftelsen. Målet med projektet är att bli det självklara valet för de som söker efter en OpenSolaris-distribution som ska användas på produktionsservrar där säkerhet och gratis buggfixar är ett krav. Då Oracle köpte upp Sun Microsystems vid årsskiftet 2009/2010 så valde de att lägga ner utvecklingen av OpenSolaris. Oracle ersatte OpenSolaris med Solaris 11 9 (34)

Express och införde då ett hinder att publicera testresultat. Därför är inte Solaris Express 11 aktuellt att utföra våra tester på (OpenIndiana, 2011). 2.1.2 FreeBSD FreeBSD är ett operativsystem som placeras under kategorin "UNIX like operating systems", det vill säga ett operativsystem som liknar UNIX, men behöver nödvändigtvis inte uppfylla alla krav som finns för att få kallas UNIX (Fagan, 1999). Det är baserat på AT&T UNIX genom BSD (Berkley Software Distribution). FreeBSD har stöd för många olika arkitekturer, bland annat x86, DEC Alpha, Sun Microsystems UltraSPARC och AMD64 (Izurieta & Bieman, 2006). Många UNIX-baserade operativsystem erbjuder en traditionell pakethanterare. I FreeBSD finns det något som heter portssystem, som är en samling av paket. När paket installeras från ports kommer källkoden automatiskt hämtas från till exempel en FTP-server som den sedan packar upp och kompilerar (Fagan, 1999). 2.1.3 Ubuntu 2004 var Linux redan en väletablerad serverplattform. Men det som idag kallas fri programvara och öppen källkod var inte lika känt då. Mark Shuttleworth jobbade då som utvecklare hos Debian men valde att samla ihop en mindre grupp utvecklare från Debian och bilda en projektgrupp som bestämde sig för att skapa sig ett Linux som skulle vara enkelt att använda. Det döptes till Ubuntu, vilket är ett gammalt afrikanskt ord och kan översättas till mänsklighet till andra. Gruppen bakom Ubuntu släpper regelbundet nya utgåvor med sex månaders mellanrum. Var fjärde utgåva kommer med tre års support, så kallad Long Time Support. Idag så finns Ubuntu i ett antal versioner, både för servrar och för klienter. Först så fanns det bara en klientversion med fönsterhanteraren GNOME att välja på. Men senare kunde man även få en klient-version med fönsterhanteraren KDE som då heter Kubuntu. En server-version tillkom sedan också bland valen. Alla versioner 10 (34)

och utgåvor av Ubuntu har idag samma gemensamma filstruktur (Ubuntu, 2011). 2.2 ZFS ZFS är ett filsystem som är utvecklat av Sun Microsystems för Solaris och släppt under öppen källkod. Filsystemet fokuserar på tekniker för att bevara dataintegritet och motverka fel så som bitröta och datakorruption. Tidigare studier har visat att filsystem som XFS, JFS och NTFS inte har bra skydd mot datakorruption (Bairavasundaram, et al. 2008). ZFS har en funktion som gör att man kan ta så kallade snapshots vilket innebär en avbildning av hela filsystemet som gör att man kan hoppa tillbaka till tidigare snapshots (Stanik, 2007). En del i ZFS som gör att det tillhandahåller hög dataintegritet är en teknik som heter "copy-on-write", vilket innebär att aktiv data aldrig skrivs över. När ändringar görs skapas istället en kopia av originalet, och först när skrivningen är helt klar kommer originalet markeras för överskrivning (Shanahan, 2004). 2.2.1 ZFS-versioner Zpool-versioner är versionsnumret för ZFS-poolen. Olika operativsystem och implementationer har olika zpool-versioner. Med uppdateringar av Zpoolversionen medföjer nya funktioner även buggfixar, Zpool version 17 inkluderar stöd för trippel-paritets RAID-Z och version 18 har stöd för ögonblicksbilder, så kallade snapshots. Det släpps även nya versionr av ZFS - filsystemet. Nya versioner bidrar med nya funktioner, buggfixar och uppdateringar av filsystemet (OpenSolaris, 2010). 2.2.2 RAID-Z RAID-Z är en mjukvaru-raid för ZFS som använder liknande paritetsschema som RAID-5. RAID-Z har tre olika paritetsnivåer, den första är RAID-Z1 och klarar av att hantera att en hårddisk går sönder utan att data 11 (34)

påverkas. RAID-Z2 har två pariteter och klarar därav att två hårddiskar går sönder. Den högsta nivån av paritet finns hos RAID-Z3 där det tre paritetsdiskar. När en hårddisk går sönder och byts ut bygger RAID-Z upp systemet igen med hjälp av pariteterna. Återställningstiden beror på en mängd saker, bland annat vilken paritets nivå av RAID-Z man använder och även prestandan på hårddisken (Bonwick, 2005). 2.2.3 Implementation av ZFS i Linux De licensproblem som existerar mellan GNU GPL och CDDL gör att det blir lite krångligt att implementera ZFS i Linux. Det går att lösa på två olika sätt, man kan välja att ta hem källkoden och köra ZFS i det man kallar user space eller så kan man använda den metod som detta arbete kommer att fokusera på. Genom en portad version av ZFS går det implementera i Linux (Rajgarhia & Gehani, 2010). Den portade versionen är utvecklad som ett projekt av personal vid Lawrence Livermore National Laboratory. Projektet löser licensproblemen som nämnts tidigare genom att låta användaren kompilera kod själv som sedan körs som en separat modul i kärnan (ZFS on Linux, 2011). 2.3 Mjukvarulicenser All mjukvara ligger under någon form av licens som ger upphovsrätt. En öppen licens ger alla tillgång till källkoden till programmet och användaren får modifiera och vidaredistrubera källkoden. Detta innebär att användare kan modifiera källkoden på det sätt som uppfyller dennes krav. 2.3.1 GNU GPL GNU General Public License är en licens för program och andra verk som är helt fria. I licensen finns fyra punkter som beskriver hur programvaran får användas. De säger att användare ska få friheten att använda programvaran i valfritt syfte, de ska även få undersöka programvaran i syfte av att få kunskap 12 (34)

om dess funktioner och uppbyggnad. Användare ska också fritt få distribuera kopior för att hjälpa andra. Friheten att göra ändringar och förbättringar i programmets källkod för att själv distriburera förbättringarna och därmed kunna hjälpa andra, så att andra kan ta nytta av ändringarna. Om programmet uppfyller ovanstående krav ses det som att programmet går under kraven för att vara fri programvara (Smith, 2010). 2.3.2 CDDL Common Development and Distribution License är en licens för öppen källkod skapad av Sun Microsystems. Licensen säger att programvaran skall vara fri, men det betyder inte att en programvara som faller under CDDLlicensen bara påverkas av den licensen. En produkt kan gälla under flera licenser, där CDDL kan vara en av många. Kod som är släppt under CDDL får användas, modifieras och distribueras vidare fritt. Vilket gör det möjligt att skapa en portad version av filsystemet ZFS som då är släppt under CDDL (Sun, 2004). 13 (34)

3 Metod Under detta kapitel beskrivs hur testerna har gjorts. Kapitlet kommer även beskriva med vilken hård- och mjukvara testerna utförts. Kapitlet kommer gå in på vad som kan vara bra att tänka på när man genomför tester av detta slag. 3.1 Val av metod Arbetet präglades av den exprimentella metoden. Testerna som genomfördes upprepades och med hjälp av resultaten från testerna bildades sedan ett medelvärde som senare analyserades. För att testerna skulle bli pålitliga valdes testverkyg som kunde leva upp till de rekommendationer som Traeger, et al. (2008) givit i sin artikel. För att kunna utföra mätningar med minst två testverktyg av typerna Micro- och Macro-benchmarks valdes två populära och väl testade verkyg, en för varje typ. För de djupgående testerna som kallas Macro-Benchmarks kommer IOzone att användas och för testerna med ett verktyg av typen Micro-Benchmarks kommer Bonnie++ att användas. Varje test har genomförts tre gånger och utifrån de resultaten har sedan ett medelvärde formas som senare analyserades. 3.2 Genomförande För att bli bekanta med de moment arbetet kommer att inkludera så utförs ett antal mindre prestandatester i en virtuell miljö för att lära känna de testverktyg som sedan kommer att användas. Under testmätningarna med Bonnie++ stöttes en del oväntade fel på, t.ex. under testmätningarna presenterades det inga kompletta resultat. Det visade sig att Bonnie++ som standard använda sig av 16 filer för att mäta läs- och skrivhastigheter genom att först skriva ner filer, och därefter läsa samma filer. Om man använder sig av den standardinställningen som gör att Bonnie++ bara använder sig av 16 filer kommer hastigheterna bli något ostabila och Bonnie++ visar då hellre inget resultat, än ett felaktigt resultat. Men med lite modifiering av en 14 (34)

parameter för att ändra antalet filer som skulle användas i testet kunde systemet belastas fullt och ett resultat genereras. 3.2.1 Testmiljö För att utföra metoden använde vi oss av en Dell Optiplex GX620 med följade hårdvara. Processor: Intel Pentium D 2,8GHz Primärminne: 4x 1GB, DDR2, 533MHz Hårddiskar: 4x Seagate Barracuda 160GB 7200 RPM 8MB Cache SATA 3.0Gb/s För att utföra metoden använde vi oss av följade mjukvara. OpenIndiana Build 148 x64 Zpool-version 28 Ubuntu 10.04 x64 Native Linux port (LLNL) Zpool-version 28 FreeBSD 8.2 AMD64 Zpool-version 15 IOzone Version 3.370 Bonnie++ Version 1.96 3.2.2 Datainsamling och testverktyg Data har samlats in genom de testverktyg som använts som genererar resultat som sedan sammanställts. Testverktygen har mätt läs- och skrivhastighet på ZFS-volymen som sedan har genererat en textfil med resultat. Testerna har utförts med samma inställningar tre gånger för att kunna jämnföra resultaten och göra en sammanställning av dessa värden. 15 (34)

Bonnie++ är ett testverktyg för att mäta läs- och skrivprestandan till hårddisk, som är skrivet av Russell Coker. Det är baserat på ett tidigare testverktyg som heter Bonnie som är skrivet av Tim Bray. Tim är idag inte delaktig i utvecklingen av Bonnie++ eftersom han och Russell inte kunde komma överens om med vilket programmeringsspråk som Bonnie++ skulle utvecklas. Problemet med Bonnie++ är att det enbart har möjligheten att göra Micro-Benchmarks (Coker, 2011). IOzone är ett testverktyg som har möjligheten att göra Macro-Benchmarks. Det är ett verktyg för prestandatester som har portats till många olika operativsystem. Verktyget testar I/O prestandan genom att bland annat skriva, skriva om, läsa och skriva om data igen (IOzone, 2006). 3.2.3 Konfiguration av testmiljö För att testerna på vadera operativsystem skulle gå att utföra behövdes först testverktygen installeras. Efter installationen skapades också en volym på en RAID-Z i ZFS. 3.2.4 ZFS i FreeBSD Bland ports i FreeBSD finns Bonnie++, och det kompilerades på följade sätt: cd /usr/ports/benchmarks/bonnie++/ make make install Sedan kompilerades IOzone med följande kommandon: cd /usr/ports/benchmarks/iozone/ make make install När Bonnie++ och IOzone var installerade kunde en Zpool samt filsystem skapas på följande sätt: 16 (34)

zpool create raidpool raidz ad5 ad6 ad7 zfs create raidpool/storage När det ett filsystem skapats börjades testerna med IOzone och detta körs tre gånger. Det är konfigurerat för att läsa och skriva filer upp till 8GB, processor-cachen är inställd till 2048KB. För att starta IOzone-testet användes kommandot: time iozone -Ra -g 8G -i 0 -i 1 -S 2048 tee /home/user/result_freebsd_iozone_run1.txt När testerna var utförda kunde testerna med Bonnie++ påbörjas. Bonnie++ startades med kommandot: time bonnie++ -d /raidpool/storage -s 12G -n 128 -r 4096 u root tee /home/user/result_freebsd_bonnie++run1.txt Där 128 filer testats som är totalt 12GB, testet körs som med andvändaren root och skapar en fil som heter result_freebsd_bonnie++_run1.txt där resultatet av testet presenteras. Testerna med Bonnie++ kördes tre gånger. 3.2.5 ZFS I Ubuntu I Ubuntu installerades testverktygen med pakethanteraren på följande sätt: apt-get install iozone3 apt-get install bonnie++ När testerktygen installerats var det dags att få upp RAID-poolen. Det som då behövs göras är att först installera stöd för ZFS i Ubuntu, detta genom ZFS on Linux. Det som gjordes var att installera nödvändiga paket: apt-get install build-essential gawk zlib1g-dev uuid-dev 17 (34)

Dessa paket är nödvändiga för att kunna använda ZFS. Vidare laddades den senaste versionen av ZFS on Linux ned: wget http://github.com/downloads/behlendorf/spl/spl- 0.6.0-rc4.tar.gz wget http://github.com/downloads/behlendorf/zfs/zfs- 0.6.0-rc4.tar.gz För att kompilera och installera spl-0.6.0 användes följande kommandon: tar -xvzf spl-0.6.0-rc4.tar.gz cd spl-0.6.0-rc4./configure make make install För att installera zfs användes ett liknande kommando som för spl: tar -xvzf zfs-0.6.0-rc4.tar.gz cd zfs-0.6.0-rc4./configure make make install Sedan skapades en RAID-pool och ett filsystem som tidigare: zpool create raidpool raidz hdb hdc hdd zfs create raidpool/storage Samma test utfördes i Ubuntu med IOzone som i FreeBSD: time iozone -Ra -g 8G -i 0 -i 1 -S 2048 tee /home/user/result_ubuntu_iozone_run1.txt 18 (34)

Vidare kördes Bonnie++ med samma inställningar som i FreeBSD: time bonnie++ -d /raidpool/storage -s 12G -n 128 -r 4096 u root > result_ubuntu_bonnie++_run1.txt 3.2.6 ZFS i OpenIndiana Efter testerna i Ubuntu installerades OpenIndiana och efter att de grundliga inställningarna var gjorda så installerades IOzone genom att först ladda ner källkoden från deras websida. wget http://www.iozone.org/src/current/iozone3_370.tar Innehåller i filen packades upp till en katalog: tar -xvzf iozone3_370.tar cd iozone3_370/src/current Kompilerar IOzone för Solaris10 med gcc-kompileraren. make Solaris10gcc För att installera Bonnie++ under OpenIndiana användes kommandot: wget http://www.coker.com.au/bonnie++/experimental/bonnie++- 1.96.tgz./configure make make install 19 (34)

Efter det skapades en RAID-pool och ett filystem. Detta skapades på samma sätt som tidigare: zpool create raidpool raidz c2d1 c3d0 c3d1 zfs create raidpool/storage Det utfördes tre tester med IOzone genom att köra detta kommando: Sedan kördes också Bonnie++, med samma inställningar som tidigare: time bonnie++ -d /raidpool/storage -s 12G -n 128 -r 4096 u root tee result_ubuntu_bonnie++_run1.txt 3.3 Analys Efter testverktygens resultat blivit klara kopieras resulten in i ett Exceldokument för att lätt kunna räkna ut medelvärdet av testerna. Med de slutgiltiga resultaten i Excel skapades sedan diagram för att kunna få en grafisk bild där resultat kan ställas mot varandra. 3.4 Tillförlitlighet Testerna utfördes med testverktyg med samma versionsnummer. Samma parametrar användes under testerna. Alla testerna har gjorts med den grundkonfiguration för ZFS som medföljer vardera operativsystem respektive modul för Ubuntu. Datorn kommer även startas om mellan varje test för se till att inget från äldre tester ligger och tar upp resurser i bakgrunden. 20 (34)

4 Resultat Ett medelvärde av resultaten för respektive testprogramvara visas nedan och kategoriseras sedan efter de testverktyg som används. 4.1 IOzone Resultatet som IOzone genererar kan vara komplicerat att presentera på ett enkelt sätt, därför kommer ett urval av filstorlekar presenteras i olika linjediagram. De filstorlekar som valts är 1MB, 32MB samt 8GB. I figur 1 visas skillnaden i skrivprestanda när en fil på 1MB skrivs ner till disk med varierande blockstorlek. Det betyder att när en fil på 1MB skrivs ner till disk och en skrivstorlek på 64KB används, kommer IOzone skriva ner 64KB åt gången tills hela filen är nerskriven till disk. Skrivhastighet MB/s 1800 1600 1400 1200 1000 800 600 400 200 0 FreeBSD Ubuntu OpenIndiana 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 Blockstorlek i KB Figur 1 Skrivhastighet 1MB Figur 1 visar skrivhastighet för filer med en storlek på 1MB och här ser man att Ubuntu presterar klart bäst medan FreeBSD ligger stabilt på ca 400MB/s oavsett vilken blockstorlek som har används. OpenIndiana ligger inte långt bakom Ubuntu i detta test. 21 (34)

Läshastighet MB/s 3500 3000 2500 2000 1500 1000 500 0 FreeBSD Ubuntu OpenIndiana Figur 2 visar läsprestandan för en fil på 1MB. Här kan man se att FreeBSD presterar som bäst i alla blockstorlekar som testat. Högsta läshastigheten uppstår när blockstorleken är 256KB. 2500 2000 1500 1000 500 0 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 Blockstorlek i KB Figur 2 Läshastighet 1MB Skrivhastighet MB/s FreeBSD Ubuntu OpenIndiana Blockstorlek i KB Figur 3 Skrivhastighet 32MB I figur 3 så ser man att OpenIndiana presterar bäst och når högst hastighet när en blockstorlek på 512KB används. FreeBSD ligger stadigt på ca 60MB/s oavsett vilken blockstorlek som används. 22 (34)

Läshastighet MB/s 3500 3000 2500 2000 1500 1000 500 0 FreeBSD Ubuntu OpenIndiana I figur 4 syns det att FreeBSD ännu en gång presterar bäst i nästan alla lägen. OpenIndiana kommer ikapp när en blockstorlek på 1024KB används. FreeBSD når en högsta hasighet på dryga 30000MB/s när en blockstorlek på 128KB används. 500 450 400 350 300 250 200 150 100 50 0 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 Blockstorlek i KB Figur 4 Läshastighet 32MB Läshastighet MB/s FreeBSD Ubuntu OpenIndiana Blockstorlek i KB Figur 5 Skrivhastighet 1GB 23 (34)

Om filstorleken ökar till 1GB som figur 5 visar så blir kurvorna för Ubuntu och OpenIndiana genast ostabilare än när filstorleken låg på 32MB. FreeBSD ligger även här efter, men stadigt på ca 65MB/s. Läshastighet MB/s 2000 1800 1600 1400 1200 1000 800 600 400 200 0 FreeBSD Ubuntu OpenIndiana 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 Blockstorlek i KB Figur 6 Läshastighet 1GB Även i figur 6 ser vi att samtliga värden är relativt ostabila. Ubuntu uppnår en läshastighet på drygt 1800MB/s när en blockstorlek på 128KB används. Kurvan hos FreeBSD är även här den mest stabila och rör sig mellan ungefär 700-900MB/s. Skrivhastighet MB/s 100 90 80 70 60 50 40 30 20 10 0 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 FreeBSD Ubuntu OpenIndiana Blockstorlek i KB Figur 7 Skrivhastighet 8GB 24 (34)

Figur 7 visar att när filstorleken ökar till 8GB påverkar inte blockstorleken hastigheten på samma sätt. Ubuntu och OpenIndiana ligger på ca 80-90MB/s, medan FreeBSD ligger på dryga 60MB/s. 120 100 Läshastighet MB/s 80 60 40 20 0 FreeBSD 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 Ubuntu OpenIndiana Blockstorlek i KB Figur 8 Läshastighet 8GB I figur 8 kan man se att Ubuntu presterar bäst med en läshastighet som toppar på drygt 100MB/s när blockstorleken 64KB har används. Ubuntu ligger stadigt på ca 95MB/s med restrande blockstorlekar. OpenIndiana presterar inte riktigt lika bra i detta test och ligger istället på en läshastighet på ca 70MB/s. Efter OpenIndiana finner vi i FreeBSD med en stadig hastighet på 64MB/s över alla blockstorlekar. 4.2 Bonnie++ Testerna med Bonnie++ har utförts under samtliga operativsystem i denna undersökning. Varje test har körts tre gånger på respektive operativsystem för att kunna se att alla tester genererar ungefär samma värden när de genomförs under samma omständigheter. Dessa värden som Bonnie++ genererat har sedan beräknats till ett medelvärde, som presenteras i nedanstående diagram. 25 (34)

0 20 40 60 80 100 OpenIndiana Ubuntu FreeBSD Skrivhastighet MB/s Figur 9 Skrivhasighet I figur 9 syns det att det inte är någon jättestor skillnad mellan de tre operativsystemen, när Bonnie++ har används som testverktyg. FreeBSD och Ubuntu ligger båda på ca 85MB/s medan OpenIndiana ligger lite efter när en fil på 12GB skrivs till volymen. 0 20 40 60 80 100 OpenIndiana Ubuntu FreeBSD Läshastighet MB/s Figur 10 Läshastighet När en fil på 12GB läses från volymen har vi liknande trender som i skrivhastighetstestet. I figur 10 syns det att Ubuntu preserar bäst av de tre, med en genomsnittlig läshastighet på 97MB/s. Därefter kommer FreeBSD med en läshastighet på 95MB/s. Lång bakom de andra finner man OpenIndiana med en Läshastighet på ca 65MB/s. 26 (34)

5 Analys och diskussion Detta kapitel kommer att behandla en analys av resultaten och en diskussion kring arbetet. Det som kommer att diskuteras är reflektioner över resultaten och metoden. Sådant som kan ha spelat roll under testerna och hur tillförlitliga testerna är. 5.1 IOzone Skrivhastighetsresultaten i IOzone vid skrivning av en fil på 1MB visar att både Ubuntu och OpenIndiana är betydligt snabbare än FreeBSD. Det man ser är att Ubuntu och OpenIndiana stiger väldigt lik kurva uppåt ju större blockstorleken blir. Ubuntu stiger till lite över 1600MB/s medan OpenIndiana stannar runt 1400MB/s. FreeBSD har en linjär utveckling som håller sig runt 400MB/s under hela utförandet. När det kommer till läshastigheten av en fil med storleken 1MB får FreeBSD bäst resultat. FreeBSD ha ren kurva som stiger uppåt desto större blockstorlekarna blir tills det att hastigheten sjunker kraftigt vid blokstorlekar runt 512 och 1024KB. Ubuntu och OpenIndiana har en liknande utvecklingkurva men ligger under hela testet långt bakom FreeBSD. Man kan också se på Figur 4.1 Läshastighet 1MB att OpenIndianas läshastighet redan sjunker kraftigt vid 256KBs blockstorlek. Vid skrivning av en fil på 32MB kan man se att Ubuntu och OpenIndiana stiger upp till en hastighet av 1500MB/s för att sedan skiljas, OpenIndiana fortsätter att stiga till över 2000MB/s medan Ubuntu går ner till 1000MB/s och håller sig där. FreeBSD håller samma linjära utveckling, men vid detta test är hastigheten inte över 100MB/s. Den allmäna trenden visar att FreeBSD håller en stabilare kurva i samtliga tester medan Ubuntu och OpenIndiana visar relativt ostabila resultat. 27 (34)

FreeBSD visar förhållandevis långsamma skrivhastigheter medan Ubuntu och OpenIndiana visar motsattsen. Vad detta beror på är svårt att säga, förmodligen ligger problemet i metoden. För att vara säker på att felet inte ligger i hanteringen av testverktyget i sig, hade det varit bra testa och utvärdera IOzone lite djupare. Läsning och skrivning till stora filer som 8GB har de tre operativsystemen liknande utvecklingskurvor. Ubuntu och OpenIndiana ligger jämte varandra vid skrivhastigheten medan FreeBSD ligger en bit under. 5.2 Bonnie++ Resultatet för Bonnie++ visar att OpenIndiana presterat långsammast i både läs- och skrivhastighet, dessutom är läshastigheten långsammare än skrivhastigheten. Detta kan anses konstigt då hårddiskars och andra lagringsmedia ofta har en högre läshastighet än skrivhastighet. Specifikationerna för de hårddiskar som används under testerna säger samma sak. En annan anledning till skillnaden mellan resultaten från de två testverktygen skulle kunna vara att under testerna med Bonnie++ användes det större filer, än vad som egentligen var planerat. Problemet började med att Bonnie++ inte gav kompletta resultat. När ett test med Bonnie++ är klart visas resultatet i en tabell. Efter att det första testet med Bonnie++ var klart visades ingen komplett tabell. För att få pålitliga resultat provades ett antal olika inställningar för att lösa problemen. Ett av dessa innebar att Bonnie++ läser och skriver större filer. Värderna som visas för Ubuntu och FreeBSD ligger närmare den hastighet som diskarna klarar av att läsa enligt dessa specifikationer. Både Ubuntu och FreeBSD har väldigt lika resultat, skrivhastigheten mellan dem båda skiljer sig knapp. I läshastighet är Ubuntu marginellt snabbare än resterande operativsystem. Resultaten som Bonnie++ genererar visar alltså att Ubuntu är snabbast i både läs- och skrivhastighet. 28 (34)

5.3 Metodreflektion och tillförlitlighet Under genomförandet hade man kunnat använda andra verktyg för att utföra testerna som kanske kunnat visa ett annorlunda resultat. Flera olika inställningar hade kunnat göras i ZFS för att kunna göra testerna mer pålitliga. Verifiering av inställningar för bland annat cache hade kunnat göras, så det är säkert att inställningarna för ZFS är desamma i alla operativsystem. Många av våra tester visar även ett förvånadsvärt dåligt resultat från FreeBSD, som tidigare nämnts anar vi att det har att göra med cache i ZFS. Antingen att de olika operativsystemen har olika standardinställningar för ZFS, eller att testerna inte har utförts under samma omständigheter. Det behöver nödvändigtvis betyda att testerna har utförts med olika inställningar och på så sätt givit olika resultat, däremot kan det vara så att det slarvats med omstarter. Som tidigare nämnts valde vi att starta om datorn mellan varje test, för att på så sätt få en ren start när testerna genomfördes. Testerna med IOzone kan tyckas vara orimliga då läshastigheten i vissa fall är högre en vad hårddisken faktiskt klarar av att läsa, även om man räknar in påverkan av cache. Många olika faktorer kan ha spelat en roll under testerna. De tänkbara förklaringarna till detta kan vara att ZFS använder sig av caching av data som kan öka hastigheterna i testerna. 29 (34)

6 Slutsats Denna uppsats har fokuserat på prestandaskillnader som kan uppstå när olika operativsystem som på ett eller annat sätt använder filsystemet ZFS. När denna rapport skrevs saknades det vetenskapliga undersökningar som berättar hur eventuella prestandaskillnader i ZFS kan uppstå när det används under olika former. Syftet har varit att utföra prestandatester för att kunna få en klar bild av skillnaderna. Arbetet har visat hur prestandan i en RAID-Z1 skiljer sig mellan Linux-distributionen Ubuntu, operativsystemen FreeBSD och OpenIndiana, där läs- och skrivprestandan mot RAID-poolen jämfördes med två olika testverktyg, Bonnie++ och IOzone. Med alla faktorer som kan påverka läs- och skrivhastigheten i de olika operativsystemen, är det svårt att med vår metod ge en klar bild över prestandaskillnaderna. 6.1 Resultat Testerna visade att Ubuntu presterar bäst i skrivhastighet för Bonnie++ och till vissa delar även Iozone. Detta kan tyckas märkligt då prestandan bör vara bäst i de operativsystem där filsystemet i fråga faktiskt kommer implementerat från början. 6.2 Förslag till fortsatt forskning Det är tidigare nämnt att vissa resultat kan ses som något opålitliga, och att det skulle kunna bero på att de olika operativsystemen som standard använder sig av olika inställningar i ZFS. Det vore därför intressant att verifiera att alla inställningar för cache är lika på samtliga operativsystem. Ett förslag till vidare studier är därmed att testa hur stor påverkan cache, och andra inställningar i ZFS har på prestandan. 30 (34)

7 Referenser Bonwick, J. Jeff Bonwick s Blog. Tillgänglig: http://blogs.sun.com/bonwick/entry/raid_z [2011-05-05] Coker, R. Bonnie++ Documentation. Tillgänglig: http://www.coker.com.au/bonnie++/readme.html [2011-05-07] IOzone. IOzone Filesystem Benchmark. Tillgänglig: http://www.iozone.org [2011-05-07] Izyrueta, C & Bieman, J. (2006) The evolution of FreeBSD and Linux. Proceedings of the 2006 ACM/IEEE international symposium on Empirical software engineering Karlsson, O & Carlsson, M. (2008). Prestandaundersökning och återställning av degraderade RAID-system. Tillgänglig: http://urn.kb.se/resolve?urn=urn:nbn:se:lnu:diva-5829 McKenney, P & Walpole, J. (2008). Introducing Technology Into the Linux Kernel: A Case Study. ACM SIGOPS Operating Systems Review - Research and developments in the Linux kernel, Volume 42 Issue 5, July 2008 OpenIndiana. Frequently Asked Questions - OpenIndiana - OpenIndiana Wiki. Tillgänglig: http://wiki.openindiana.org/oi/frequently+asked+questions [2011-05-05] OpenSolaris. Community Group zfs. Tillgänglig: http://hub.opensolaris.org/bin/view/community+group+zfs [2011-05-18] 31 (34)

Shanahan, P. Pete Shanahan s Weblog. Tillgänglig: http://blogs.oracle.com/petesh/entry/copy_on_write [2011-05-18] Silberschatz, A. Galvin, P.B. & Gagne, G. (2001). Operating System Concepts. 6th Edition. Indianpolis: Wiley Smith, B. A Quick Guide to GPLv3. Tillgänglig: http://www.gnu.org/licenses/quick-guide-gplv3.html [2011-05-06] Solaris ZFS. Cutting-Edge Data Integrity. Tillgänglig: http://www.sun.com/software/solaris/zfs.jsp [2011-05-05] Stanik, J. (2007) A Conversation with Jeff Bonwick and Bill Moore. Queue - File Systems and Storage, Volume 5 Issue 6, September/October 2007 Sun. Common Development and Distribution License (CDDL), Description and Rationale. Tillgänglig: http://www.sun.com/cddl [2011-05-07] Traeger, A. Zadok, E. Joukov, N & Wright, C. P. (2008). A nine year study of file system and storage benchmarking. ACM Transactions on Storage (TOS) Volume 4, Issue 2, 56. 32 (34)

Bilagor Vid behov av bilagor, såsom data som används till diagram och grafer vänligen kontakta författarna enligt kontaktuppgifter nedan: Jacob Carlsson Johnas Lindell jc22ct@student.lnu.se jl22sr@student.lnu.se 33 (34)

351 95 Växjö / 391 82 Kalmar Tel 0772-28 80 00 dfm@lnu.se Lnu.se