Linnéuniversitetet Projektrapport Grundläggande Operativsystem 1DV415 Prestandajämförelse - Sekventiell skrivhastighet i RAID 4 och RAID 5 Mattias Nensén, Henrik Hedlund 10 januari 2014
Sammanfattning I den här rapporten beskrivs ett experiment som går ut på att jämföra skrivhastigheten på RAID 4 och RAID 5. Testet sker virtualiserat i VMware 10 och operativsystemet som används är Linux Ubuntu 12.04. Skrivhastigheten kommer att mätas med två olika verktyg, dd och Bonnie++. Eftersom testen sker virtuellt så är sannolikheten stor att de uppnådda resultaten är högst otillförlitliga.
1 Introduktion Sedan människan började använda datorn som redskap har utvecklingen gått otroligt snabbt. Snabbast har utvecklingen vad gäller exekveringshastighet och storleken och snabbheten hos primärminnet gått och med det även driftssäkerheten. I skuggan av den utvecklingen ligger sekundärlagringen. Den är långsam och upplevs ofta som en flaskhals i systemet samtidigt som det finns en viss risk att det man sparat på hårddiskarna går förlorat vid diverse mekaniska fel och slitage. För att delvis komma runt problemet med långsamma hårddiskar och risken för förlorad data när man har all data på en plats så har utvecklingen lett till att man använder flera lagringskomponenter som arbetar parallellt. Detta kom att kallas för RAID, Redundant Array of Independent Disks, och är idag det som förhindrar dataförlust på mängder av datorsystem runt om i världen. [1] Denna rapport fokuserar på två varianter av mjukvaru-raid, RAID 4 och RAID 5. Laborationen går ut på att mäta den sekventiella skrivhastigheten i de båda och dra slutsatser om varför resultaten ser ut som de gör. RAID-systemen är implementerade två virtuella maskiner med operativsystemet Linux Ubuntu 12.4. RAID-systemen består av tre virtuella hårddiskar vardera om 5,4 GB styck vilket ger 10,8 GB faktiskt lagringsutrymme på volymerna och 5,4 GB utrymme som paritetsdata allokeras till. För att implementera mjukvaru RAID används mdadm. Mdadm är ett program som låter en skapa och administrera olika RAID-system. Filsystemet som används är Ext4. Testerna genomförs via det i Ubuntu inbyggda dd och den externa mjukvaran Bonnie++. Dessa beskrivs i mer detalj senare i rapporten. 1.1 Vad är RAID? RAID är en samling hårddiskar som arbetar parallellt med varandra och de olika varianterna kan fylla en mängd olika funktioner. För att ge en kortfattad men grundläggande inblick i RAID så tas här upp fyra nivåer med dess fördelar och nackdelar: RAID 0 gör att man kan få ökad läs och skrivhastighet i sitt system genom att man köa I/O-requests på två eller fler olika hårddiskar samtidigt. I/O är ofta det långsammaste i systemet så att sprida ut läs/skriv på två hårddiskar är mycket fördelaktigt. Nackdelen med RAID 0 är dock att man inte får någon redundans eftersom olika delar av en fil kan skrivas till olika fysiska diskar. Går en av dem ner så kan data komma att bli förlorad. [1] RAID 1 innebär att man har en volym som speglas till en annan volym. Detta gör att man får hög redundans eftersom man har den ena volymen kvar om den andra går sönder. En annan fördel är att man kan läsa från två diskar samtidigt vilket kan upp emot dubbla läshastigheten. Nackdelen är 2
såklart att man har samma data på två diskar vilket gör att man slösar hälften av utrymmet. [1] RAID 4 innebär att man, i det fall man har tre diskar, använder två till lagring av data och den sista till lagring av paritetsdata som skapas när man skriver till de första två. Paritetsdata är till för att kunna återskapa den data som finns på lagringsdiskarna i det fall någon av dem går sönder. En stor nackdel med RAID 4 är att det skrivs till paritetshårddisken varje gång man skriver till de andra som används till lagring eftersom paritetsdata antingen måste läggas till eller uppdateras. Detta gör att den disk som används för paritet kan slitas ut snabbt. Fördelen med systemet är dock att man får en viss redundans eftersom man kan förlora en disk och fortfarande behålla all data och även om paritetsdisken går sönder så kan man sätta in en ny som uppdateras med all paritetsdata som ska finnas på den när den läggs till i volymen. En annan stor fördel med RAID 4 är att alla diskarna opererar enskilt vilket gör att antalet I/O-operationer som kan genomföras parallellt ökar med antalet diskar i systemet. Flaskhals skapas dock med tanke på att varje I/O-operation i systemet kommer innebära att en I/O-operation på paritetsdisken kommer att behövas. Detta löser man genom att implementera RAID 5 istället. [1] RAID 5 liknar RAID 4 på nästan alla sätt förutom att paritetsdata allokeras på samtliga diskar i systemet. Oftast används en s.k. round robin - princip när paritetsdata allokeras, d.v.s. att om man skriver data till disk n så skrivs den första paritetsstripen till disk n+1 och fortsätter så tills all data är skriven. Att RAID 5 skriver paritetsdata till samtliga diskar löser problemet med att den dedikerade paritetsdisken i RAID 4 får fler I/O-operationer än vad den klarar av. I RAID 5 så kan man skriva paritetsinformationen till många diskar samtidigt vilket leder till en bredare flaskhals med högre potentiell skrivhastighet. Samma redundans av data råder i ett RAID-system på nivå 5 som i nivå 4, man klarar alltså av att förlora maximalt en disk utan att data går förlorad. [1] 1.2 Bonnie++ Bonnie++ är ett verktyg som används för prestandatester på bland annat hårddiskar. Verktyget är gratis och utvecklades av Russel Coker år 1999. Coker gjorde dock inte verktyget från grunden utan Bonnie++ är bara en reimplementation av Tim Brays Bonnie, nu skriven i C++. Bonnie++ används i den här laborationen för att mäta den sekventiella skrivhastigheten i RAID 4 och RAID 5. [2] 1.3 dd dd är ett verktyg som är inbyggt i Linux som man kan använda för att konvertera och kopiera filer. Verktyget kan också användas för att mäta diskprestanda, 3
vilket är det som sker i den här laborationen. Verktyget används genom att det skrivs ett kommando i terminalen. Kommandot är: dd if=/dev/zero of=dev/<volymnamn> bs=<block size> count=<antalet blocks som ska skrivas> oflag=dsync. oflag=dsync är där för att ta bort cache som variabel i testet. 2 Experiment 2.1 Beskrivning Experimentet har två faser, upprättande av systemen och testfasen. Två virtuella maskiner ska upprättas och Ubuntu 12.04 ska installeras. Därefter ska relevant mjukvara installeras och RAID-volymerna ska skapas. Efter det testas den sekventiella skrivhastigheten i RAID 4 med dd och Bonnie++ och därefter i RAID 5 på samma sätt. 2.2 Genomförande Upprättande av virtuella maskiner Det första som görs i laborationen är att de två virtuella maskinerna skapas. Dessa skapas med 2x2 kärnor CPU, 1024 MB RAM och fyra hårddiskar, en om 20 GB och tre om 5,4 GB. Därefter installeras operativsystemet Ubuntu 12.04 LTS. Installation av mjukvara Två mjukvaror installeras i experimentet, Bonnie++ och mdadm. Mdadm installeras först och detta görs genom kommandot sudo apt-get install mdadm. Därefter installeras Bonnie++ med kommandot sudo apt-get install bonnie++. Nu när mdadm är installerat kan RAID-systemen upprättas. Upprättande av RAID 4 och RAID 5 För att skapa en RAID 4 behövs först och främst mdadm vilket tidigare installerades. Kommandot som används för att upprätta RAID 4 är: sudo mdadm create verbose level=4 metadata=1.2 chunk=256 raiddevices=3 /dev/md0 /dev/sdb /dev/sdc /dev/sdd Därefter behövs ett filsystem och då används Disk utility -verktyget i Ubuntu. Där väljs den aktuella RAIDen, RAID 4, och däri formateras volymen och filsystemet ext4 upprättas. Därefter monteras RAID-systemet genom kommandot: sudo mount /dev/md0 /mnt/raid 4
Nu är RAID 4 redo att användas och testas. Samma procedur används för att skapa en RAID 5 men med en liten skillnad i kommandot: sudo mdadm create verbose level=5 metadata=1.2 chunk=256 raiddevices=3 /dev/md0 /dev/sdb /dev/sdc /dev/sdd Därefter behövs ett filsystem och då används Disk utility -verktyget i Ubuntu. Där väljs den aktuella RAIDen, RAID 5, och däri formateras volymen och filsystemet ext4 upprättas. Därefter monteras RAID-systemet genom kommandot: sudo mount /dev/md0 /mnt/raid Nu är RAID 5 redo att användas och testas. För att vara extra säkra vad gäller systemens funktion används ett enkelt touch -kommando på de båda systemen. Detta görs på följande sätt: Först skrivs cd /mnt/raid i terminalen för att navigera till RAID-systemet. Därefter skrivs touch test och då skapas en tom fil vid namn test. Därefter skrivs ls för att lista vilka filer som ligger på det aktuella systemet. Outputten visar test och det går därför konstatera att filsystemet är aktivt. Test av sekventiell skrivhastighet på RAID 4-systemet Först används dd för att testa skrivhastigheten. Detta görs genom kommandot: sudo dd if=/dev/zero of=/dev/md0 bs=1g count=1 oflag=dsync Kommandot gör att det skrivs en fil med storleken 1 GB en gång på systemet och att det bortser från cachen. Outputten som skrivs ut är: 1073741824 bytes (1,1 GB) copied, 32.4498 s, 33.1 MB/s Testet tog alltså 32,45 sekunder och den uppmätta skrivhastigheten ligger på 33,1 MB/s. Därefter görs samma mätning men i mjukvaran Bonnie++. Detta görs med kommandot: sudo bonnie++ -d /mnt/raid -r 1024 -n 1 -s 2048 -u root Tillbaka fås mycket information med den som är viktig är hastigheten för output i KB/sec. Omvandlat till MB/s visar utputten 69.002 MB/s 5
Test av sekventiell skrivhastighet på RAID 5-systemet Först används dd för att testa skrivhastigheten. Detta görs genom kommandot: sudo dd if=/dev/zero of=/dev/md0 bs=1g count=1 oflag=dsync Kommandot gör att det skrivs en fil med storleken 1 GB en gång på systemet och att det bortser från cachen. Outputten som skrivs ut är: 1073741824 bytes (1,1 GB) copied, 32.9837 s, 32.6 MB/s Testet tog alltså 32,98 sekunder och den uppmätta skrivhastigheten ligger på 32,6 MB/s. Därefter görs samma mätning men i mjukvaran Bonnie++. Detta görs med kommandot: sudo bonnie++ -d /mnt/raid -r 1024 -n 1 -s 2048 -u root Tillbaka fås mycket information med den som är viktig är hastigheten för output i KB/sec. Omvandlat till MB/s visar utputten 63.373 MB/s 2.3 Resultat Figur 1: Grafisk representation av resultatet i undersökningen av den sekventiella skrivhastigheten på RAID 4 resp. RAID 5 med verktygen Bonnie++ och dd. Resultaten för den sekventiella skrivhastigheten i RAID 4 är alltså 33,1 MB/s mätt med dd och 69,0 MB/s mätt med Bonnie++. I RAID 5 systemet blev resultatet för samma sak 32,6 MB/s med dd och 63,4 MB/s med Bonnie++. Om man ser på diagrammet är det alltså väldigt likt med en viss fördel till RAID 4, framför allt i testet som genomfördes med Bonnie++ som mätverktyg. Resultaten visar alltså att RAID 4 systemet är snäppet snabbare i båda testen. 6
3 Slutsatser Eftersom maskinerna är virtuella och vi egentligen inte skapat några faktiska RAID-system så är resultaten högst abstrakta. Ingen källa vi har hittat pekar på att RAID 4 skulle prestera bättre än RAID 5. Resultatet var alltså inte alls som vi tänkt oss eftersom RAID 5 generellt sätt ska vara snabbare. Dock var det så att vi valde att skriva en stor fil snarare än många små. Hade vi skrivit många små hade troligtvis resultatet varit lite mer i RAID 5s favör eftersom flaskhalsen i RAID 4 uppkommer vid många parallella I/O-operationer på lagringsdiskarna. En annan teori vi har är att RAID 5 på något sätt kan vara mer prestandakrävande att virtualisera eftersom fler virtuella diskar är inblandade vid skrivning av en fil till RAID 5-systemet. Dels skriver man till en disk och paritetsinformationen ska skrivas till alla andra virtuella diskar i systemet medan man i RAID 4 bara har två virtuella diskar inblandade. 7
Litteraturförteckning [1] William Stallings. Operating systems, internals and design principles. Seventh Edition, 2012. s. 514-522. [2] Russel Coker. Bonnie++. http://www.coker.com.au/bonnie++. 2014.01.02 2013 8