存储
什么是NVMe?
NVMe is a storage protocol that connects solid-state drives directly over PCIe, reaching roughly 500,000 random IOPS with sub-100-microsecond latency. Its deep parallel queue model is architecturally different from SATA, which inherits a single-queue design intended for mechanical disks.
为什么NVMe很重要
其深度并行队列模型在架构上不同于SATA,后者继承了为机械磁盘设计的单队列设计。对于基于数据库的应用程序,随机IOPS的差距是用户实际感受到的区别。
NVMe的实际应用
当你配置 NVMe 实例时,你首先会关注的是存储工作负载的队列深度。SATA 后端的服务器在高负载下最多只能达到几千 IOPS;NVMe 可以维持约 500,000 个随机 IOPS,延迟低于 100 微秒。将 sysbench 和 fio 测试改为测量 randread 和 randwrite,而不是顺序吞吐量,并观察数据库提交的差异。如果你针对 SAS 磁盘的块大小进行优化或忽略 I/O 调度器设置,你就会浪费硬件的大部分能力。如果搞错了,在处理真正触及磁盘的工作负载时,你的延迟会百倍增加。
人们对NVMe常见的误解
人们认为 NVMe 只是更快的 SSD,所以他们基于 GB 大小而不是 IOPS 来选择计划。纠正:NVMe 的差异在于并行队列模型,而不仅仅是原始带宽。巨大的 SATA 驱动器仍然会在单队列随机 I/O 上成为瓶颈;较小的 NVMe 驱动器在数据库工作负载上会击败它。大小很重要,但对于延迟敏感的工作,IOPS 是你忽视就会付出代价的指标。
NVMe —— 常见问题
NVMe 实现多少随机 IOPS?
大约 500,000 个随机 IOPS,根据已发布的定义。这大约是典型 SATA SSD 的一千倍。低于 100 微秒的延迟意味着对于小型的随机读写,你不是在等待磁盘机械部件或单个 SATA 队列——控制器和 PCIe 总线是唯一的路径。
网站需要 NVMe 吗?
只有当您的工作负载以随机I/O为主时(如数据库或缓存),才需要NVMe。静态文件分发或低流量网站无法察觉NVMe与SATA之间的差异。这种差距在持续混合工作负载下才会显现,此时SATA的单队列会饱和,延迟飙升。如果您运行Postgres或Redis,NVMe将保持您的尾部延迟较低。
NVMe在哪些地方出现
- NVMe 比 SATA SSD 快多少? 随机 IOPS 大约快五倍——约 50 万对 9 万——延迟大约低五倍,低于 0.1 毫秒对约 0.5 毫秒。顺序吞吐量高六到十倍。对于数据库型应用,随机 IOPS 的差距是你实际能感受到的。…
- VPS 的价格是多少? 一个可用的 VPS 起价约为每月 4 美元,包含 1 vCPU、1 GB 内存和 20 GB NVMe 存储。配备专用核心、8 GB 内存和 160 GB 存储的生产级实例,月费约为 34 美元。带有数 TB 存储的大容量套餐起价接近 22 美元。较长的计费周期可降低 5–22% 的费用。…
- 最便宜但实际可用的 VPS 是什么? 约 4 美元/月即可获得基于真实 KVM 虚拟化的 1 vCPU、1 GB 内存和 20 GB NVMe。这足以运行 WireGuard VPN、DNS 解析器、Tor 中继、小型机器人或静态网站。低于此价格,你几乎肯定买到的是一个超售的容器,而非虚拟机。…
- VPS 的 NVMe 与 SSD 与 HDD NVMe 随机 IOPS 约 500,000,延迟低于 100 微秒;SATA SSD 约 90,000 IOPS;7,200 RPM HDD 约 150。对于任何使用数据库的场景,这一差距就是快速应用与缓慢应用的区别。HDD 仅在一件事上仍合理:按 TB 计价的批量顺序存储。…
- 在VPS上运行生产级Docker Compose技术栈 一个可行的生产级堆栈包括用于自动TLS的Caddy、你的应用程序、PostgreSQL和Redis,全部定义在一个Compose文件中,带有命名卷和健康检查。在8 GB内存和NVMe上,这能处理大量流量,而每次部署前做快照可使回滚成为两分钟的操作。…
- 我可以在VPS上运行Docker吗? 在 KVM VPS 上,可以,没有任何限制——从官方仓库安装 Docker Engine,一切都能正常运行,包括 buildx、Compose 和 Docker-in-Docker。在 OpenVZ 或基于 LXC 的虚拟服务器上,Docker 要么无法运行,要么需要不安全的宿主机配置,因为它需要共享内核虚拟…