VPS NVMe vs SSD vs HDD: đo cùng một workload thật

Chia sẻ bài viết

Mục lục
VPS NVMe vs SSD vs HDD: đo cùng một workload thật

Trả lời nhanh: Cùng một bộ việc thật, import database 2 GB, npm ci một dự án ~1.400 gói, dựng trang WordPress không cache, ba loại ổ cho ba đẳng cấp: HDD (100-200 IOPS) đo bằng phút và làm mọi thứ cùng ì; SSD SATA (~80-100K IOPS) đưa mọi thứ về chục giây; NVMe U.2 enterprise (400-700K IOPS, latency dưới trăm micro-giây) rút tiếp 3-7 lần nữa và, quan trọng hơn, giữ nguyên phong độ khi nhiều việc chạy đồng thời. Bài kèm lệnh để bạn tự tái hiện phép đo, vì số của chính mình luôn đáng tin nhất.

Bảng thông số nói NVMe nhanh hơn SATA "gấp nhiều lần", nhưng nhiều lần ở việc gì? Bài này thay thông số bằng ba việc mà ai vận hành web/dev cũng làm hằng tuần, chạy trên ba nền ổ, và phân tích vì sao khoảng cách giữa các loại ổ nở ra khi máy bận, đúng lúc bạn cần nó nhất.

Tóm tắt nhanh
  • Ba bài test đời thật: import SQL 2 GB · npm ci 1.400 gói · dựng trang WP không cache
  • HDD thua vì cơ khí; SATA thua NVMe vì giao thức và hàng đợi, không phải vì chip nhớ
  • Khác biệt lớn nhất không ở con số đơn lẻ mà ở độ ổn định khi tải đồng thời
  • Kèm lệnh tái hiện, chạy trên máy đang thuê để biết mình thật sự đứng ở đâu

Vì sao chọn ba bài test này

Chúng đại diện ba mẫu I/O phổ biến nhất của người dùng VPS: import database = ghi tuần tự lớn xen fsync liên tục (mẫu của mọi lần restore backup, migrate); npm ci = ghi ngẫu nhiên hàng vạn file nhỏ (mẫu của deploy, CI, agent AI cài môi trường); dựng trang WordPress không cache = đọc ngẫu nhiên nhỏ rải rác (mẫu của mọi truy vấn database khi cache trượt). Ổ nào thắng cả ba mẫu này thắng gần như mọi việc bạn giao cho VPS.

Kết quả điển hình - và cách đọc

  • Import SQL 2 GB: HDD 15-30 phút (mỗi fsync chờ đĩa quay); SATA 2-4 phút; NVMe enterprise ~40-90 giây. Khoảng cách chính từ độ trễ fsync, thứ ổ enterprise có tụ điện xử gần như tức thì.
  • npm ci ~1.400 gói: HDD 8-15 phút (mỗi file nhỏ một lần seek cơ khí); SATA 60-120 giây; NVMe 20-40 giây. Đây là phép nhân hằng ngày của dev và agent AI.
  • Trang WP không cache: HDD 2-6 giây TTFB; SATA 300-800ms; NVMe 80-200ms. Chuỗi vài chục query nhỏ, mỗi query vài lượt đọc, cộng dồn độ trễ ổ thành cảm giác trang.

Con số dao động theo cấu hình cụ thể, điều không dao động là thứ bậc và bậc độ lớn giữa ba loại. Lưu ý đọc quảng cáo: các hãng khoe "tốc độ 550 MB/s vs 7.000 MB/s" là đọc tuần tự file lớn, mẫu I/O hiếm gặp nhất trong cả ba bài test trên.

Vũ khí giấu của NVMe: đông người không loạn

Chạy từng bài test, SATA thua NVMe 3-7 lần. Chạy cả ba cùng lúc (kịch bản máy thật: web phục vụ khách + deploy + cron backup trùng giờ), khoảng cách nở thành 10-20 lần: SATA/AHCI có một hàng đợi 32 lệnh, việc xếp hàng sau chờ việc trước; NVMe có 64K hàng đợi sâu 64K, các dòng I/O chạy song song không chen nhau. Với người vận hành, đây mới là khác biệt đáng tiền: máy NVMe lúc bận vẫn là chính nó; máy SATA lúc bận là một con máy khác hẳn.

Tự tái hiện trên máy của bạn - 10 phút

# 1) mau fsync/ghi (import database gia lap nhanh):
fio --name=w --filename=/tmp/t --size=1G --rw=write --bs=1M --fsync=32 --runtime=30 --time_based | grep -E 'WRITE|lat'
# 2) mau van-file-nho (npm ci gia lap):
fio --name=r --filename=/tmp/t --size=1G --rw=randwrite --bs=4k --iodepth=1 --runtime=30 --time_based | grep -E 'IOPS|lat'
# 3) mau doc ngau nhien (trang dong):
fio --name=q --filename=/tmp/t --size=1G --rw=randread --bs=4k --iodepth=32 --numjobs=4 --runtime=30 --time_based --group_reporting | grep -E 'IOPS|lat'
rm /tmp/t

Ba con số + latency của chúng là 'phiếu khám sức khỏe ổ đĩa' của máy đang thuê. Đối chiếu bảng trong bài: rơi vào hạng nào, bạn biết ngay mình đang trả tiền cho hạng đó thật không.

Tự tái hiện phép đo trên máy của bạn

apt install -y fio sysbench

# 1. Doc ghi ngau nhien khoi nho, dung nhat voi co so du lieu va web
fio --name=ngaunhien --ioengine=libaio --direct=1 --bs=4k --rw=randrw --rwmixread=70 \
    --iodepth=32 --numjobs=4 --size=2G --runtime=300 --time_based --group_reporting

# 2. Doc ghi tuan tu khoi lon, dung voi sao luu va truyen tep
fio --name=tuantu --ioengine=libaio --direct=1 --bs=1M --rw=read \
    --iodepth=8 --numjobs=1 --size=4G --runtime=120 --time_based --group_reporting

# 3. Do tre, con so ma nguoi dung cam nhan duoc
fio --name=dotre --ioengine=libaio --direct=1 --bs=4k --rw=randread \
    --iodepth=1 --numjobs=1 --size=1G --runtime=120 --time_based --group_reporting

# QUAN TRONG: chay it nhat 5 phut. Nhieu o chay nhanh 30 giay dau
# roi tut han khi bo dem day.
Chỉ số nên nhìnVì sao
IOPS đọc ghi ngẫu nhiênQuyết định tốc độ cơ sở dữ liệu và trang web động
Độ trễ ở mức phần trăm thứ 99Quan trọng hơn trung bình, vì đây là trải nghiệm tệ nhất mà người dùng gặp
Độ ổn định sau 5 phútỔ chia sẻ nặng hoặc bị bóp sẽ tụt rõ ở phút thứ hai tới thứ ba
Băng thông tuần tựChỉ quan trọng với sao lưu và truyền tệp lớn

Lợi thế ít nói tới: đông người không loạn

Khác biệt lớn nhất không nằm ở con số khi một mình chạy, mà ở chỗ khi nhiều tiến trình cùng đọc ghi. Ổ dùng giao thức cũ có hàng đợi lệnh hẹp, nên khi mười tiến trình cùng yêu cầu thì chúng phải xếp hàng. Ổ dùng giao thức mới có hàng đợi rất sâu và nhiều hàng song song, nên độ trễ giữ ổn định khi tải tăng.

Hệ quả thực tế: máy chủ chạy nhiều dịch vụ cùng lúc, hoặc trang web có nhiều khách đồng thời, cảm nhận khác biệt rõ hơn nhiều so với con số đo một tiến trình đơn lẻ.

Khi nào ổ chậm vẫn đủ dùng

  • Lưu trữ tệp ít truy cập: kho sao lưu, kho ảnh cũ, nhật ký lưu trữ dài hạn.
  • Trang web tĩnh có lượt truy cập thấp, nhất là khi đã có mạng phân phối đứng trước.
  • Không đủ dùng khi: có cơ sở dữ liệu, có nhiều tệp nhỏ, hoặc có nhiều tiến trình đọc ghi cùng lúc.

Câu hỏi thường gặp

VPS còn ai dùng HDD nữa không mà so?

Vẫn còn ở phân khúc siêu rẻ và các gói lưu trữ dung lượng lớn, và nhiều 'SSD' giá lạ thực chất là storage lai có tầng HDD. Biết số của HDD giúp bạn nhận diện khi phép đo trả về con số hạng đó.

SATA SSD có đủ cho web nhỏ không?

Đủ cho web nhẹ ít khách, như bài NVMe là gì đã nói thẳng. Vấn đề là giá NVMe hiện chỉ nhỉnh hơn chút: cùng tầm tiền, chọn hạng dưới không còn lý do kinh tế.

Vì sao tôi đo NVMe mà số thấp hơn bảng nhiều?

Ba nghi phạm theo thứ tự: gói VPS bị giới hạn IOPS (hỏi nhà cung cấp), storage mạng đội lốt NVMe (latency sẽ cao, vài ms), hoặc máy đang bận I/O bởi hàng xóm. Bài 'thuê VPS NVMe 5 bẫy' có quy trình xử từng ca.

RAID 10 ảnh hưởng kết quả thế nào?

Đọc được cộng lực từ nhiều ổ (nhanh hơn ổ đơn), ghi nhân đôi sang gương (vẫn rất nhanh trên NVMe), cộng thêm an toàn dữ liệu. Bài NVMe trong RAID 10 của cụm này mổ riêng cơ chế đó.

Hạ tầng NVMe Enterprise của TND
VPS ổ Enterprise U.2 NVMe, CPU xung cao, đặt tại Việt Nam
Ba bài test trong bài chính là điều kiện nghiệm thu của TND VPS NVMe: Enterprise U.2 NVMe RAID 10 cho mẫu fsync, vạn-file và đọc ngẫu nhiên đều ở hạng đầu bảng, nhận máy cứ chạy fio đối chiếu. Kèm Xeon Platinum xung cao để phần CPU của các việc đó không thành nút nghẽn mới. Bàn giao 5 phút.
Dùng thử VPS NVMe, bàn giao trong 5 phút

Bài viết liên quan