存储VPS和普通VPS有什么区别?
存储VPS以TB容量换取更少的CPU和更慢的磁盘,标准VPS通常使用NVMe且容量约少20倍。本文比较关键规格,并说明备份、归档和数据库应如何选择。
存储型 VPS 与普通 VPS:简短结论
存储型 VPS 按 TB 销售,普通 VPS 则按 CPU 核心销售。存储型方案以更低成本提供多得多的磁盘空间,但磁盘通常更慢,而且每 TB 分配的 CPU 更少。标准方案提供快速 SSD,通常是 NVMe(非易失性内存主机控制器接口),容量往往只有前者的二十分之一,同时以相同价格提供更多处理器资源和内存。两种产品的其他配置相同:使用同一 hypervisor、同一个 root shell、同一个 Ubuntu 镜像,以及同一网络栈。
这项差异决定了适用场景。存储型 VPS 适合用作备份目标、媒体库、冷归档,以及所有写入一次后很少读取的数据存储。它不适合数据库,也不适合用户需要等待加载的页面,因为这些工作负载需要在约 1 毫秒内完成小型随机读取;低价容量之所以便宜,正是因为无法做到这一点。
定价页面上常见的方案名称
几乎所有服务商都会使用以下 4 个标签,但其中只有 2 个具有明确含义。
- Standard VPS。 通常提供 2 到 8 个 vCPU、2 GB 到 32 GB RAM,以及 20 GB 到 400 GB 的 NVMe 或 SATA SSD,这些存储设备直接位于宿主节点上。有些产品线的配置会高得多:截至 2026-10-17,Contabo 的 Cloud VPS 产品线最高提供 18 个 vCPU、96 GB RAM 和 600 GB SSD(或 300 GB NVMe)。
- Storage VPS。 存储容量从几百 GB 到 20 TB 或更高,通常使用机械 SATA 磁盘或大容量 SATA SSD;vCPU 为共享资源,通常为 1 到 4 个,并配备与存储容量相匹配的少量 RAM。入门方案的容量可能远低于 1 TB(截至 2026-10-17,Contabo 最小的 Storage VPS 提供 300 GB SSD),而最高配置可能提供更多核心(其 Storage VPS 50 提供 14 个 vCPU 和 50 GB RAM)。它的月费通常与小型标准方案相同。
- VDS。 是 virtual dedicated server 的缩写。这个词没有统一定义,下面的章节会说明应改为查看哪些信息。
- Block storage volume。 它根本不是一种方案,而是添加到现有 VPS 的网络附加磁盘,按每 GB 每月计费。4 种类型中,只有它可以在不迁移服务器的情况下扩容。
这些配置范围反映的是整个市场的常见情况,并不代表某一家公司的产品。方案标签只是一个类别,因此只能大致说明服务器运行在哪类硬件上。它不会说明磁盘类型、CPU 分配策略或带宽额度,而这些才是决定工作负载能否稳定运行的因素。
两种方案实际有哪些变化
磁盘类型和容量。 这就是两种产品的全部差异。标准方案通常使用 SSD,且很多情况下使用通过 PCI Express 总线连接的 NVMe 闪存;但“标准方案”并不保证一定是 NVMe。例如,Contabo 在 2026-10-17 列出的 Cloud VPS 6 至 Cloud VPS 18 方案使用 SSD 或容量更小的 NVMe 磁盘(Cloud VPS 6 为“200GB SSD / 100GB NVMe”),而入门级 Cloud VPS 4 仅列出“100 GB SSD”。存储方案则使用大容量机械硬盘阵列或高容量 SATA SSD。如果您不确定这些术语中哪些与您有关,请先阅读什么是 SSD VPS,以及它与旧式磁盘方案有何不同,然后阅读NVMe 与 SATA SSD 的实际差距。
CPU 配比。 存储方案每 TB 配备的 vCPU 更少,而且这些 vCPU 几乎总是与其他租户共享。这并不是缺点。备份目标大部分时间都在等待网络,因此不需要太多 CPU 核心。
RAM。 按价格计算,存储方案的 RAM 较少。这会在一个特定场景中造成影响:文件系统元数据。数百万个小文件需要内存来缓存目录和 inode;如果内存不足,每次列出目录都必须访问磁盘。
网络配额。 使用存储方案时,请仔细查看这一项。无法用于恢复的数据容量不算备份。请检查每月 TB 级传输配额和 Gbit/s 级端口速率,因为通过 1 Gbit/s 端口按线速恢复完整的 4 TB 数据大约需要九小时;如果端口是共享的,耗时会更长。
此图表背后的数据
[
{
"plan": "Storage VPS, HDD",
"usd_per_tb_month": 3
},
{
"plan": "Storage VPS, SATA SSD",
"usd_per_tb_month": 9
},
{
"plan": "Standard VPS, NVMe",
"usd_per_tb_month": 40
},
{
"plan": "Block storage add-on",
"usd_per_tb_month": 90
}
]这些是根据 2026 年 8 月多家提供商公开价格页面整理的近似值,并非任何一家公司的报价,而且价格会变化。长期稳定的是整体趋势。存储方案中,1 TB 机械硬盘空间每月约为 3 美元。标准方案中,同等容量的 NVMe 空间每月约为 40;网络附加块存储卷是 4 个选项中最贵的,价格为 90。如需了解月度账单由哪些部分构成,请参阅VPS 每月实际需要多少费用。
每 TB 价格与每核心价格为何呈相反趋势
存储节点是一台机箱,内置十二到十六块大容量磁盘,前端配备一颗性能一般的处理器。计算节点则相反:拥有多个核心、大容量 RAM,以及两到四块 NVMe 硬盘。供应商出售的是机箱中闲置的资源。因此,每 TB 价格低的方案,每核心价格通常较高;每核心价格低的方案,每 TB 价格通常较高。不存在两项价格都低的方案,因为没有机箱会按这种方式配置。
因此,对于“我应该购买哪一种”这个问题,诚实的答案通常是“同时购买两种”。使用一台小型 NVMe VPS 运行应用,再使用一台存储 VPS 保存备份,成本低于购买一台足够出色地完成两项工作的机器。如果确实需要一台机器同时完成这两项工作,您就已经超出 VPS 的适用范围:请参阅专用服务器何时优于 VPS。
廉价磁盘无法处理随机读取
此图表背后的数据
[
{
"disk": "7200 rpm SATA HDD",
"random_read_iops": "180",
"typical_latency_ms": 8.5
},
{
"disk": "SATA SSD",
"random_read_iops": "75,000",
"typical_latency_ms": 0.2
},
{
"disk": "NVMe SSD",
"random_read_iops": "600,000",
"typical_latency_ms": 0.08
}
]这些是数据表级别的数值,不是对任何服务商进行基准测试所得的结果。7200 rpm 磁盘每秒大约只能处理 180 次随机 4k 读取,因为磁头必须物理移动到对应磁道,然后等待盘片将扇区转到磁头下方;这一过程每次约需 8.5 ms。闪存无需移动部件,因此 SATA SSD 可达到约 75,000 IOPS,NVMe 设备在 0.08 ms 延迟下可达到约 600,000 IOPS。两者相差超过 3000 倍,再多的 RAM 或 CPU 也无法弥补这一差距。
顺序处理则完全不同,这也是存储方案仍然有价值的原因。单块机械磁盘仍可持续提供 150 MB/s 到 250 MB/s 的吞吐量,多块磁盘组成阵列后还会更高。在裸硬件上,这足以跑满 1 Gbit/s 端口,但虚拟机可能无法获得这一速度:服务商可以限制每台服务器的吞吐量。例如,Time4VPS 为其存储服务器说明了 50 MB/s 的 I/O 限制,约为 400 Mbit/s。在假设备份上传可达到完整网络速度之前,请先检查方案是否设置了 I/O 上限。实际数值还取决于阵列的构建方式,因为条带化会将数据分块并轮流写入多块磁盘,因此一个大型请求可以由多块磁盘同时处理:RAID 10 如何改变存储方案性能对此进行了介绍。
VDS 是什么意思?
通常这是一个营销标签。这个缩写有 3 种常见含义,而服务商很少说明具体指哪一种。有些服务商用 VDS 表示绑定或独占的 CPU 核心,因此不会有其他租户争用您的 CPU 时间。有些服务商用它表示 KVM 这类完整虚拟化,以区别于 LXC 或 OpenVZ 这类容器虚拟化;后者与宿主机共享内核。还有些服务商使用 VDS,除了这个名称听起来比 VPS 更强之外,没有任何实际含义。
您可以从服务器内部确认其中一部分。systemd-detect-virt 在完整虚拟机中会输出 kvm,在容器中会输出 lxc。使用容器意味着您无法加载内核模块,也无法运行自己的内核。CPU 是否独占则需要通过测量确认,具体使用下文的 steal time 检查。将套餐名称中的字母视为提示,将规格说明视为服务合同。
应查看哪些规格,而不是名称
- 容量旁边标注的词:
NVMe、SSD、SATA或HDD。如果页面任何位置都没有出现磁盘相关词语,应按符合该价格的最低成本硬件估算。 - 磁盘是节点本地磁盘,还是网络附加存储。网络附加存储会为每次请求增加延迟,并且可在节点故障后继续保留数据。本地磁盘速度更快,但会随节点一同失效。
- CPU 的描述:是“dedicated”或“pinned”,还是“shared”、“fair share”,或者完全没有说明。
- 方案中是否规定了 IOPS 或 MB/s 上限。若上限为 500 IOPS,磁盘类型几乎无关紧要。
- 每月传输额度和端口速率。这两项决定完整恢复需要多长时间。
- 快照、备份和额外 IP 地址是否包含在方案中,还是需要单独计费。
如何检查你实际获得的磁盘
先查看内核报告的信息,然后不要再盲目相信这些信息。
lsblk -d -o NAME,ROTA,SIZE,MODEL
df -h /
nproc
free -hROTA:旋转设备为 1,闪存设备为 0。在 VPS 中不要依赖此字段:virtio 磁盘通常无论底层设备是什么都会报告 ROTA=1,即使底层设备是 NVMe。这是因为 virtio-blk 驱动会将其创建的每个磁盘都标记为旋转设备,客户机无法看到物理磁盘。出于同样的原因,MODEL 为空。该标志描述的是虚拟设备声明的属性,而不是机架中实际旋转的设备,因此应改为进行测量。
sudo apt update && sudo apt install -y fio
fio --name=randread --filename=/var/tmp/fio.test --size=1G --bs=4k --rw=randread \
--ioengine=libaio --direct=1 --iodepth=32 --runtime=30 --time_based --group_reporting
rm -f /var/tmp/fio.test--direct=1 会绕过页缓存,因此测量的是磁盘而不是 RAM。需要读取的行是 read: IOPS=,其下方的 clat percentiles (usec) 表示分布情况。标准 NVMe 方案通常可达到每秒数万次 IOPS,99 分位延迟低于 1 毫秒。旋转磁盘存储方案通常只有每秒几百次 IOPS,99 分位延迟为两位数毫秒。如果 fio 报告无法加载 libaio 引擎,请使用 --ioengine=psync --iodepth=1,并预期结果更低,因为该引擎一次只发出一个请求。
vmstat 1 5
sudo apt install -y sysstat
iostat -x 1 5在 vmstat 中,st 列表示 steal time:你的 vCPU 已准备好运行,但主机将这些 CPU 周期分配给了其他客户机的时间占比。该数值持续高于 5,说明节点存在超售,这才是检验“独占 CPU”声明的实际方法。在 iostat -x 中,监控 %util、r_await 和 w_await。对于一次只处理一个请求的设备,例如单块旋转磁盘,如果 %util 接近 100 且 w_await 达到数十毫秒,说明磁盘已饱和。此时只有减少或重新组织 IO 的改动才会有效。对于并行处理请求的 RAID 阵列和 SSD,sysstat 手册警告称 %util 不能反映其性能上限,因此应参考 await 数值并运行 fio。有关闪存的专项检查,请深入阅读验证 NVMe 磁盘确实是 NVMe。
按工作负载选择
- 用作 restic、Borg 或 rsync 的备份目标。选择 Storage VPS,这正是它的设计用途。写入操作规模大且连续,重复数据删除在源计算机上完成,也不需要等待写入结果。有一点需要注意:
restic prune和restic check --read-data会分小块读取整个存储库,因此应为它们预留数小时,并按计划运行。请参阅 在 VPS 上运行 restic 备份。 - Immich 或 Jellyfin 媒体库。文件存储使用 Storage VPS,但需要注意 CPU。Immich 导入文件时会生成缩略图并运行机器学习任务,Jellyfin 播放时会进行转码。2 个共享 vCPU 处理首次导入 200 GB 照片的速度会非常慢。将数据库和缩略图缓存放在该服务器中速度最快的磁盘上。将 Immich 自托管为 Google Photos 替代方案介绍了容量规划。
- PostgreSQL 或 MySQL。选择标准 NVMe 套餐。使用默认的持久提交设置(PostgreSQL 中为
synchronous_commit = on)时,每次提交都必须等待fsync写入持久存储后事务才会返回。因此,提交延迟取决于磁盘延迟;索引查找则是随机读取一个页面(PostgreSQL 中为 8 kB,MySQL 的 InnoDB 默认值为 16 kB),而这正是机械磁盘最不擅长的操作。 - Web 应用、API 或控制平面。选择标准套餐。这些工作负载需要 CPU 核心和可预测的延迟,通常不需要超过 100 GB。
- CI 缓存或构件存储。这取决于文件大小。大型 tar 包从存储型套餐读取时表现良好,速度取网络速度和套餐 I/O 上限中的较低值。数十万个小文件组成的缓存由多个 runner 并行拉取,本质上属于随机 IO,性能会令人失望。
出现错误时的表现
故障不会立即出现。使用机械存储方案时,数据库在单个用户下运行正常,但在 10 个用户下就会崩溃。这是因为原本命中 RAM 的查询开始访问磁盘,每次操作的耗时也从微秒增加到毫秒。负载平均值不断升高,而 top 显示 CPU 大部分处于空闲状态,%wa 数值较高。这表示进程阻塞在等待磁盘,而不是执行计算。iostat -x 1 显示 %util 长时间接近 100。
PostgreSQL 会在自己的日志中明确记录这一点,因为从版本 15 开始,log_checkpoints 默认启用:
LOG: checkpoint complete: wrote 8241 buffers (2.5%); ... write=112.402 s, sync=9.318 s, total=121.914 s需要关注的是 sync= 数值。它表示 checkpoint 等待 fsync 返回所花费的时间。因此,如果该数值以秒为单位,说明磁盘写入速度跟不上数据库生成写入请求的速度。即使查询本身开销很低,客户端连接也会在这段时间内停顿。解决方法不是修改配置,而是将数据目录迁移到 NVMe,并继续使用该存储方案保存数据库备份。
FAQ
存储 VPS 是否比普通 VPS 慢?
对于随机读写,是的,而且差距很大。机械磁盘存储方案每秒只能处理几百个小型随机请求,每个请求约需 8 ms;NVMe 方案每秒可处理数万个请求,延迟远低于 1 ms。对于顺序传输,两者的差距要小得多,因为机械磁盘阵列在裸机硬件上可达到 150 MB/s 或更高,足以跑满 1 Gbit/s 端口,除非提供商对虚拟机的 I/O 速率设置了更低上限(Time4VPS 将其存储服务器限制为 50 MB/s)。在决定前,使用 fio --rw=randread --bs=4k --direct=1 测量您自己的性能。
可以在存储 VPS 上运行 PostgreSQL 吗?
可以启动,而且在工作集仍能放入 RAM 时可以正常运行。超过该容量后,在默认的同步提交模式下,每次提交都必须等待慢速磁盘上的 fsync。Postgres 会在 checkpoint complete 中以秒为单位记录 sync= 数值;此时 iostat -x 1 会显示 %util 接近 100,并伴随较高的 w_await。通常的方案是使用一台小型 NVMe VPS 运行数据库,再使用存储 VPS 作为转储文件的目标位置。
VDS 是否意味着我获得了专用硬件?
不一定。VDS 没有统一的标准含义。有些提供商用它表示已固定分配的 CPU 核心;有些用它表示完整的 KVM 虚拟化,而不是共享内核的容器;还有些提供商只是将其作为产品名称。运行 systemd-detect-virt,查看您使用的是 kvm 还是 lxc;再运行 vmstat 1 5 并观察 st 列,确认其他租户是否正在占用您的 CPU 周期。
如何判断 VPS 磁盘是否确实为 NVMe?
不要信任 lsblk -d -o NAME,ROTA,MODEL,因为 virtio 磁盘通常会报告为 ROTA=1,即使底层使用的是 NVMe;无论底层硬件是什么,型号字符串也可能为空。使用 --direct=1 运行 30 秒的 fio 随机读取测试,并查看 IOPS 和第 99 百分位延迟。每秒数百个 IOPS 且延迟达到两位数毫秒,说明使用的是机械磁盘阵列。每秒数万个 IOPS 且延迟低于 1 ms,说明使用的是闪存。