Add a block storage volume when storage needs to grow independently from CPU, RAM, or the VM's system disk. Resize the VM disk when the operating-system disk itself is too small. If the workload also needs more compute, resize the VM rather than solving only the storage symptom.
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.
At Raff Technologies, the same decision applies: resize the VM when the server itself needs a larger system footprint, or attach Raff Volumes when persistent data needs a separate lifecycle from compute. Raff Volumes are priced at $0.08/GiB-month according to the current Raff pricing source.
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.
VM Disk vs Block Storage Volume: the short answer
Use the VM disk for the operating system, runtime, and simple workloads that do not need a separate data lifecycle. Use an attached block storage volume for persistent application or database data that should grow, be monitored, or be protected separately from the system disk.
A separate volume does not automatically make data safer. It still needs the right filesystem, mount configuration, monitoring, snapshots or backups, and restore testing.
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 the current Raff rate of $0.08/GiB-month, a 100 GiB volume costs $8/month before other infrastructure costs.