RAID1/5 disk consistency na power failure

Pagina: 1
Acties:

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Als je een RAID1 array hebt met twee schijven (voor RAID5 geldt ongeveer hetzelfde) en tijdens een write operatie valt de stroom weg, dan kan het zijn dat de nieuwe data op een van de schijven wel staat en op de andere schijf niet.

Als je dat verder negeert zou het zo kunnen zijn dat je na de crash tijdens een read operatie de oude data terugkrijgt, maar je zou ook de nieuwe data terug kunnen krijgen.
Hoe wordt dit in de praktijk voorkomen?

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Ik kan me vergissen maar ik dacht dat het zo niet werkt. Volgens mij wordt bij RAID 1 wel altijd naar beide schijven geschreven maar er wordt maar 1 schijf gebruikt bij leesoperaties en dit is volgens mij altijd de eerste schijf.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
/downtime/ schreef op 06 September 2003 @ 13:23:
Ik kan me vergissen maar ik dacht dat het zo niet werkt. Volgens mij wordt bij RAID 1 wel altijd naar beide schijven geschreven maar er wordt maar 1 schijf gebruikt bij leesoperaties en dit is volgens mij altijd de eerste schijf.
Dat klopt, maar als de stroom uitvalt kan het natuurlijk wel gebeuren dat een schijf de operatie al heeft uitgevoerd terwijl de andere schijf nog met de operatie moet beginnen.

  • 4POX
  • Registratie: Maart 2000
  • Laatst online: 19-03 16:38

4POX

Everybody is wired

Dit is ook de reden dat op de duurdere raid scsi controller de mogelijkheid bestaat om een accupack op de controller te monteren. Je hebt dan bij een stroomuitval nog wel de gegevens in je controller staan...

Maar ik kan daar niet echt het nu van bedenken. Ik zie het gebruik van een UPS als een betere oplossing.

AKA Rinkel weblog


  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

OlafvdSpek schreef op 06 September 2003 @ 13:50:
Dat klopt, maar als de stroom uitvalt kan het natuurlijk wel gebeuren dat een schijf de operatie al heeft uitgevoerd terwijl de andere schijf nog met de operatie moet beginnen.
In dat geval zal op de 2 schijven verschillende data staan. Als de data op de eerste schijf beschadigd is zal dat opvallen omdat de metadata van een journaling file system (als je dat tenminste gebruikt) niet overeenkomt met de werkelijk data op de schijf. Beschadigen op de 2e schijf zullen volgens mij onopgemerkt blijven omdat deze schijf niet wordt gelezen.
Beschadigingen op de 2e schijf zullen trouwens na verloop van tijd wel weer weggepoetst worden als de beschadigde structuren opnieuw beschreven worden.

Dit geldt tenminste als het systeem inderdaad (zoals ik vermoed) van 1 disk leest en niet probeert om beide schijven te lezen en de data te vergelijken. Maar wellicht is dit laatste afhankelijk van de gebruikte controller en of je software- of hardware-RAID gebruikt.

Disclaimer: Laat ik er even bijvertellen dat mijn kennis van RAID beperkt is en ik er dus 100% naast kan zitten. :)

[ Voor 6% gewijzigd door downtime op 06-09-2003 15:09 ]


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
/downtime/ schreef op 06 September 2003 @ 15:03:
In dat geval zal op de 2 schijven verschillende data staan. Als de data op de eerste schijf beschadigd is zal dat opvallen omdat de metadata van een journaling file system (als je dat tenminste gebruikt) niet overeenkomt met de werkelijk data op de schijf. Beschadigen op de 2e schijf zullen volgens mij onopgemerkt blijven omdat deze schijf niet wordt gelezen.
Welke metadata klopt er dan niet als je naar een bestand schrijft waarvoor de bestandsgrootte niet hoeft te worden aangepast?

Verder is het voor de performance natuurlijk beter om wel van meerdere schijven tegelijk te lezen.

Behalve een RAID array van 2x 500 mb heb ik ook geen (praktische) ervaring met RAID.

[ Voor 9% gewijzigd door Olaf van der Spek op 06-09-2003 15:23 ]


  • Coen Rosdorff
  • Registratie: Januari 2000
  • Niet online
Bij een raid-1 array wordt de array na een system-crash altijd gerebuild bij de volgende start-up. Array is daarna dus weer consistent.

Bij raid-5 staat de data zowieso maar op 1 disk, dus dat is een minder groot probleem. Het enige dat dan kan voorkomen is dat de pariteit niet in orde is. Ook dat is op te vangen met een rebuild.

(Bij raid 1 wordt trouwens niet enkel van de eerste disk gelezen, maar net als bij raid-0 van beide.)

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
little_soundman schreef op 08 September 2003 @ 01:43:
Bij een raid-1 array wordt de array na een system-crash altijd gerebuild bij de volgende start-up. Array is daarna dus weer consistent.
Als twee sectoren/blocks niet gelijk zijn, hoe wordt dan bepaald welke nieuwer is?

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Als je systeem uitvalt tijdens schrijven, dan is er zowiezo sprake van dataverlies. Er kunnen verschillende gegevens staan op losse disks van een RAID1-array, maar wat er ook staat, het is toch al niet compleet. Welke van de 2 je gebruikt om de ander mee te rebuilden maakt niks uit, het OS dient achteraf dmv een FS-check maar uit te zoeken wat er met de 'rommel' moet gebeuren.
/downtime/ schreef op 06 september 2003 @ 13:23:
Volgens mij wordt bij RAID 1 wel altijd naar beide schijven geschreven maar er wordt maar 1 schijf gebruikt bij leesoperaties en dit is volgens mij altijd de eerste schijf.
Op een raid1-array wordt heus wel van 2 disks tegelijk gelezen; het zou stom doen om dat niet te doen, scheelt een boel performance.
little_soundman schreef op 08 September 2003 @ 01:43:
Bij raid-5 staat de data zowieso maar op 1 disk, dus dat is een minder groot probleem.
Eh? Op Raid5 staat data juist op alle disken.

[ Voor 16% gewijzigd door Varienaja op 08-09-2003 09:53 ]

Siditamentis astuentis pactum.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Varienaja schreef op 08 September 2003 @ 09:51:
Als je systeem uitvalt tijdens schrijven, dan is er zowiezo sprake van dataverlies. Er kunnen verschillende gegevens staan op losse disks van een RAID1-array, maar wat er ook staat, het is toch al niet compleet. Welke van de 2 je gebruikt om de ander mee te rebuilden maakt niks uit, het OS dient achteraf dmv een FS-check maar uit te zoeken wat er met de 'rommel' moet gebeuren.
Dat het niet compleet is ok. Maar als een applicatie tijdens een lees operatie oude en nieuwe data terugkrijgt, dan is dat dus slechter dan bij een single-disk volume.

  • Coen Rosdorff
  • Registratie: Januari 2000
  • Niet online
OlafvdSpek schreef op 08 September 2003 @ 09:44:
Als twee sectoren/blocks niet gelijk zijn, hoe wordt dan bepaald welke nieuwer is?
Bij raid 1 wordt de data van disk 1 netjes naar disk 2 gezet. Welke disk nieuwer was maakt niet uit. De data die geschreven werd tijdens de crash is gewoon foetsie.

  • 4VAlien
  • Registratie: November 2000
  • Laatst online: 19-03 14:27

4VAlien

Intarweb!

Zonder backup power (ups etc) moet je het inderdaad van het filesystem hebben om te recoveren wat er de laatste seconden gebeurde. Het grootste probleem lijkt me dan niet of dat ene block nu wel of niet op allebei de schijven staat, maar hoeveel data er nog in RAM gecached staat dat nog niet op disk staat. Maar is het inderdaad gespecificeerd in de RAID standaard wat er moet gebeuren bij power loss (hoewel ik niet denk dat de controllers het uberhaupt merken )?
Pagina: 1