Ziel Realisierungen Coda Ideen Fazit Literatur peer-to-peer Dateisystem Synchronisation Studiendepartment Informatik Hochschule für Angewandte Wissenschaften Hamburg 30. November 2007
Ziel Realisierungen Coda Ideen Fazit Literatur Inhalt 1 Ziel 2 Realisierungen 3 Coda Ziele Eigenschaften 4 Ideen Übersicht Integration Dateisystem 5 Fazit
Ziel Realisierungen Coda Ideen Fazit Literatur Synchronisation von Verzeichnissen Abbildung: Synchronisation von /downloads
Ziel Realisierungen Coda Ideen Fazit Literatur Was ist das Ziel? Synchronisation ausgewählter Dateien zwischen mehreren Rechnern möglichst ohne Aufwand (Administration, Konfiguration,... ) einfaches Einbinden/Entfernen eines Rechners Alle ausgewählten Dateien sind in der aktuellen Version auf allen beteiligten Rechnern verfügbar.
Ziel Realisierungen Coda Ideen Fazit Literatur Was gibt es schon? rsync [6] unison [10] Subversion [8] CVS [2]... Synchronisation erfordert manuelle Ausführung der Programme.
Ziel Realisierungen Coda Ideen Fazit Literatur Ziele Eigenschaften Was ist Coda? verteiltes, skalierbares Dateisystem Weiterarbeiten trotz Netzwerkproblemen möglich Unterstützung mobiler Rechner Performance durch client-seitiges Caching Abbildung: Coda [5] Architektur
Ziel Realisierungen Coda Ideen Fazit Literatur Ziele Eigenschaften Zugriff auf Coda Server Abbildung: Zugriff auf Coda Server
Ziel Realisierungen Coda Ideen Fazit Literatur Ziele Eigenschaften Eigenschaften von Coda I strikte Trennung zwischen Client und Server dedizierter Server notwendig ungünstig bei sehr wenigen Clients Server ermöglicht keinen direkten Zugriff auf die Dateien erhöhter Administrationsaufwand (Server, Client, Benutzerverwaltung,... ) nicht für jeden Anwendungsfall sinnvoll Dateien nur vom Client aus erreichbar
Ziel Realisierungen Coda Ideen Fazit Literatur Ziele Eigenschaften Eigenschaften von Coda II Zugriff auf Dateien immer über einheitlichen Namensraum (z.b. /coda/ambient.local) sowohl online als auch offline Serverausfall bemerkt der Benutzer eventuell nicht Reintegration der Änderungen automatisch im Hintergrund lokaler client-seitiger Cache mit kompletten Dateien Änderungen werden propagiert konfigurierbare Konfliktlösungsstrategie Zugriff auf die Dateien funktioniert, auch ohne erreichbaren Server.
Ziel Realisierungen Coda Ideen Fazit Literatur Übersicht Integration Dateisystem Ideen Wie soll das Ganze aussehen? bestimmte Verzeichnisse synchronisieren normaler Zugriff auf Dateien erzeugen löschen umbenennen... Änderungen werden mit allen Teilnehmern synchronisiert Jedes Programm soll direkt Zugriff auf die synchronisierten Dateien haben.
Ziel Realisierungen Coda Ideen Fazit Literatur Übersicht Integration Dateisystem Anforderungen? Teilnehmer möglichst einfach zu verwalten kein dedizierter Server notwendig keine Benutzerverwaltung notwendig Synchronisation bei Bedarf beteiligte Rechner bekannt keine Administrationsrechte notwendig Dateien nicht explizit zur Synchronisation markieren Einsatz auch auf fremden Rechnern, z.b. HAW Server
Ziel Realisierungen Coda Ideen Fazit Literatur Übersicht Integration Dateisystem Was kann von anderen Projekten genutzt werden? FUSE Implementation eines Dateisystems als Benutzerprozess Coda Client Architektur Zugriff via Dateisystem Benutzerprozess zur Kommunikation mit Teilnehmern lokaler Cache mit replizierten Dateien Modify-Log je Datei BitTorrent [1] optimiert auf das Übertragen ganzer Dateien SSH sichere Übertragung (Authentifizierung und Verschlüsselung)
Ziel Realisierungen Coda Ideen Fazit Literatur Übersicht Integration Dateisystem FUSE Architektur Abbildung: FUSE [3] Architektur
Ziel Realisierungen Coda Ideen Fazit Literatur Übersicht Integration Dateisystem Was ist FUSE? Beispiel Dateisystem als Benutzerprozess jeder Benutzer kann es nutzen (mounten) Betriebssystem muss FUSE unterstützen Linux FreeBSD MacOS X SSHFS [9] bindet Verzeichnisse entfernter Rechner ein und verwendet SSH [7] als Transport.
Ziel Realisierungen Coda Ideen Fazit Literatur Übersicht Integration Dateisystem Warum ein Dateisystem? Nutzung durch jedes Programm möglich automatische Synchronisation ( jeden Zugriff überwachen) Protokollieren der Dateisystem-Operationen wiederholtes Ausführen der Operationen bei Peers vollständige Versionierung möglich neue Dateien als Ganzes übertragen (z.b. via BitTorrent, rsync,... ) Ausführung als Benutzerprozess Einbinden durch Benutzer (ohne Administrationsrechte)
Ziel Realisierungen Coda Ideen Fazit Literatur Übersicht Integration Dateisystem Wie werden die Peers gefunden? statische Liste keine Berücksichtigung wechselnder Umgebung dynamische Liste DNS oder ZeroConf [4] Selbstverwaltung der Peers (z.b. DHT 1 ) 1 Distributed Hash Table
Ziel Realisierungen Coda Ideen Fazit Literatur Implementation realisierbar? Eine Implementation ist realisierbar, wenn Dateisystem-Operationen bei anderen Peers wiederholbar sind, die Kommunikation zwischen dem Dateisystem und dem Kommunikationsprozess funktioniert und wenn die Synchronisation der Peers wie skizziert funktioniert.
Ziel Realisierungen Coda Ideen Fazit Literatur Literatur I BitTorrent.org. BitTorrent. [letzter Zugriff: 29. November 2007]. Free Software Foundation. Concurrent Versioning System. [letzter Zugriff: 27. Juli 2007]. FUSE Developers. FUSE - Filesystem in Userspace. [letzter Zugriff: 27. Juli 2007]. IETF ZeroConf Working Group. ZeroConf. [letzter Zugriff: 29. November 2007].
Ziel Realisierungen Coda Ideen Fazit Literatur Literatur II M. Satyanarayanan and Carnegie Mellon University Students. Coda. [letzter Zugriff: 27. Juli 2007]. P. Mackeras, A. Tridgell, and W. Davison. rsync. [letzter Zugriff: 27. Juli 2007]. OpenBSD. OpenSSH. [letzter Zugriff: 27. Juli 2007]. Subversion Development Team. Subversion. [letzter Zugriff: 27. Juli 2007].
Ziel Realisierungen Coda Ideen Fazit Literatur Literatur III M. Szeredi. SSHFS. [letzter Zugriff: 27. November 2007]. unison Development Team. unison. [letzter Zugriff: 27. Juli 2007].