ori funktion 0.7 und grafting 0.6

This commit is contained in:
stoepsel93@higgsboson.tk 2014-03-28 21:41:05 +01:00
parent f22ca9ba3c
commit b9295a3d83
5 changed files with 42 additions and 7 deletions

BIN
bericht/bilder/grafting.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -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}
\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

View File

@ -1 +1,9 @@
\subsubsection{Grafting}
\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

View File

@ -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}

View File

@ -4,4 +4,7 @@
\paragraph{GlusterFS}
\paragraph{Git}
\paragraph{Git}
\pagebreak