Updated 27 October 2026
About Amoeba
What is Amoeba?
- Amoeba is block storage cost optimization for VMs on Azure and AWS.
- It moves a VM’s data disks onto one btrfs pool sized to your data, with room to grow. It grows the pool before it fills, and shrinks it one disk at a time when your data goes down and stays down. So you pay for close to what you use.
- More on the product page: Block storage cost optimization on Azure and AWS.
Which disks does Amoeba work on?
- The data disks of running Windows and Linux VMs: Azure managed disks, and Amazon EBS volumes on EC2 instances. Amoeba never touches the OS disk or root volume.
- On Linux, the kernel must be recent and support btrfs. Every service that keeps a data mount open must run under systemd. The VM needs a few free disk slots for the pool.
- On AWS, the instance must be managed by AWS Systems Manager and be a Nitro type.
What does onboarding a VM change?
- Amoeba installs its agent through Azure Run Command or AWS Systems Manager. It builds the pool beside your disks and copies your data while your services run.
- Then it switches each mount to the pool at the same path, with a short restart of the services that use it.
- Once the switch is checked, Amoeba snapshots each source disk and deletes the disk. It keeps each snapshot for a few days, then deletes it too.
Do my applications need changes?
- No. Each data mount keeps its path, so applications read and write where they did before.
- Every process that keeps a data mount open must run as a systemd service, so the agent can stop and start it at the switch.
How much can Amoeba save?
- We estimate 50–60% off block storage cost. It is an estimated range, not a promise.
- The free block storage cost assessment works out your own figure from your Azure VMs and EC2 instances, at list price.
How do I get Amoeba?
- Amoeba is in early access. Book a demo for early access, or run the free assessment first.
Safety and data
Can a shrink lose data?
- A disk leaves the pool only after its data has moved to the other disks and the filesystem no longer uses it.
- Before it starts, Amoeba checks the other disks have room for the data and can serve the VM’s disk load.
- A pool that reports disk errors is never shrunk.
- The emptied disk holds no data, so it is deleted at once, with no snapshot.
What happens if the switch onto the pool fails?
- The agent tries to put the original mounts back and start your services again. The source disks are never written during the switch.
- To come: what happens to writes made on the pool if a late check fails after the services restarted
- Amoeba then tries the switch again, so your services can restart more than once.
- If the outcome can’t be known, the move pauses instead.
What happens to my original disks?
- A move only goes forward. Once the switch is checked, Amoeba detaches each source disk and takes a snapshot of it.
- It deletes a source disk only after that disk’s own snapshot is complete.
- It keeps each safety snapshot for a few days, then deletes it too.
Which resources does Amoeba delete?
- A pool disk it emptied in a shrink.
- A source disk after the switch is checked, once its snapshot is complete.
- A disk an expand created and gave up on.
- A safety snapshot, a few days after its source disk is deleted.
Downtime and performance
Is there downtime?
- At the switch onto the pool: the systemd services that use the VM’s data mounts stop, the mounts move, and the services start again.
- The switch runs by itself as soon as the copy has caught up. You don’t pick its time.
- After that, the pool expands and shrinks while your services run, without unmounting.
Does the copy slow down my VM?
- The copy runs inside the VM, and Amoeba sets its speed from your VM’s own disk load.
- When the disks are busy, the copy slows down or waits. This needs cgroup v2 on the VM. Without it, the copy doesn’t slow down for your load.
- To come: measured effect of the copy on disk latency
What disk performance does the pool get?
- On Premium SSD v2 and gp3, each pool disk gets at least the baseline performance its cloud includes. It gets more when the VM’s own load needs it.
- On Premium SSD, each disk carries the performance of its size, and Amoeba picks sizes that carry the load.
- Amoeba doesn’t shrink a pool when the disks that stay couldn’t serve the VM’s disk load.
Expanding when data grows
How fast does Amoeba expand when data grows suddenly?
- Amoeba grows the pool before it fills, and sooner when data arrives fast.
- The agent reports the pool’s use regularly, and Amoeba weighs an expand on every report.
- An expand adds room while the pool stays mounted, so your services keep running.
- To come: typical time from the trigger to the added capacity
Does “Manual” stop Amoeba from expanding?
- No. “When Zoorik shrinks” governs shrinks only. Expands run on their own, whatever the setting.
The agent
What happens if the agent stops reporting?
- If the agent stops reporting for a few minutes, it reads “Disconnected”. Amoeba then reinstalls it through Azure Run Command or AWS Systems Manager, never during a move step or a pool operation.
- Commands wait until it reconnects. The pool stays mounted, but it can’t expand or shrink in the meantime.
- “Reinstall” in Settings installs it again.
What does the agent send to Zoorik?
- In its regular reports: each mount’s size and use, the disks behind it, disk activity, and the pool’s error counters.
- Host facts: the kernel version, whether btrfs is available, and the encryption state.
- During the move: copy progress, and how busy the disks are.
How is the agent installed and updated?
- Through Azure Run Command or AWS Systems Manager, when you onboard the VM.
- It runs as the systemd service amoeba-agent.service, as root.
- Amoeba updates it to each new release by itself. A version that fails its health check rolls back.
Platforms and disk types
Which Linux distributions does Amoeba support?
- Any Linux with systemd and a recent kernel that supports btrfs.
- It also needs rsync, btrfs-progs and psmisc. The installer doesn’t add them.
- Amoeba doesn’t read the OS name. The running kernel alone decides.
- Amoeba loads a btrfs module that isn’t loaded yet. If the kernel has no btrfs, the move pauses.
Does Amoeba work on Windows VMs?
- To come: Windows support: versions, filesystems, and how the pool works on Windows
Does Amoeba work on AWS?
- Yes. Amoeba pools the non-root EBS data volumes of running EC2 instances onto gp3 volumes in the instance’s Availability Zone.
- You connect an account with its 12-digit ID and a script in AWS CloudShell that creates the IAM role ZoorikStorageOperator. The role trusts Zoorik only with your organisation’s external ID.
- The agent installs through AWS Systems Manager. Instances must be running, managed by Systems Manager, and a Nitro type.
Which disk types does the pool use?
- On Azure: Premium SSD v2 where the VM’s region and zone offer it.
- Where the VM’s region or zone doesn’t offer Premium SSD v2, the pool uses Premium SSD.
- Each VM gets one pool, on one disk type.
- Data on Standard HDD, Standard SSD or Ultra Disk moves to Premium SSD v2 or Premium SSD. From Standard HDD or Standard SSD, that can cost more. Zone-redundant (ZRS) disks map to a locally redundant pool.
- On AWS, the pool uses gp3 volumes in the instance’s Availability Zone.
Costs and savings
How is the saving worked out?
- Before the pool: what the planned pool would cost, against the disks you have now.
- After the move: what the source disks cost a month, against what the pool costs.
- At Azure’s list price for the region, with a 730-hour month.
- On AWS, at the AWS Price List API’s list price. AWS charges for EBS per GB-month.
Do I pay for both sets of disks during the move?
- Yes, but only while the move runs. The source disks are deleted once the switch is checked.
- Then you pay for the safety snapshots for the few days they’re kept.
- The console’s disk spend counts both sets while the move runs.
What does Amoeba cost?
- The assessment is free. If you pay for Amoeba, your order sets the price, how often you pay and the payment terms.
- Your cloud provider charges you directly for the disks and snapshots Amoeba creates or keeps.
Getting started
How do I see what my VMs could save?
- Run the free block storage assessment in your terminal or Cloud Shell, on Azure or AWS. It writes one PDF report with each VM’s estimated saving at list price.
- It sends nothing to Zoorik, and asks once before it reads inside your VMs.
Can I start with one VM?
- Yes. Amoeba acts only on the VMs you onboard, and leaves every other VM alone.
- Set “When Zoorik shrinks” to “Manual” to start each shrink yourself.
What does Amoeba need in my Azure subscription?
- The custom role “Zoorik Storage Operator”, assigned to Zoorik’s app on each subscription.
- It can read every resource, update VMs, run commands on them, and create and delete disks and snapshots.
- You set it up by running the connect script with your own Azure sign-in.
What does Amoeba need on AWS?
- The IAM role ZoorikStorageOperator, created by a script you run in AWS CloudShell. It trusts Zoorik’s AWS account only with your organisation’s external ID.
- It can read EC2 and Systems Manager; create, modify, attach, detach and delete volumes; create and delete snapshots; and run commands through Systems Manager.
- Instances must be running, managed by Systems Manager and a Nitro type, with at least one EBS data volume.