VPS, VM và VPC khác nhau thế nào?
VM là công nghệ, VPS là VM được bán thành gói thuê, còn VPC là mạng riêng trong cloud. Xem từng thuật ngữ nghĩa là gì và bạn cần loại nào.
VPS, VM và VPC trong một đoạn
VM (virtual machine) là một máy tính được tạo bằng phần mềm: hypervisor chia một server vật lý thành nhiều máy độc lập, mỗi máy chạy kernel riêng. VPS (virtual private server) là một trong các máy ảo đó, được cho bạn thuê như một sản phẩm, kèm hệ điều hành, quyền truy cập root và mức giá hàng tháng. VPC (virtual private cloud) hoàn toàn không phải là một server. Đây là mạng riêng do bạn định nghĩa bên trong tài khoản cloud, nơi bạn đặt các resource vào. VM là công nghệ. VPS là sản phẩm. VPC là mạng bao quanh sản phẩm.
Hai trong ba thuật ngữ này mô tả một máy. Thuật ngữ còn lại mô tả một mạng. Hầu hết sự nhầm lẫn xuất phát từ điểm khác biệt này, vì mọi người so sánh chúng như thể đây là ba sản phẩm cùng nằm trên một kệ.
VM là gì
Hypervisor là lớp giả lập phần cứng. Nó cấp cho mỗi guest một CPU ảo, một vùng bộ nhớ, một ổ đĩa ảo và một card mạng ảo, sau đó ngăn các guest nhìn thấy nhau. KVM, Xen, Hyper-V và VMware ESXi là những hypervisor phổ biến trên server. Các hypervisor hiện đại sử dụng các phần mở rộng ảo hóa của CPU (Intel VT-x, AMD-V), vì vậy instruction của guest chạy trên CPU thật với tốc độ gần bằng native thay vì bị diễn giải.
Đối với sysadmin, kernel là phần quan trọng. VM khởi động kernel riêng, nên bạn có thể chọn distribution, nạp kernel module và đặt các giá trị sysctl chỉ áp dụng cho VM của bạn. Điều này khác với container (LXC, Docker), vì container dùng chung kernel của host và chỉ có không gian nhìn riêng đối với process và file.
Bạn có thể xem thông tin này trên mọi máy Linux bằng một lệnh.
systemd-detect-virtkvm có nghĩa là bạn đang chạy trên một máy ảo dùng hypervisor KVM. lxc hoặc openvz có nghĩa là bạn đang ở trong container trên kernel của người khác. none có nghĩa là bạn sở hữu máy vật lý. Nếu thiếu command này, lscpu | grep -i hypervisor sẽ hiển thị thông tin tương tự từ các CPU flag.
VPS là gì
VPS là lớp sản phẩm thương mại bao quanh một VM. Công nghệ bên dưới là virtualisation. Từ “VPS” bổ sung những thứ giúp nhà cung cấp bán được dịch vụ: OS image có thể cài lại, địa chỉ IP, hạn mức bandwidth, control panel, giá theo tháng và một địa chỉ liên hệ để gửi email khi host gặp sự cố. Từ “Private” dùng để phân biệt VPS với shared hosting, nơi hàng trăm website dùng chung một operating system và một cấu hình PHP.
Vì VPS là tên sản phẩm chứ không phải thuật ngữ kỹ thuật, VPS không phải lúc nào cũng là full VM. Một số gói giá rẻ cung cấp container nhưng vẫn dùng cùng tên này. Sự khác biệt thể hiện rõ khi bạn cần kernel. Với gói dựa trên container, sudo modprobe wireguard không chạy được và trả về RTNETLINK answers: Operation not supported hoặc modprobe: FATAL: Module wireguard not found, vì kernel thuộc về host và bạn không được phép thay đổi nó. Với gói KVM, module được load và tunnel hoạt động. Nếu bạn dự định chạy Docker, VPN, custom kernel hoặc các virtual machine của riêng mình bên trong server, hãy kiểm tra loại virtualisation trước khi mua. Chạy virtual machine bên trong VPS cần KVM với nested virtualisation được bật trên host. Do đó, số gói phù hợp còn ít hơn.
VPC là gì
VPC là một mạng do phần mềm định nghĩa bên trong nhà cung cấp cloud. Bạn gán cho VPC một dải địa chỉ ở dạng ký hiệu CIDR, chẳng hạn 10.0.0.0/16, rồi chia dải này thành các subnet, gắn các bảng định tuyến và đặt các quy tắc firewall (security group) trước các tài nguyên bên trong. VPC không có CPU, memory hay disk. Bạn không thể đăng nhập vào VPC. Xóa toàn bộ server trong một VPC chỉ để lại VPC trống, thường không phát sinh chi phí.
VPC cung cấp địa chỉ private. Hai server trong cùng một VPC có thể giao tiếp qua các địa chỉ như 10.0.1.15 trên hạ tầng nội bộ của nhà cung cấp. Network traffic đó không đi qua internet công cộng và không bị tính phí internet egress. Khi đó, database chỉ cần listen trên địa chỉ private, không có port nào bị expose ra bên ngoài.
ip -4 addr showĐịa chỉ nằm trong 10.0.0.0/8, 172.16.0.0/12 hoặc 192.168.0.0/16 là địa chỉ private. Một địa chỉ public trên cùng server có nghĩa là server đó có thể được truy cập trực tiếp từ internet, bất kể nó nằm trong network object nào.
VPC có làm server của tôi riêng tư không?
Không. Đây là cách hiểu sai tốn kém nhất trong ba thuật ngữ này. VPC kiểm soát định tuyến và địa chỉ mạng. VPC không quyết định Internet có thể truy cập một máy hay không. Nếu một instance có public IP và các security rule cho phép port 22 từ 0.0.0.0/0, instance đó bị lộ đúng như mọi server khác, dù có VPC hay không. VPC cung cấp khả năng không cấp public address cho tài nguyên, cùng với các rule xác định subnet nào được phép liên lạc với subnet nào.
Ba thuật ngữ này cũng chỉ các kiểu cô lập khác nhau. VM cô lập phần compute: hypervisor tách riêng CPU time và memory, nên guest khác không thể đọc RAM của bạn. Mức cô lập này yếu hơn đối với disk và network, vì một neighbour bận trên cùng host vẫn có thể làm giảm tốc độ của bạn. VPS dựa trên container dùng chung một kernel, nên lỗi ở kernel là rủi ro chung. VPC hoàn toàn không cô lập phần compute. VPC chỉ định hình network.
Mô hình tư duy về giá
VPS thường được bán với mức giá cố định hàng tháng cho một máy cố định. Bạn biết hóa đơn trước khi tháng bắt đầu, còn dung lượng disk và hạn mức transfer đã được tính trong đó. Tính dễ dự đoán này là lý do chính khiến nhiều người chọn VPS thay vì cloud instance cho workload nhỏ.
Cloud VM được tính theo mức sử dụng. Instance được tính phí theo giờ hoặc theo giây, còn disk, snapshot, load balancer và outbound traffic được tính riêng. Bản thân VPC thường miễn phí, nhưng các thành phần managed gắn với nó thì không: NAT gateway cho phép các instance private truy cập internet được tính phí theo giờ và theo gigabyte, còn traffic giữa các availability zone cũng bị tính phí. Tính đến tháng 7 năm 2026, các cloud lớn vẫn tự động đặt mọi instance mới vào một VPC mặc định, nên bạn đang sử dụng một VPC dù có yêu cầu hay không.
Bạn thực sự cần loại nào
- Một server cho website, app, game server hoặc VPN: VPS. Mười phút đầu tiên trên VPS mới quan trọng hơn tên gọi của gói.
- Một số server cần kết nối với nhau qua các địa chỉ private: VPC, hoặc tính năng private network mà nhà cung cấp VPS gọi bằng tên khác.
- Một workload phải tiếp tục hoạt động ngay cả khi cả datacentre ngừng hoạt động: cloud có nhiều zone, tức là các VM nằm trong một VPC.
- Toàn quyền kiểm soát kernel hoặc chạy hypervisor riêng bên trên: VPS dựa trên KVM hoặc dedicated server. Trong lúc so sánh, hãy kiểm tra loại disk phía sau gói dịch vụ.
Hầu hết dự án chỉ dùng một server không cần VPC. Tính năng private network đi kèm VPS đáp ứng cùng mục đích cho một số ít máy.
FAQ
VPS có giống với VM không?
VPS là một VM được nhà cung cấp bán cho bạn. Mọi VPS chạy trên KVM, Xen hoặc VMware đều là máy ảo, nhưng không phải mọi máy ảo đều là VPS, vì VM chạy trên laptop của bạn bằng VirtualBox không phải sản phẩm của nhà cung cấp nào. Một số gói giá rẻ được gọi là VPS thực chất là container thay vì VM đầy đủ, vì vậy hãy xác nhận bằng systemd-detect-virt trước khi phụ thuộc vào quyền truy cập kernel.
Tôi có thể đặt một VPS bên trong VPC không?
Thông thường là không, vì VPC là cấu trúc của một cloud provider và chỉ chứa các resource được tạo trong cùng account đó. VPS từ một provider độc lập nằm trên network của provider đó. Nếu cần liên kết riêng giữa hai bên, bạn phải tạo một VPN tunnel giữa chúng. Sau đó VPS có thể truy cập các private subnet thông qua tunnel này.
Tại sao hóa đơn cloud của tôi cao hơn VPS tương đương?
Giá instance chỉ là một phần chi phí. Storage, snapshot, outbound traffic, load balancer và NAT gateway được tính thành các khoản riêng trong cloud tính phí theo mức sử dụng. Chỉ riêng NAT gateway có thể có chi phí hàng tháng cao hơn một VPS nhỏ. VPS có giá cố định gộp disk và hạn mức transfer vào cùng một mức giá. Vì vậy, cùng một workload thường có vẻ rẻ hơn khi chạy trên VPS.
Làm cách nào để kiểm tra server của tôi có quyền truy cập kernel thực sự?
Chạy systemd-detect-virt và đọc kết quả. kvm, xen hoặc vmware nghĩa là bạn có kernel riêng và modprobe hoạt động. lxc, lxc-libvirt hoặc openvz nghĩa là bạn dùng chung kernel của host. Các command nạp module hoặc ghi vào /proc/sys sẽ thất bại với Operation not supported. Một cách xác nhận khác là uname -r. Trên gói container, command này thường báo cáo phiên bản kernel mà distribution của bạn chưa từng phát hành.