SSD Nodes Learn 8GB RAM — $66/năm
Hướng dẫn Matt ConnorBởi Matt Connor

VPS SSD là gì? Giải thích lưu trữ flash

VPS SSD dùng flash thay cho ổ đĩa quay, giúp tăng IOPS và giảm độ trễ. Tìm hiểu giới hạn của chữ SSD và 3 câu hỏi cần hỏi trước khi mua.

VPS SSD là gì?

VPS SSD là máy chủ riêng ảo sử dụng ổ đĩa dựa trên bộ nhớ flash thay vì ổ cứng quay. SSD là viết tắt của solid state drive: thiết bị lưu trữ được xây dựng từ các chip flash NAND và không có bộ phận chuyển động bên trong. VPS là viết tắt của virtual private server: một phần tài nguyên được cô lập trên máy chủ vật lý, chạy hệ điều hành riêng và được bán cho bạn như một máy chủ hoàn chỉnh. Kết hợp hai khái niệm này, tên gọi đó chỉ cam kết một điều. Khi máy chủ đọc một block dữ liệu, không có bộ phận cơ học nào phải di chuyển trước.

Đó là toàn bộ định nghĩa. Phần còn lại nói về những gì tên gọi này không đề cập, vì cụm từ "SSD hosting" trên trang giá cho biết rất ít về storage array phía sau.

Nếu bạn vẫn đang tìm hiểu VPS khác máy ảo thông thường như thế nào, sự khác nhau giữa VPS, VM và VPC là trang bạn nên đọc trước.

Vì sao nhà cung cấp quảng cáo tốc độ lưu trữ thay vì dung lượng lưu trữ

Trang gói dịch vụ liệt kê số lõi CPU, bộ nhớ, dung lượng đĩa và băng thông, sau đó thêm một từ về đĩa nhưng từ đó không chỉ dung lượng. Nhà cung cấp làm vậy vì từ nhiều năm nay, dung lượng không còn là con số đáng chú ý nhất của storage. Hai con số quyết định cảm nhận khi dùng server là IOPS (số thao tác input/output mỗi giây) và latency (thời gian một thao tác trả về).

Nguyên nhân nằm ở khác biệt cơ học. Hard disk lưu dữ liệu trên các platter quay và đọc dữ liệu bằng head gắn trên một cần chuyển động. Để truy cập một block ở vị trí khác trên platter, cần phải seek, sau đó disk phải quay cho đến khi sector cần đọc nằm dưới head. Ở tốc độ 7200 vòng/phút, nửa vòng quay mất trung bình khoảng 4 ms, còn seek làm tăng thêm vài ms. Flash không có cần chuyển động và platter, nên thao tác đọc chỉ là một lần tra cứu bằng điện và trả về trong vài chục microsecond.

ChartRandom 4k read, published device class specifications rather than VPS measurements
The data behind this chart
[
  {
    "device": "7200 rpm hard disk",
    "random_read_iops": "125",
    "read_latency_ms": 8
  },
  {
    "device": "SATA SSD",
    "random_read_iops": "90,000",
    "read_latency_ms": 0.15
  },
  {
    "device": "NVMe SSD",
    "random_read_iops": "600,000",
    "read_latency_ms": 0.08
  }
]

Hard disk 7200 rpm có thông số khoảng 125 lần đọc random 4k mỗi giây, và mỗi lần đọc mất khoảng 8 ms để trả về. NVMe drive có thông số gần 600,000 lần đọc tương tự, với thời gian khoảng 0.08 ms cho mỗi lần. SATA SSD nằm giữa hai loại này, với thông số gần 90,000. Hãy hiểu các con số này theo bậc độ lớn, không phải theo phần trăm cải thiện.

Có 2 cảnh báo về dữ liệu này. Đây là thông số được công bố cho toàn bộ drive thuộc từng loại, nên đó là số liệu từ datasheet của nhà sản xuất, không phải số liệu đo trên VPS. Và bạn không bao giờ được dùng toàn bộ một drive: volume của bạn chỉ là một phần của một device hoặc một phần của một array, nằm cạnh volume của các khách hàng khác trên cùng phần cứng.

Hai cột này cũng trả lời 2 câu hỏi khác nhau, nên hãy đọc chúng cùng nhau. Latency là thời gian bạn phải chờ cho một thao tác. IOPS là số thao tác mà drive có thể xử lý đồng thời. Flash đạt IOPS cao nhờ tính song song, vì nhiều chip flash trả lời nhiều request cùng lúc trong khi một queue sâu giữ cho chúng luôn bận. Một chương trình single-threaded chỉ gửi một lần đọc, chờ lần đọc đó hoàn tất rồi mới gửi lần tiếp theo sẽ không bao giờ đạt mức cao nhất trong biểu đồ đó. Nó sẽ chịu ảnh hưởng chủ yếu bởi cột latency.

SSD, NVMe, SATA và PCIe: bốn thuật ngữ ở bốn lớp khác nhau

Người mua thường nhầm các thuật ngữ này vì mỗi thuật ngữ mô tả một phần khác nhau của hệ thống.

  • SSD là phương tiện lưu trữ. Thuật ngữ này có nghĩa là dữ liệu nằm trên các chip flash NAND thay vì trên các đĩa từ.
  • SATA là một giao diện, được thiết kế trong thời kỳ ổ đĩa cơ phổ biến. Tốc độ tối đa là 6 Gbit/s, tương đương khoảng 550 MB/s thông lượng thực tế, và hàng đợi lệnh chứa được 32 lệnh đang chờ xử lý.
  • NVMe (non-volatile memory express) là một giao thức được thiết kế riêng cho flash. Giao thức này hỗ trợ nhiều hàng đợi, mỗi hàng đợi chứa hàng nghìn lệnh, nên nhiều CPU core có thể giao tiếp với ổ đĩa cùng lúc mà không phải dùng chung một hàng đợi hẹp.
  • PCIe (peripheral component interconnect express) là bus mà NVMe chạy trên đó, cùng loại lane mà card đồ họa cắm vào.

Vì vậy, cả SATA SSD và NVMe SSD đều lưu dữ liệu trên flash. Điểm khác nhau là giao diện mà chúng sử dụng. SATA SSD vẫn nhanh hơn nhiều so với mọi hard disk, nhưng hàng đợi 32 lệnh giới hạn lượng công việc song song mà nó có thể xử lý, trong khi xử lý song song chính là điểm mạnh của flash. Ổ nào đáng để trả thêm tiền phụ thuộc vào workload của bạn, và quyết định chọn NVMe hay SATA SSD sẽ phân tích vấn đề này đầy đủ.

Flash cục bộ hay storage gắn qua network?

Hai mô hình rất khác nhau thường được bán dưới cùng một tên.

Storage cục bộ nghĩa là các ổ flash nằm bên trong cùng host vật lý với VPS của bạn. Request đi qua PCIe trong một máy rồi quay lại ngay, nhờ đó latency duy trì ở mức hàng chục microsecond.

Storage gắn qua network nghĩa là virtual disk của bạn nằm trên một storage cluster riêng, thường là Ceph hoặc SAN (storage area network), và mọi thao tác đọc, ghi đều phải đi qua network để truy cập cluster đó. Nhà cung cấp thường gọi mô hình này là "cloud block storage" hoặc "elastic volumes". Flash là thật. Network trip cũng là thật và được cộng vào từng operation, vì vậy latency tăng lên mức vài trăm microsecond hoặc vài millisecond, thay vì vài chục microsecond.

Không có lựa chọn nào là sai. Network storage vẫn hoạt động khi một host bị hỏng, vì dữ liệu chưa từng nằm trên host đó: nhà cung cấp có thể khởi động server của bạn trên phần cứng khác và disk sẽ đi theo server. Local NVMe nhanh hơn nhưng gắn với một máy vật lý, vì vậy lỗi phần cứng ở máy đó sẽ buộc bạn restore từ backup. Hãy hỏi plan sử dụng loại nào. Gần như không ai hỏi.

Khác biệt thể hiện như thế nào trên một server thực tế

Công việc trên server chủ yếu là các thao tác đọc và ghi ngẫu nhiên nhỏ, không phải truyền dữ liệu tuần tự dài. Vì vậy, chỉ số MB/s trong nội dung marketing là con số ít hữu ích nhất trên trang.

  • Commit cơ sở dữ liệu. Cơ sở dữ liệu yêu cầu độ bền dữ liệu sẽ gọi fsync khi transaction commit, rồi chờ drive xác nhận dữ liệu đã thực sự được lưu. Trên hard disk, thời gian chờ này tính bằng mili giây, khiến một cơ sở dữ liệu nhỏ chỉ đạt vài trăm commit mỗi giây. Trên flash, cùng thời gian chờ đó chỉ là một phần của mili giây. Đây là nơi chênh lệch lớn nhất, dù bạn chạy PostgreSQL, MySQL hay SQLite làm cơ sở dữ liệu production.
  • Cài đặt package. apt install giải nén hàng nghìn file nhỏ và đồng bộ chúng xuống disk trong quá trình thực hiện. Hầu như không có thao tác nào trong số đó là tuần tự, nên tốc độ bị giới hạn bởi IOPS.
  • Pull container image. docker pull tải các layer đã nén qua network, sau đó giải nén chúng thành hàng nghìn file nhỏ. Việc download bị giới hạn bởi network. Việc giải nén bị giới hạn bởi disk. Trên volume chậm, bạn sẽ phải chờ chủ yếu ở bước giải nén.
  • Boot và reboot. Quá trình khởi động đọc kernel và initramfs, sau đó đọc hàng trăm unit file và shared library nhỏ nằm rải rác trên volume.

Không thao tác nào trong số đó là đọc tuần tự một lượng dữ liệu lớn. Một volume stream được 500 MB/s nhưng chỉ xử lý 3,000 IOPS vẫn sẽ cho cảm giác chậm trong lúc chạy docker compose pull, vì thời gian chờ được tính cho từng file, không phải cho từng megabyte.

Vì “cloud hosting SSD” trên trang giá gần như không cho bạn biết gì

Từ này chỉ mô tả loại phương tiện lưu trữ. Nó không cho biết ổ đĩa sử dụng interface nào, cũng không cho biết ổ đĩa đó có nằm cùng máy với server của bạn hay không. Nó cũng không cho biết giới hạn mà gói dịch vụ của bạn được phép đạt tới.

Giới hạn này quan trọng nhất nhưng lại ít được công bố nhất. Nhà cung cấp giới hạn IOPS và throughput trên mỗi volume, vì một host phục vụ nhiều khách hàng và một khách hàng không bị giới hạn có thể làm các khách hàng khác thiếu tài nguyên. Giới hạn vài nghìn IOPS trên phần cứng có khả năng đạt hàng trăm nghìn IOPS là điều bình thường và minh bạch, nhưng thường không xuất hiện trong mô tả gói dịch vụ. Hai gói đều có thể ghi “SSD”, trong đó một gói dùng NVMe cục bộ không có giới hạn trên mỗi volume, còn gói kia dùng volume trên cluster dùng chung và bị giới hạn ở 3,000 IOPS.

Giới hạn có hai dạng. Giới hạn duy trì là mức trần cố định và không thay đổi. Giới hạn burst cung cấp baseline thấp cùng các credit cho phép bạn vượt mức đó trong một khoảng thời gian. Credit sẽ được nạp lại khi volume không hoạt động. Giới hạn burst có thể cho kết quả rất tốt trong bài kiểm tra kéo dài 5 phút, rồi giảm về baseline giữa lúc import database hoặc restore dữ liệu lớn. Nếu nhà cung cấp công bố một con số lớn, hãy hỏi bạn được phép duy trì tốc độ đó trong bao lâu.

Cách kiểm tra VPS thực sự cung cấp cho bạn những gì

Từ bên trong guest, bạn chỉ thấy những gì hypervisor cung cấp.

lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotational

Thay vda bằng tên thiết bị lsblk được in ra cho disk của bạn. ROTA và file rotational đọc giá trị 0 khi kernel được thông báo rằng thiết bị không có bộ phận quay, và 1 khi kernel được thông báo ngược lại. Virtual disk đặt cờ này dựa trên thông tin hypervisor quảng bá, nên cờ mô tả thiết bị ảo chứ không phải phần cứng vật lý bên dưới. MODEL thường trống đối với virtio disk như vda, hoặc chứa chuỗi chung như QEMU HARDDISK trên bộ điều khiển SATA được mô phỏng. Guest không được thiết kế để nhìn thấy array của host, và thực tế cũng không nhìn thấy.

Vì vậy, hãy xem cờ này là một gợi ý và đo các thông số còn lại. Chạy bài test random 4k bằng fio trên một file trong volume, với queue depth mà ứng dụng của bạn thực sự sử dụng, và chạy đủ lâu để tiêu hết burst credit. Benchmark VPS đúng cách có các lệnh fio cùng những lỗi phổ biến tạo ra các con số có lợi một cách giả tạo.

Ba câu hỏi cần hỏi nhà cung cấp trước khi mua

  1. Storage nằm cục bộ trên hypervisor hay được gắn qua network? Câu trả lời xác định độ trễ tối thiểu của bạn và cho biết dữ liệu sẽ bị ảnh hưởng thế nào khi một physical host gặp lỗi. Nhà cung cấp trả lời rõ ràng câu này là nhà cung cấp đã xem xét vấn đề.
  2. Volume của tôi có giới hạn IOPS là bao nhiêu? Hãy yêu cầu một con số. “Unlimited” và “enterprise grade” không phải là con số. Nếu thực sự không có giới hạn, hãy hỏi điều gì ngăn một tenant khác trên cùng host chiếm toàn bộ array trong thời gian họ backup.
  3. Giới hạn đó là sustained hay burst? Nếu có burst, hãy hỏi baseline và thời lượng burst. Baseline là mức mà nightly job của bạn sẽ phải làm việc trong thực tế, nên đó là con số cần dùng để lập kế hoạch.

Flash có bị hao mòn không, và đó có phải vấn đề của bạn không?

Các ô flash chỉ hỗ trợ một số chu kỳ ghi hữu hạn. Vì vậy, các ổ đĩa công bố mức độ bền dưới dạng TBW (terabyte đã ghi) hoặc DWPD (số lần ghi toàn bộ ổ đĩa mỗi ngày). Ổ đĩa phân bổ việc ghi đồng đều trên các ô. Cơ chế này gọi là wear levelling. Ổ đĩa cũng giữ lại các block dự phòng để thay thế những ô bị lỗi. Trên VPS, việc hao mòn là vấn đề của nhà cung cấp. Họ theo dõi các bộ đếm SMART trên ổ đĩa của mình và thay phần cứng trước khi đạt giới hạn độ bền. Vấn đề của bạn tồn tại từ trước khi có flash. Ổ đĩa không phải là bản sao lưu. Redundancy bên dưới volume của bạn cũng không phải bản sao lưu, vì nó sao chép thao tác xóa giống như sao chép dữ liệu.

Điều bạn thực sự đánh đổi là giá trên mỗi gigabyte. Flash có giá trên mỗi gigabyte cao hơn spinning disk. Vì vậy, ở cùng một mức giá, gói SSD thường cung cấp ít dung lượng hơn gói hard disk. Nếu cần nhiều dung lượng để lưu media hoặc archive, hãy giữ volume nhanh ở mức nhỏ và đặt phần dữ liệu lớn ở nơi rẻ hơn. Đây cũng là cách phù hợp để giữ bản sao lưu bên ngoài server. Để biết storage nằm ở đâu trong tổng chi phí, VPS thực sự tốn bao nhiêu phân tích từng khoản.

FAQ

SSD VPS có giống NVMe VPS không?

Mọi NVMe VPS đều là SSD VPS, vì ổ NVMe sử dụng bộ nhớ flash. Chiều ngược lại thì không đúng. Gói được quảng cáo là "SSD" có thể sử dụng SATA SSD. Đây là flash chạy qua giao diện được thiết kế cho ổ đĩa cơ, có hàng đợi 32 lệnh và tốc độ tối đa gần 550 MB/s. Cả hai đều nhanh hơn nhiều so với hard disk. Nếu khác biệt này ảnh hưởng đến workload của bạn, hãy hỏi nhà cung cấp gói đó sử dụng loại nào thay vì chỉ dựa vào tên gói.

SSD VPS có làm website của tôi nhanh hơn không?

Nó chỉ làm các thao tác với disk nhanh hơn. Một trang thực hiện nhiều truy vấn database trong mỗi request sẽ nhanh hơn, vì các truy vấn và thao tác commit đó là các I/O ngẫu nhiên nhỏ. Một trang được phục vụ từ memory hoặc cache không truy cập disk khi gửi response, nên tốc độ thay đổi rất ít. Hãy đo phần nào của request đang chậm trước khi trả tiền để nâng cấp storage.

Làm cách nào kiểm tra VPS của tôi thực sự sử dụng SSD storage?

Từ bên trong guest, bạn không thể xác minh phần cứng vật lý. lsblk -d -o NAME,ROTA hiển thị thông tin mà virtual device quảng cáo, nhưng hypervisor quyết định giá trị đó. Vì vậy, 0 chỉ là dấu hiệu tham khảo, không phải bằng chứng. Cách kiểm tra thực tế là đo hiệu năng: chạy fio với workload đọc ngẫu nhiên 4k trong vài phút rồi xem latency được báo cáo. Độ trễ đọc ngẫu nhiên ở mức một chữ số mili giây cho thấy đang dùng spinning disk hoặc network volume bị quá tải. Độ trễ ở mức hàng chục microsecond cho thấy đang dùng flash cục bộ.

Network attached SSD storage có kém hơn local NVMe không?

Nó chậm hơn trên mỗi thao tác và có kiểu lỗi khác. Network round trip được thêm vào mỗi lần đọc và ghi, nên latency cao hơn dù cả hai đều dùng flash. Đổi lại, dữ liệu của bạn không nằm trên một host vật lý duy nhất. Vì vậy, khi host gặp lỗi, volume không bị ảnh hưởng theo, đồng thời provider cũng dễ thực hiện snapshot và live migration hơn. Hãy chọn flash cục bộ cho database nhạy với latency. Hãy chọn network storage khi việc bảo toàn volume quan trọng hơn vài microsecond.

#vps#ssd#nvme#lưu trữ#hosting-basics