En artikel från 2007 hos ZDNet har skrämt upp många systemadministratörer. I den hävdar författaren att RAID-5 kommer sluta fungera år 2009 eftersom hårddiskarna når 2 Gb. Har försökt förstå vad det är som är fel med slutsatsen eftersom det inte alls stämmer. Nu vet jag vilket misstag författaren gjort och varför RAID-5 fortfarande går att använda.
Artikelförfattaren Robin Harris grundar sitt påstående på ett värde på Unrecoverable Read Error Rate (URE) som ligger någonstans på 1 fel per 10^14 bitar vilket motsvarar 12 Terrabytes. Problemet blir därför enligt Harris att om en disk går sönder i en RAID-5 array med t.ex. 7 stycken 2Tb diskar måste det läsas från 6 diskar x 2 TB = 12 TB data för att återskapa den felande disken. Under det återskapandet skulle det alltså normalt uppstå ett URE och därmed skulle hela RAID arrayen vara förlorad.
Jag har hela tiden tyckt det här verkar konstigt för skulle det uppstå ett oreparerbart fel i snitt en gång per 12 TB skulle vi se det hela tiden. Jag har till exempel en 1 TB disk hemma som jag tar backup på varje helg. Den skulle alltså normal fela var 12:e vecka men det har inte hänt en enda gång. Varför?
Jag har läst förklaringar att det beror på att URE uppstår mer sällan på nyare hårddiskar, vilket stämmer till viss del, men även om det ökat tio eller hundrafalt borde man märka problemet på massor av ställen där man tar flera TB data i backup varje natt.
Andra har hävdat att det beror på att ECC – Error Correction Code, som lagras på disken, rättar felet, eller att det bara är att läsa datat igen så funkar det. Det är fel eftersom U-et i URE står för Unrecoverable och innebär att ECC redan använts tillsammans med flera läsförsök utan att datat kunnat läsas.
Svaret ligger i att man inte får ett URE på 1 bit av 12 TB lästa utan URE gäller per sektor. Detta eftersom värdet är efter att ECC applicerats på en sektor och sektorn försökt läsas flera gånger. Det är aldrig bara en byte som är oläsbar utan en hel sektor. En sektor är normalt på 512 bytes och därmed uppstår felet extremt sällan. Det blir alltså som värst en gång per 512 byte * 10^14 = 51 PB (Petabytes dvs 51000 TB)
Men säger någon. Enheten för URE är per bitar och inte i sektorer. Det stämmer men när väl en sektor inte går att läsa innebär det att 512 bytes är oläsbara. Om felet uppstår en gång per 51 PB är det 512 bytes som går förlorade och vi får därför dela med 512 bytes för att få ut värdet i bitar. Det blir 10^14 precis som förväntat och att ange i sektorer vore konstigt eftersom de kan variera i storlek. Citerar kommentaren på slashdot:
“It is still true that one in 10^14 bits read independently (!) would be unrecoverable, but the independence is not there, as you either get a complete sector or nothing.”
Det är alltså ingen fara att använda RAID-5 även med stora hårddiskar. Konstigt att det skulle ta en hel del research för att hitta en ganska uppenbar förklaring. Det var först när jag grävde i kommentarerna på Slashdot jag hittade svaret. Kanske är det därför artikel skapat ett rykte att RAID-5 inte längre fungerar…
Liknande inlägg:




