Toon posts:

Waarom is Raid 1 niet 2x sneller dan geen Raid?

Pagina: 1
Acties:

Onderwerpen


  • Beatboxx
  • Registratie: April 2010
  • Laatst online: 26-10-2022

Beatboxx

Certified n00b

Topicstarter
Ik heb een vraagje:) Waarom is Raid 1 (2 mirror schijven) niet 2x zo snel dan geen Raid? Ik zal mijn gedachtegang tekenen:

code:
1
2
3
4
5
Schijf 1                              Schijf 2
A1                                     A1
A2                                     A2
A3                                     A3
A4                                     A4


A1 t/m A4 vormt samen één file. Tijdens lezen van zo'n file leest Raid 1 het bestand volgens mij van een random schijf. Elk blokje laden kost 1 seconde. Totaal duurt het dus 4 seconden. Als echter A1 en A2 van schijf 1 worden geladen, en tegelijkertijd A3 en A4 van schijf 2, ben je maar 2 seconden bezig. 2x zo snel dus? Heb ik zojuist iets supergeniaals bedacht of bestaat dit allang, of wordt dit helemaal niet toegepast doordat het simpelweg niet kan?


Dit is copyrighted by me

wat je allemaal niet bedenkt tijdens het maken van een proefwerk Grieks

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Wat je vergeet is dat het van beide schijven gelezen en naar beide schijven geschreven wordt. Door wat optimalisaties ligt de snelheid wel iets hoger dan bij single disk in sommige gevallen.
Wil je hogere snelheid, dan moet je voor RAID 0 gaan.

  • Anoniem: 303530
  • Registratie: Mei 2009
  • Niet online
Een woord: latency.

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Oh, en data integrity.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • FireDrunk
  • Registratie: November 2002
  • Laatst online: 16:22
Wat jij zegt is gewoon zo hoor? Bij veel RAID1 implementaties lees je 1.5 - 2 keer zo snel
(sequentieel dan... Random is een ander verhaal... Daar is zoals Darkstone zegt latency veel belangrijker)

Even niets...


  • Beatboxx
  • Registratie: April 2010
  • Laatst online: 26-10-2022

Beatboxx

Certified n00b

Topicstarter
Terw_Dan schreef op dinsdag 14 juni 2011 @ 17:16:
Wat je vergeet is dat het van beide schijven gelezen en naar beide schijven geschreven wordt.
Dat snap ik niet. Bij RAID 0 scrhijf en lees je toch ook naar beide schijven?
FireDrunk schreef op dinsdag 14 juni 2011 @ 17:20:
Wat jij zegt is gewoon zo hoor? Bij veel RAID1 implementaties lees je 1.5 - 2 keer zo snel
(sequentieel dan... Random is een ander verhaal... Daar is zoals Darkstone zegt latency veel belangrijker)
Mijn benchmark's wijzen het niet uit.
Het is hetzelfde als bij Raid 0, alleen heb je nu 2x minder usable space op je harddrive's

  • Ultraman
  • Registratie: Februari 2002
  • Laatst online: 00:21

Ultraman

Moderator Harde Waren

Boefje

Dat is ook toevallig. Hier heb ik net iets over geschreven in een ander topic: Ultraman in "Raid instellen met 2 verschillende soort..."

Als je stil blijft staan, komt de hoek wel naar jou toe.


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Beatboxx schreef op dinsdag 14 juni 2011 @ 17:22:
Dat snap ik niet. Bij RAID 0 scrhijf en lees je toch ook naar beide schijven?
Nee, dat doe je dus niet. Je schrijft de ene helft weg naar disk 1, de andere naar disk 2.

  • Beatboxx
  • Registratie: April 2010
  • Laatst online: 26-10-2022

Beatboxx

Certified n00b

Topicstarter
Terw_Dan schreef op dinsdag 14 juni 2011 @ 17:24:
[...]

Nee, dat doe je dus niet. Je schrijft de ene helft weg naar disk 1, de andere naar disk 2.
Maar ik heb het voornamelijk over lezen.

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Beatboxx schreef op dinsdag 14 juni 2011 @ 17:24:
[...]


Maar ik heb het voornamelijk over lezen.
Dat is toch precies hetzelfde? Hij leest en schrijft zowel van en naar beide schijven.

  • Anoniem: 303530
  • Registratie: Mei 2009
  • Niet online
Beatboxx schreef op dinsdag 14 juni 2011 @ 17:22:
Het is hetzelfde als bij Raid 0, alleen heb je nu 2x minder usable space op je harddrive's
Precies, hetzelfde :P Hoeveel schijven je ook toevoegt. De latency blijft altijd gelijk.

stel je hebt een schijf met een latency van 100ms, en het bestand kost 1000ms om te lezen. Met 2 schijven heb je dan 600ms nodig om het bestand te lezen. Met fragmentatie erbij word dit nog erger.
Dat is ook precies de reden dat je doorgaans liever een SSD koopt.

Bij raid 0 heb je ook nog het probleem dat de data maar op 1 schijf staat. Loopt er een schijf te bokken? Dan staat je andere schijf stil. tough luck.

[Voor 12% gewijzigd door Anoniem: 303530 op 14-06-2011 17:31]


  • Hippocampus
  • Registratie: Mei 2011
  • Laatst online: 23:57

Hippocampus

ᓚᘏᗢ

is je engels een beetje goed ?

  • Ultraman
  • Registratie: Februari 2002
  • Laatst online: 00:21

Ultraman

Moderator Harde Waren

Boefje

RAID0 heet ook wel striping.
RAID1 heet ook wel mirroring.

Bij striping verdeel je de data over twee schijven. Elke schijf leest en schrijft maar de helft, dan ben je dus even heel kort door de bocht in de helft van de tijd klaar.

Bij mirroring bevatten beide disken identieke data. In princiepe kun je van beide schijven lezen, maar daar is wel intelligentie van nodig. Veel mirrors zijn niet zo intelligent dat ze van beide disken kunnen lezen, dat wil ik even een domme mirror noemen. Die mirrored gewoon, en past niets van intelligentie toe om het lezen mogelijk te kunnen versnellen.
Een intelligente mirror zal echter proberen om de data van beide disken te halen. Voor optimaal resultaat wil je dan wel weten wat er gelezen moet worden. Een voorbeeld van een goede implementatie van zo'n slimme mirror vind je terug in ZFS. Een ZFS mirror kan van beide disken simultaan lezen. Gewoon even een voorbeeld waarvan ik weet dat het een slim mirror algoritme toepast.
Er zijn vast meer mirrors die dit truukje kunnen.
Maar dit is grofweg het verschil, domme vs slimme mirrors.

[Voor 10% gewijzigd door Ultraman op 14-06-2011 17:33]

Als je stil blijft staan, komt de hoek wel naar jou toe.


  • Beatboxx
  • Registratie: April 2010
  • Laatst online: 26-10-2022

Beatboxx

Certified n00b

Topicstarter
Okay, maar als ik dus Raid 1 ZFS doe, werkt het wel sneller? Waarom gebruikt niet iedereen dat dan:S

  • Swordlord
  • Registratie: Maart 2006
  • Laatst online: 23:09

Swordlord

Act first, think never

Om dat het ZFS filesysteem alleen werkt op Linux en Unix, andere OSen hebben er geen support voor

[Voor 39% gewijzigd door Swordlord op 14-06-2011 18:05]


  • Ultraman
  • Registratie: Februari 2002
  • Laatst online: 00:21

Ultraman

Moderator Harde Waren

Boefje

Omdat ZFS alleen beschikbaar is op (Open)Solaris, open voortzetting OpenIndiana en FreeBSD.
Linux heeft het niet geport omdat de CDDL licentie niet verenigbaar is met de GPL. Er is wel een module om het te kunnen gebruiken in user-space. Maar de performance daarvan is niet zo goed als zou kunnen.
En Windows is weer een verhaal apart.

Voordeel wat ZFS heeft is dat het filesystem, volume manager en RAID-engine in één is. In plaats van met blocks te werken kan de raid-engine op files werken. Dat bevordert het intelligent kunnen uitlezen van gevraagde files.
Als je op block niveau werkt zoals andere mirrors dan heb je geen weet van waar files zich bevinden, dan lijkt het me lastiger om intelligent files uit te lezen.

Maar zoals je merkt zit ik niet dermate in die materie dat ik je dat exact kan uitleggen. Als je dit interessant vind stel ik voor om jezelf te verdiepen in RAID, de techniek en bijvoorbeeld ook hoe het concept op ZFS werkt.
Swordlord schreef op dinsdag 14 juni 2011 @ 18:03:
Om dat het ZFS filesysteem alleen werkt op Linux.
Eigenlijk juist niet dus. ;)

[Voor 15% gewijzigd door Ultraman op 14-06-2011 18:09]

Als je stil blijft staan, komt de hoek wel naar jou toe.


Anoniem: 15758

Simpele maar interessante vraag waar veel antwoorden op mogelijk zijn. :)

Allereerst: er is theorie en er is praktijk. In theorie kan RAID1 veel meer dan in de praktijk wordt benut. Alles hangt dus af van welke implementatie je gebruikt in hoeverre de theoretische mogelijkheden worden benut.

Even een handjevolle opmerkelijke uitspraken van mijn kant:
  • RAID1 kan nooit zo snel sequentiëel lezen als RAID0 dat kan, omdat bij een RAID1 er middels striping periodes zijn dat één van beide schijven een blok moet overslaan en dus even niets kan doen. Bij kleine stripes sizes kun je maar nét iets sneller dan een enkele disk zonder RAID lezen.
  • RAID1 met een intelligente driver kan tot 75-90% sequential read halen ten opzichte van een RAID0.
  • In principe kan RAID1 minstens even snel random reads doen dan RAID0
  • RAID1 kan (theoretisch) sneller random reads doen dan RAID0, en kan de 200% performance increase ten opzichte van een enkele disk overtreffen. Dit omdat een intelligente driver kan kiezen welke disk het dichts bij de volgende track zit en je dus hoger dan 200% increase kunt komen die je standaard al krijgt zonder dit soort 'prefer' intelligentie. Een soort super-NCQ dus.
  • RAID1 kan in principe niet sneller schrijven dan een enkele disk, random of sequentiëel. Theoretisch zou het echter wel mogelijk zijn om uitgestelde mirroring te doen, dus disk1 andere dingen te laten schrijven dan disk2 en pas later te syncen. Dit kan je in elk geval tijdelijke performance boosts geven. Dit vereist veel complexe intelligentie waardoor het waarschijnlijk nooit zal worden geïmplementeerd.
Dat is allemaal theorie. De praktijk is heel anders:
  • Je hebt domme mirrors die alleen van de master disk lezen en naar beide schijven schrijven. Simpeler kan niet. Geen enkel snelheidsvoordeel boven een enkele disk, writes zijn een fractie trager doordat je op de latency van beide schijven wacht.
  • Het leeuwendeel van de mirror implementaties gebruikt een split algoritme, waarbij schijf A 64KiB leest en schijf B de andere 64KiB van een 128KiB read request. Dit is maar marginaal sneller omdat beide schijven moeten seeken naar grofweg dezelfde positie, dit duurt zo lang dat de winst van 64KiB lezen ipv 128KiB totaal ondergesneewd wordt. Minder dan 1% snelheidswinst krijg je hiermee. Met dit 'split' algoritme werken beide schijven dus aan één dezelfde I/O request.
  • Een ander simpel algoritme maar veel effectiever is round-robin; waarmee bedoeld wordt dat afwisselend van schijf A of schijf B wordt gelezen. Dit is met name voor random reads effectief omdat je dan in principe 2x zo snel random reads doet met voldoende queue depth. Schijf A is bezig met request A terwijl schijf B bezig is mest request B. Hiervoor is een queue depth hoger dan 1 benodigd om performancewinst te geven.
  • Intelligente mirrors zoals geom_mirror balance algoritme kunnen load balancing uitvoeren en lezen van de schijf die de laagste load heeft. Dit heeft nut als de performance van beide schijven niet gelijk is, en om fluctuaties weg te werken. Een verre seek van schijf A betekent dus dat schijf B twee keer zoveel requests binnen krijgt op korte termijn om zo te voorkomen dat schijf B zonder werk zit omdat schijf A met een 'moeilijkere' request bezig is die wat langer duurt. Dit vereist inzage in de latencies en uitstaande queue depth van de mirror disks en is dus moeilijker te implementeren dan split of round-robin algoritmes.
  • ZFS mirroring is het beste mirrorring algoritme wat ik ken. Als je schijf A hebt die acht keer zo snel is als schijf B dan zet ZFS gewoon acht keer zoveel data op schijf A; dit is alleen mogelijk als RAID en filesystem uit één pakket bestaan en ZFS heeft daar dus een enorm voordeel bij. ZFS mirroring is bijna even goed als striping wat betreft reads, en schaalt met meerdere disks. Acht schijven in een RAID1 (níet RAID0+1 of 1+0 dus) leest dus (0.8-0.9) * 8 = ~7 keer zo snel als een enkele disk, maar schrijft als een enkele disk of iets langzamer afhankelijk van de latency-toename.
RAID performance is erg interessant om te volgen met D-trace, dan kun je zien wat er low-level gebeurt bij diverse RAID levels. Een aanrader als je je er in wilt verdiepen! :)
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee