| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| vm-reactor:start [02.11.2026 10:54] – VM Reactor 0.22: storage - NFS shares mounted by the host, thin pools on several disks aria | vm-reactor:start [07.11.2026 19:51] (current) – stratum-core instead of stratum-init aria |
|---|
| |
| <WRAP centeralign> | <WRAP centeralign> |
| **VM Reactor 0.22 – Technical Preview** · Debian 13 (trixie) and Debian 14 (forky) · amd64 and arm64 · free software (GPL-3+) · package ''vm-reactor'' in the Stratum repository (component //contrib//) | **VM Reactor 0.24 – Technical Preview** · Debian 13 (trixie) and Debian 14 (forky) · amd64 and arm64 · free software (GPL-3+) · package ''vm-reactor'' in the Stratum repository (component //contrib//) |
| </WRAP> | </WRAP> |
| |
| |
| <WRAP center round info 80%> | <WRAP center round info 80%> |
| **A contrib package of the Stratum repository.** VM Reactor is published in the component //contrib// of the Stratum repository, next to the Stratum modules in //main//. It builds on Stratum – it needs ''stratum-init'' and works together with the Stratum modules – but it enjoys a certain independence from them: its own versions and release cycle, its own web interface, its own handbook and this page of its own. | **A contrib package of the Stratum repository.** VM Reactor is published in the component //contrib// of the Stratum repository, next to the Stratum modules in //main//. It builds on Stratum – it needs ''stratum-core'' and works together with the Stratum modules – but it enjoys a certain independence from them: its own versions and release cycle, its own web interface, its own handbook and this page of its own. |
| </WRAP> | </WRAP> |
| |
| <grid cols="1fr 1fr 1fr"> | <grid cols="1fr 1fr 1fr"> |
| <col> | <col> |
| <card header="Storage" subtitle="Directory · LVM thin pool · NFS share" shadow="small"> | <card header="Storage" subtitle="Directory · Btrfs pool · LVM thin pool · NFS share" shadow="small"> |
| Guests, ISO images, LXC templates and backups in the storage you choose: a directory, an LVM thin pool – thin volumes with instant snapshots, on one or more disks; disks can be added and taken out while the guests keep running – or an NFS share, mounted by VM Reactor or one the host mounts already. | Guests, ISO images, LXC templates and backups in the storage you choose: a directory, a btrfs pool on one or more disks – RAID 0, 1, 1C3 or 10, snapshots, compression and checksums – an LVM thin pool or an NFS share. Disks of the pools are added, removed and replaced while the guests keep running. |
| </card> | </card> |
| </col> | </col> |
| | System | **Debian 13 (trixie)** or **Debian 14 (forky)**, ''amd64'' or ''arm64'' – a physical computer or a virtual machine with nested virtualization | | | System | **Debian 13 (trixie)** or **Debian 14 (forky)**, ''amd64'' or ''arm64'' – a physical computer or a virtual machine with nested virtualization | |
| | Virtualization | **VT-x / AMD-V** switched on in the firmware for KVM machines; without it, machines run emulated and slowly (containers and applications do not need it) | | | Virtualization | **VT-x / AMD-V** switched on in the firmware for KVM machines; without it, machines run emulated and slowly (containers and applications do not need it) | |
| | Stratum | ''stratum-init'' 0.40 or newer and the Stratum repository with the components ''main'' **and** ''contrib'' – see [[stratum:start#quick_setup|Stratum – quick setup]] | | | Stratum | ''stratum-core'' 0.49 or newer (the Stratum core, written in Go) and the Stratum repository with the components ''main'' **and** ''contrib'' – see [[stratum:start#quick_setup|Stratum – quick setup]] | |
| | Memory and disk | Enough for the host and all guests; memory compression, deduplication and the balloon help when it gets tight | | | Memory and disk | Enough for the host and all guests; memory compression, deduplication and the balloon help when it gets tight | |
| | Browser | Any current browser; the web interface uses HTTPS on port ''8443'' | | | Browser | Any current browser; the web interface uses HTTPS on port ''8443'' | |
| </card> | </card> |
| |
| Sources written by older versions of ''stratum-archive-keyring'' have only ''main''; installing the current ''stratum-archive-keyring'' (or ''stratum-init'') adds ''contrib'' and ''non-free'' by itself. | Sources written by older versions of ''stratum-archive-keyring'' have only ''main''; installing the current ''stratum-archive-keyring'' (or ''stratum-core'') adds ''contrib'' and ''non-free'' by itself. |
| |
| ==== 2. Install the package ==== | ==== 2. Install the package ==== |
| <code> | <code> |
| local dir /var/lib/vm-reactor guests,iso,templates,backup | local dir /var/lib/vm-reactor guests,iso,templates,backup |
| | data btrfs /var/lib/vm-reactor/storage/data guests,iso,templates,backup source=<uuid> options=compress=zstd:1 |
| thin lvmthin /var/lib/vm-reactor/storage/thin guests source=vmr-thin/data | thin lvmthin /var/lib/vm-reactor/storage/thin guests source=vmr-thin/data |
| </code> | </code> |
| </card> | </card> |
| |
| Types: ''dir'' (Directory), ''lvmthin'' (LVM thin pool: thin volumes and snapshots) and ''nfs'' (NFS share). Add them in **Storage**; the dialog checks your entries at once and shows what is wrong. | **Add storage** offers four types; the dialog checks your entries at once and shows what is wrong: |
| |
| * **NFS share** – an export (''server:/path''), mounted by VM Reactor through ''/etc/fstab'' (the server must answer on port 2049), or the directory of an NFS share that the host mounts already (e.g. ''/mnt/share''): it is used as it is and stays the host's mount. | * **Directory** – any mounted directory: a second disk, an existing btrfs file system or an NFS share the host mounts itself. VM Reactor recognises the file system: on btrfs the guests get subvolumes and snapshots, on an NFS share the storage is offline while the share is not there. |
| * **LVM thin pool** – an existing pool (''vg/pool''), or a new one on one or more empty disks or partitions (volume group ''vmr-<name>''). **Disks** on the card of the storage adds disks later – the pool grows while the guests keep running, or the new disk stays a reserve – and takes disks out: their data move to the other disks first (''pvmove''). A thin pool cannot shrink, so a disk can only be taken out when the other disks have room for its data; to replace a disk, add the new one as a reserve first. The disks of a pool are not redundant: when one of them fails, the whole pool is lost. | * **Btrfs pool** – a new btrfs file system on one or more empty disks or partitions: **single**, **RAID 0**, **RAID 1** (2+ disks), **RAID 1C3** (3 copies, 3+ disks) or **RAID 10** (4+ disks). RAID 5/6 are not offered – their write hole can lose data. The metadata always have two copies at least. Compression zstd, checksums with self-repair from the copies, instant snapshots of every guest (its own subvolume), clones as reflinks; disks of machines are raw files (optionally without copy-on-write). **Disks** on the card adds, removes and replaces disks – also a failed or missing one – converts the profile, starts a scrub or a balance and mounts a pool with a missing disk degraded, all while the guests keep running. VM Reactor watches the pools (missing disks, device errors, scrub results) and runs a scrub every 30 days. |
| | * **LVM thin pool** – a new thin pool on one or more empty disks (or an existing one such as ''pve/data''): thin volumes for disks of machines and file systems of containers, instant snapshots; disks can be added and taken out later. A thin pool cannot shrink – to take a disk out, the other disks need room for its data. |
| | * **NFS share** – an export (''server:/path''), mounted by VM Reactor through ''/etc/fstab''; the server must answer on port 2049. |
| |
| <card header="Terminal — root@host" shadow="large"> | <card header="Terminal — root@host" shadow="large"> |
| <code bash> | <code bash> |
| vm-reactor storage list # all storages: type, state, size, free space | vm-reactor storage list # all storages: type, state, size, free space |
| vm-reactor storage add share nfs 10.0.0.5:/srv/vm # an NFS export (or a mounted directory: /mnt/share) | vm-reactor storage add data btrfs /dev/sdb /dev/sdc --profile raid1 --yes # a btrfs pool, RAID 1 |
| vm-reactor storage add data lvmthin --new /dev/sdb /dev/sdc --yes # a thin pool on two empty disks | vm-reactor storage disk add data /dev/sdd --yes # one more disk, the data are spread |
| vm-reactor storage disk add data /dev/sdd --reserve --yes # a new disk as a reserve | vm-reactor storage profile data raid1c3 # three copies |
| vm-reactor storage disk remove data /dev/sdb # move its data away and take it out | vm-reactor storage disk replace data /dev/sdb /dev/sde --yes # replace a disk (devid:N: a missing one) |
| vm-reactor storage disk list data # the disks, their use, removable or not | vm-reactor storage scrub data # check every block, repair from the copies |
| | vm-reactor storage disk list data # disks, errors, the last scrub |
| | vm-reactor storage add thin lvmthin --new /dev/sdf --yes # an LVM thin pool |
| | vm-reactor storage add share nfs 10.0.0.5:/srv/vm # an NFS export |
| </code> | </code> |
| </card> | </card> |
| <card header="Download" shadow="small"> | <card header="Download" shadow="small"> |
| **[[https://www.skraba.net/stratum-apt/handbook/vm-reactor-handbook.pdf|VM Reactor Handbook (PDF, A4, 28 pages, 0.7 MB)]]** \\ | **[[https://www.skraba.net/stratum-apt/handbook/vm-reactor-handbook.pdf|VM Reactor Handbook (PDF, A4, 28 pages, 0.7 MB)]]** \\ |
| Draft · November 2026 · VM Reactor 0.22 · Stratum Project \\ | Draft · November 2026 · VM Reactor 0.24 · Stratum Project \\ |
| On a VM Reactor host: ''apt install vm-reactor-handbook'' (or **Settings – Packages**) – the book is then at ''/usr/share/vm-reactor/handbook/vm-reactor-handbook.pdf'', with a link in ''/root/vm-reactor-handbook.pdf''. | On a VM Reactor host: ''apt install vm-reactor-handbook'' (or **Settings – Packages**) – the book is then at ''/usr/share/vm-reactor/handbook/vm-reactor-handbook.pdf'', with a link in ''/root/vm-reactor-handbook.pdf''. |
| </card> | </card> |