2016-12-12 02:32:07 -05:00
|
|
|
---
|
2021-03-13 13:06:18 -05:00
|
|
|
lang: en
|
2016-12-12 02:32:07 -05:00
|
|
|
layout: doc
|
2021-06-16 22:56:25 -04:00
|
|
|
permalink: /doc/storage-pools/
|
2021-03-13 13:06:18 -05:00
|
|
|
ref: 57
|
2021-07-08 21:06:41 -04:00
|
|
|
title: Storage pools
|
2016-12-12 02:32:07 -05:00
|
|
|
---
|
|
|
|
|
2017-05-12 01:58:22 -04:00
|
|
|
Qubes OS R3.2 introduced the concept of storage drivers and pools. This feature
|
2016-12-12 02:32:07 -05:00
|
|
|
was a first step towards a saner storage API, which is heavily rewritten in R4.
|
2019-01-29 01:00:16 -05:00
|
|
|
See [here](https://dev.qubes-os.org/projects/core-admin/en/latest/qubes-storage.html)
|
|
|
|
for documentation on storage pools in R4.
|
|
|
|
|
2016-12-12 02:32:07 -05:00
|
|
|
A storage driver provides a way to store VM images in a Qubes OS system.
|
|
|
|
Currently, the default driver is `xen` which is the default way of storing
|
|
|
|
volume images as files in a directory tree like `/var/lib/qubes/`.
|
|
|
|
|
2017-05-12 01:58:22 -04:00
|
|
|
A storage pool driver can be identified either by the driver name with the
|
2016-12-12 02:32:07 -05:00
|
|
|
`driver` key or by the class name like this:
|
|
|
|
`class=qubes.storage.xen.XenStorage`. Because R3.2 doesn't use Python
|
|
|
|
`setup_hooks`, to actually use a short driver name for a custom storage driver,
|
|
|
|
you have to patch `qubes-core-admin`. You can use the `class` config key
|
|
|
|
instead, when your class is accessible by `import` in Python.
|
|
|
|
|
2017-05-12 01:58:22 -04:00
|
|
|
A pool (in R3.2) is configuration information which can be referenced when
|
2016-12-12 02:32:07 -05:00
|
|
|
creating a new VM. Each pool is saved in `storage.conf`. It has a name, a
|
|
|
|
storage driver and some driver specific configuration attached.
|
|
|
|
|
2017-05-12 01:58:22 -04:00
|
|
|
When installed, the system has, as you can see from the contents of
|
2016-12-12 02:32:07 -05:00
|
|
|
`/etc/qubes/storage.conf`, a pool named `default`. It uses the driver `xen`. The
|
|
|
|
default pool is special in R3.2. It will add `dir_path=/var/lib/qubes`
|
|
|
|
configuration value from `defaults[pool_config]`, if not overwritten.
|
|
|
|
|
|
|
|
Currently the only supported driver out of the box is `xen`. The benefit of
|
2017-05-12 01:58:22 -04:00
|
|
|
pools (besides that you can write your own storage driver e.g. for Btrfs) in R3.2
|
2016-12-12 02:32:07 -05:00
|
|
|
is that you can store your domains in multiple places.
|
|
|
|
|
|
|
|
You can add a pool to `storage.conf` like this:
|
|
|
|
|
|
|
|
```
|
|
|
|
[foo]
|
|
|
|
driver=xen
|
|
|
|
dir_path=/opt/qubes-vm
|
|
|
|
```
|
|
|
|
|
2017-05-12 01:58:22 -04:00
|
|
|
Now, when creating a new VM on the command-line, you may pass the `-Pfoo`
|
2016-12-12 02:32:07 -05:00
|
|
|
argument to `qvm-create` to have the VM images stored in pool `foo`. See also
|
|
|
|
`qvm-create --help`.
|
|
|
|
|
|
|
|
While the current API is not as clean and beautiful as the R4 API, it allows
|
2021-03-13 12:03:23 -05:00
|
|
|
you to write your own storage drivers e.g. for Btrfs today.
|