SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor

存储VPS和普通VPS有什么区别?

存储VPS以TB容量换取更少的CPU和更慢的磁盘,标准VPS通常使用NVMe且容量约少20倍。本文比较关键规格,并说明备份、归档和数据库应如何选择。

存储型 VPS 与普通 VPS:简短结论

存储型 VPS 按 TB 销售,普通 VPS 则按 CPU 核心销售。存储型方案以更低成本提供多得多的磁盘空间,但磁盘通常更慢,而且每 TB 分配的 CPU 更少。标准方案提供快速 SSD,通常是 NVMe(非易失性内存主机控制器接口),容量往往只有前者的二十分之一,同时以相同价格提供更多处理器资源和内存。两种产品的其他配置相同:使用同一 hypervisor、同一个 root shell、同一个 Ubuntu 镜像,以及同一网络栈。

这项差异决定了适用场景。存储型 VPS 适合用作备份目标、媒体库、冷归档,以及所有写入一次后很少读取的数据存储。它不适合数据库,也不适合用户需要等待加载的页面,因为这些工作负载需要在约 1 毫秒内完成小型随机读取;低价容量之所以便宜,正是因为无法做到这一点。

定价页面上常见的方案名称

四种标签几乎涵盖所有服务商,但只有其中两种具有明确含义。

  • 标准 VPS。 通常提供 2 到 8 个 vCPU、2 GB 到 32 GB RAM,以及 20 GB 到 400 GB 的 NVMe 或 SATA SSD。磁盘位于宿主节点本地。有些方案的规格远高于此范围:截至 2026-10-12,Contabo 的 Cloud VPS 产品线最高提供 18 个 vCPU、96 GB RAM 和 600 GB SSD。
  • 存储 VPS。 存储容量从几百 GB 到 20 TB 甚至更高,通常使用机械 SATA 磁盘或大容量 SATA SSD;vCPU 通常为共享资源,一般提供 1 到 4 个,并配备与容量相匹配的适量 RAM。入门方案的容量可能远低于 1 TB(截至 2026-10-12,Contabo 最小的 Storage VPS 提供 300 GB SSD),最大方案可以提供更多核心(其 Storage VPS 50 提供 14 个 vCPU 和 50 GB RAM)。它的月费通常与小型标准方案相同。
  • VDS。 是 virtual dedicated server 的缩写,即虚拟专用服务器。这个术语没有统一定义,下一节将说明应改为查看哪些信息。
  • 块存储卷。 这根本不是一种方案,而是附加到现有 VPS 的网络连接磁盘,按每 GB 每月计费。四者中,只有它可以在不迁移服务器的情况下扩容。

这些范围代表市场上的常见形态,不对应任何一家公司的具体产品。方案标签只是一个分类,因此只能大致说明服务器所在的硬件节点。它不会说明磁盘类型、CPU 分配策略或带宽配额,而这些才决定工作负载能否稳定运行。

两种方案实际有哪些变化

磁盘类型和容量。 这就是两种产品的全部区别。标准方案通常使用 SSD,很多情况下是通过 PCI Express 总线连接的 NVMe 闪存,但“标准方案”并不保证使用 NVMe。例如,Contabo 的 Core VPS 标注为“with SSD storage”,而“PCIe Gen 4 NVMe storage”则属于单独的 Performance VPS 产品线。存储方案使用大型机械硬盘阵列或大容量 SATA SSD。如果您不确定这些术语中哪些与您有关,请先阅读什么是 SSD VPS,以及它与旧式磁盘方案有何不同,然后阅读NVMe 与 SATA SSD 的实际差距。

CPU 配比。 存储方案每 TB 配备的 vCPU 更少,而且这些 vCPU 几乎总是与其他租户共享。这并不是缺点。备份目标大部分时间都在等待网络,因此不需要太多 CPU 核心。

RAM。 存储方案的 RAM 相对于价格通常较少。这会在一个特定场景中造成影响:文件系统元数据。数百万个小文件需要内存来缓存目录和 inode;没有足够内存时,每次列目录都必须重新读取磁盘。

网络配额。 使用存储方案时,请仔细阅读这一项。无法从中恢复数据的容量不算备份。请检查每月 TB 级传输配额和 Gbit/s 级端口速度,因为通过 1 Gbit/s 端口按线路速率恢复完整的 4 TB 数据大约需要 9 小时;如果端口是共享的,耗时会更长。

图表Typical advertised disk cost per TB per month, August 2026
此图表背后的数据
[
  {
    "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。

廉价磁盘无法处理随机读取

图表Random 4k read figures by disk class, vendor datasheet order of magnitude
此图表背后的数据
[
  {
    "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 -h

ROTA 为 1 表示旋转磁盘,为 0 表示闪存磁盘。在 VPS 中不要依赖此值:virtio 磁盘通常会报告 ROTA=0,无论底层实际使用什么设备,因为 hypervisor 会提供通用块设备,客户机看不到物理磁盘。MODEL 出于相同原因为空。该标志表示 hypervisor 声明的类型,而不是机架中实际旋转的磁盘类型,因此应改为进行测量。

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,99th percentile 低于 1 毫秒。旋转磁盘存储方案通常只能提供几百 IOPS,99th percentile 为两位数毫秒。如果 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 时运行正常。超过 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=0,且型号字符串为空。使用 --direct=1 运行 30 秒的 fio 随机读取测试,然后查看 IOPS 和第 99 百分位延迟。每秒数百次 IOPS 且延迟达到两位数毫秒,说明使用的是机械磁盘阵列。每秒数万次 IOPS 且延迟低于 1 ms,说明使用的是闪存。

#storage-vps#vps-types#nvme#备份#vds