SSD Nodes Learn Hosting plans →
Guides Matt ConnorBy Matt Connor

Cheap terabytes: storage VPS or object storage

Several terabytes for a few euros a month: what a storage VPS, a block volume and object storage really cost in the EU, and which one restores fast.

How to get cheap terabytes on a VPS

Cheap terabytes come from hard disks, and there are two sensible ways to rent them: a storage VPS that ships a large spinning disk inside the plan, or object storage billed by the gigabyte. A block volume attached to a normal VPS is the third option, and it is the expensive one, because you pay NVMe (non-volatile memory express) prices for data you touch twice a year. The choice is settled by restore time and by the traffic policy, not by the price per terabyte on the front page.

Price per terabyte is the first number and the least decisive. What follows compares the three options on the media under the data, on the IOPS (input/output operations per second) and throughput caps, on the traffic policy hiding behind the word unlimited, and on what a snapshot of that much data costs.

Storage VPS, block volume, or object storage?

A storage VPS is an ordinary Linux server whose plan is built around a large disk. You get root, a filesystem, and usually a hard disk (HDD) rather than flash. CPU and RAM are modest, because the product assumes the box mostly moves bytes rather than computing on them. Everything you already run works unchanged, so rsync, restic, Samba and Nextcloud all behave normally. How a storage VPS differs from a regular VPS covers the product side. The question here is the price of the disk.

A block volume is a raw device attached over the provider's network to a VPS you already run. It appears as /dev/sdb or /dev/vdb, you create a filesystem on it, and you can detach it and attach it to another server. It is billed per gigabyte per month, it is normally flash backed, and it is normally replicated inside one region. That is a good product for a database. It is a poor way to store an archive, because you are renting low latency that archive data never uses.

Object storage is an HTTP API, almost always S3 compatible (S3 is the simple storage service API that most backup tools already speak). You put and get whole objects under a key. There is no filesystem, no rename, and no partial write in place. You rent it by the gigabyte, or you self-host it: MinIO on a server you own turns a storage VPS into an S3 endpoint that your existing tools can talk to.

What you are allowed to use is often decided by the software, not by the price. Software that needs a POSIX (portable operating system interface) path needs the storage VPS or the block volume. Software that speaks S3 gets a much cheaper terabyte.

What does a terabyte cost per month in the EU?

The figures below are rounded across the German and wider European market as of August 2026, net of VAT (value added tax). They exist to show the shape of the difference. They are not any single provider's price list, and no price here should be repeated as a current fact without checking it on the page you are buying from. In the German market the same products are sold by Hetzner, Netcup, Contabo, IONOS, OVHcloud and Scaleway among others, named here as market context and not as a recommendation.

ChartRounded EU list prices, August 2026: euros per TB per month, and the one-off cost of pulling 4 TB out
The data behind this chart
[
  {
    "label": "Storage VPS, HDD",
    "eur_per_tb_month": 3,
    "eur_to_pull_4tb_out": 0
  },
  {
    "label": "Storage VPS, NVMe",
    "eur_per_tb_month": 15,
    "eur_to_pull_4tb_out": 0
  },
  {
    "label": "Block volume, NVMe",
    "eur_per_tb_month": 45,
    "eur_to_pull_4tb_out": 0
  },
  {
    "label": "Object storage, rented",
    "eur_per_tb_month": 6,
    "eur_to_pull_4tb_out": 40
  },
  {
    "label": "Object storage, self-hosted",
    "eur_per_tb_month": 4,
    "eur_to_pull_4tb_out": 0
  }
]

The gap is the whole story. An HDD-backed storage VPS lands near 3 euros per terabyte per month. Rented object storage lands near 6. A block volume lands near 45, which is why nobody archives on block storage twice. An NVMe storage VPS sits between them at roughly 15, and it buys speed that only warm data needs.

Self-hosting object storage on a storage VPS costs a little more per terabyte than the bare storage VPS, about 4 euros, because you size up CPU and RAM to run the daemon. In return you get an S3 endpoint with no per-request charge and no charge for reading your own data back.

Four things move the real bill away from that table.

  • Cost per terabyte on a storage VPS falls as the plan grows, because the bundled CPU and RAM are a fixed share of the price.
  • Setup fees and twelve-month minimum terms are common in this segment, so the monthly figure is not the whole figure.
  • Object storage meters requests as well as capacity, usually per thousand operations, which matters for a backup tool that writes many small objects.
  • VAT is added for a private customer in Germany and is reclaimed by a business, so the same price page means two different numbers.

If you are comparing this against a consumer subscription instead of another server, the same arithmetic against Dropbox has the identical shape, and what a VPS costs per month once the first term ends is worth reading before signing for a year.

Spinning disks or NVMe, and how to check

Ask the disk instead of trusting the plan name.

lsblk -d -o NAME,ROTA,SIZE,MODEL

ROTA reads 1 for a rotating disk and 0 for solid state. On a VPS that value comes from the hypervisor, so treat it as a hint. A virtio device can report ROTA 0 while the file behind it lives on an array of hard disks. Measure the disk instead. Point --filename at a path on the big disk, not at the root filesystem.

sudo apt update && sudo apt install -y fio
fio --name=seqread --filename=/mnt/data/fio.test --size=8G --rw=read --bs=1M \
  --iodepth=8 --ioengine=libaio --direct=1 --runtime=120 --time_based --group_reporting
fio --name=randread --filename=/mnt/data/fio.test --size=8G --rw=randread --bs=4k \
  --iodepth=32 --ioengine=libaio --direct=1 --runtime=120 --time_based --group_reporting
rm /mnt/data/fio.test

--direct=1 bypasses the page cache, so you measure the disk and not your own RAM. Without it a small test file is served from memory and every plan looks like flash.

Read the two results together. A hard disk returns roughly 60 to 200 MB/s on the sequential test and a few hundred IOPS on the random one, because the head has to move to reach each block and one seek costs milliseconds. Flash returns tens of thousands of IOPS on the same random test, because there is no head to move. That gap of two orders of magnitude identifies the media whatever the product page claims. If the numbers come back flash shaped, confirming that an NVMe disk is really NVMe goes one step further, and the difference between NVMe and SATA SSD plans explains what the premium buys.

Two further facts about the cheap tier. Large storage plans are built on RAID (redundant array of independent disks) rather than on a single drive, and what RAID 10 does for VPS storage explains why a rebuild on multi-terabyte drives takes so long and slows everyone on the host while it runs. SMART (self-monitoring, analysis and reporting technology) data is usually not passed through to the guest at all on a virtio disk, because the hypervisor does not expose the drive's command set, so monitoring disk health on a VPS has to work from what the provider does expose.

How long does a restore of 4 TB take?

Restore time is bytes divided by the slowest link in the chain, and the slowest link is usually the network rather than the disk. The rows below are arithmetic, not measurements: 4 TB moved at a fixed sustained rate.

ChartHours to restore 4 TB at a fixed sustained rate (arithmetic, not a benchmark)
The data behind this chart
[
  {
    "label": "200 Mbit shaped port",
    "mb_per_second": 25,
    "hours_to_restore_4tb": 44.4
  },
  {
    "label": "HDD tier, many small files",
    "mb_per_second": 30,
    "hours_to_restore_4tb": 37.0
  },
  {
    "label": "HDD tier, large files",
    "mb_per_second": 60,
    "hours_to_restore_4tb": 18.5
  },
  {
    "label": "Saturated 1 Gbit path",
    "mb_per_second": 110,
    "hours_to_restore_4tb": 10.1
  },
  {
    "label": "Flash tier, 2.5 Gbit path",
    "mb_per_second": 280,
    "hours_to_restore_4tb": 4.0
  }
]

Read the two ends of that table. A shaped 200 Mbit/s port moves about 25 MB per second, so 4 TB takes about 44.4 hours, which is most of two days. A flash tier on a fast port finishes the same 4 TB in about 4.0 hours. No price per terabyte moves those numbers.

Real restores run slower than the arithmetic, for a reason worth understanding. A deduplicating backup tool does not store your files. It stores blobs packed into container files, and restic uses pack files of a few megabytes up to about 16 MiB by default. A restore fetches those packs in the order the restored files need them, which is not the order they were written. On a hard disk that means constant head movement, so a 4 TB restore of many small files behaves like the 37.0 hour row rather than the 18.5 hour row.

Measure your own repository before planning around it:

restic -r s3:https://s3.eu-central-1.example.com/mybucket stats --mode raw-data

Deduplication means the repository is normally far smaller than the sum of the snapshots, so the size that matters for a restore is this one and not what du -sh reports about the source. Running restic on a VPS covers the repository layout and the retention flags in full.

Why IOPS and throughput caps decide more than the price

A block volume usually publishes a cap, and the cap often scales with the size of the volume, so a small volume is slow by design. A storage VPS usually publishes nothing and enforces its limit at the hypervisor. From inside the guest the two feel identical: fast for the first minute, slower afterwards. That is a token bucket. You are given a burst allowance, and when the allowance empties you drop to the sustained rate.

This is why a 30 second benchmark tells you nothing. Run fio with --runtime=300 --time_based and watch the throughput as it goes. A run that starts at 300 MB/s and settles at 40 MB/s after a minute means 40 is your number, because the burst is a credit and the sustained rate is the product.

The other cause of slow disks is the neighbours on the same host. Watch latency while your own workload is idle:

sudo apt install -y sysstat
iostat -x 1 5

The await column is the average time a request waited, in milliseconds. Single digit values on flash are normal, and 10 to 20 ms on a hard disk is normal. An await in the hundreds while your own queue is nearly empty means you are waiting behind someone else, and no configuration on your side changes it. That is a support ticket or a different plan.

What does unlimited traffic actually mean?

Unlimited traffic in this market almost always means an unmetered port with a fair use clause, and the number that decides your restore is the port speed. Some plans meter after a monthly threshold and then shape hard, often down to a small fraction of the advertised speed. That clause sits in the terms and not on the price page. Read it before you buy the terabytes, because it sets the ceiling on how fast a full recovery can possibly run.

Know your own traffic figure before arguing about anyone else's:

sudo apt install -y vnstat
vnstat -m

vnstat -m prints monthly totals per interface. A fresh install shows only a partial month until it has collected data, so start it before you need the evidence.

Object storage prices traffic more openly. Egress, meaning traffic leaving the provider's network, is a separate meter from capacity. Some providers include a traffic allowance tied to the stored capacity. Others charge per gigabyte out, and a few charge nothing at all. At the metered rate used in the table above, pulling 4 TB back costs about 40 euros once. That is cheap for a real disaster and expensive as a monthly restore test, so decide which of the two you are budgeting for. Among the S3-compatible providers outside the large clouds, Backblaze B2, Wasabi, IDrive e2 and Cloudflare R2 all offer European regions or an EU jurisdiction setting, and as of August 2026 their egress policies differ from each other far more than their storage prices do.

What does a snapshot of 4 TB cost?

More than most people expect. A snapshot is a copy-on-write image of the disk taken on the host, and it is billed per gigabyte stored at a rate near block storage rather than near archive storage. A snapshot of a multi-terabyte disk can therefore cost more per month than the server it protects. Check the per-gigabyte snapshot rate before you take the first one, and check whether the large disk on a storage VPS can be snapshotted at all, because plans in this segment often exclude it or cap the count.

There is a second problem that the price does not show. A snapshot sits on the same host, in the same account, behind the same login as the original. It protects you from a bad rm -rf and from a failed upgrade. It does not protect you from a lost account or a dead region, so it is not a backup. The difference between snapshots and backups is worth being precise about before you rely on one.

For several terabytes the cheaper pattern is versioning inside a repository instead of images of a whole disk. History lives in the repository, deduplicated, and you bound it with retention:

restic -r s3:https://s3.eu-central-1.example.com/mybucket forget \
  --keep-daily 7 --keep-monthly 12 --prune

That keeps a year of monthly restore points for a fraction of the cost of a year of disk images, because only changed blobs are stored again. Writing the same backup to two repositories is the pattern that survives losing one provider entirely.

Where does the data sit? EU residency and GDPR

The GDPR (general data protection regulation, DSGVO in German) applies to personal data because of who the data is about, not because of where the disk is. Storing an archive outside the EU is not forbidden, and storing it inside the EU is not automatically compliant. What changes with the region is the transfer basis you need and the paperwork you keep. Four practical points follow, and none of this is legal advice.

  • Your hoster is a processor (Auftragsverarbeiter) when it stores personal data for you, so Article 28 requires a written agreement, the AVV or data processing agreement. European hosters publish a standard one, usually signable inside the control panel.
  • Article 32 names encryption as an example of an appropriate technical measure. Client-side encryption is the strong version: restic encrypts every blob with AES-256 before it leaves your machine, so the provider stores ciphertext it cannot read, and the region question becomes a smaller one.
  • A region label describes where the primary copy sits. Ask where replicas and the provider's own backups land, and from which country support staff can access the system.
  • Immutability works against erasure. Object lock and versioning mean a delete is not a delete until the retention expires, and a deduplicated repository lets you drop a whole snapshot rather than one person's file inside every snapshot. Decide the retention period before you switch object lock on, because an erasure request will arrive later.

Write the archive into your Article 30 record of processing activities, with its retention period and its location. An archive that nobody documented is the one that turns a routine request into an incident.

Buy for the restore, not for the archive

This is the sizing rule that matters. Decide the largest single restore you must survive and the deadline it has to meet. Divide the bytes by the deadline. That gives the sustained rate you need, and the rate rules out whole tiers before price enters the discussion at all. A 4 TB recovery that has to finish inside one working day needs roughly the 10.1 hour row above, which means a saturated 1 Gbit/s path from end to end. A cheap plan on a shaped port cannot meet that deadline at any price.

Then split the data. Most archives are cold, and the part you would really restore under pressure is small. Keep that working set on the fast tier and the long tail on the cheap one. You are then paying flash prices only for the gigabytes that carry a deadline.

Then prove it, because a backup nobody has restored is untested.

time restic -r s3:https://s3.eu-central-1.example.com/mybucket restore latest \
  --target /mnt/restore-test --include /srv/important

time prints the elapsed time when the restore finishes. Run it monthly against a directory large enough to be honest, divide the bytes by the seconds, and compare the result with the row you planned for. If the measured rate is half of the plan, you have found the problem while the system is still running normally. When the storage exists specifically to hold backups from somewhere else, using a VPS as an offsite backup target covers the target side, including the account separation and the append-only key that stop a compromised source from deleting its own history.

FAQ

Is a storage VPS cheaper than object storage?

Per terabyte, usually yes. On rounded August 2026 figures an HDD-backed storage VPS lands near 3 euros per terabyte per month against about 6 for rented object storage. Object storage wins on other axes: there is no operating system to patch, and durability is the provider's problem rather than yours. The storage VPS wins when your software needs a filesystem path, or when you want an S3 endpoint with no per-request charge, which you get by running MinIO on it yourself.

Can I attach cheap terabytes to a VPS I already have?

Yes, with a block volume, and that is the expensive path: about 45 euros per terabyte per month on rounded August 2026 figures, because block volumes are flash backed and replicated for low latency you will not use on an archive. The cheaper answer is to leave the data where it is cheap and reach it over the network, either by mounting object storage with rclone mount or by pointing the backup tool at an S3 URL directly. If the software genuinely needs a local path for several terabytes, a separate storage VPS is normally cheaper than growing the volume on the server you have.

How long does it take to restore 4 TB from a storage VPS?

Divide the bytes by the sustained rate of the slowest link. At 60 MB per second, a realistic sequential rate for a hard disk tier, it is about 18.5 hours. Many small files pull that down to roughly 37.0 hours because the restore reads pack files out of order. A shaped 200 Mbit/s port caps the whole job at about 44.4 hours whatever the disks do. Measure your own path with a timed partial restore rather than trusting any of these rows.

Does storing backups in an EU region make them GDPR compliant?

No. The GDPR follows the personal data and not the disk, so an EU region removes the international transfer question and leaves every other duty in place. You still need a processing agreement with the hoster under Article 28, a lawful basis and a retention period for the archive, an entry in your Article 30 record, and a way to act on an erasure request. Encrypting client-side before upload reduces what the provider can see, and Article 32 names encryption as an example of an appropriate measure. This is how the mechanics work, and your data protection officer decides the rest.

How many terabytes should I buy?

Size for the restore. Take the largest single recovery you must survive, divide it by the time you are allowed to take, and keep only the tiers that clear that rate. Compare euros per terabyte among the survivors. Then buy roughly 1.5 times the data you hold today if it is still growing, because moving several terabytes to a larger plan later is another full copy across the same slow link.