When to Add a Volume Instead of Resizing a VM Disk
Adding a volume is usually better when a workload needs more persistent storage but does not need more CPU, RAM, or a larger system disk.
That distinction matters because storage growth and compute growth do not always happen together. A database can grow while the application still has enough CPU. A Docker workload can need persistent data while the VM size remains appropriate. A processing workload can need workspace without requiring a larger server.
Raff Technologies gives teams two practical paths: resize the VM when the whole server needs more capacity, or attach Raff Volumes when data needs a separate lifecycle from compute. Raff Volumes currently cost $0.08/GiB-month, making it easier to compare storage growth against a larger VM plan.
This guide explains when to add a block storage volume, when resizing the VM disk is enough, when object storage is better, and how to choose a cleaner production storage layout.
If you are new to the storage model, read Block Storage Volumes for Databases, Containers, and App Data first.
VM disk resizing and attached volumes solve different problems
A VM disk resize increases the size of the main disk attached to the server.
An attached volume adds a separate disk-like storage resource.
VM disk resize ↓ Larger system disk Attached volume ↓ Separate persistent data disk
The VM disk usually contains:
- Operating system
- System packages
- Application runtime
- Configuration files
- Local logs
- Temporary files
An attached volume usually contains:
- Database files
- Container state
- Application data
- Processing workspace
- Large working directories
- Persistent service data
The important question is not only:
Do I need more storage?
The better question is:
Should this data share the same lifecycle as the operating system?
If the answer is no, a separate volume is usually the cleaner boundary.
The storage decision framework separates capacity from lifecycle
Use this framework before changing the VM size.
| Situation | Better choice | Reason |
|---|---|---|
| Root disk is full because of OS files or logs | Resize VM disk or clean up | The system disk is the problem |
| Database data is growing | Add a volume or managed database | Data needs its own lifecycle |
| Docker persistent data is growing | Add a volume | Container state should survive rebuilds |
| User uploads are growing | Object storage | Files should not depend on one VM |
| VM lacks CPU or RAM | Resize VM | Compute is the bottleneck |
| Only storage needs to grow | Add a volume | Storage scales independently |
| Long-term files need storage | Object storage | File objects should outlive compute |
A simple rule:
Resize the VM when the server is too small. Add a volume when the data needs its own boundary.
Resize the VM disk when the system disk is the problem
Resizing is appropriate when the operating system disk itself has become too small.
Common examples:
- OS updates need more space
- Application packages grew
- Docker images consume the root filesystem
- Logs filled the system disk
- Temporary files consumed available space
- The original VM disk size was too small
Before resizing, check whether cleanup solves the issue:
- remove unused images
- rotate old logs
- clean package caches
- remove abandoned build artifacts
- investigate unexpectedly large files
A larger disk should solve a real capacity requirement, not hide uncontrolled growth.
Add a volume when storage grows faster than compute
Volumes are useful when disk requirements increase while CPU and RAM remain sufficient.
Example:
Current VM 2 vCPU 4 GB RAM 80 GB disk Problem Database needs 200 GB more storage CPU and RAM Still sufficient
A larger VM would add compute capacity that the workload does not need. A volume solves the storage requirement directly.
Add a volume when:
- data should be separated from the OS;
- storage grows independently from compute;
- databases need dedicated storage;
- containers need persistent state;
- recovery boundaries should be clearer;
- data may move separately from the VM later.
At Raff’s current rate, a 100 GiB volume costs $8/month before other infrastructure costs.