1 |
On Fri, Jan 17, 2014 at 8:27 AM, Michał Górny <mgorny@g.o> wrote: |
2 |
|
3 |
> Hello, all. |
4 |
> |
5 |
> I'm using squashfs to hold my Gentoo repositories on all of my systems |
6 |
> for some time. As you probably know, this allows me to save space while |
7 |
> keeping portage fast. However, it makes updating the tree quite |
8 |
> burdensome and time-consuming. |
9 |
> |
10 |
> We're already hosting daily gx86 tarballs on our mirrors, and deltas |
11 |
> made using diffball. Those can be used with Zac's emerge-delta-webrsync |
12 |
> to get daily updates done with minimal network overhead. Sadly, it |
13 |
> takes the whole process even more time consuming :). |
14 |
> |
15 |
> Therefore, I'd like to suggest an alternative solution that could help |
16 |
> out Gentoo users that use squashfs for gx86 and would like to be able |
17 |
> to get daily updates fast and easy. |
18 |
> |
19 |
> The idea is to host -- along with the tarballs -- daily squashfs images |
20 |
> of gx86 in a chosen format. Additionally, the images would come with |
21 |
> deltas made using xdelta3 or a similar tool. Those deltas -- with |
22 |
> a slight download overhead -- would allow very fast updates |
23 |
> of the squashfs. |
24 |
> |
25 |
> Now some numbers. I did some tests 'converting' late gx86 daily |
26 |
> tarballs to squashfs. I've used squashfs 4.2 with LZO compression |
27 |
> since it's quite good and very fast. |
28 |
> |
29 |
> 96M portage-20140108.sqfs |
30 |
> 96M portage-20140109.sqfs |
31 |
> 96M portage-20140110.sqfs |
32 |
> 96M portage-20140111.sqfs |
33 |
> 96M portage-20140112.sqfs |
34 |
> 96M portage-20140113.sqfs |
35 |
> 97M portage-20140114.sqfs |
36 |
> 97M portage-20140115.sqfs |
37 |
> |
38 |
> For deltas, I've used xdelta3 with max compression (-9) and djw |
39 |
> secondary compression (it gave ~0.1M smaller files than fgk |
40 |
> and ~0.5M gain than with no secondary compression). |
41 |
> |
42 |
> 4,9M portage-20140108.sqfs-portage-20140109.sqfs.vcdiff.djw |
43 |
> 6,3M portage-20140109.sqfs-portage-20140110.sqfs.vcdiff.djw |
44 |
> 5,6M portage-20140110.sqfs-portage-20140111.sqfs.vcdiff.djw |
45 |
> 8,9M portage-20140111.sqfs-portage-20140112.sqfs.vcdiff.djw |
46 |
> 6,3M portage-20140112.sqfs-portage-20140113.sqfs.vcdiff.djw |
47 |
> 7,8M portage-20140113.sqfs-portage-20140114.sqfs.vcdiff.djw |
48 |
> 8,5M portage-20140114.sqfs-portage-20140115.sqfs.vcdiff.djw |
49 |
> |
50 |
> As you can see, the deltas are quite large compared to the actual |
51 |
> changes. However, we could have expected that since we're diffing |
52 |
> a compressed filesystem. What's important, however, is that applying |
53 |
> it takes ~2.5 second on my 2 GHz Athlon64. |
54 |
> |
55 |
|
56 |
It wasn't clear to me, are these trees with metadata included? |
57 |
|
58 |
-A |
59 |
|
60 |
|
61 |
> |
62 |
> So, even with the extra download time, the update is much faster |
63 |
> than recreating the squashfs. And unlike some types of unionfs, |
64 |
> it doesn't come with extra runtime slowdown. |
65 |
> |
66 |
> What do you think? |
67 |
> |
68 |
> -- |
69 |
> Best regards, |
70 |
> Michał Górny |
71 |
> |