Skip to content
VDS · 备份与磁盘

磁盘速度:基准与突发

磁盘速度限制如何按档位计算,为什么需要 30 秒突发,如何测量真实速度,以及达到限制时该怎么办。

更新于 2026年8月23日

VPS 上的磁盘是 NVMe,但速度受套餐层级限制,以免单台机器耗尽节点的共享资源。理解这些数字,您就不会再问“为什么 CPU 空闲时数据库却很慢”。

如何计算

写入基线为每核心 60 MB/s,但不低于 60、不高于 400 MB/s。读取是写入基线的两倍。超过基线后,可在 30 秒内突发至其三倍的值。

套餐核心数写入基线读取基线写入突发(30 秒)
VDS-1160 MB/s120 MB/s180 MB/s
VDS-22120 MB/s240 MB/s360 MB/s
VDS-34240 MB/s480 MB/s720 MB/s
VDS-46360 MB/s720 MB/s1080 MB/s
VDS-58400 MB/s800 MB/s1200 MB/s
VDS-610400 MB/s800 MB/s1200 MB/s

突发正好覆盖它该覆盖的场景:应用启动、解压归档、执行迁移。而持续的写入流——复制数 GB 数据、构建、扫描大型数据库——则以基线速度运行。

如何测量

sudo apt install -y fio
fio --name=w --rw=write --bs=1M --size=2G --numjobs=1 \
    --runtime=60 --time_based --end_fsync=1 --directory=/var/tmp

最初几秒会显示突发速度,随后速度会降到基线——这是正常且符合预期的现象,并非故障。

不安装软件包的快速粗略检查:

dd if=/dev/zero of=/var/tmp/testfile bs=1M count=2048 oflag=direct
rm /var/tmp/testfile

不要在工作时间对生产机器运行磁盘测试。测试会真正占满全部可用带宽,在这几分钟内您的网站响应会需要数秒。也不要留下测试文件:在 40 GB 磁盘上留下两 GB 是相当可观的一部分,参见磁盘空间。

如何判断磁盘是瓶颈

sudo apt install -y sysstat
iostat -x 2 5
vmstat 2 5

关注两个指标:%util 接近 100,以及 await 达到数十毫秒,说明存在磁盘队列。在 vmstat 中迹象相同——b 列(等待的进程)不断增长,而 CPU 使用率百分比很低。

另一个症状:load average 很高,而 CPU 几乎空闲。Linux 的负载平均值也会计入等待磁盘的进程。

具体是谁在写入:

sudo iotop -o -b -n 3

如果已经撞上瓶颈该怎么办

  • 在时间上错开。 复制、镜像构建、报表——安排在夜间,且不要同时进行。参见计划任务。
  • 限制后台任务。 对所有不急的任务使用 rsync --bwlimit、nice -n 19 ionice -c3 <command>。
  • 减少写入。 限制日志大小,关闭应用中过多的详细输出,如果缓存能挺过重启,就把它移到内存(tmpfs)中。
  • 调优数据库。 在 PostgreSQL 和 MySQL 中,写入的绝大部分是事务日志。为缓冲区分配更多内存意味着更少的磁盘访问。
  • 升级套餐。 基线随核心数增长:从 VDS-1 到 VDS-2 会翻倍。套餐升级只能向上进行,并需为已付费周期的剩余天数补差价。

常见错误

  • 用 dd 测速却不加 oflag=direct。 数据会留在页缓存中,得出的数字偏高。
  • 把突发速度当作持续速度。 最初 30 秒很快,之后就是基线——这是设计使然。
  • 把 swap 放在活动磁盘上并换入其中。 内存不足时,swap 会让磁盘成为瓶颈:最好限制容器,参见资源限制。