Updates
Three kinds of updates touch a TwinStor pool: updating TwinStor itself (zero downtime), updating the XCP-ng hosts under it (a standard Rolling Pool Update), and the rare update that ships a new storage kernel module (also an RPU). During the Tech Preview, read the release notes of each build before upgrading a live pool: treat every release as potentially behavior-changing.
Updating TwinStor
A TwinStor update is a zero-downtime binary swap: storage keeps serving from the kernel while the service restarts. There is no RPM yet; the Tech Preview distribution is the tarball. On each node, one at a time:
# verify before extracting (aborts if it does not match): # echo "<published sha256> twinstor-test-<version>.tar.gz" | sha256sum -c # tar xzf twinstor-test-<version>.tar.gz # cd twinstor-test-<version> # ./install.sh # preflight + installs the new binary and unit # systemctl restart twinstor # twinstor status # confirm ready before touching the peer
Notes:
install.shdeliberately does not restart a running service; the restart is your explicit step, so you control the one-node-at-a-time pacing. Finish one node (restart +twinstor statusback to ready) before starting the other.- Replication and the storage target survive the service restart, so VMs experience zero I/O interruption.
- No VM evacuation and no HA disable are needed for a binary swap: the host does not reboot and its patch level does not change.
- The update refreshes TwinStor's helper scripts and log rotation automatically. The generated storage configuration keeps its setup-time settings; if a new build would generate a newer format,
twinstor statusshows aconfig:line and the release notes state whether it matters for that release. When they do ask for it,twinstor regenerate-configbrings the configuration up to the installed version (it prints a plan and runs dry by default; run it one node at a time on a healthy pool). - There is no runtime version handshake between the nodes: a version or kernel-module mismatch that prevents reconnection just looks like a peer that never comes back (
serving-without-redundancyon one side). If the peer has not reconnected shortly after you upgrade the first node, stop and comparetwinstor --versionon both sides before touching the second; always finish by bringing both nodes to the same build.
Updating the XCP-ng hosts
Host updates follow the standard Rolling Pool Update procedure, and RPU is fully transparent for TwinStor: both nodes always serve storage, so rebooting one has no impact on the other.
The rule that matters: never patch and reboot a host with HA still armed. A pool member cannot run a different version from the master, so update via RPU (HA off, evacuate and reboot one node at a time, HA back on). Xen Orchestra's Rolling Pool Update automates the whole sequence. No TwinStor-specific commands are needed at any point; the service stops and starts with the host automatically. A real RPU on the preview pools measured about 7 minutes with VMs uninterrupted.
When re-enabling HA manually, run the exact commands from Administration: a bare pool-ha-enable silently resets the timeout to an overly aggressive default, so always pass it explicitly.
Updates that include a new DRBD kernel module
A kernel module swap requires a reboot, so follow the RPU procedure above rather than the zero-downtime binary swap. The release notes of the build say when this applies.