Platten, RAIDs und Dateisysteme

Aus
Version vom 1. September 2012, 23:30 Uhr von Raymond (Diskussion | Beiträge) (→‎Hinweise: Hinweise in RAID-Rechner geändert, da die Links auch vollkommen veraltet sind)

Letztlich werden alle zu speichernden Daten einer Disk-Station (DS) auf physikalischen Festplatten abgelegt. Die eigentliche Arbeit dabei übernimmt zum einen der Plattentreiber im Linux-Kernel, zum anderen der Platten-Controller (Elektronik auf der Festplatte). Das Betriebssystem ist dabei in der Lage, spezielle Verfahren zur Speicherung der Daten auf den Festplatten zu unterstützen (RAID). RAID wurde ursprünglich in einer Zeit entwickelt, als Festplatten noch sehr teuer und unzuverlässiger als heute waren. In der ursprünglichen Bezeichnung "Redundant Array of Inexpensive Disks" drückte sich dies aus. Heute steht RAID für "Redundant Array of Independent Disks".

RAID

RAID verfolgt vor allem zwei Ziele: Erhöhung der Performance durch Striping und Erhöhung der Ausfallsicherheit durch Redundanz. Striping verteilt die Daten über mehrere Festplatten und somit die Last auf mehr Hardware. Redundanz speichert zusätzliche Informationen, so dass der Betrieb der Anwendung selbst bei Ausfall einer Festplatte fortgesetzt werden kann. Die Performance einer einzelnen Festplatte kann genauso wenig erhöht werden wie deren Ausfallsicherheit. Durch geschickte Kombinierung von physikalischen Festplatten ist es aber möglich, Ausfallsicherheit und Performance des Gesamtsystems deutlich zu erhöhen.

Die zu einem RAID zusammengefassten Bündel physikalischer Festplatten werden auch als virtuelle Festplatten bezeichnet. Aus der Sicht der Dateisysteme sieht man also nur die virtuellen Festplatten (z. B. /dev/md2). Bei einem RAID werden die Daten nach unterschiedlichen Verfahren auf die einzelnen Festplatten verteilt. Diese unterschiedlichen Verfahren werden als RAID-Verfahren oder als RAID-Level bezeichnet.

Fast allen RAID-Level der DS (Ausnahmen RAID-0) ist gemeinsam, dass sie redundante Informationen speichern. Fällt eine physikalische Festplatte aus, so können deren Daten aus den Daten der verbleibenden intakten Festplatten rekonstruiert werden. Die defekte Festplatte kann bei entsprechender Unterstützung sogar im laufenden Betrieb durch eine neue ersetzt werden (Hot-Swapping). (Im Grunde können alle Platten, die per SATA angeschlossen werden, im Betrieb an oder abgesteckt werden, weil die SATA-Stecker die Hot-Swap-Fähigkeit ermöglichen. Allerdings werden nur manche Gehäuseformen von Synology als Hot-Swap-fähig bezeichnet.) Nach einem Austausch der defekten Festplatte kann über den DS Manager eine Rekonstruktion veranlasst werden. Für die restliche Programme bleibt dieser Vorgang bis auf mögliche Performance-Einbußen verborgen: Es kann also unterbrechungsfrei auf der virtuellen Festplatte weitergearbeitet werden.

Man kann diesen Rekonstruktionsvorgang auch automatisieren. Dazu müssen sogenannte Hot-Spare-Disks (Ersatzfestplatten) definiert werden. Die Hot-Spare-Disks werden im Normalbetrieb nicht genutzt. Fällt aber eine in einem entsprechen definierten RAID-Verbund liegende Festplatte aus, dann wird die Rekonstruktion automatisch ausgelöst. Nach Austausch der defekten Festplatte, wird diese zur Hot-Spare-Disk.

Da die meisten Festplatten heutzutage mit Selbstdiagnose-Programmen ausgestattet sind (S.M.A.R.T.), können die Auslöser schon sehr frühzeitig erfolgen. Daher werden Festplatten im RAID-Verbund sehr viel sensibler Fehler anzeigen, damit eine Rekonstruktion möglichst frühzeitig erfolgen kann. Die einzelnen Festplatten speichern dazu die Daten mit einem redundanten Code wie dem Hamming-Code. Dieser erlaubt die korrekte Wiederherstellung der Daten, selbst wenn auf der Festplatte Bits 'umgekippt' sind.

Ein weiterer Nebeneffekt der Zusammenfassung von mehreren physikalischen Festplatten zu einer virtuellen Platte ist die höhere Kapazität. Manchmal können damit Speicherplatzprobleme gelöst werden, für die sonst umständlichere Verfahren notwendig würden.

RAID wurde seit seiner ursprünglichen Definition im Jahre 1987 weiterentwickelt.

RAID-Level

RAID-0 - Blockweises Striping

RAID-0 verteilt die Daten blockweise auf eine physikalische Festplatte nach der anderen. Damit wird die Performance der virtuellen Festplatte erhöht, denn der Datenaustausch zwischen den jeweiligen Platten-Controllern ist schneller als der nachfolgende Plattenschreibvorgang. Bei einem RAID-0 mit 2 physikalischen Festplatten verdoppelt man ungefähr den Durchsatz. Allerdings besteht bei RAID-0 grundsätzlich der Nachteil, das bei auch nur einem physikalischen Plattenausfall, alle Daten der virtuellen Platte verloren sind.

RAID-1 - Blockweises Mirroring

Im Gegensatz zu RAID-0 steht bei RAID-1 die Ausfallsicherheit im Vordergrund. In der Grundform werden zwei physikalische Festplatten zu einer virtuellen Platte zusammengefasst, indem alle Daten blockweise auf beide physikalische Platten gleichzeitig geschrieben werden. Diese Kopien bezeichnet man auch als Mirror (Spiegel). Im Normalfall werden zwei, manchmal aber auch mehr als zwei Kopien der Daten vorgehalten (Firmware- und Swap-Partition ist auf allen physikalischen Festplatten als RAID-1-Verbund).

Im Normalbetrieb sind mit RAID-1 nur bei Leseoperationen Performance-Steigerungen möglich, weil ja abwechseln von beiden physikalischen Laufwerken gelesen werden kann (wie bei RAID-0). Allerdings fällt er oft nicht so hoch wie bei RAID-0 aus. Beim Schreiben sind mit RAID-1 eher Performance-Einbußen in Kauf zu nehmen: Die Daten müssen ja beide über den SCSI-Bus transportiert werden, also doppeltes Datenaufkommen.

RAID-5 - Parity statt Mirroring

Die Idee von RAID-5 ist es, die Spiegelplatte(n) durch eine Paritätsfestplatte zu ersetzen. Deswegen macht RAID-5 auch erst Sinn ab 3 physikalischen Festplatten. Prinzipiell sieht das Verfahren so aus (ist eigentlich RAID-4, kann man sich aber besser vorstellen): Über die (beiden) Datenfestplatten werden wie beim RAID-0 die Datenblöcke gestriped; für die Paritätsfestplatte wird ein XOR-Paritätsblock errechnet und dieser dann geschrieben. Fällt also eine der Datenfestplatten aus, so können die fehlenden Daten aus den anderen Datenfestplatten plus der Paritätsfestplatte wieder errechnet bzw. rekonstruiert werden. Insgesamt kann also eine Festplatte ausfallen ohne Datenverlust .(Der Ausfall der Paritätsfestplatte würde ja kein Datenverlust nach sich ziehen.)

Die Platzersparnis gegen über RAID-1 hat allerdings ihren Preis: Mit jedem Ändern eines Datenblocks ändert sich der Wert des zugehörigen Paritätsblocks, welcher berechnet und geschrieben werden will. Damit nun nicht die Paritätsplatte übermäßig häufig benutzt werden muss (Verschleiß), hat man die Paritätsinformationen(-blöcke) bei RAID-5 nun auch noch über alle Platten verteilt.

Der Ausfall einer zweiten physikalischen Festplatte führt zu Datenverlusten. Deswegen gibt es mit RAID-6 die Möglichkeit, zwei Paritätsplatten zu definieren (natürlich auch wieder verteilt). In jedem Fall ist das Einrichten, Vergrößern und Rekonstruieren/Wiederherstellen immer sehr aufwendig (tagelang). Der Vorteil ist eine gewisse Steigerung Lese-Performance und eben eine entsprechende Ausfallsicherheit.

Non-RAID-Level

JBOD

JBOD, meaning "Just a Bunch Of Disks", "Just a Bunch Of Drives", or, as a recursive acronym, "JBOD's a Bunch Of Disks", is used to refer to two distinct concepts:

  • all disks being independently addressed, with no collective properties – each physical disk, with all the logical partitions each may contain, being mapped to a different logical volume: just a bunch of disks.
  • concatenation, where all the physical disks are concatenated and presented as a single disk.

Der Begriff JBOD wird in der Praxis in Abgrenzung zu RAID-Systemen auf drei verschiedene Arten verwendet:

1. Konfiguration eines RAID-Controllers mit mehreren Festplatten, die keinen Verbund bilden. Viele Hardware-RAID-Controller sind in der Lage, die angeschlossenen Festplatten dem Betriebssystem einzeln zur Verfügung zu stellen; die RAID-Funktionen des Controllers werden dabei abgeschaltet, und er arbeitet als einfacher Festplatten-Controller.

2. Ein JBOD kann auch, unabhängig vom Controller, eine auf beliebige Arten an den Computer angeschlossene Anzahl von Festplatten bezeichnen. Mithilfe einer Volume Management Software kann ein solches JBOD zu einem Software-RAID zusammengeschaltet werden.

3. Konfiguration eines RAID-Controllers als Aneinanderreihung („concatenation“) mehrerer Festplatten, die so als ein einziges Laufwerk erscheinen. (Diese Konfiguration ist demnach identisch mit SPAN und NRAID. Deshalb ergibt der Begriff JBOD für diese Konfiguration keinen Sinn, wenn er als Abgrenzung zu RAID-Systemen dienen soll.) Im Unterschied zu RAID 0 werden keine Stripesets gebildet. Die Platten, die auch von unterschiedlicher Größe sein können, werden einfach aneinander gehängt. Es gibt weder Ausfallsicherheit, noch Performancegewinn. Der Vorteil ist lediglich die Größe des Laufwerks. Von Nachteil ist die Tatsache, dass der Ausfall einer einzelnen Platte den gesamten Verbund beschädigt.

NOTE: some controller manufacturers, especially those of low-end arrays, use the term JBOD to refer to what is actually NRAID.

NRAID

N-RAID, which stands for Non-RAID, is also known as Concatenated and Spanning. Some manufacturers still refer to N-RAID as JBOD, but this is on the decline. In an N-RAID system, physical drives are put together without RAID to form one logical volume. Data is simply moved intact to the drives until they are full. For example in a 2 drive N-RAID/SPAN set, a large video file is moved onto the volume. Behind the scenes it takes up the majority of one drive. The next large file will be loaded onto the other drive in the set with smaller files being moved intact onto open space. You do not need matching drives.

In an N-RAID/SPAN set, you can add additional drives as needed for increased storage space without having to reformat or move your existing data.

NOTE: some controllers claim to offer NRAID but the loss of a single disk means the loss of all data on the array.

Cache auf der Festplatte

Jede einzelne Festplatte ist mit einem kleinen Cache ausgestattet. Dieser ist notwendig, um eine reibungslose Zusammenarbeit zwischen vom Betriebssystem verwalteten RAM und der Festplatte zu ermöglichen. Bei jedem Lesevorgang wird also 'gepuffert'. Bei Schreibvorgängen ist das auch möglich, birgt aber die Gefahr in sich, dass der Controller bereits dem Betriebssystem-Treiber das 'ok' gibt, obwohl die Daten längst noch nicht auf der Plattenoberfläche angekommen sind. Diese kleine zeitliche Differenz kann sich bei Stromausfall oder anderen Störungen zu Datenverlusten führen. Zudem sind moderne Platten-Controller in der Lage, die einkommenden Datenblöcke so zu umzusortieren, dass sie möglichst zu optimalen Wegen der Schreibmechanik führen. Auch dass kann ins Auge gehen, wenn die Daten nicht in der vom Dateisystem erwarteten Reihenfolge geschrieben werden. Das Dateisystem-Journal erwartet, dass immer zuerst das Journal geschrieben wird, bevor die eigentlichen Daten dran sind und kann so eine Recovery-Strategie realisieren, falls das System ausfällt. Hält sich der Platten-Controller nicht an die Reihenfolge, ist alle Mühe umsonst gewesen. Daher gibt es im DS Manager die Option zu dem Schreibcache.

Dateisysteme

Dateisysteme stellen eine Zwischenschicht im Betriebssystem dar, die für den Anwender und die Anwendungen die gewohnten Verzeichnisse (Directories) bzw. Ordner (Folder) sowie Dateien (Files) bereitstellt und diese für alle verborgen auf dem Block-orientierten Speicher ablegt. (Manchmal schiebt sich auch noch ein Volume Manager wie bei der DS dazwischen.)

Bei allen nicht-redundanten-RAID und Non-RAID-Varianten ist im Störungsfall die Frage, wie kann ich noch Daten retten, sehr wichtig für die Auswahl des Verfahrens. Bei den Überlegungen ist natürlich die Struktur des Dateisystem elementar.

Beispiel: NRAID mit 2 Platten.

Hat man ein 2-plattiges NRAID, dann werden z. B. beide Platten(Partitionen) als Gesamtdatencontainer vom Dateisystem verwaltet. Wird dabei die Verwaltungsinformation nur auf die erste Platte geschrieben und wird diese gestört, wird es nur mit Spezialtools möglich, die Dateien der intakten 2. Platte auszulesen, da ja die Verwaltungsinformationen (Superblock, inode-Tabellen) auf der ersten Platte nicht erreichbar sind. Umgekehrt (Platte 2 ist gestört) ist es in diesem Beispiel recht einfach, an die Dateien der 1. Platte zu gelangen.

Setzt man - wie bei ext3 - ein Dateisystem ein, welches redundant und räumlich verteilt die Verwaltungsinformationen ablegt, stehen diese natürlich im Falle einer Störung auf beiden Platten zur Verfügung. Auch werden die Dateien bei ext3 räumlich nah abgelegt; d.h. die Dateien gruppieren sich um die Verzeichnisse bzw. Verwaltungsinformationen und sind daher über den gesamten zur Verfügung stehenden Speicherplatz verteilt. Es würde dann nicht der Vorstellung entsprechen, dass man erstmal eine Platte voll schreibt, bevor die nächste verwendet wird; sondern die Verteilung ist chaotisch (und damit eher gleich verteilt) über beide Platten.

Anmerkung: Es wird üblicherweise davon ausgegangen, dass ein Verschieben einer Datei (mv) unter Linux nur ein Umhängen des Dateieintrags auf Verzeichnisebene ist. In Konstellationen wie ext3 und NRAID kann es aber auch zum (zeitlich versetzten) Datenblockkopieren kommen, weil das Dateisystem dem Ideal der 'Nähe' von Dateien und Verzeichnissen nachkommen will (damit einher geht eine Art von Defragmentierung).

Journaling

Moderne Dateisysteme wie ext3 stellen über die Basisfunktionen hinaus auch noch ein Journaling bereit. Dies ist ein Mechanismus, der die Konsistenz des Dateisystem (z.B. ext2) über Systemabstürze hinweg gewährleistet. Dazu schreibt das Dateisystem jede Änderung zunächst in ein für die Anwendungen nicht sichtbares Logfile, bevor die Änderungen im Dateisystem selbst vorgenommen werden. Nach einem Systemabsturz braucht das Dateisystem nur das Ende des Logfile nachzufahren, um die Konsistenz des Dateisystems wiederherzustellen. Dateisysteme ohne Journaling müssen nach einem Systemabsturz die Konsistenz des gesamten Dateisystems überprüft werden (File System Check = fsck); bei großen Dateisystemen kann dies mehrere Stunden dauern, bevor alles geprüft worden ist und das Betriebssystem wieder in den Normalzustand zurückkehrt, den ohne konsistente Dateisystem läuft bekanntlich gar nichts.

RAID-Rechner

Einen guten RAID-Rechner hat Synology ins Netz gestellt http://www.synology.com/support/RAID_calculator.php?lang=deu