22.11.2013 Aufrufe

Lustre/ZFS Verteiltes Dateisystem auf neuen Sohlen - GUUG

Lustre/ZFS Verteiltes Dateisystem auf neuen Sohlen - GUUG

Lustre/ZFS Verteiltes Dateisystem auf neuen Sohlen - GUUG

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Lustre</strong>/<strong>ZFS</strong><br />

<strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong><br />

Daniel Kobras<br />

science + computing ag<br />

IT-Dienstleistungen und Software für anspruchsvolle Rechnernetze<br />

Tübingen | München | Berlin | Düsseldorf


science+computing ag<br />

Gegründet 1989<br />

Standorte Tübingen<br />

München<br />

Berlin<br />

Düsseldorf<br />

Mitarbeiter 258<br />

Anteilseigner Bull S.A. (100%)<br />

Umsatz 10/11 26,66 Mio. Euro<br />

Portfolio<br />

IT Service für komplexe Berechnungsumgebungen<br />

Umfassende Lösungen für Linux- und Windows-basiertes HPC<br />

scVENUS Systemmanagement-Software zur effizienten Administration<br />

homogener und heterogener Netze<br />

Seite 2<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


High-Performance-Anything<br />

Seite 3<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Vertikale Skalierung (Scale-Up)<br />

http://www.flickr.com/photos/xjrlokix/4379281690/<br />

„Größer ist besser“<br />

© 2010 Ben Fredericson, CC BY 2.0<br />

+ einfache Handhabung<br />

– Migrations<strong>auf</strong>wand<br />

– meist hohe Investition nötig<br />

© 2006 Graham Richardson, CC BY 2.0<br />

http://www.flickr.com/photos/didbygraham/121743548/<br />

Seite 4<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Horizontale Skalierung (Scale-Out)<br />

„Wenn einer allein es nicht schafft, nimm zwei.“<br />

http://www.flickr.com/photos/xjrlokix/4379281690/<br />

http://www.flickr.com/photos/chilangoco/4709515902/<br />

© 2010 Ben Fredericson, CC BY 2.0<br />

© 2010 Edgar Jimenez, CC BY-SA 2.0<br />

+ Bedarfsgerechtes Wachstum möglich<br />

– Komplexes verteiltes System<br />

Seite 5<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Wenn Scale-Out schiefgeht<br />

http://www.flickr.com/photos/joiseyshowaa/2402764792/<br />

© 2008 B. Katz, CC BY-SA 2.0<br />

Seite 6<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Wenn Scale-Out schiefgeht<br />

Scale-Out benötigt Koordination<br />

http://www.flickr.com/photos/joiseyshowaa/2402764792/<br />

© 2008 B. Katz, CC BY-SA 2.0<br />

Seite 7<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Wenn Scale-Out schiefgeht<br />

Ideale Kombination:<br />

So viel Scale-Up wie möglich<br />

So viel Scale-Out wie nötig<br />

http://www.flickr.com/photos/joiseyshowaa/2402764792/<br />

© 2008 B. Katz, CC BY-SA 2.0<br />

Seite 8<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


High-Performance-Storage<br />

Seite 9<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Scale-Up für <strong>Dateisystem</strong>e<br />

• Immer mehr Storagekapazität pro Server<br />

• Anwender wollen immer größere <strong>Dateisystem</strong>e<br />

> Gefahr von fehlerhaften Daten steigt<br />

> fsck dauert immer länger<br />

• Aktuelle lokale <strong>Dateisystem</strong>e müssen<br />

• Zu hohe Kapazitäten hin skalieren<br />

• Mit Plattendefekten umgehen können<br />

• Integrität ohne fsck sicherstellen können<br />

• Hybride Architekturen aus SSD und HDD verwalten<br />

können<br />

• Beispiele: <strong>ZFS</strong>, btrfs<br />

Seite 10<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Scale-Out für <strong>Dateisystem</strong>e<br />

• Einzelne Fileserver können hohe Kapazitäten verwalten<br />

• Bandbreite einzelner Fileserver bleibt beschränkt<br />

• Umstieg <strong>auf</strong> schnellere Interconnects erfordert Austausch der<br />

kompletten Netzinfrastruktur<br />

> Scale-Out-Speichersysteme bündeln mehrere getrennte<br />

Fileserver zu logischen Gesamtsystem (Cluster-<strong>Dateisystem</strong>e,<br />

verteilte <strong>Dateisystem</strong>e)<br />

• Beispiele: GPFS, <strong>Lustre</strong>, glusterfs, FhgFS, Ceph, …<br />

• Verwenden in der Regel lokale <strong>Dateisystem</strong>e im Backend<br />

Seite 11<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Scale-Out für <strong>Dateisystem</strong>e<br />

• Einzelne Fileserver können hohe Kapazitäten verwalten<br />

• Bandbreite einzelner Fileserver bleibt beschränkt<br />

• Umstieg <strong>auf</strong> schnellere Interconnects erfordert Austausch der<br />

kompletten Netzinfrastruktur<br />

> Scale-Out-Speichersysteme bündeln mehrere getrennte<br />

Fileserver zu logischen Gesamtsystem (Cluster-<strong>Dateisystem</strong>e,<br />

verteilte <strong>Dateisystem</strong>e)<br />

• Beispiele: GPFS, <strong>Lustre</strong>, glusterfs, FhgFS, Ceph, …<br />

• Verwenden in der Regel lokale <strong>Dateisystem</strong>e im Backend<br />

• Ideal: Kombination mit leistungsfähigem lokalen <strong>Dateisystem</strong><br />

(z.B. <strong>ZFS</strong>, btrfs)<br />

Seite 12<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Exkurs: <strong>Lustre</strong>-Funktionsweise<br />

Client Client Client Client<br />

LAN<br />

Metadaten-<br />

Server<br />

Objekt-<br />

Server 1<br />

Objekt-<br />

Server 2<br />

Block-<br />

Gerät<br />

Block-<br />

Gerät<br />

Block-<br />

Gerät<br />

Seite 13<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Exkurs: <strong>Lustre</strong>-Funktionsweise<br />

Client Client Client Client<br />

/fs1/a.out?<br />

Metadaten-<br />

Server<br />

/fs1/a.out =<br />

OSS1: obj 7Block-<br />

OSS2: obj 19Gerät<br />

LAN<br />

Objekt-<br />

Server 1<br />

obj 7 obj 19<br />

Block-<br />

Gerät<br />

Objekt-<br />

Server 2<br />

Block-<br />

Gerät<br />

Seite 14<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Exkurs: <strong>Lustre</strong>-Funktionsweise<br />

Client Client Client Client<br />

/fs1/a.out =<br />

OSS1: obj 7<br />

OSS2: obj 19<br />

Metadaten-<br />

Server<br />

/fs1/a.out =<br />

OSS1: obj 7Block-<br />

OSS2: obj 19Gerät<br />

LAN<br />

Objekt-<br />

Server 1<br />

obj 7 obj 19<br />

Block-<br />

Gerät<br />

Objekt-<br />

Server 2<br />

Block-<br />

Gerät<br />

Seite 15<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Exkurs: <strong>Lustre</strong>-Funktionsweise<br />

Client Client Client Client<br />

/fs1/a.out =<br />

OSS1: obj 7<br />

OSS2: obj 19<br />

LAN<br />

obj 19?<br />

obj 7?<br />

Metadaten-<br />

Server<br />

/fs1/a.out =<br />

OSS1: obj 7Block-<br />

OSS2: obj 19Gerät<br />

Objekt-<br />

Server 1<br />

obj 7 obj 19<br />

Block-<br />

Gerät<br />

Objekt-<br />

Server 2<br />

Block-<br />

Gerät<br />

Seite 16<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


<strong>Lustre</strong> mit <strong>ZFS</strong>-Backend<br />

Seite 17<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Status <strong>Lustre</strong>/ldiskfs<br />

• Größte <strong>Dateisystem</strong>e im Bereich von ca. 50-100PByte, ca. 1TB/s<br />

• lokales Backend basiert <strong>auf</strong> ext3/ext4 („ldiskfs“)<br />

• Zertifizierungen/Fault Isolation erfordert Partitionierung der OSTs<br />

in kleine lokale <strong>Dateisystem</strong>e, typisch Raid6 (8+2) à 24 TB<br />

• Dadurch: starke Fragmentierung, hoher Verwaltungs<strong>auf</strong>wand,<br />

Beschränkung für maximale Dateigröße (ohne Striping)<br />

Seite 18<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Defizite <strong>Lustre</strong>/ldiskfs<br />

• 2007: LLNL identifiziert <strong>auf</strong> seinen Supercomputern<br />

Schwachstellen der Skalierbarkeit von <strong>Lustre</strong><br />

• fsck-Dauer<br />

• Maximale Partitionsgröße (OST) pro Server (OSS)<br />

• Zuverlässigkeit erfordert teure Hardware<br />

• Performance-Probleme beim Checkpointing großer Jobs<br />

• Unzulänglichkeiten in ldiskfs und seiner Schnittstelle zu md-<br />

Raid/Device Mapper als Ursache<br />

> LLNL evaluiert alternative <strong>Dateisystem</strong>-Backends<br />

> LLNL initiiert Projekt für <strong>Lustre</strong> mit <strong>ZFS</strong> als lokalem Backend<br />

> LLNL startet Kernel-Port für <strong>ZFS</strong> unter Linux<br />

Seite 19<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Defizite <strong>Lustre</strong>/ldiskfs<br />

• 2007: LLNL identifiziert <strong>auf</strong> seinen Supercomputern<br />

Schwachstellen der Skalierbarkeit von <strong>Lustre</strong><br />

• fsck-Dauer<br />

• Maximale Partitionsgröße (OST) pro Server (OSS)<br />

• Zuverlässigkeit erfordert teure Hardware<br />

• Performance-Probleme beim Checkpointing großer Jobs<br />

• Unzulänglichkeiten in ldiskfs und seiner Schnittstelle zu md-<br />

Raid/Device Mapper als Ursache<br />

> LLNL evaluiert alternative <strong>Dateisystem</strong>-Backends<br />

> LLNL initiiert Projekt für <strong>Lustre</strong> mit <strong>ZFS</strong> als lokalem Backend<br />

> LLNL startet Kernel-Port für <strong>ZFS</strong> unter Linux<br />

Seite 20<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Exkurs: Checkpointing und CoW<br />

• Checkpoint von massiv parallelem Job: viele Knoten/Prozesse<br />

schreiben gleichzeitig in dieselbe Datei<br />

Rank 0<br />

Rank n<br />

Blöcke<br />

• ldiskfs:<br />

• Allokator weist Blöcke zu, bevor I/O-Muster bekannt<br />

• Wählt möglichst große, zusammenhängende Bereiche aus<br />

• <strong>ZFS</strong>:<br />

• Copy-on-Write: Allokator weist Blöcke beim Schreiben zu<br />

Seite 21<br />

• Kann Plattenzugriffe linearisieren<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Dürfen die das?<br />

• Problem: GPL (Linux-Kernel, <strong>Lustre</strong>) inkompatibel zu CDDL<br />

(<strong>ZFS</strong>)<br />

• Daher bislang war <strong>ZFS</strong>-Ports für BSD, aber unter Linux nur als<br />

FUSE-Port im Userland<br />

• Lösung für vollwertiges <strong>ZFS</strong>-Kernelmodul:<br />

• Solaris Porting Layer (SPL) unter GPL als Schnittstelle<br />

zwischen Linux-Kernel und <strong>ZFS</strong><br />

• <strong>ZFS</strong>-Modul nutzt keine GPL-only Symbole<br />

• <strong>ZFS</strong>-Modul nutzt nur API-Funktionen<br />

• <strong>ZFS</strong>-Modul wird separat von SPL und Linux-Kernel<br />

vertrieben nur im Quellcode<br />

> keine „derived work“ von GPL- und CDDL-Code<br />

• Ähnlicher Status wie OpenAFS<br />

Seite 22<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Historie<br />

2007 2008 2009 2010 2011 2012 2013<br />

zfson<br />

linux<br />

<strong>Lustre</strong><br />

btrfs <strong>ZFS</strong><br />

LLNL<br />

CFS Sun Oracle Whamcloud<br />

Sun Oracle<br />

Chris Mason/Oracle<br />

OpenSFS/EOFS<br />

Xyratex<br />

Nexenta<br />

Joyent<br />

...<br />

Intel<br />

CM/<br />

FusionIO<br />

Seite 23<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Historie<br />

2007 2008 2009 2010 2011 2012 2013<br />

zfson<br />

linux<br />

<strong>Lustre</strong><br />

btrfs <strong>ZFS</strong><br />

LLNL<br />

CFS Sun Oracle Whamcloud<br />

Sun Oracle<br />

Chris Mason/Oracle<br />

OpenSFS/EOFS<br />

Xyratex<br />

Nexenta<br />

Joyent<br />

...<br />

Intel<br />

CM/<br />

FusionIO<br />

Seite 24<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Vereinfachter Aufbau <strong>Lustre</strong>-Targets<br />

MDT/OST<br />

fsfilt<br />

ldiskfs/ext3<br />

ldiskfs/ext4<br />

Seite 25<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Neues Backend-<strong>Dateisystem</strong> (Theorie)<br />

MDT/OST<br />

fsfilt<br />

ldiskfs/ext3 ldiskfs/ext4 <strong>ZFS</strong><br />

Seite 26<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Neues Backend-<strong>Dateisystem</strong> (Praxis)<br />

MDT/OST<br />

OSD<br />

ldiskfs/ext3 ldiskfs/ext4 <strong>ZFS</strong><br />

Seite 27<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Komponenten <strong>ZFS</strong><br />

Posix<br />

Interface<br />

(ZPL)<br />

Block<br />

Interface<br />

(ZVOL)<br />

Transactional<br />

Transactional<br />

Objects<br />

Objects<br />

(DMU, ZIL, ...)<br />

Pooled<br />

Storage<br />

(VDEV, ZIO, ARC, ...)<br />

Seite 28<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Komponenten <strong>ZFS</strong> + <strong>Lustre</strong>/<strong>ZFS</strong><br />

Posix<br />

Interface<br />

(ZPL)<br />

Block<br />

Interface<br />

(ZVOL)<br />

Object<br />

Interface<br />

(osd-zfs)<br />

Transactional<br />

Transactional<br />

Objects<br />

Objects<br />

(DMU, ZIL, ...)<br />

Pooled<br />

Storage<br />

(VDEV, ZIO, ARC, ...)<br />

Seite 29<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Hands-On <strong>Lustre</strong>/<strong>ZFS</strong><br />

Seite 30<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Praxis: zfsonlinux bereitstellen<br />

• DIY ist ein Muss:<br />

% git clone (...) oder wget (...)<br />

% ./configure<br />

% make rpm<br />

# rpm -i (...)<br />

• Solaris Porting Layer:<br />

• https://github.com/chaos/spl/<br />

• Download-Tarball veraltet<br />

• <strong>ZFS</strong>:<br />

Seite 31<br />

• Aktuell: spl-0.6.0-rc14<br />

• https://github.com/chaos/zfs/<br />

• Download-Tarball und Master-Branch veraltet!<br />

• Aktuell: zfs-0.6.0-rc14<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Praxis: <strong>Lustre</strong>/<strong>ZFS</strong> bereitstellen<br />

• Quellen für <strong>Lustre</strong> mit <strong>ZFS</strong>-Unterstützung:<br />

• https://github.com/chaos/lustre/ (orion-Branches)<br />

• http://git.whamcloud.com/fs/lustre-dev.git/ (orion-Branch)<br />

• http://git.whamcloud.com/fs/lustre-release.git/ (master)<br />

• Feature Release <strong>Lustre</strong> 2.3 (Technologie-Preview, nur<br />

OSTs)<br />

• Demnächst: Maintenance Release <strong>Lustre</strong> 2.4<br />

• Übersetzen und installieren:<br />

# ./configure --without-ldiskfs<br />

# make rpms<br />

# rpm -i (...)<br />

• Keine Kernel-Patches für <strong>Lustre</strong>-Server mehr nötig!<br />

Seite 32<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Praxis: MDS einrichten<br />

• Beispiel: MDS/MGS mit <strong>ZFS</strong>-Backend <strong>auf</strong> vier Platten mit Raid10<br />

in gemeinsamem Pool einrichten<br />

# zpool create -f -O canmount=off meta \<br />

mirror /dev/sdb /dev/sdc \<br />

mirror /dev/sdd /dev/sde<br />

# mkfs.lustre --mgs –fsname=lustre \<br />

--backfstype=zfs meta/mgs<br />

# mkfs.lustre --mdt --fsname=lustre \<br />

--index=0 --mgsnode=192.168.100.1@tcp \<br />

--backfstype=zfs meta/mdt<br />

# mount -t lustre meta/mgs /lustre/MGS<br />

# mount -t lustre meta/mdt \<br />

/lustre/lustre-MDT0000<br />

• Empfehlung eigentlich: separater Pool für jeden <strong>Lustre</strong>-Dienst<br />

Seite 33<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Praxis: MDS einrichten<br />

• Beispiel: MDS/MGS mit <strong>ZFS</strong>-Backend <strong>auf</strong> vier Platten mit Raid10<br />

in gemeinsamem Pool einrichten<br />

# zpool create -f -O canmount=off meta \<br />

mirror /dev/sdb /dev/sdc \<br />

mirror /dev/sdd /dev/sde<br />

# mkfs.lustre --mgs –fsname=lustre \<br />

--backfstype=zfs meta/mgs<br />

# mkfs.lustre --mdt --fsname=lustre \<br />

--index=0 --mgsnode=192.168.100.1@tcp \<br />

--backfstype=zfs meta/mdt<br />

# mount -t lustre meta/mgs /lustre/MGS<br />

# mount -t lustre meta/mdt \<br />

/lustre/lustre-MDT0000<br />

• Empfehlung eigentlich: separater Pool für jeden <strong>Lustre</strong>-Dienst<br />

Seite 34<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Praxis: OSS einrichten<br />

• Beispiel: OST mit <strong>ZFS</strong>-Backend <strong>auf</strong> zehn Platten mit Raidz2<br />

einrichten<br />

# mkdir -p /lustre/lustre-OST0000<br />

# mkfs.lustre --ost --fsname=lustre \<br />

--index=0 --mgsnode=192.168.100.1@tcp \<br />

--backfstype=zfs data/ost0000 raidz2 \<br />

/dev/sd[b-k]<br />

# mount -t lustre data/ost0000 \<br />

/lustre/lustre-OST0000<br />

• Der data-zpool wird implizit durch mkfs.lustre angelegt<br />

Seite 35<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Praxis: OSS einrichten<br />

• Beispiel: OST mit <strong>ZFS</strong>-Backend <strong>auf</strong> zehn Platten mit Raidz2<br />

einrichten<br />

# mkdir -p /lustre/lustre-OST0000<br />

# mkfs.lustre --ost --fsname=lustre \<br />

--index=0 --mgsnode=192.168.100.1@tcp \<br />

--backfstype=zfs data/ost0000 raidz2 \<br />

/dev/sd[b-k]<br />

# mount -t lustre data/ost0000 \<br />

/lustre/lustre-OST0000<br />

• Der data-zpool wird implizit durch mkfs.lustre angelegt<br />

Seite 36<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Praxis: Änderungen im Verhalten<br />

• df <strong>auf</strong> Servern zeigt Platzbedarf <strong>auf</strong> Targets nicht mehr an.<br />

(Alternativen: zfs list oder lfs df <strong>auf</strong> Client)<br />

• <strong>Lustre</strong>-Mountdata steht in <strong>ZFS</strong>-Properties:<br />

# zfs get all meta/mgs | grep lustre:<br />

meta/mgs lustre:flags 100 local<br />

meta/mgs lustre:svname MGS local<br />

meta/mgs lustre:version 1<br />

local<br />

meta/mgs lustre:index 0 local<br />

meta/mgs lustre:fsname lustre local<br />

• Zugriff <strong>auf</strong> Backend-FS über Snapshots:<br />

# zfs snap meta/mgs@snap1234<br />

# mount -t zfs meta/mgs@snap1234 \<br />

/lustre/mgs-snap<br />

# llog_reader \<br />

/lustre/mgs-snap/CONFIGS/lustre-client<br />

Seite 37<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Zusammenfassung<br />

• <strong>Lustre</strong>+<strong>ZFS</strong> kombiniert Scale-Out- mit Scale-Up-fähigem<br />

<strong>Dateisystem</strong><br />

• Hoher Datendurchsatz<br />

• <strong>Dateisystem</strong>-Limits weit jenseits aktueller Anforderungen<br />

• Permanente Integritätsprüfung für Daten und Metadaten<br />

• Online-Scrubbing<br />

• Nur Commodity-Hardware nötig, kein Vendor-Lock-In<br />

• In Kürze in <strong>Lustre</strong> 2.4 Maintenance Release verfügbar (aktuell im<br />

Feature Freeze, Release geplant für 30. April 2013)<br />

• <strong>ZFS</strong>-Port für Linux als „Abfallprodukt“<br />

Seite 38<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Ausblick<br />

• Performance<br />

• <strong>ZFS</strong>-Blockgröße anheben <strong>auf</strong> 1MB<br />

• Integration <strong>ZFS</strong> Write-Cache (ZIL)<br />

• Zuverlässigkeit<br />

• Integration <strong>ZFS</strong>-Fault-Management/automatische<br />

Verwaltung von Hot-Spares<br />

• Konsistenter <strong>Lustre</strong>-Check über sämtliche MDT/OST<br />

• End-to-end-Checksums<br />

• Features<br />

• Snapshots <strong>auf</strong> <strong>Lustre</strong>-Ebene<br />

Seite 39<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Quellen<br />

• <strong>ZFS</strong>-Port für Linux:<br />

• http://zfsonlinux.org<br />

• Quellcode SPL/<strong>ZFS</strong>-Port:<br />

• <strong>Lustre</strong>:<br />

Seite 40<br />

• https://github.com/chaos/spl/<br />

• https://github.com/chaos/zfs/<br />

• http://git.whamcloud.com/fs/lustre-release.git/<br />

• http://downloads.whamcloud.com/public/lustre/<br />

• Informationen zu <strong>Lustre</strong>/<strong>ZFS</strong><br />

• http://zfsonlinux.org/docs/LUG11_<strong>ZFS</strong>_on_Linux_for_<strong>Lustre</strong>.pdf<br />

• http://www.opensfs.org/wpcontent/uploads/2011/11/LUG12_<strong>ZFS</strong>_<strong>Lustre</strong>_for_Sequoia.pdf<br />

• http://www.eofs.eu/fileadmin/lad2012/21_Andreas_Dilger_Intel_<strong>Lustre</strong>-<br />

<strong>ZFS</strong>-2.4_LAD12.pdf<br />

Daniel Kobras | <strong>Lustre</strong>/<strong>ZFS</strong> - <strong>Verteiltes</strong> <strong>Dateisystem</strong> <strong>auf</strong> <strong>neuen</strong> <strong>Sohlen</strong> | <strong>GUUG</strong> FFG 2013<br />

© 2013 science + computing ag


Vielen Dank für Ihre Aufmerksamkeit.<br />

Daniel Kobras<br />

science + computing ag<br />

www.science-computing.de<br />

Telefon 07071 9457-0<br />

info@science-computing.de

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!