From b9295a3d830fa8ec0da01c8f0250eac0e9196d59 Mon Sep 17 00:00:00 2001 From: pschoeps Date: Fri, 28 Mar 2014 21:41:05 +0100 Subject: [PATCH] ori funktion 0.7 und grafting 0.6 --- bericht/bilder/grafting.png | Bin 0 -> 58207 bytes bericht/ori/ori-function.tex | 32 ++++++++++++++++++++++++++++---- bericht/ori/ori-grafting.tex | 10 +++++++++- bericht/ori/ori-inst.tex | 2 +- bericht/ori/ori-ver.tex | 5 ++++- 5 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 bericht/bilder/grafting.png diff --git a/bericht/bilder/grafting.png b/bericht/bilder/grafting.png new file mode 100644 index 0000000000000000000000000000000000000000..709508b2b8bbde23a0e4546678e88ff0c1bb4217 GIT binary patch literal 58207 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 literal 0 HcmV?d00001 diff --git a/bericht/ori/ori-function.tex b/bericht/ori/ori-function.tex index 333aee1..99d4bdc 100644 --- a/bericht/ori/ori-function.tex +++ b/bericht/ori/ori-function.tex @@ -5,14 +5,14 @@ Wie aus dem Systemdiagramm ersichtlich ist, besteht Ori aus den Teilprogrammen \emph{ori}, \emph{orisync} und \emph{orifs}, die auf \emph{libori} aufgebaut sind. \begin{description} - \item[\emph{ori}] stellt die Schnittstelle zum Nutzer dar. Hier werden Repos erstellt, gelöscht und manuelle Operationen ausgeführt. Folgende Befehle sind implementiert: + \item[\emph{ori}] stellt die Schnittstelle zum Nutzer dar. Hier werden Repositorien erstellt, gelöscht und manuelle Operationen ausgeführt. Folgende Befehle sind implementiert: \begin{description} \item[\emph{newfs [name]}] erstellt ein neues Repo namens \emph{name}. \item[\emph{removefs [name]}] löscht das Repo \emph{name}. \item[\emph{list}] listet alle lokalen Repositorien auf. \item[\emph{status}] gibt eine Liste modifizierter Dateien aus. \item[\emph{diff}] zeigt alle Änderungen seit dem letzten Snapshot an. - \item[\emph{snapshot [description]}] erstellt einen Snapshot mit einer \emph{description}, die optional ist. Zugleich wird das Repo eingecheckt. + \item[\emph{snapshot [description]}] erstellt einen Snapshot mit einer optionalen \emph{description}. Zugleich wird das Repo eingecheckt. \item[\emph{purgesnapshot [commitid]}] löscht den Snapshot zu \emph{commitid} und gibt Speicher frei. \item[\emph{log}] zeigt die History des Repos an. \item[\emph{replicate [node:repo]}] repliziert das Repo \emph{repo} von Node \emph{node}. @@ -20,5 +20,29 @@ Wie aus dem Systemdiagramm ersichtlich ist, besteht Ori aus den Teilprogrammen \ \item[\emph{merge [commitid]}] vereinigt manuell das vorhandene Repo mit dem von \emph{commitid}. \item[\emph{checkout [commitid]}] checkt das Repo mit \emph{commitid} lokal aus. \end{description} - \item[\emph{orisync}] entdeckt andere Kopien eines Repos und synchronisiert diese automatisch. -\end{description} \ No newline at end of file + \item[\emph{orisync}] entdeckt andere Kopien eines Repos und synchronisiert diese automatisch. + \begin{description} + \item[\emph{init}] startet die interaktive Konfiguration von \emph{orisync}, in der ein neues Cluster erstellt oder der genutzte Node einem bestehendem Cluster hinzugefügt werden kann. + \item[\emph{add [repo]}] fügt \emph{repo} zu den verwaltenden Repositorien hinzu. + \item[\emph{remove [repo]}] entfernt \emph{repo} aus der automatischen Synchronisation. + \item[\emph{list}] listet alle Repositorien auf, die \emph{orisync} verwaltet. + \item[\emph{hostadd [host]}] fügt einen statischen Host \emph{host} hinzu. + \item[\emph{hostremove [host]}] entfernt den Host \emph{host}. + \item[\emph{hosts}] listet alle eingetragenen Hosts auf. + \end{description} + \item[orifs] nutzt \emph{libFUSE}, um Repositorien als FUSE-Dateisysteme einzubinden. + \begin{description} + \item[\emph{[OPTIONS] mountpoint}] bindet ein Repo in \emph{mountpoint} ein. Das Verzeichnis \emph{mountpoint} muss vorhanden sein. \emph{OPTIONS} sind u.a.: + \begin{description} + \item[\emph{--repo=[REPO PATH]}] für abweichenden Pfad zum Repo \emph{REPO PATH} + \item[\emph{--shallow}] erzeugt Kopie mit Hintergrundtransfer + \item[\emph{--nocache}] erzeugt Kopie ohne Caching + \item[\emph{--journal-none}] deaktiviert das Wiederherstellungs-Journal + \item[\emph{--journal-async}] für asynchrones Wiederherstellungs-Journal + \item[\emph{--journal-sync}] für synchrones Wiederherstellungs-Journal + \end{description} + \end{description} + \item[\emph{libori}] verwaltet die Repositorien bestehend aus Index, Objekt-Speicher und Objekt-Metadaten. Die Repositorien werden lokal unter \emph{.ori} im Home-Verzeichnis gespeichert. +\end{description} + +\pagebreak \ No newline at end of file diff --git a/bericht/ori/ori-grafting.tex b/bericht/ori/ori-grafting.tex index 7337f7d..6ee92e9 100644 --- a/bericht/ori/ori-grafting.tex +++ b/bericht/ori/ori-grafting.tex @@ -1 +1,9 @@ -\subsubsection{Grafting} \ No newline at end of file +\subsubsection{Grafting} + +\hfill \includegraphics[scale=0.55]{bilder/grafting.png} \hspace*{\fill} + +Die aus der Abhandlung \href{http://sigops.org/sosp/sosp13/papers/p151-mashtizadeh.pdf}{Replication, History, and Grafting in the Ori File System} von Entwicklern der Standford University stammende Grafik >>Figure 1<< zeigt eine bespielhafte Nutzung von Ori. Das Dateisystem eines Nutzers wurde über mehrere Geräte repliziert. Ein Freund des Nutzers hat mit Hilfe des Grafting eines der Verzeichnisse des Nutzers in sein eigenes Dateisystem übertragen. Änderungen an den übertragenen Dateien können später manuell synchronisiert werden. \\ + +Wenn ein Verzeichnis Q als Verzeichnis Z in das Ziel-Dateisystem übertragen wird, wird dort ein spezieller Commit-Eintrag erstellt. Dieser enthält zusätzlich zu einem normalen Eintrag die UUID des Quell-Dateisystems \emph{graft-fsid}, den Quell-Pfadnamen \emph{graft-path}, einen Hash des Original-Commits aus dem Quell-Dateisystem \emph{graft-commit} und den Ziel-Pfadnamen \emph{graft-target}. + +\pagebreak \ No newline at end of file diff --git a/bericht/ori/ori-inst.tex b/bericht/ori/ori-inst.tex index ec609fa..c0f8eb6 100644 --- a/bericht/ori/ori-inst.tex +++ b/bericht/ori/ori-inst.tex @@ -2,7 +2,7 @@ \paragraph{Vorbereitungen} -Da Ori seine Configs und Repos unter \emph{.ori} im Home-Verzeichnis des jeweiligen Nutzers ablegt und dieses auf allen Nodes eingebunden wird, würden zwangsweise Fehler auftreten. Deshalb wurde auf allen Computenodes eine neue Partition erstellt und unter \emph{/ori} gemounted. Mit \emph{useradd ori} wurde ein neuer User ori angelegt, dem mit \emph{chown /ori/home ori:ori} und \emph{usermod --home /ori/home ori} das Home-Verzeichnis \emph{/ori/home} zugeteilt wurde. Mit \emph{ssh-keygen} wurden auf Computenode 1 die ssh-Schlüssel erstellt und anschließend auf die anderen Computenodes übertragen. Desweiteren wurde der Public-Key in die \emph{authorized\_keys} eingetragen. Mit diesen Arbeitsschritten war nun ein passwortloser Zugriff für den Nutzer ori auf die einzelnen Coputenodes gewährleistet. +Da Ori seine Configs und Repositorien unter \emph{.ori} im Home-Verzeichnis des jeweiligen Nutzers ablegt und dieses auf allen Nodes eingebunden wird, würden zwangsweise Fehler auftreten. Deshalb wurde auf allen Computenodes eine neue Partition erstellt und unter \emph{/ori} gemounted. Mit \emph{useradd ori} wurde ein neuer User ori angelegt, dem mit \emph{chown /ori/home ori:ori} und \emph{usermod --home /ori/home ori} das Home-Verzeichnis \emph{/ori/home} zugeteilt wurde. Mit \emph{ssh-keygen} wurden auf Computenode 1 die ssh-Schlüssel erstellt und anschließend auf die anderen Computenodes übertragen. Desweiteren wurde der Public-Key in die \emph{authorized\_keys} eingetragen. Mit diesen Arbeitsschritten war nun ein passwortloser Zugriff für den Nutzer ori auf die einzelnen Coputenodes gewährleistet. \paragraph{Installation} diff --git a/bericht/ori/ori-ver.tex b/bericht/ori/ori-ver.tex index 05c157c..a580445 100644 --- a/bericht/ori/ori-ver.tex +++ b/bericht/ori/ori-ver.tex @@ -4,4 +4,7 @@ \paragraph{GlusterFS} -\paragraph{Git} \ No newline at end of file +\paragraph{Git} + + +\pagebreak \ No newline at end of file