Tennchen: Welche Rechenleistung benötigt Raid 5

Beitrag lesen

Moin!

Wenn man nun mithilfe von Statstiken bestimmt, dass die Chance dafür, dass eine Festplatte an einem Tag kaputt geht (sagen wir einfach mal) 0,001 beträgt, dann wäre die Wahrscheinlichkeit dafür, dass zwei zusammengehörige Platten am selben Tag ausfallen also 0,001 * 0,001 = 0,000001.

Diese Rechnung ist falsch.

Es kommt ja nur dann zu Datenverlust, wenn nach dem Ereignis des ersten Festplattenausfalls exakt die korrespondierende Festplatte auch noch ausfällt - nicht irgendeine.

Das, was du ausrechnest, ist die Wahrscheinlichkeit, dass zwei Platten nacheinander ausfallen.

Nachdem die erste Platte ausgefallen ist, stehen aber noch sieben verbleibende Platten zur Verfügung, von denen aber nur der Ausfall einer einzigen direkt zu Datenverlust führt.

Die Wahrscheinlichkeit für den Ausfall der "falschen" Platte beträgt daher nur ein Siebtel.

Als Chance: (8 * 0,001) * (0,001 / 7) = 0,00001428

Du irrst dich. Gehen wir mal von 10% Ausfallwahrscheinlichkeit am Tag aus. Dann sähe das nach deiner Rechnung so aus:
(8 * 0,1) * (0,1 / 7) = 0,1428

Bei 10'000 Tagen würde das bedeuten, dass ungefähr 143 mal ein Datenverlust stattfinden würde.
Um das nun zu überprüfen, habe ich ein kleines Programm (extra für dich in Javascript =)) geschrieben, welches das mal nachrechnet.
Wenn ich eingebe, dass es 8 Festplatten sein sollen (4mal Daten, 4mal Parität), es 10'000 Tage dauern soll und die Ausfallwahrscheinlichkeit 10% beträgt, erhalte ich Werte von um die 400. Und das entspricht genau dem, was ich gesagt habe. Hier das Programm:

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"  
       "http://www.w3.org/TR/REC-html40/strict.dtd">  
<html>  
<head>  
<script type="text/javascript">  
function berechnen()  
{  
 //Inputdaten sammeln  
 var festplattenanzahl = document.getElementById("festplattenanzahl").value;  
 var ausfallwahrscheinlichkeit = document.getElementById("ausfallwahrscheinlichkeit").value / 100;  
 var zeitabschnitte = document.getElementById("zeitabschnitte").value;  
  
 //Am Anfang gibt es noch keinen Datenverlust  
 var datenverluste = 0;  
  
 //Zuerst zwei Arrays von Festplatten erstellen... die Hälfte sind Datenfestplatte, die andere Hälfte Paritätsfestplatten  
 //Datenfestplatten[n] und Paritätsfestplatten[n] gehören jeweils zusammen  
 var Datenfestplatten = new Array(festplattenanzahl / 2);  
 var Paritätsfestplatten = new Array(festplattenanzahl / 2);  
  
 while (zeitabschnitte > 0) //Für jeden Zeitabschnitt wird geprüft, ob es einen Ausfall gab  
 {  
  for (var i = 0; i < festplattenanzahl / 2; i++) //Für jede Festplatte...  
  {  
   //...einen Zufallswert zuweisen (von 0 bis 1)  
   Datenfestplatten[i] = Math.random();  
   Paritätsfestplatten[i] = Math.random();  
  }  
  //Überprüfen, ob es einen Ausfall gab. Dies wäre dann der Fall, wenn Datenfestplatten[n] und Paritätsfestplatten[n] gleichzeitig ausgefallen sind.  
  //Ausgefallen sind sie dann, wenn der Zufallswert kleiner als die Ausfallwahrscheinlichkeit ist.  
  //Wenn die Ausfallwahrscheinlichkeit 5% beträgt (0,05) dann würden alle Zufallswerte von 0,00 bis 0,05 einen Ausfall bedeuten  
  for (var i = 0; i < festplattenanzahl / 2; i++) //Für jede Festplatte...  
  {  
   //...auf einen gleichzeitigen Ausfall überprüfen  
   if (Datenfestplatten[i] <= ausfallwahrscheinlichkeit && Paritätsfestplatten[i] <= ausfallwahrscheinlichkeit)  
   {  
    datenverluste++; //Es hat einen Datenverlust gegeben!  
   }  
  }  
  zeitabschnitte--;  
 }  
  
 //Datenverluste ausgeben...  
 document.getElementById("ergebnis").innerHTML = "Es ist zu "+ datenverluste +" Datenverlusten gekommen.";  
}  
</script>  
</head>  
<body>  
<div id="ergebnis" style="height: 30px; background: lightgray;"></div><br>  
Anzahl an Festplatten (inkl. den Gespiegelten): <input type="text" id="festplattenanzahl"><br>  
Ausfallwahrscheinlichkeit innerhalb eines Zeitabschnitts: <input type="text" id="ausfallwahrscheinlichkeit"> (in Prozent)<br>  
Anzahl an Zeitabschnitten: <input type="text" id="zeitabschnitte"><br>  
<button onclick="berechnen();">Datenverlustanzahl ermitteln</button>  
</body>  
</html>