SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor · 更新于 2026-10-28

VPS、VM 和 VPC 有什么区别?一文讲清

VM 是运行独立内核的虚拟机技术,VPS 是按月租用的服务器产品,VPC 则是云账户中的私有网络。本文还解释容器型 VPS 与 VM 的区别,以及如何用 systemd-detect-virt 判断类型。

VPS、VM 和 VPC 一段话说明

VM(虚拟机)是由软件构成的计算机:虚拟机监控程序将一台物理服务器划分为多个相互独立的机器,每台机器运行自己的内核。VPS(虚拟专用服务器)是以产品形式出租给您的服务器,包含操作系统,通常提供 root 访问权限,并按月收费。大多数 VPS 套餐使用虚拟机,但有些主机商也会以相同名称销售共享主机内核的容器。VPC(虚拟私有云)根本不是服务器。它是您在云账户中定义的私有网络,资源可以放入其中。VM 是通常采用的技术。VPS 是产品。VPC 是产品周围的网络。

其中两个词描述的是机器,第三个描述的是网络。几乎所有混淆都源于这种差异,因为人们会把它们当作同一货架上的三个产品来比较。

什么是 VM

虚拟机监控程序是模拟硬件的层。它为每个客户机提供虚拟 CPU、一部分内存、虚拟磁盘和虚拟网卡,并阻止客户机相互访问。KVM、Xen、Hyper-V 和 VMware ESXi 是服务器上常见的虚拟机监控程序。现代虚拟机监控程序依赖 CPU 虚拟化扩展(Intel VT-x、AMD-V),因此客户机指令可以在真实 CPU 上以接近原生的速度运行,而不必通过解释执行。

对系统管理员而言,关键在于内核。VM 会启动自己的内核,因此您可以选择发行版、加载内核模块,并设置只对该 VM 生效的 sysctl 值。这与容器(LXC、Docker)不同。容器共享主机内核,只能获得独立的进程和文件视图。

在任何 Linux 主机上,使用一条命令即可查看结果。

systemd-detect-virt

kvm 表示您运行在 KVM 虚拟机监控程序上的虚拟机中。lxc 或 openvz 表示您运行在其他人的内核上的容器中。none 表示未检测到受支持的虚拟化。如果缺少该命令,lscpu | grep -i hypervisor 可以显示虚拟机监控程序信息,但无法识别容器。

VPS 是什么

VPS 是围绕隔离服务器构建的商业产品,最常见的底层形式是 VM。其底层技术是虚拟化,而 “VPS” 这个名称还包含了使产品可销售的配套内容:可重新安装的 OS 镜像、IP 地址、带宽配额、控制面板、月费,以及主机宕机时可以联系的技术支持人员。“Private” 用于将其与共享主机区分开来;在共享主机中,数百个站点共用一个操作系统和一套 PHP 配置。

由于 VPS 是产品名称而非技术术语,它并不总是表示完整的 VM。有些低价套餐使用同一个名称销售容器;许多此类套餐底层使用的容器平台 OpenVZ,将其容器描述为“也称为虚拟专用服务器”。当你第一次需要使用内核时,这种差异就会显现出来。在基于容器的套餐中,内核属于主机,你无权修改它。如果无法在容器的模块目录中找到该模块,sudo modprobe wireguard 就会失败,即使主机已经加载了该模块;加载缺失的模块还需要具备修改主机内核的权限。如果主机内核不支持 WireGuard,创建接口(ip link add dev wg0 type wireguard)就会因 RTNETLINK answers: Operation not supported 失败。随后,如果已安装用户空间实现,wg-quick 会回退到该实现(默认使用 wireguard-go),并输出“缺少 WireGuard 内核模块。正在回退到速度较慢的用户空间实现。”这种回退仍要求容器获准使用 TUN 设备,而并非所有主机都允许这样做;如果没有用户空间二进制文件,wg-quick 会因该错误停止。在 KVM 套餐中,内核属于你:你可以安装 WireGuard,在模块尚未加载时加载它,配置接口,然后建立隧道。如果你计划在服务器内部运行 Docker、VPN、自定义内核或自行创建的虚拟机,请在购买前确认虚拟化类型。在 VPS 内运行 虚拟机 需要 KVM,并且主机已启用嵌套虚拟化;符合这些条件的套餐就更少了。

VPC 是什么

VPC 是云服务商内部的软件定义网络。在大多数云平台上,您需要使用 CIDR 表示法为它指定一个地址范围,例如 10.0.0.0/16,然后从中划分子网(Google Cloud 不使用整个网络的地址范围,而是为每个区域子网分别分配地址范围)。您可以为其中的资源关联路由表,并在资源前配置防火墙规则(安全组)。VPC 不包含 CPU、内存或磁盘,也没有可登录的对象。删除 VPC 中的所有服务器后,VPC 仍会保留为空,通常也不会产生费用。

VPC 提供的是私有地址。位于同一 VPC 中的两台服务器可以通过云服务商内部网络中的 10.0.1.15 等地址通信,因此流量不会经过公网,也不会按互联网出口流量计费。这样,数据库只需监听其私有地址,完全无需向公网暴露端口。

ip -4 addr show

10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16 中的地址属于私有地址。仅有公网地址并不意味着服务器可从互联网访问:路由和防火墙规则也必须允许访问。

VPC 会让我的服务器变为私有吗?

不会。这是对这 3 个术语最容易造成严重后果的误解。VPC 负责控制路由和地址分配。它不会决定互联网是否可以访问某台机器。如果实例具有公网 IP、其子网可以路由到互联网,并且安全规则允许来自 0.0.0.0/0 的 22 端口访问,那么无论是否使用 VPC,它的暴露程度都与其他服务器完全相同。默认 VPC 通常已经配置好了通往互联网的路由。VPC 提供的隔离能力是:完全不给资源分配公网地址,并通过规则指定哪些子网可以与哪些子网通信。

这 3 个术语还分别表示不同类型的隔离。VM 隔离的是计算资源:hypervisor 会分隔 CPU 时间和内存,因此其他 guest 无法读取你的 RAM。对于磁盘和网络,这种隔离较弱;同一主机上的繁忙邻居仍可能降低你的性能。基于容器的 VPS 共享同一个 kernel,因此 kernel 级漏洞会成为共享风险。VPC 完全不隔离计算资源,只负责规划网络。

定价模型

VPS 通常按固定配置收取固定月费。您在月初前就能知道账单金额,磁盘和流量额度也包含在其中。对于小型工作负载,这种可预测性是人们选择 VPS 而不是云实例的主要原因。

云 VM 按用量计费。实例按小时或按秒计费,磁盘、快照、负载均衡器和出站流量分别计费。VPC 本身通常免费,但附加的托管组件并不免费:允许私有实例访问互联网的 NAT gateway 按小时计费,其流量收费方式取决于服务商。AWS 会按 NAT gateway 处理的每个 GB 收费,而 OVHcloud 表示其 Public Cloud Gateway 按小时和用量收费,且包含流量。在 AWS 中,跨可用区的流量也会计费;Azure 则不对同一区域内各可用区之间的流量收费。截至 October 27, 2026,AWS VPC guide 表示每个区域都有一个 default VPC;AWS VPC FAQ 则表示,在 March 18, 2013 之前创建的账户,可以在已启用且此前未启动 EC2 实例或配置 ELB、RDS、ElastiCache 或 Redshift 资源的区域中使用 default VPC。删除的 default VPC 可以重新创建,但无法恢复。Google Cloud 会为每个新项目提供一个 default network,除非管理员将其关闭;如果您不选择现有网络,Azure 会在创建新 VM 的同时创建一个 virtual network。无论哪种情况,您的云 VM 都位于这些网络之一中,无论您是否主动选择。

实际需要哪一种

  • 为网站、应用、游戏服务器或 VPN 使用一台服务器:选择 VPS。新 VPS 上线后的 前十分钟 比套餐名称更重要。
  • 需要通过私有地址互相访问的多台服务器:选择 VPC,或选择 VPS 提供商以其他名称提供的私有网络功能。
  • 必须能够承受整个数据中心不可用的工作负载:选择包含多个可用区的云平台,也就是在 VPC 中运行 VM。
  • 需要完全控制内核,或需要在其上运行自己的 hypervisor:选择基于 KVM 的 VPS(如果要运行 hypervisor,还需启用嵌套虚拟化)或独立服务器。比较套餐时,同时检查套餐背后的 磁盘类型。

大多数单服务器项目都不需要 VPC。VPS 附带的私有网络功能足以为少量机器提供相同的能力。

FAQ

VPS 与 VM 是一回事吗?

通常是,但并非总是如此。基于 KVM、Xen 或 VMware 构建的每个 VPS 都是虚拟机,但并非每台虚拟机都是 VPS,因为在笔记本电脑上通过 VirtualBox 运行的 VM 并不是任何服务商提供的产品。反过来也一样,并非每个 VPS 都是 VM:基于 OpenVZ 或 LXC 的方案是共享主机内核的容器,而 OpenVZ 本身将其容器称为虚拟专用服务器。在依赖内核访问权限之前,请通过 systemd-detect-virt 进行确认。

可以在 VPC 中放置 VPS 吗?

通常不行,因为 VPC 是某个云服务商提供的网络构造;AWS 还支持在同一组织内跨账户共享其子网。独立服务商提供的 VPS 位于该服务商自己的网络中。如果需要在两者之间建立私有链路,应在它们之间创建 VPN 隧道,然后 VPS 通过该隧道访问私有子网。

为什么我的云账单高于配置相当的 VPS?

实例价格只是其中一部分。在按量计费的云环境中,存储、快照、出站流量、负载均衡器和 NAT 网关都会单独计费,仅 NAT 网关每月的费用就可能高于一台小型 VPS。固定价格的 VPS 会将磁盘和流量额度计入同一个价格,因此相同的工作负载通常在 VPS 上看起来更便宜。

如何检查服务器是否具有真正的内核访问权限?

运行 systemd-detect-virt 并读取输出。kvm、xen 或 vmware(较新的 EC2 实例上也可能是 amazon)表示你拥有自己的内核,modprobe 可以向其中加载模块。lxc、lxc-libvirt 或 openvz 表示你共享主机内核;加载模块需要主机内核权限,而 /proc/sys 下的命名空间设置(包括网络设置)在主机允许时仍可配置。第二种确认方法是运行 uname -r;在容器方案中,该命令经常会报告一个你的发行版从未发布过的内核版本。

这篇文章对您有帮助吗?

#vps#vm#vpc#cloud#basics