## Atomic transitions between parallel-installable read-only filesystem trees

Another deeply fundamental difference between both package managers and image-based replication is that OSTree is designed to parallel-install multiple versions of multiple independent operating systems. OSTree relies on a new toplevel `ostree` directory; it can in fact parallel install inside an existing OS or distribution occupying the physical `/` root.

On each client machine, there is an OSTree repository stored in `/ostree/repo`, and a set of "deployments" stored in `/ostree/deploy/`OSNAME`/`CHECKSUM``. Each deployment is primarily composed of a set of hardlinks into the repository. This means each version is deduplicated; an upgrade process only costs disk space proportional to the new files, plus some constant overhead.

The model OSTree emphasizes is that the OS read-only content is kept in the classic Unix `/usr`; it comes with code to create a Linux read-only bind mount to prevent inadvertent corruption. There is exactly one `/var` writable directory shared between each deployment for a given OS. The OSTree core code does not touch content in this directory; it is up to the code in each operating system for how to manage and upgrade state.

Finally, each deployment has its own writable copy of the configuration store `/etc`. On upgrade, OSTree will perform a basic 3-way diff, and apply any local changes to the new copy, while leaving the old untouched.