[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Frage zu Software-Raid oder: Wie Datensicherung organisieren.



Matthias Houdek <linux@houdek.de> wrote:
> Wo ist da das RAID1? RAID1 mit einer Platte?

*shrug* Wo ist da Dein Problem?
"If up to N-1 disks are removed (or crashes), all data are still
intact." In diesem Fall ist N = 1.

> OK, ich weiß nicht, wie das ein Software-RAID macht

Das merkt man.

> (mit sowas geb ich mich nicht ab ;-)

Das auch.

Warum benutze ich ein RAID? Weil ich auf die Qualitaet der Hardware
keinen Einfluss habe. Das ist alles in ein Stueck gegossen, wenn die
Firmware einen Fehler hat, ist das genauso als ob die Platte einen
physischen oder elektrischen Fehler hat. Ich kann nix machen. Ich
bin auf Gedeih und Verderb dem Hersteller ausgeliefert und muss ihm
vertrauen. Dieses Ausgeliefertsein reduziere ich mit einem RAID.
Bei einem Hardware-RAID-Controller hab ich aber nun wieder dasselbe
Dilemma: ich kann nix machen. Wenn der irgendwo Muell macht, hab ich
Pech. Bei Software-RAID hab ich da bessere Karten. Dort ist zwar die
Gefahr, dass da wer Muell gemacht hat genauso hoch, aber ich bin
flexibler - Software laesst sich einfacher austauschen als Firmware.
Und im Falle des Linux Software-RAID ist das auch noch open source
und ich kann zur Not selbst ran und beheben was kaputt ist.

> aber ein Controller synchronisiert, wenn auf beiden  Platten Daten sind.

Was soll das heissen?

> Oder ich muss eine manuelle Spiegelung machen, 
> wobei ich dann höllisch aufpassen muss, dass ich nicht die flachse 
> Platte als Master angeben *g*.

Dann hast Du ein dummes RAID-System. Ein vernuenftiges erkennt das
selbststaendig - naemlich schlicht und ergreifend daran, welche Platte
Du zum RAID hinzufuegst - das muss zwangslaeufig die neue sein.

>> A B D
> Das geht bei RAID 1?

Natuerlich. Warum sollte es nicht gehen? Wo ist der Unterschied,
ob ich einen Schreibzugriff dopple, verdrei-, vervier- oder
verfuenffache? Wo ist der Unterschied, ob ich Lesezugriffe ueber
zwei, drei, vier oder fuenf Devices balance?

> Ist mir neu. Aber Software-RAID scheint da ohnehin 
> eigene Gesetze zu haben.

Nun, ich vermute eher, Du lebst in der sehr beschraenkten Welt
irgendwelcher Billig-Pseudo-Hardware-RAID-Controller.

>> Der Befehl heißt mount. Du kannst eine beliebige Platte aus einem
>> Software Raid1 Verbund überall einfach so mounten. Ansonsten wäre die
>> Backuplösung reichlich sinnlos.
> Du hast da oben keine einzelne Platte eines RAID-Systems gemountet oder 
> umountet, sondern eine Platte, die ehemals in einem RAID-System war.

Genau.

> Wie du selbst geschrieben hast, hast du zuerst das RAID-System umountet 
> und das RAID aufgelöst. Dass man dann mit den Platten anstellen kann, 
> was man will, ist klar. Aber dann gibt es ab diesem Zeitpunkt kein RAID 
> mehr. 
> Tolle Lösung. Und sooo einfach. ;-)

Es kann in der Tat so einfach sein.
Das Linux Software-RAID organisiert seine Metadaten bei RAID1 so, dass
ein Mirror spaeter auch wieder als eigenstaendiges Device genutzt werden
kann (Man sollte es lediglich nicht mal so und mal so verwenden, weil
dann die Metadaten nicht updated werden und das RAID daher hinterher
nicht mehr erkennen kann, dass es die Mirrors resynchen muss).
Das hat mehrere Vorteile: 1. Ich kann aus einem einfachen Device mit
einem Filesystem mit ein wenig Hirnschmalz und Spucke umgehend einen
Mirror machen, ohne Daten umkopieren zu muessen. 2. Ich kann einen
Mirror jederzeit wieder als einfaches Device mit Filesystem verwenden.
Z.B. wenn die Platte auf einmal in einem System steckt, das gar kein
Software-RAID kennt.
Drum funktioniert z.B. booten mit GRUB auch von RAID1, obwohl GRUB mit
Software-RAID genau garnichts anfangen kann - kennt es schlicht und
ergreifend nicht, muss es auch nicht.

> Hast du da nicht was von dem Vorteil geschrieben, dass du permanenten 
> Zugriff auf die Daten hast? Wo hast du den denn?

Genau da.

> Nö. Da muss ich die Platte ja noch wieder extra mounten. Ich muss also 
> sowohl die Platte im RAID bekannt machen als auch noch zusätzlich als 
> externe Platte außerhalb des RAID. 

Nein, entweder oder. Wenn Du restoren willst, machst Du selbstredend
letzteres. Zum synchronisieren (sprich: backupen) ebenso selbstredend
ersteres.

> Tolle Lösung. Und sooo unkompliziert. ;-)

Genau.

> Den RAID-Controller. Oder die zusätzliche Prozessorleistung. 
> Auf einem Server mit häufigen Zugriffen auf das Software-RAID brauchst 
> du die - und sonst brauchst du kein RAID 1. RAID 1 ist einzig zu 
> Erhöhung der Verfügbarkeit gedacht, un das wohl macht nur Sinn bei 
> Daten, die viel und sicher gebraucht werden. 

RAID1 ist so ziemlich das performanteste denkbare RAID - zumindest
unter denen mit Redundanz.
Lese-Geschwindigkeit ver-N-facht sich (klar - kann ja ueber N Mirrors
gestreut werden) und Schreibgeschwindigkeit bleibt unter der
Voraussetzung gleich, dass Du auf getrennten Kommunikationskanaelen
schreibst - also z.B. auf zwei verschiedenen IDE channels.
Das einzige was sich ver-N-facht ist halt der Kommunikationsaufwand.
Das ist nur beim Kopieren der buffer CPU, sonst halt DMA und Gedoens.

Ich hab hier noch ein paar Bonnies von einem Dual-P3-1000 1GB:
hda:
      ------Sequential Output------ --Sequential Input- --Random-
      -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
 Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
   1G 14055  98 38292  23 10971  11 11144  79 31477  12 177.6   0
      ------Sequential Create------ --------Random Create--------
      -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
   16   941  99 +++++ +++ +++++ +++  1019 100 +++++ +++  3268 100
RAID hda/hdc:
      ------Sequential Output------ --Sequential Input- --Random-
      -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
 Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
   1G 13442  98 35805  46  8433  11 11121  79 31489  12 288.3   1
      ------Sequential Create------ --------Random Create--------
      -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
   16   888  99 +++++ +++ +++++ +++   836  99 +++++ +++  3053 100

Der Grund, warum sich hier bei read die Geschwindigkeit nicht
verdoppelt, ist, dass der PCI Bus da schlicht und ergreifend am
Ende ist. Bei den Random Seeks sieht man die Verdopplung hingegen
recht gut.


Falls ich richtig vermute und Du das warst, der was von performantem
RAID5 geschrieben hat - grober Unfug. Da brauchst Du zusaetzlich noch
richtig viel CPU, um die Parity-Daten zu berechnen - das musst Du vor
allem auch jedes Mal wieder neu machen, wenn Du auch nur ein einziges
Bit in dem Block geaendert hast - und viel schlimmer ist, dass Du im
Zweifel auch noch zusaetzliche Lese-Operationen bei Schreibzugriffen
hast (Auch hier ist das Stichwort Update der Parity-Daten) und Krempel.


regards,
   Mario
-- 
<delta> talk softly and carry a keen sword



Reply to: