ostree/fedora atomic and impact on the mirror network

Colin Walters walters at verbum.org
Tue Mar 11 14:00:21 UTC 2014


On Tue, Mar 11, 2014 at 9:34 AM, Martin Langhoff 
<martin.langhoff at gmail.com> wrote:
> 
> Ouch -- so updates fetch EVERY file regardless of whether it has
> changed between the snapshot installed and the target snapshot? That
> is kind of bad.
> 

No.  Clients only fetch objects they don't have.

> Are you aware of the work done on OLPC's os-builder, which used rsync
> "informed" by a per-snapshot metatada file?
> 

I'd definitely looked at older versions of olpc-update, but not at the 
latest.

Bottom line though is that while rsync is a very good general purpose 
tool (for ad-hoc sync between two machines in particular), it spends 
CPU and I/O time on both client and server in order to attempt to 
minimize network bandwidth.  This is not good for the "pool of servers 
replicating to many clients" case.

Now rsync's "batch mode" allows precomputing on the server once, which 
helps a lot - and it starts to get closer to where I'm going with 
OSTree static deltas.  The main difference then is that OSTree static 
deltas are much more flexible - the rsync style "rolling checksum" is 
only one of several possible algorithms.

The OSTree static delta design was inspired by the network protocol 
part of:
http://www.chromium.org/chromium-os/chromiumos-design-docs/autoupdate-details

There are other details too, like the fact that static deltas are 
chunked to say 16MB, so an interrupted client won't have to re-download 
more than one chunk.  They also reuse the integrated GPG verification 
in OSTree, etc.

> In our experience, the problem we had was network latency. On a local
> network, a small OS image, and with rsync client sending requests
> speculatively a bit ahead of receiving the response to its prev
> request... the lag for clients updating was horrible.
> 

The main latency with OSTree comes from metadata fetches.

> How long does an update of a full Fedora 
> 

You'd have to define "full Fedora" =)  And furthermore what you're 
updating from and to.

> (Is there a good overview I should be reading?)
> 

There's not a good overview of this particular level.  But once you 
understand that OSTree is like git, with commits, trees, and content 
objects, and that in the "archive" mode they're just stored as 
individual zlib-compressed files, the rest of the design kind of 
follows from there.

Two recent blog posts are:
http://samthursfield.wordpress.com/2014/01/08/os-level-version-control/
http://samthursfield.wordpress.com/2014/01/16/the-fundamentals-of-ostree/

I also have several here:
http://blog.verbum.org/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.fedoraproject.org/pipermail/devel/attachments/20140311/24b09883/attachment.html>


More information about the devel mailing list