存储VPS和普通VPS有什么区别?
存储VPS以TB容量换取更少的CPU和更慢的磁盘,标准VPS通常使用NVMe且容量约少20倍。本文比较关键规格,并说明备份、归档和数据库应如何选择。
存储 VPS 与普通 VPS:简短结论
存储 VPS 按 TB 销售,普通 VPS 则按 CPU 核心销售。存储方案提供数 TB 的慢速磁盘,但 CPU 份额较少。标准方案提供快速 NVMe(非易失性内存扩展)磁盘,其容量通常只有前者的二十分之一,同时以相同价格提供更多处理器资源和内存。除此之外,两种产品完全相同:使用相同的 hypervisor、相同的 root shell、相同的 Ubuntu 镜像和相同的网络栈。
这一项差异决定了适用场景。存储 VPS 适合用作备份目标、媒体库、冷归档,以及所有只写入一次且很少读取的数据存储。它不适合数据库,也不适合任何需要用户等待页面响应的应用,因为这类负载需要在约 1 毫秒内完成小块随机读取;低价大容量之所以便宜,正是因为它无法做到这一点。
定价页面上常见的计划名称
几乎所有服务商都会使用以下4种标签,但其中只有2种具有明确含义。
- 标准 VPS。 2到8个 vCPU、2 GB到32 GB RAM,以及20 GB到400 GB的 NVMe 或 SATA SSD。这些存储设备位于宿主节点本地。
- 存储 VPS。 1 TB到20 TB或更多存储空间,通常使用机械 SATA 硬盘或大容量 SATA SSD,并配备1到4个共享 vCPU和适量 RAM。其月费通常与小型标准计划相同。
- VDS。 virtual dedicated server(虚拟专用服务器)的缩写。这个词没有统一定义,下面的章节会说明应改为查看哪些信息。
- 块存储卷。 这根本不是一种计划,而是附加到现有 VPS 的网络连接磁盘,按每 GB 每月计费。在这4种选项中,只有它可以在不迁移服务器的情况下扩容。
以上范围是整个市场中常见的配置形式,不代表任何一家公司的具体方案。计划名称只是分类标签,因此只能大致说明服务器所在的硬件规格。它不会说明磁盘类型、CPU 分配策略或带宽额度,而这些才是决定工作负载能否稳定运行的具体参数。
两种方案实际有哪些差异
磁盘类型和容量。 这是两种产品的全部差异。标准方案使用通过 PCI Express 总线访问的 NVMe 闪存。存储方案使用大型机械硬盘阵列或高容量 SATA SSD。如果您不确定这些术语中哪些与您有关,请先阅读什么是 SSD VPS,以及它与旧式磁盘方案有何不同,然后阅读NVMe 与 SATA SSD 的实际差距。
CPU 配比。 存储方案每 TB 配置的 vCPU 更少,而且这些 vCPU 几乎总是与其他租户共享。这并不是缺陷。备份目标大部分时间都在等待网络,因此不需要太多核心。
RAM。 按价格计算,存储方案提供的 RAM 较少。这会在一个特定场景中造成影响:文件系统元数据。数百万个小文件需要内存来缓存目录和 inode;如果没有足够内存,每次列目录都必须重新访问磁盘。
网络配额。 使用存储方案时,请仔细阅读这一项。无法从中恢复数据的容量不算备份。请检查每月传输配额(TB)和端口速率(Gbit/s),因为通过 1 Gbit/s 端口以线路速率恢复完整的 4 TB 数据约需九小时;如果端口是共享的,所需时间会长得多。
The data behind this chart
[
{
"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
}
]这些是根据多家提供商在 August 2026 发布的公开价格页面整理出的四舍五入数据,不代表任何单一公司的报价,而且价格会变化。长期稳定的是整体趋势。存储方案中的机械硬盘每 TB 每月约需 3 美元。标准方案中的同等容量 NVMe 每 TB 每月约需 40,网络附加块存储卷在 4 个选项中最昂贵,每 TB 每月为 90。如需进一步了解月度账单由哪些部分构成,请参阅VPS 每月实际需要多少费用。
每 TB 价格与每核心价格为何呈相反趋势
存储节点是一台机箱,内置十二到十六块大容量磁盘,前端配备一颗性能一般的处理器。计算节点则相反:拥有多个核心、大容量 RAM,以及两到四块 NVMe 硬盘。供应商出售的是机箱中闲置的资源。因此,每 TB 价格低的方案,每核心价格通常较高;每核心价格低的方案,每 TB 价格通常较高。不存在两项价格都低的方案,因为没有机箱会按这种方式配置。
因此,对于“我应该购买哪一种”这个问题,诚实的答案通常是“同时购买两种”。使用一台小型 NVMe VPS 运行应用,再使用一台存储 VPS 保存备份,成本低于购买一台足够出色地完成两项工作的机器。如果确实需要一台机器同时完成这两项工作,您就已经超出 VPS 的适用范围:请参阅专用服务器何时优于 VPS。
廉价磁盘无法处理随机读取
The data behind this chart
[
{
"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 设备可达到约 600,000 IOPS,延迟为 0.08 ms。这一差距超过 3000 倍,增加 RAM 或 CPU 都无法弥补。
顺序操作完全不同,这也是存储方案仍然有意义的原因。单块机械磁盘仍可持续传输 150 MB/s 到 250 MB/s,多块磁盘组成阵列后速度更高。这足以占满 1 Gbit/s 端口,因此备份上传可以达到完整网络速度,磁盘不会成为瓶颈。具体数值还取决于阵列的构建方式,因为条带化会将一个请求分散到多块磁盘: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=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 方案通常能达到每秒数万次 I/O,99 百分位延迟低于 1 毫秒。旋转存储方案通常只有每秒几百次 I/O,99 百分位延迟为两位数毫秒。如果 fio 报告无法加载 libaio engine,请使用 --ioengine=psync --iodepth=1,并预期更低的数值,因为该 engine 一次只发出一个请求。
vmstat 1 5
sudo apt install -y sysstat
iostat -x 1 5在 vmstat 中,st 列表示 steal time:你的 vCPU 已准备好运行,但 host 将这些 CPU 周期分配给其他 guest 的时间占比。稳定高于 5 表示该节点超额分配,这是检验“专用 CPU”声明的实际方法。在 iostat -x 中,监控 %util、r_await 和 w_await。如果 %util 接近 100,且 w_await 达到几十毫秒,说明磁盘是瓶颈,任何应用调优都无法解决问题。有关闪存设备的专项检查,请参阅验证 NVMe 磁盘确实是 NVMe,其中的介绍更深入。
按工作负载选择
- 用于 restic、Borg 或 rsync 的备份目标。 选择 Storage VPS。这正是它的设计用途。写入通常较大且连续,去重在源服务器上完成,也无需等待写入结果。需要注意:
restic prune和restic check --read-data会以小块读取整个仓库,因此应为它们预留数小时,并按计划运行。请参阅将 restic 备份运行到 VPS。 - Immich 或 Jellyfin 媒体库。 文件可存放在 Storage VPS,但要注意 CPU。Immich 在导入时会生成缩略图并运行机器学习任务,Jellyfin 会在播放时进行转码。两个共享 vCPU 处理首次导入的 200 GB 照片时会非常缓慢。将数据库和缩略图缓存放在服务器中速度最快的磁盘上。将 Immich 自托管为 Google Photos 的替代方案介绍了容量规划。
- PostgreSQL 或 MySQL。 选择标准 NVMe 方案。每次提交都会产生一个
fsync,事务返回前它必须写入持久存储,因此提交延迟就是磁盘延迟;而索引查找是一次随机 8 kB 读取,这正是机械磁盘最不擅长的操作。 - Web 应用、API 或控制平面。 选择标准方案。这些工作负载需要 CPU 核心数和可预测的延迟,而且通常不需要超过 100 GB。
- CI 缓存或构建产物存储。 取决于文件大小。大型 tarball 可从 Storage 方案以完整网络速度流式传输。由多个 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 端口。请先使用 fio --rw=randread --bs=4k --direct=1 测量您自己的性能。
我可以在存储型 VPS 上运行 PostgreSQL 吗?
可以启动,而且在工作集仍能放入 RAM 时可以正常运行。超过这个范围后,每次提交都必须等待慢速磁盘上的 fsync。Postgres 会在 checkpoint complete 中以秒为单位记录该 sync= 指标,而 iostat -x 1 会显示接近 100 的 %util,并伴随较高的 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,并且型号字符串为空。运行 30 秒的 fio 随机读取测试,使用 --direct=1,然后查看 IOPS 和第 99 百分位延迟。数百 IOPS 且延迟达到两位数毫秒,说明使用的是机械硬盘阵列。每秒数万次 IOPS 且延迟低于 1 ms,说明使用的是闪存。