aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--exp/Makefile2
-rwxr-xr-xexp/exp.sh9
-rw-r--r--pdf/assets/summary.daily.17.tex19
-rw-r--r--pdf/assets/summary.daily.5.tex7
-rw-r--r--pdf/assets/summary.weekly.17.tex19
-rw-r--r--pdf/doc.tex84
6 files changed, 102 insertions, 38 deletions
diff --git a/exp/Makefile b/exp/Makefile
index 673b1b0..70682f2 100644
--- a/exp/Makefile
+++ b/exp/Makefile
@@ -50,7 +50,7 @@ GITC := git -C $(REPO_PATH)
SPACE := $() $()
DNADIRS := $(DNA_4K) $(DNA_8K)
DNAEXPORT := $(DNADIRS:%=%_export)
-DATADIRS := $(DNADIRS) $(DNAEXPORT) $(DIFFS) $(NOPACK) $(BORG) $(TARGZ) $(REAL)
+DATADIRS := $(DNAEXPORT) $(DIFFS) $(NOPACK) $(BORG) $(TARGZ) $(REAL)
SIZEFILES := $(DATADIRS:%=%.size)
SUMMARY := summary.$(RANGE).$(MAX_VERSION)
diff --git a/exp/exp.sh b/exp/exp.sh
index 10d6cc8..8026304 100755
--- a/exp/exp.sh
+++ b/exp/exp.sh
@@ -56,6 +56,15 @@ then
# Init borg dir
borg init -e none $BORG
fi
+if [ -n "$DNA_PARAMS" ]
+then
+ # Clean dna backups for this version
+ while read name flags
+ do
+ rm -rf $name
+ done < $DNA_PARAMS
+fi
+
# "empty tree" commit
prev="4b825dc642cb6eb9a060e54bf8d69288fbee4904"
diff --git a/pdf/assets/summary.daily.17.tex b/pdf/assets/summary.daily.17.tex
new file mode 100644
index 0000000..17ba98a
--- /dev/null
+++ b/pdf/assets/summary.daily.17.tex
@@ -0,0 +1,19 @@
+46 080 540 & 46 021 380 & 47 011 621 & 63 237 214 & 47 582 831 & 201 468 483 \\
+8 160 & 13 260 & 2 625 & 88 673 & 47 581 355 & 201 464 200 \\
+6 453 540 & 8 091 660 & 3 270 798 & 26 668 800 & 48 698 909 & 205 998 038 \\
+205 020 & 108 120 & 496 & 24 840 & 48 699 087 & 205 998 035 \\
+214 200 & 121 380 & 1 475 & 318 054 & 48 699 763 & 205 998 379 \\
+255 000 & 162 180 & 3 271 631 & 107 650 & 47 591 733 & 201 464 426 \\
+393 720 & 358 020 & 99 337 & 2 758 950 & 47 582 211 & 201 412 617 \\
+67 320 & 78 540 & 127 793 & 561 940 & 47 578 053 & 201 407 077 \\
+155 040 & 75 480 & 19 221 & 10 035 & 47 594 809 & 201 459 655 \\
+286 620 & 205 020 & 250 581 & 1 203 017 & 47 721 093 & 202 024 780 \\
+39 780 & 38 760 & 19 555 & 550 478 & 47 726 206 & 202 033 937 \\
+159 120 & 80 580 & 203 & 45 564 & 47 726 209 & 202 033 922 \\
+182 580 & 115 260 & 12 419 & 284 765 & 47 727 829 & 202 049 528 \\
+13 260 & 14 280 & 5 823 & 76 009 & 47 731 771 & 202 057 683 \\
+23 460 & 28 560 & 13 370 & 528 744 & 47 735 296 & 202 070 421 \\
+27 540 & 33 660 & 10 837 & 374 954 & 47 736 886 & 202 070 084 \\
+68 340 & 81 600 & 69 707 & 498 919 & 47 770 410 & 202 207 821 \\
+\hline
+54 633 240 & 55 627 740 & 54 187 492 & 97 338 606 & 813 484 451 & 3 443 219 086 \\
diff --git a/pdf/assets/summary.daily.5.tex b/pdf/assets/summary.daily.5.tex
deleted file mode 100644
index 5ff7548..0000000
--- a/pdf/assets/summary.daily.5.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-22 377 & 19 333 & 13 260 & 12 240 & 10 147 & 14 601 & 10 739 & 147 538 \\
-2 374 & 3 138 & 3 060 & 4 080 & 1 768 & 2 573 & 11 304 & 149 715 \\
-2 116 & 2 747 & 3 060 & 4 080 & 867 & 2 681 & 11 611 & 150 955 \\
-3 012 & 2 917 & 4 080 & 4 080 & 869 & 2 359 & 12 111 & 152 087 \\
-5 210 & 5 430 & 5 100 & 6 120 & 4 373 & 6 020 & 14 192 & 165 312 \\
-\hline
-35 089 & 33 565 & 28 560 & 30 600 & 18 024 & 28 234 & 59 957 & 765 607 \\
diff --git a/pdf/assets/summary.weekly.17.tex b/pdf/assets/summary.weekly.17.tex
new file mode 100644
index 0000000..82a6567
--- /dev/null
+++ b/pdf/assets/summary.weekly.17.tex
@@ -0,0 +1,19 @@
+46 086 660 & 46 003 020 & 47 003 541 & 63 221 561 & 47 569 854 & 201 412 617 \\
+701 760 & 820 080 & 395 080 & 6 358 049 & 47 719 963 & 202 057 683 \\
+6 293 400 & 7 983 540 & 2 994 599 & 25 581 927 & 48 699 737 & 205 995 565 \\
+206 040 & 109 140 & 407 & 50 816 & 48 699 759 & 205 995 603 \\
+225 420 & 142 800 & 8 679 & 401 380 & 48 699 627 & 205 997 073 \\
+1 299 480 & 1 707 480 & 579 422 & 6 943 226 & 48 734 056 & 206 089 868 \\
+952 680 & 1 248 480 & 360 710 & 4 799 959 & 48 837 441 & 206 640 167 \\
+1 425 960 & 1 831 920 & 738 359 & 4 983 830 & 48 887 777 & 206 826 648 \\
+1 770 720 & 2 091 000 & 1 389 502 & 7 767 438 & 49 298 535 & 209 320 664 \\
+479 400 & 727 260 & 146 129 & 2 899 284 & 49 332 106 & 209 471 170 \\
+168 300 & 235 620 & 47 436 & 1 385 569 & 49 336 133 & 209 495 372 \\
+134 640 & 236 640 & 37 183 & 1 808 602 & 49 337 222 & 209 501 585 \\
+90 780 & 122 400 & 23 924 & 1 555 868 & 49 337 681 & 209 507 160 \\
+3 088 560 & 3 953 520 & 1 404 256 & 11 037 483 & 49 932 666 & 211 870 188 \\
+4 987 800 & 6 165 900 & 2 326 692 & 17 577 030 & 50 210 539 & 212 932 833 \\
+993 480 & 1 378 020 & 304 617 & 6 594 518 & 50 297 457 & 213 246 213 \\
+684 420 & 900 660 & 258 512 & 4 016 392 & 50 398 693 & 213 642 553 \\
+\hline
+69 589 500 & 75 657 480 & 58 019 048 & 166 982 932 & 835 329 246 & 3 540 002 962 \\
diff --git a/pdf/doc.tex b/pdf/doc.tex
index 058499d..74be025 100644
--- a/pdf/doc.tex
+++ b/pdf/doc.tex
@@ -629,25 +629,24 @@ Celui-ci ne sera pas synthétisé en \ac{adn},
car les données qu'il contient peuvent être recalculées à partir du contenu des chunks.
-\subsection{Ajouter une version au repo}
-
-Pour ajouter une nouvelle version, on fait un \emph{commit} dans le repo.
-Le repo doit être présent lorsque l'on veut faire un commit,
-car le pipeline de compression tire parti des données existantes.
-
-Au tout début du commit, avant l'application du pipeline de compression,
-DNA-Backup fait un listage des fichiers du dossier source.
-Les données de ces fichiers sont ensuite concaténées en un segment virtuel continu.
-De cette manière, si la taille d'un fichier n'est pas aligné sur la taille d'un chunk,
-les données du fichier suivant y seront ajoutées, au lieu d'avoir à le combler avec des bits de bourrage.
-Les métadonnées (chemin, taille, etc~\textellipsis) ne sont pas ajoutées dans ce segment.
-Elles sont stockées à part, car leur petite taille par rapport aux données nous offre lors d'une restauration
-la possibilité de rapidement les récupérer.
-En effet, les métadonnées nous permettent à elles seule d'obtenir une arborescence de dossiers et de fichiers que l'on peut parcourir.
-
\subsection{L'export vers le DNA-Drive}
-On imagine le \emph{DNA-Drive} comme un segment de \emph{pools} (Figure~\ref{fig:data-layout})
+Au lieu de voir le DNA-Drive comme une grille,
+on l'imagine comme une liste de \emph{pools} à une seule dimension (Figure~\ref{fig:data-layout}).
+De cette manière on peut répartir l'espace de stockage
+entre les deux principaux segments de données de DNA-Backup,
+les chunks et les métadonnées (recipe + files).
+Comme on peut le remarquer sur la Figure~\ref{tab:repo-data-distribution},
+les métadonnées ont une taille bien inférieure à celle de l'ensemble des chunks,
+en particulier lorsque les fichiers sont grands.
+Cependant, il n'est pas possible de savoir à l'avance exactement
+quelle proportion sera utilisée par les métadonnées,
+car leur taille peut varier en fonction d'un certain nombre de paramètres
+(type de fichiers sauvegardés, fréquence de sauvegarde, quantité et taille des fichiers, etc~\textellipsis).
+Pour garantir une utilisation maximale de l'espace disponible,
+on fait démarrer ces deux segments chacun à une extrémité du DNA-Drive
+et on les laisse grandir l'un vers l'autre,
+à la manière de la \emph{pile} et du \emph{tas} d'un processus.
\begin{figure}[ht]
\centering
@@ -678,10 +677,41 @@ On imagine le \emph{DNA-Drive} comme un segment de \emph{pools} (Figure~\ref{fig
\end{tikzpicture}
-\caption{Disposition des données}
+\caption{Disposition des données.}
\label{fig:data-layout}
\end{figure}
+Le tout premier pool du DNA-Dire (numéro 0) est réservé aux \emph{header} des versions
+et aux métadonnées globales du repo.
+
+Pour chaque version, il faut conserver la taille que chacun des trois segments
+(\verb|chunks|, \verb|recipe| et \verb|files|).
+De la même manière qu'il serait impossible de savoir
+à quel fichier appartient une donnée sans la liste de fichiers,
+il serait impossible sans ces informations, de savoir
+à quelle version et à quel segment de données appartient une track.
+
+En ce qui concerne les métadonnées du repo,
+un \emph{superblock} serait ajouté dans la toute première track du premier pool.
+Celui-ci contiendrait les valeurs des paramètres de DNA-Backup,
+à savoir principalement la taille des chunks, mais aussi les paramètres de la fonction de sketch,
+l'algorithme utilisé pour la compression utilisé, celui pour les deltas, etc~\textellipsis
+
+Le header d'une version ne comptant que trois valeurs numériques, il ne remplira jamais une track.
+Pour éviter de gâcher l'espace restant des tracks de version,
+DNA-Backup le remplit avec le contenu des segments de métadonnées (\verb|recipe| + \verb|files|)
+jusqu'à ce qu'il soit plein ou que toutes les métadonnées aient été écrites.
+S'il reste encore des métadonnées, elles sont écrites à l'endroit prévu initialement.
+
+L'export est actuellement réalisé dans un dossier, dans lequel 96~fichiers
+représentant chacun un pool sont créés et remplis avec les données du repo.
+Les écritures sont alignées sur la taille du track, laquelle est configurable.
+Le repo n'a pas réellement de connaissances de ces valeurs en dehors de l'export.
+DNA-Backup est donc en grande partie indépendant du DNA-Drive
+et pourrait être utilisé avec d'autres supports de stockages,
+ou même en utilisant uniquement le repo,
+à la manière d'un logiciel de sauvegardes incrémentales classique.
+
\subsection{Restaurer depuis le DNA-Drive}
@@ -1001,9 +1031,7 @@ Lecture de la zone correspondant à la dernière version \\
% TODO: use real data
\begin{table*}[ht]
\centering
-\begin{tabularx}{\textwidth}{RRRRRRRR}
-\textbf{Repo 4k} &
-\textbf{Repo 8k} &
+\begin{tabularx}{\textwidth}{@{}RRRRRR}
\textbf{DNA 4k} &
\textbf{DNA 8k} &
\textbf{Git diffs} &
@@ -1011,7 +1039,7 @@ Lecture de la zone correspondant à la dernière version \\
\textbf{Tar.gz} &
\textbf{Taille réelle} \\
\hline
-\input{assets/summary.daily.5.tex}
+\input{assets/summary.daily.17.tex}
\end{tabularx}
\caption{Commits journaliers}
\label{tab:commits-daily}
@@ -1020,9 +1048,7 @@ Lecture de la zone correspondant à la dernière version \\
% TODO: use real data
\begin{table*}[ht]
-\begin{tabularx}{\textwidth}{RRRRRRRR}
-\textbf{Repo 4k} &
-\textbf{Repo 8k} &
+\begin{tabularx}{\textwidth}{@{}RRRRRR}
\textbf{DNA 4k} &
\textbf{DNA 8k} &
\textbf{Git diffs} &
@@ -1030,7 +1056,7 @@ Lecture de la zone correspondant à la dernière version \\
\textbf{Tar.gz} &
\textbf{Taille réelle} \\
\hline
-\input{assets/summary.daily.5.tex}
+\input{assets/summary.weekly.17.tex}
\end{tabularx}
\caption{Commits hebdomadaires}
\label{tab:commits-weekly}
@@ -1039,9 +1065,7 @@ Lecture de la zone correspondant à la dernière version \\
% TODO: use real data
\begin{table*}[ht]
-\begin{tabularx}{\textwidth}{RRRRRRRR}
-\textbf{Repo 4k} &
-\textbf{Repo 8k} &
+\begin{tabularx}{\textwidth}{@{}RRRRRR}
\textbf{DNA 4k} &
\textbf{DNA 8k} &
\textbf{Git diffs} &
@@ -1049,7 +1073,7 @@ Lecture de la zone correspondant à la dernière version \\
\textbf{Tar.gz} &
\textbf{Taille réelle} \\
\hline
-\input{assets/summary.daily.5.tex}
+\input{assets/summary.daily.17.tex}
\end{tabularx}
\caption{Commits Mensuels}
\label{tab:commits-monthly}