Search

Verteilte Dateisysteme der Zukunft

2021-10-05
383
0

Pit’s IT Architecture Talk

#17 Verteilte Dateisysteme der Zukunft

Hinweis: Die in diesem Artikel zum Ausdruck gebrachten Ansichten und Meinungen sind die des Autors und spiegeln nicht notwendigerweise die offizielle Politik, Position, Produkte und Technologien der Huawei Deutschland GmbH wider. Wenn Sie mehr über die Produkte und Technologien der Huawei Technologies Deutschland GmbH erfahren möchten, besuchen Sie bitte unsere Produktseiten oder kontaktieren Sie uns.


Seit dem sich BigData und künstliche Intelligenz in Richtung Normalität entwickeln, treten die Speicherverfahren im Rechenzentrum wieder in den Vordergrund. Im Compute-Bereich haben sich Multi-Node-Architekturen für Simulationen, Analysen und Prognosen etabliert. Diese aus hunderten oder sogar tausenden Servern bestehenden Rechnerverbände benötigen immer mehr Leistung im Storage-Umfeld. Schließlich wollen die CPUs gefüttert werden. Was bietet sich da nicht näher an, als das Scale-out im Compute auf den Storage zu übertragen. Für verteilte Dateisysteme entstehen damit neue Herausforderungen.

Prinzipiell hat man zwei Möglichkeiten IT-Systeme leistungsfähiger zu gestalten. Auf der einen Seite kann man den singulären Node immer weiter ertüchtigen, also CPUs, Speicher und I/O-Fähigkeiten hinzufügen bzw. austauschen. Das nennt man Scale-up. Auf der anderen Seite steht das Scale-out. Dabei werden „einfach“ zusätzliche Nodes hinzugefügt. Aus verschiedenen Gründen, wie Kosten, Flexibilität, technische Möglichkeiten, u.a., geht man heute zunehmend in Richtung Scale-out. Auf der Software-Seite werden dazu Message Passing Interfaces (MPI) genutzt, um den Computerverbund als Gesamtsystem zu verwenden. Im Storage-Bereich sind dafür verteilte Dateisysteme zuständig. Ihre vorrangige Aufgabe ist es, die Leistung der einzelnen Storage-Nodes aggregiert den Compute-Prozessen bereitzustellen.

Das hört sich einfach an, ist in der Realisierung aber nicht so trivial. Wenn man z.B. eine große Datei schreibt, kann man diese in einzelne Blöcke aufteilen und gleichzeitig zu vielen Storage-Nodes senden. Bei vielen kleinen Dateien ist dies aber keine Lösung.

Wie könnte ein optimales verteiltes Dateisystem aussehen?

Ein Dateisystem ist bekanntermaßen eine Hierarchie von Ordnern (Verzeichnissen) und Dateien. Hier haben wir die erste Möglichkeit Workloads aufzuteilen. Unterschiedliche Storage-Nodes sind für unterschiedliche Verzeichnisse/Dateien zuständig. Jetzt benötigt man nur noch jemanden, der die Übersicht behält und das nennt man bei verteilten Dateisystemen den Metadaten-Service (MDS). Er verwaltet u.a. die Hierarchie und weiß wo welche Daten gespeichert sind. Für das Speichern der Daten sind sogenannte (Object)Storage-Devices (OSD) verantwortlich. Sie sind dafür zuständig, dass die Daten auf den SSDs oder HDDs gespeichert werden.

Wenn wir auf die Datei-Ebene gehen, sollten große Dateien über mehrere Storage-Systeme verteilt werden. Kleine Dateien werden direkt an unterschiedliche OSD gereicht.

Jetzt sehen wir, dass auf den MDS nicht nur viel Arbeit zukommt, sondern auch eine große Verantwortung. Ohne MDS wissen wir nicht mehr wo die abgelegten Daten sind und wie sie sich zusammensetzen. Beide Anforderungen kann man lösen, in dem auf jedem Storage-Node ein synchronisierter MDS läuft. Falls einer ausfällt, kann ein anderer die Aufgaben übernehmen. Damit haben wir viele MDS, wissen aber noch nicht mit wem die Clients sprechen sollen.

Dazu verteilen wir die Clients über ein Load-Balancing auf unterschiedliche Storage-Nodes. Damit nicht alle Clients zur selben Zeit dieselben Daten ändern, gibt es noch einen verteilten Lock-Mechanismus. Dieser stellt sicher, dass Schreib-Anforderungen serialisiert werden.

Für HPC gibt es noch eine weitere Möglichkeit. Ein spezieller Treiber ist in der Lage, die jeweiligen OSD direkt anzusprechen. Er übernimmt die Aufgaben des MDS direkt am Compute-Node und kann somit die Leistung des gesamten Storage-Verbundes nutzen.

Die Verfügbarkeit des MDS haben wir schon geklärt. Was ist aber mit der Verfügbarkeit der Daten?

Dazu werden zwei Möglichkeiten genutzt. Manche verteilte Dateisysteme setzen dazu auf die Verfügbarkeit der jeweiligen Hardware. Nutzen also RAID. Modernere Lösungen verwenden Erasure Code. Das bietet nicht nur die Verfügbarkeit über viele Disks, sondern auch über viele Nodes. In einem solchen System dürfen nicht nur einzelne HDDs oder SDDs ausfallen, sondern auch mehrere Storage-Systeme und das bei Erasure-Code-immanenter Effizienz.

Wenn man jetzt alles noch in modernste Hardware verpackt, viele Zugriffsprotokolle (NFS, SMB, S3, HDFS und POSIX/MPI-IO) und ein sehr einfaches Management-Interface hinzufügt, hat man die Grundlage für die Huawei OceanStor Pacific. Daneben gibt es noch so viele andere Services, wie QoS, Snapshots, Replikation, Berechtigungsmanagement, u.v.a, die jeder selbst einen Artikel Wert wären.

Zum Abschluss noch eine ganz persönliche Prognose. Wenn mich jemand fragt, wie der Storage im Rechenzentrum der Zukunft aussieht, dann genau so wie die OceanStor Pacific! Total flexibel, jedem Workload gewachsen, einfachste Bedienung, keine Migrationen und skaliert bis in den Exabyte – Bereich und falls notwendig, auch wieder zurück.

Bis bald!

Pit

TOP