Lustre/ZFS Verteiltes Dateisystem auf neuen Sohlen - GUUG
Lustre/ZFS Verteiltes Dateisystem auf neuen Sohlen - GUUG
Lustre/ZFS Verteiltes Dateisystem auf neuen Sohlen - GUUG
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