Remove N chains stuff from section 13 for clarity
This commit is contained in:
parent
b1bcefac4b
commit
424a64aeb6
1 changed files with 28 additions and 21 deletions
|
@ -23,8 +23,8 @@
|
||||||
\copyrightdata{978-1-nnnn-nnnn-n/yy/mm}
|
\copyrightdata{978-1-nnnn-nnnn-n/yy/mm}
|
||||||
\doi{nnnnnnn.nnnnnnn}
|
\doi{nnnnnnn.nnnnnnn}
|
||||||
|
|
||||||
\titlebanner{Draft \#0.9, May 2014}
|
\titlebanner{Draft \#0.91, June 2014}
|
||||||
\preprintfooter{Draft \#0.9, May 2014}
|
\preprintfooter{Draft \#0.91, June 2014}
|
||||||
|
|
||||||
\title{Chain Replication metadata management in Machi, an immutable
|
\title{Chain Replication metadata management in Machi, an immutable
|
||||||
file store}
|
file store}
|
||||||
|
@ -1453,22 +1453,19 @@ $
|
||||||
\underbrace{T_1}_\textbf{Tail \#1}}^\textbf{Chain \#1 (U.P.~Invariant preserving)}
|
\underbrace{T_1}_\textbf{Tail \#1}}^\textbf{Chain \#1 (U.P.~Invariant preserving)}
|
||||||
\mid
|
\mid
|
||||||
\overbrace{H_2, M_{21},\ldots,
|
\overbrace{H_2, M_{21},\ldots,
|
||||||
\underbrace{T_2}_\textbf{Tail \#2}}^\textbf{Chain \#2 (repairing)}
|
\underbrace{T_2}_\textbf{Tail \#2 \& Tail of Tails ($T_{tails}$)}}^\textbf{Chain \#2 (repairing)}
|
||||||
\mid \ldots \mid
|
|
||||||
\overbrace{H_n, M_{n1},\ldots,
|
|
||||||
\underbrace{T_n}_\textbf{Tail \#n \& Tail of Tails ($T_{tails}$)}}^\textbf{Chain \#n (repairing)}
|
|
||||||
]
|
]
|
||||||
$
|
$
|
||||||
\caption{A general representation of a ``chain of chains'': a chain prefix of
|
\caption{A general representation of a ``chain of chains'': a chain prefix of
|
||||||
Update Propagation Invariant preserving FLUs (``Chain \#1'')
|
Update Propagation Invariant preserving FLUs (``Chain \#1'')
|
||||||
with FLUs from an arbitrary $n-1$ other chains under repair.}
|
with FLUs under repair (``Chain \#2'').}
|
||||||
\label{fig:repair-chain-of-chains}
|
\label{fig:repair-chain-of-chains}
|
||||||
\end{figure*}
|
\end{figure*}
|
||||||
|
|
||||||
Both situations can cause data loss if handled incorrectly.
|
Both situations can cause data loss if handled incorrectly.
|
||||||
If a violation of the Update Propagation Invariant (see end of
|
If a violation of the Update Propagation Invariant (see end of
|
||||||
Section~\ref{sec:cr-proof}) is permitted, then the strong consistency
|
Section~\ref{sec:cr-proof}) is permitted, then the strong consistency
|
||||||
guarantee of Chain Replication is violated. Machi uses
|
guarantee of Chain Replication can be violated. Machi uses
|
||||||
write-once registers, so the number of possible strong consistency
|
write-once registers, so the number of possible strong consistency
|
||||||
violations is smaller than Chain Replication of mutable registers.
|
violations is smaller than Chain Replication of mutable registers.
|
||||||
However, even when using write-once registers,
|
However, even when using write-once registers,
|
||||||
|
@ -1509,10 +1506,9 @@ as the foundation for Machi's data loss prevention techniques.
|
||||||
\centering
|
\centering
|
||||||
$
|
$
|
||||||
[\overbrace{\underbrace{H_1}_\textbf{Head}, M_{11}, T_1,
|
[\overbrace{\underbrace{H_1}_\textbf{Head}, M_{11}, T_1,
|
||||||
H_2, M_{21}, T_2,
|
H_2, M_{21},
|
||||||
\ldots
|
\ldots
|
||||||
H_n, M_{n1},
|
\underbrace{T_2}_\textbf{Tail}}^\textbf{Chain (U.P.~Invariant preserving)}
|
||||||
\underbrace{T_n}_\textbf{Tail}}^\textbf{Chain (U.P.~Invariant preserving)}
|
|
||||||
]
|
]
|
||||||
$
|
$
|
||||||
\caption{Representation of Figure~\ref{fig:repair-chain-of-chains}
|
\caption{Representation of Figure~\ref{fig:repair-chain-of-chains}
|
||||||
|
@ -1523,7 +1519,7 @@ $
|
||||||
|
|
||||||
Machi's repair process must preserve the Update Propagation
|
Machi's repair process must preserve the Update Propagation
|
||||||
Invariant. To avoid data races with data copying from
|
Invariant. To avoid data races with data copying from
|
||||||
``U.P.~Invariant preserving'' servers (i.e. fully repaired with
|
``U.P.~Invariant-preserving'' servers (i.e. fully repaired with
|
||||||
respect to the Update Propagation Invariant)
|
respect to the Update Propagation Invariant)
|
||||||
to servers of unreliable/unknown state, a
|
to servers of unreliable/unknown state, a
|
||||||
projection like the one shown in
|
projection like the one shown in
|
||||||
|
@ -1533,7 +1529,7 @@ projection of this type.
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
||||||
\item The system maintains the distinction between ``U.P.~preserving''
|
\item The system maintains the distinction between ``U.P.~Invariant-preserving''
|
||||||
and ``repairing'' FLUs at all times. This allows the system to
|
and ``repairing'' FLUs at all times. This allows the system to
|
||||||
track exactly which servers are known to preserve the Update
|
track exactly which servers are known to preserve the Update
|
||||||
Propagation Invariant and which servers do not.
|
Propagation Invariant and which servers do not.
|
||||||
|
@ -1546,6 +1542,9 @@ projection of this type.
|
||||||
to the ``tail of tails''. This rule also includes any
|
to the ``tail of tails''. This rule also includes any
|
||||||
repair operations.
|
repair operations.
|
||||||
|
|
||||||
|
\item All read operations that require strong consistency are directed
|
||||||
|
to Tail \#1, as usual.
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
While normal operations are performed by the cluster, a file
|
While normal operations are performed by the cluster, a file
|
||||||
|
@ -1558,7 +1557,7 @@ mode of the system.
|
||||||
In cases where the cluster is operating in CP Mode,
|
In cases where the cluster is operating in CP Mode,
|
||||||
CORFU's repair method of ``just copy it all'' (from source FLU to repairing
|
CORFU's repair method of ``just copy it all'' (from source FLU to repairing
|
||||||
FLU) is correct, {\em except} for the small problem pointed out in
|
FLU) is correct, {\em except} for the small problem pointed out in
|
||||||
Section~\ref{sub:repair-divergence}. The problem for Machi is one of
|
Appendix~\ref{sub:repair-divergence}. The problem for Machi is one of
|
||||||
time \& space. Machi wishes to avoid transferring data that is
|
time \& space. Machi wishes to avoid transferring data that is
|
||||||
already correct on the repairing nodes. If a Machi node is storing
|
already correct on the repairing nodes. If a Machi node is storing
|
||||||
170~TBytes of data, we really do not wish to use 170~TBytes of bandwidth
|
170~TBytes of data, we really do not wish to use 170~TBytes of bandwidth
|
||||||
|
@ -1588,10 +1587,9 @@ algorithm proposed is:
|
||||||
|
|
||||||
\item For chain \#1 members, i.e., the
|
\item For chain \#1 members, i.e., the
|
||||||
leftmost chain relative to Figure~\ref{fig:repair-chain-of-chains},
|
leftmost chain relative to Figure~\ref{fig:repair-chain-of-chains},
|
||||||
repair files byte ranges for any chain \#1 members that are not members
|
repair all file byte ranges for any chain \#1 members that are not members
|
||||||
of the {\tt FLU\_List} set. This will repair any partial
|
of the {\tt FLU\_List} set. This will repair any partial
|
||||||
writes to chain \#1 that were unsuccessful (e.g., client crashed).
|
writes to chain \#1 that were interrupted, e.g., by a client crash.
|
||||||
(Note however that this step only repairs FLUs in chain \#1.)
|
|
||||||
|
|
||||||
\item For all file byte ranges $B$ in all files on all FLUs in all repairing
|
\item For all file byte ranges $B$ in all files on all FLUs in all repairing
|
||||||
chains where Tail \#1's value is written, send repair data $B$
|
chains where Tail \#1's value is written, send repair data $B$
|
||||||
|
@ -1689,10 +1687,19 @@ paper.
|
||||||
\section{Acknowledgements}
|
\section{Acknowledgements}
|
||||||
|
|
||||||
We wish to thank everyone who has read and/or reviewed this document
|
We wish to thank everyone who has read and/or reviewed this document
|
||||||
in its really-terrible early drafts and have helped improve it
|
in its really terrible early drafts and have helped improve it
|
||||||
immensely: Justin Sheehy, Kota Uenishi, Shunichi Shinohara, Andrew
|
immensely:
|
||||||
Stone, Jon Meredith, Chris Meiklejohn, John Daily, Mark Allen, and Zeeshan
|
Mark Allen,
|
||||||
Lakhani.
|
John Daily,
|
||||||
|
Zeeshan Lakhani,
|
||||||
|
Chris Meiklejohn,
|
||||||
|
Jon Meredith,
|
||||||
|
Mark Raugas,
|
||||||
|
Justin Sheehy,
|
||||||
|
Shunichi Shinohara,
|
||||||
|
Andrew Stone,
|
||||||
|
and
|
||||||
|
Kota Uenishi.
|
||||||
|
|
||||||
\bibliographystyle{abbrvnat}
|
\bibliographystyle{abbrvnat}
|
||||||
\begin{thebibliography}{}
|
\begin{thebibliography}{}
|
||||||
|
|
Loading…
Reference in a new issue