Skip to main content

Disk Autoresize

Disk autoresize grows the disk of an environment before it fills up, so a database or app does not stop because it ran out of space. You set a trigger and a maximum; Quave ONE checks the disk usage every 2 minutes and grows the disk when the trigger is crossed.

It is available for:

  • managed databases deployed by Quave ONE (Databases & Services);
  • regular app environments with a local persistent volume (Use Persistent Volume on, not a shared NFS volume).

The environment must be deployed. Stateless apps, Functions, Jobs and shared volumes do not use it.

How it works​

  1. Every 2 minutes Quave ONE reads the used and free space of the volume and how fast it has been filling in the last 10 minutes.
  2. When the used space reaches the trigger percentage, or the free space drops below the min free value, or the volume is at least 50% used and would be full within 30 minutes at its current write rate (whichever happens first), the disk grows.
  3. Each grow adds the step percentage of the current disk, at least the min step, and never goes above the max disk.
  4. After a grow, Quave ONE waits for the new size to show up on the volume and then for the cooldown before it grows again. A volume that would be full within 30 minutes does not wait for the cooldown.

Volumes smaller than 100 GB fill fastest under a burst of writes, so they react earlier: they grow at 70% used at the latest, by at least 50% of their size. A policy with a lower trigger or a larger step keeps its own values.

When a volume reaches 85% used, the account gets a dashboard notification, so you can raise the max disk or free space before it fills.

The grow happens online: there is no redeploy and no restart. A grow is only marked as completed after the new capacity is visible on the volume.

Settings​

SettingDefaultRules
Trigger80%Between 50% and 95% of the disk used.
Min freenoneOptional. Also grows when free space drops below this many GB.
Step20%Between 5% and 100% of the current disk per grow.
Min step10 GBSmallest growth per grow.
Max disknoneRequired. At least the current disk and at most your account disk limit.
Cooldown30 minBetween 5 and 1440 minutes between two automatic grows.

Sizes use decimal units: 1 GB = 1000 MB. The account disk limit is the same one that applies when you change the disk by hand. Contact support if you need a higher limit.

Grow-only​

Disks never shrink. Every automatic grow is permanent, exactly like increasing the disk yourself. Turning autoresize off stops future grows but keeps the current size.

When the disk reaches the max disk, autoresize stops and shows the environment as blocked. Raise the max disk (within your account limit) or free space.

Cost​

  • Quave ONE Direct: each grow increases the disk of the environment. Local disk above the included allowance is billed as storage overage, so a grow can increase your bill. See persistent disk storage overage. The max disk is the most you can be billed for this disk.
  • Quave ONE Connect: the volume grows inside your own cluster storage. When the cloud disk behind it also needs to grow, that growth is billed by your cloud provider, within the maximum agreed with the Quave ONE team.

The dashboard shows this cost note before you save the policy.

Connect on AWS: EBS modification limits​

On clusters in your own AWS account, the disk behind the volume is an EBS volume. AWS only lets a volume be modified again after the previous modification is completed, and allows at most 4 modifications per volume in 24 hours. IOPS and throughput changes count as modifications too.

The new size is usable within seconds, but the optimizing phase that follows can take hours on large (TB) volumes. While AWS has not finished it, the next grow waits. For this reason, use a large step on big AWS volumes, so a single grow buys enough room.

When autoresize does not grow​

Autoresize never guesses. It waits or stops, and our team is alerted, when:

  • the usage metrics of the volume are missing or old;
  • the disk already reached its maximum;
  • the node storage behind the volume has no room left and cannot grow.

At the maximum​

The disk grows up to its effective maximum: the lower of the max disk of the policy and a limit. The limit is your account disk limit or, for a database on your own node pool (Quave ONE Connect) without a custom account limit, the size the node pool data disk can reach with its autogrow maximum. When the limit is equal to or lower than the max disk, the limit is the cause.

Account admins get an email, and the account gets a dashboard notification, in two moments:

  1. A grow lands on the maximum. The grow succeeded, but the next time the usage crosses the trigger the disk cannot grow.
  2. The disk is at the maximum and usage crossed the trigger. Autoresize is blocked. The message shows the usage, the size and the maximum. The event also appears in the environment history.

Each message says which limit was reached and what to do, and links to the environment settings:

maximumCodeLimit reachedWhat to do
POLICY_MAXThe max disk of the policyRaise the max disk in the autoresize settings.
NODE_POOL_LIMITThe data disk of your node poolGrow the node pool data disk or raise its autogrow maximum, then raise the max disk if needed.
ACCOUNT_LIMITYour account disk limitContact support.

Each message is sent once per environment and disk size. Later checks, or a volume that drops below the trigger and crosses it again at the same size, send nothing new. After the disk grows, it can notify again. While the disk is at the maximum, the 85% notification says the volume will not grow instead of promising a grow.

On your own node pool (Quave ONE Connect), a disk grow you request yourself is also refused when the data disk of the node would be overcommitted: the volumes already allocated on that node plus the new size would exceed the disk, even counting its data disk autogrow maximum. A full data disk stops every database on the node. Grow the node pool data disk, or raise its autogrow maximum, first. Automatic grows are not refused this way: they check the real free space of the node storage instead.

The last action, its status and the reason are shown in the dashboard and in the storageAutoResize.lastAction field of the API. A block at the maximum also sets lastAction.maximumCode.

Configure it​

Dashboard​

  1. Open the environment and go to Settings.
  2. For a managed database, find Disk autoresize under the database disk. For an app, open Storage with a local persistent volume enabled.
  3. Check Grow this disk automatically, set the max disk and adjust the other settings if needed.
  4. Read the cost note and click Save autoresize.

Account admins can configure it in the dashboard.

MCP and Public API​

  • MCP: update-app-env-storage-autoresize (scope quave:write:config). Use dryRun: true first to validate the policy without saving it. get-app-env returns the current storageAutoResize policy.
  • Public API: PATCH /api/public/v1/app-env/storage-autoresize. See the App Environment Management API.

Any account member with access to the environment can use these, the same permission that allows changing the disk.

Route disk warnings to your contact points​

The 85% notification above stays in the dashboard. To get disk warnings in Slack, email, PagerDuty or any other contact point, create an alert with the Disk usage % metric. It works with or without autoresize. See Alerts.