Examensarbete i Datavetenskap B-nivå Advanced Format En prestandajämförelse av sektorer i RAID Författare: Jesper Lindgren Författare: Cenny Stålnäbb Handledare: Marcus Wilhelmsson Termin: VT11 Kurskod: 1DV41E
Abstrakt Rapporten tar upp hur ett RAID-system reagerar om hårddiskar med olika stora sektorer blandas. Vi ansåg att det skulle vara intressant att ta reda på eftersom nya hårddiskar med Advanced Format har börjat levereras. För att undersöka detta genomfördes experiment. Testerna utfördes med RAID1 på en maskin som körde CentOS. Tester som vi valde att utföra var prestandamätningar på läs- och skrivhastighet samt tid det tog för återuppbyggnad. Läs- och skrivtesterna utfördes på två olika sätt. Det första gick ut på att ta tiden när 100 stycken 7,3GB-filer skapades och lästes. Det andra testet bestod utav att programmet Bonnie++ kördes och testade RAIDen. Vi tog även tiden för återuppbyggnad av RAIDen när diskar med olika sektorstorlek användes. Resultatet i det första läs- och skrivtestet visade att två stycken hårddiskar med samma sektorstorlek presterade bättre, medan i Bonnie++-testet var två hårddiskar som hade olika sektorstorlek snabbare. I återuppbyggnaden presterade två hårddiskar med lika sektorstorlek bättre. Nyckelord: Advanced Format, hårddisk, RAID, sektor
Förord Valet av examensarbetet gjordes för att vi tyckte det lät intressant och kunde inte hitta något tidigare arbete om just detta ämne. Arbetsgången har gått bra och vi har inte stött på några olösbara problem. Resultatet som examensarbetet får fram riktar sig främst mot privatpersoner med kunskaper inom datorteknik och lagringssystem. Resultatet kan även användas av mindre företag och organisationer som inte har serviceavtal med leverantör. Vi vill tacka Marcus Wilhelmsson för all hjälp och vägledning med experiment och rapporten.
Innehåll 1 Introduktion 6 1.1 Syfte och frågeställning 7 1.2 Avgränsning 7 2 Teknisk bakgrund 8 2.1 Linux 8 2.2 Hårddisk 9 2.3 Redundant Array of Independent Disks 11 2.4 Filsystem 12 3 Metod 13 3.1 Experiment och datainsamling 13 3.2 Installation och förberedelser 14 3.3 Genomförande 15 4 Resultat och analys 17 5 Diskussion och slutsats 20 5.1 Metoddiskussion 20 5.2 Slutsats 21 5.3 Förslag till fortsatt forskning 21 Referenser 22
1 Introduktion I över 30 år har den magnetiska hårddisken lagrat data i sektorer på 512 byte. Men i och med att hårddiskarnas storlek har ökat markant den senaste tiden så har detta begränsat utvecklingen (Seagate, 2010). I mars 2010 infördes en ny standard, Advanced Format. Tillverkarna kom överens om att hårddiskar med sektorer på 4096 byte skulle börja utvecklas. Detta gör att hårddisktillverkarna kan få in mer data på magnetskivorna fast de inte ökar i storlek (Seagate, 2010). Allt fler privatpersoner inhandlar eller bygger egna lagringslösningar. Digitala bilder och dokument blir allt viktigare att spara inför framtiden och på ett säkert sätt. När en sådan lösning ska inhandlas är det främst två saker som undersöks; redundans och lagringsstorlek. För att lösa redundansen använder man ofta någon nivå utav Redundant Array of Independent Disks (RAID). RAID skyddar informationen ifall det skulle uppstå ett hårdvarufel i någon utav hårddiskarna (Nemeth et al, 2010). Då de nya hårddiskarna med Advanced Format har kommit ut på marknaden och inga tidigare undersökningar som behandlar Advanced Format i RAID kunde hittas så blev det högst intressant att undersöka detta. 6 (23)
1.1 Syfte och frågeställning Syftet med arbetet är att undersöka och ta reda på hur ett RAID-system påverkas av olika stora sektorer och ifall det uppstår några prestandaskillnader om man blandar hårddiskar med olika stora sektorer. En lagringslösning som använder sig av RAID med hårddiskar som har 512 byte stora sektorer kommer att byggas upp för att simulera ett befintligt system. Detta kommer sedan att nedgraderas och en hårddisk av typen Advanced Format kommer att införas i RAIDen. Frågorna som vi ställer oss är: Kommer RAIDen återställas och fungera? Hur lång tid kommer det ta att återställa RAIDen? Kommer det skilja något i läs- och skrivprestanda? 1.2 Avgränsning Experimentet kommer att avgränsas eftersom arbetstiden som finns tillgänglig är begränsad samt att det finns mycket som kan påverka resultatet. Saker som kan påverka resultatet kan till exempel vara vilket operativsystem man använder, vilken nivå på RAIDen, vilket filsystem som används samt tillverkare och modell på hårddiskarna som används. För att testet ska bli så korrekt som möjligt så kommer de nya hårddiskarna med Advanced Format att vara så lika de gamla som möjligt. Detta kommer att begränsa arbetet till RAID 1 då det finns en begränsning i antalet tillgängliga hårddiskar. Testerna kommer att genomföras på Linux kernel 2.6.18 med filsystemet Ext4. 7 (23)
2 Teknisk bakgrund I detta kapitel förklaras det som arbetet baseras på. Operativsystemet Linux, hårddiskens uppbyggnad, RAID, Advanced Format samt filsystemet Ext4 tas upp. 2.1 Linux Den första versionen av Linux kom ut 1991 och var inspirerad av UNIX. Linux skapades av studenten Linus Torvalds. Det hela började som en hobby när han studerade datalogi. Grunden bygger på UNIX och det är gratis och fritt att distribuera (Tanenbaum, 2009). Linux släpps under GNU General Public License. Denna licens ser till att vem som helst kan göra ändringar men då måste den personen meddela sina ändringar och bifoga den kod som skapats för att personerna som tar del av materialet ska få samma förutsättningar (Tanenbaum, 2009). Det finns mängder av distributioner utav Linux. Tre populära distributioner är Ubuntu, CentOS och Debian (Nemeth et al, 2010). 8 (23)
2.2 Hårddisk Hårddisken innehåller flera olika delar. För att få förståelse för vad som ska undersökas i arbetet så kommer relevanta delar att beskrivas. 2.2.1 Uppbyggnad Hårddisken är uppbyggd av en eller fler magnetiska skivor som data lagras på. En arm med skriv- och läshuvud rör sig fram och tillbaka för att läsa och skriva data. En översiktlig bild över en hårddisk kan ses i figur 1. För att hårddisken ska finna vart data är lagrat så är skivan uppdelad i spår och sektorer. Som figur 2 visar så löper det spår runt hela skivan som sedan är uppdelade i sektorer (Andreas de Blanche, 2008). Figur 1: Översikt över hårddiskens delar, Muller, 2003. Figur 2: Magnetskiva med spår och sektorer, IDEMA, 2011. 9 (23)
2.2.2 Sektor Hårddisken använder sektorer för att hålla reda på vart data är lagrat. En sektor består utav tre olika delar: Preamble, Data Field och ECC. Preamble avgränsar de olika sektorerna från varandra samt innehåller information om sektorn så som vart den börjar och finns samt status. Data Field innehåller data och sist så finns EEC som innehåller information för felkorrigering så att skadad data kan repareras (Tanenbaum, 2009). En sektor kan ses i figur 3. Figur 3: Sektor, IDEMA, 2011 2.2.3 Advanced Format I och med standarden Advanced Format så kom hårddisktillverkarna överens om att börja leverera hårddiskar med sektorer på 4096 byte (Seagate, 2010). Den största fördelen med Advanced Format är att man får plats med mer data utan att behöva ändra eller lägga till fler skivor i hårddiskarna. Eftersom antalet sektorer minskas, försvinner även antalet Gap, Sync och Address Mark. I och med detta så kan man få in mer data på en hårddisk som använder Advanced Format än en som inte gör det (Seagate, 2010). En bra översikt på detta kan ses i figur 4. Figur 4: Advanced Format, IDEMA, 2011 10 (23)
2.3 Redundant Array of Independent Disks Med en server som ska ha hög tillgänglighet så kan en fallerad hårddisk vara förödande. Det är inte bara hårddisken som ska bytas ut, utan även att backuper ska återställas, vilket kan ta långt tid beroende på hur mycket data som ska återställas (Nemeth et al, 2010). För att skydda mot hårdvarufel i hårddiskar, samt öka prestandan introducerades Redundant Array of Independent Disks (RAID) 1987. Enkelt så kan man säga att RAID tar flera fysiska enheter och skapar en logisk (Mueller, 2003). Det finns olika nivåer utav RAID. Dessa nivåer, 0-6, är standardiserade och bestämmer bland annat hur data ska spridas över hårddiskarna (Mueller, 2003). Hårddiskar som ska användas i en RAID-lösning kan styras på två sätt. Antingen via operativsystemet och heter då mjukvaruraid, eller via en dedikerad kontroller och heter då hårdvaruraid. Operativsystemet eller kontrollern sköter kommunikationen och delar ut data på hårddiskarna enligt de regler som är bundna till RAID-nivån som används (Nemeth et al, 2010). 2.3.1 RAID 1 För att skapa en RAID 1, eller spegling som det även kallas, behövs minst två hårddiskar. Om två hårddiskar används så kommer endast en logisk disk ses av operativsystemet, samt att man bara kan lagra data på hälften av båda hårddiskarnas storlek tillsammans. Detta för att alla data som lagras på den ena hårddisken kopieras över till den andra. Detta gör att en hårddisk kan fallera utan att man förlorar all data som finns lagrad och servern kan fortsätta läsa och skriva mot hårddisken (Chen et al, 1994). En bild som beskriver RAID 1 kan ses i figur 5. Figur 5:Raid 1, Nemeth et al, 2010. 11 (23)
2.3.2 MD och MDADM Standardmjukvaran i Linux som används för att skapa mjukvaruraid heter Multiple disks (MD). För att enklare hantera MD så använder man programmet MDADM (Nemeth et al, 2010). 2.4 Filsystem Filystemet används som en mellanhand mellan operativsystemet och hårddisken. Operativsystemet behöver inte hålla reda på i vilka sektorer en viss fil befinner sig, utan detta håller filsystemets databas reda på. Det finns olika filsystem till olika operativsystem. Alla med olika funktioner och egenskaper (Nemeth et al, 2010). Ext4 är det senaste filsystemet i Ext-familjen. Filsystemet är en uppdaterad version av Ext3 och är mer skalbart och pålitligt samt stödjer större filer och hårddiskar (kernel.org 2011). Det använder även en funktion som kallas "extents". Istället för att spara data i individuella block, sparar det nu data i blockspann (Nemeth et al, 2010). 12 (23)
3 Metod Metoden förklarar hur arbetet genomförts och vilken typ av metod vi valt att använda. Genomförandet innehåller kommandon så att samma tester kan genomföras om någon vill utveckla eller forska vidare inom området. 3.1 Experiment och datainsamling Vi valde att använda experiment för att samla in resultat från tester. Vi genomförde metoden i tre steg, experiment, insamling och analys av data. Resultaten av testerna utvärderades och jämfördes för att få fram svar på våra frågeställningar. (holah.karoo.net, 2011) Datainsamling skedde genom att prestandatester ufördes på ett RAID-system där en hårddisk som hade en sektorstorlek på 512 byte med en som hade 4096 byte. Prestandatesterna undersökte läs- och skrivhastighet samt återuppbyggnad av RAIDen. Programmen Bonnie++ och Time utförde testerna för läs- och skrivhastighet medan systemet tog hand om återuppbyggnaden. Inställningarna för Bonnie++ bestämdes innan testerna påbörjades och användes genom hela experimentet för att rättvisa resultat ska genereras i de olika konfigurationerna. Testerna utfördes mot en enhet som körde RAID1. Det första testet genomfördes med två hårddiskar som hade 512 byte stora sektorer, medan det andra testet genomfördes när en av hårddiskarna var utbytt mot en som använde Advanced Format. Experimenten utfördes på en Dell Optiplex 620 med 3,5GB RAM. Hårddiskarna som användes var av märket Western Digital och av modellerna WD10EADS och WD10EARS. Operativsystemet var CentOS 5.6 med kärna 2.6.18. Bonnie++ version 1.03e-X86_64 och mdadm version 2.6.9 användes. 3.1.1 Dataanalys Nedan beskrivs Bonnie++, Time och dd. Dessa mjukvaror användes under experimenten. Bonnie++ är ett programpaket till Linux som innehåller tester som kan användas för att göra prestandamätningar på hårddiskar och filsystem. Exempel på vad Bonnie++ kan testa är läs- och skrivhastighet och antalet sökningar per sekund. Bonnie++ är skrivet utav Russell Coker och baseras på Bonnie av Tim Bray (Coker, 2001). Dd är ett av det ursprungliga multifunktionella Unix-verktygen. Exempel på vad man kan använda programmet till är att skapa och skriva avbildningar, klona diskar samt skapa och läsa filer (Debianhelp.co.uk, 2011). 13 (23)
Time används när man vill mäta hur lång tid det tar att köra ett visst program. Time startar programmet som man vill testa och när det är klart så skrivs det ut hur långt tid programmet tog på sig, från att det startade tills det stängdes av (kernel.org, 2008). Resultaten från testprogrammen sammanställdes i Excel. Diagram skapades för att få en mer tydlig översikt över resultaten. 3.2 Installation och förberedelser En 64-bits version av operativsystemet CentOS 5.6 installerades på datorns systemdisk som satt i SATA port 0. Efter installation uppdaterades systemet och kernel 2.6.18 användes. Bonnie++ installerades med hjälp utav en RPMfil. E4fsprogs installerades även då detta behövdes för att kunna formatera enheten med Ext4. yum update yum install e4fsprogs Hårddiskarna med 512 byte stora sektorer installerades i SATA port 1 och 3. En RAID1 skapades på sdb och sdc som var deras beteckning i CentOS. mdadm create /dev/md0 level=1 raid-devices=2 /dev/sdb /dev/sdc RAIDen formaterades sedan med EXT4 med kommandot: mkfs.ext4 /dev/md0 Katalogen /mnt/raid skapades och RAID-enheten monterades sedan där. mkdir /mnt/raid mount /dev/md0 /mnt/raid 14 (23)
3.3 Genomförande När installationen och skapandet av RAIDen var klar började vi med testerna. Första testet bestod utav att tid togs när 100 stycken 7,3GB stora filer skapades och sedan lästes innan de togs bort. Bonnie++ var på tur och testade läs- och skrivprestandan 45 gånger. Innan en utav hårddiskarna byttes ut mot Advanced Format så skapades 120GB data på RAIDen, detta för att enklare kunna mäta återuppbyggnaden när den nya hårddisken intog RAIDen. När återuppbyggnaden var klar så gjordes samma läs- och skrivtester igen. Sista testet var att byta ut hårddisken som använde Advanced Format med den äldre igen för att jämföra återuppbyggnadstiderna. 3.3.1 Prestandatester Det första testet bestod utav att se hur lång tid det tog att skapa 100 stycken filer på 7,3GB var på RAIDen. Detta gjordes med kommandot: time (for ((nr=1;nr<=100;nr++ ));do dd if=/dev/zero of=/mnt/raid/testfile.$nr bs=1m count=7000;done När testet var klart så lästes även 100 filer på 7,3GB samtidigt som tiden togs. time (for ((nr=1;nr<=100;nr++ ));do dd of=/dev/zero if=/mnt/raid/testfile.$nr bs=1m count=7000;done Även Bonnie++ användes för att testa läs- och skrivprestandan. Bonnie++ kördes 45 gånger och skrev ut resultaten i Bonnie-resultat.txt. Parametern f användes för att skippa IO-tester då läs- och skrivresultat endast var intressant. bonnie++ -d /mnt/raid u root f >Bonnie-resultat.txt När Bonnie++ var klart kördes programmet dd för att skapa runt 120GB data för att kunna mäta tiden på återuppbyggnaden för RAIDen när den nya hårddisken hade kopplats in. for ((nr=1;nr<=60;nr++ ));do dd if=/dev/zero of=/mnt/raid/rebuild.$nr bs=1m count=2048;done Hårddisken som var kopplad i port ett byttes ut mot den nya Advanced Format-disken. RAIDen startades upp med endast en disk. Parametern run behövdes för att tvinga RAIDen att starta upp med endast en disk som kan ses i kommandot nedan. 15 (23)
mdadm assemble /dev/md0 /dev/sdc run Den nya hårddisken lades till i RAIDen och återuppbyggnaden påbörjades. mdadm /dev/md0 a /dev/sdb Tiden på återuppbyggnaden togs med tidtagarur samtidigt som följande kommando visade händelseförloppet. cat /proc/mdstat När RAIDen var återuppbyggd kördes samma läs- och skrivtester som innan. Testet avslutades med att hårddisken som använde Advanced Format byttes ut mot den äldre, så att tiden för återuppbyggnad kunde tas. 16 (23)
4 Resultat och analys Resultatet för testerna som ufördes sammanställdes med tre diagram som presenteras nedan. Figurerna innehåller tiden för att skriva och läsa 100 stycken 7,3GB stora filer, läs- och skrivtester i Bonnie++ samt återbuppbyggnad. Figur 6 visar hur långt tid det tog att skapa och läsa 100 stycker filer på 7,3GB vardera med dd och time. När två hårddiskar med 512 byte användes så var skrivtiden 02:14:31 och lästiden 02:14:31. När hårddiskarna blandades så blev istället skrivtiden 02:27:03 och lästiden 02:20:06. Prestandan försämras alltså när man blandar en hårddisk som använder 512 byte stora sektorer med en som använder Advanced Format. Figur 6: Resultatet av att skapa och läsa 100 stycken 7,3GB stora filer. Lägre tid är bättre. 17 (23)
Bonnie++ kördes 45 gånger och testade läs- och skrivprestanda. Resultatet i figur 7 visar ett genomsnitt av de 45 gånger testet kördes. När de två hårddiskarna på 512 byte testades så fick man ut 58,48MB/s i skrivprestanda och 63,06MB/s i läs. När det blandades en med 512 byte och en med 4096 byte så blev det en prestandaökning. Skrivprestandan blev då 77,02MB/s och läsprestandan 69,77MB/s. Figur 7: Sammanställt resultat utav testerna med Bonnie++. Högre är bättre. 18 (23)
Resultatet av återuppbyggnaden kan ses i figur 8. Återuppbyggnaden med hårddisken som använde 512 byte stora sektorer tog 03:14:34 och Advanced Format tog 03:41:50. Figur 8: Tid för återuppbyggnad. Lägre är bättre. 19 (23)
5 Diskussion och slutsats Syftet med arbetet var att testa och se hur ett system påverkades när man hade två stycken hårddiskar i RAID som inte hade samma sektorstorlek. Vad det gäller tester som kan göras på ett sådant system så finns det ganska många. Vi valde dock att begränsa arbetet till att testa återuppbyggnad samt testa läs- och skrivprestanda i två olika program. Återuppbyggnaden av RAIDen fungerade med både 512-bytediskar och Advanced Format-disk. Detta var något vi hade förväntat oss eftersom det inte finns något som tyder på att det inte skulle fungera. RAID är så pass utbrett i lagringsvärlden att tillverkarna måste få diskarna att fungera tillsammans. Resultatet av prestandatesterna överraskade oss lite. I testet där programmet Bonnie++ kördes för att mäta läs- och skrivprestanda så fick vi bättre resultat när två hårddiskar som inte hade samma sektorstorlek användes. Däremot så blev resultatet bättre när två hårddiskar med 512 byte, användes i testet där det skapades och lästes 100 stycken filer på 7,3GB vardera. Tiden för återuppbyggnaden gick ungefär 27 minuter fortare med två 512-bytediskar än med två diskar med olika sektorstorlekar. För att få ett rättvist resultat här skulle vi nog ha gjort fler återuppbyggnader under en tid, men tiden för arbetet begränsade oss. Det kan finnas mängder med anledningar till varför vi fick olika läs- och skrivresultat. Det kan bero på hur testprogrammen läser och skriver data. Multiple Disks kan även vara en anledning till att hastigheterna varierade. Det skulle kanske kunna bero på att det blir någon form av konflikt när man blandar en 512-bytedisk med en Advanced Format-disk. Testerna som behandlar läs- och skrivprestanda bevisar att det finns prestandaskillnader. Det svåra med resultaten är att de inte tyder på att en konfiguration är bättre än den andra. Detta hade behövts testas fler gånger för att få ut ett bättre resultat där man lättare kan se skillnader mellan konfigurationerna. 5.1 Metoddiskussion Vi valde experiment eftersom det passade vår frågeställning bäst. Då heller inga tidigare undersökningar gjorts så kunde vi inte jämföra resultat och därmed få fram svar på frågeställningen. Vi tycker att experiment är ett bra sätt att gå till väga eftersom det är fritt och man kan anpassa sina tester till syftet. Hade vi haft mer tid hade vi velat utöka testandet så att det blir ett mer 20 (23)
rättvist resultat. Denna metod kräver långa tester samt att flera olika testprogram körs. 5.2 Slutsats Att dra en slutsats av rapporten som säger att det är rätt eller fel att blanda hårddiskar i RAID som inte har samma sektorstorlek går tyvärr inte. För att ge ett rättvist svar behöver fler tester att göras, tillexempel sökningar på sekund och andra prestandatester. Det är ju inte bara läs- och skrivprestanda som kan avgöra saken. Man kan också fundera på om vi hade fått samma resultat om en hårddisk med Advanced Format från en annan tillverkare hade testats. Även om det finns vissa skillnader mellan de olika konfigurationerna så kan vi med resultatet inte säga att prestandan påverkas negativt om man blandar hårddiskar som inte har samma sektorstorlek i en RAID. 5.3 Förslag till fortsatt forskning Till framtida forskning behövs fler tester göras, precis som vi beskriver i diskussionen. Även hårddiskar från andra tillverkare borde tas med i testerna, då mjukvaran i hårddiskarna kan påverka resultaten. Det hade även varit intressant om testerna genomförs på ett annat operativsystem, till exempel Solaris för att se hur ZFS reagerar på Advanced Format. 21 (23)
Referenser Chen, P. Lee, E. Gibson, G. Katz, R. Patterson, D. (1994) RAID: High- Performance, Reliable Secondary Storage. Från acm.org (2011-04-15): http://portal.acm.org/ft_gateway.cfm?id=176981&type=pdf&cfid=1808144 3&CFTOKEN=65233591 Coker, R. (2011-04-15) Bonnie++. Från Bonnie++: http://www.coker.com.au/bonnie++/ Debianhelp.co.uk (2011-05-20) Backup an entire disk using dd command. Från Debianhelp.co.uk: http://www.debianhelp.co.uk/ddcommand.htm Hein, T. Nemeth, E. Snyder, G. Whaley, B.(2010) Unix and Linux system administration handbook, Fourth Edition. PRENTICE-HALL. Boston Holah.karoo.net (2011-05-30) The Experimental Method. Från: http://www.holah.karoo.net/experimental_method.htm IDEMA(The International Disk Drive Equipment and Materials Association) (2011-04-15) Advanced Format for hard disk drive. Från IDEMA: http://www.idema.org/wp-content/uploads/downloads/2011/03/advanced- Format-for-Hard-Disk-Drives.pdf Kernel.org(2008-11-14) Linux User Manual Time.Från Kernel.org: http://www.kernel.org/doc/man-pages/online/pages/man1/time.1.html Kernel.org (2011-04-15) Ext4 Filesystem. Från kernel.org: http://www.kernel.org/doc/documentation/filesystems/ext4.txt Mueller, S. (2003) Upgrading and Repairing PCs. Que. Indianapolis Seagate (2011-04-15) The Transition to Advanced Format 4K Sectors Hard Drives. Från Seagate: http://www.seagate.com/docs/pdf/whitepaper/tp613_transition_to_4k_sectors.pdf Tanenbaum, A (2009) Modern Operating Systems, Third Edition. Person Education Inc. Upper Saddle River 22 (23)
351 95 Växjö / 391 82 Kalmar Tel 0772-28 80 00 dfm@lnu.se Lnu.se