1. Overprovisioning là gì?
- Khi bạn mua SSD 256 GB, thực chất bên trong SSD có nhiều hơn 256 GB NAND.
- Ví dụ 256 GB SSD thường gắn chip NAND dung lượng 272 GB hoặc 288 GB.
- Phần dư (khoảng 7% – 28%) không công khai cho người dùng thấy, gọi là overprovisioning (vùng dự phòng ẩn).
2. Tại sao cần Overprovisioning?
Vì NAND flash có những giới hạn:
- Không thể ghi đè trực tiếp, phải erase cả block.
- GC (Garbage Collection) và Wear leveling, tức là cần chỗ trống để xoay dữ liệu valid.
- Cell NAND có tuổi thọ giới hạn (P/E cycle), nên cần vùng dự phòng để thay thế khi cell hỏng.
→ OP chính là đệm an toàn để SSD vẫn hoạt động nhanh, ổn định và bền.
3. Khi nào vùng OP được sử dụng?
3.1 Khi Garbage Collection (GC) chạy
- SSD cần block sạch để ghi dữ liệu mới.
- Nếu toàn bộ block user space đều bận (valid + invalid), SSD sẽ tạm mượn vùng OP để copy dữ liệu valid sang.
- Sau khi block cũ được erase, dữ liệu có thể trả về lại user space, OP lại sẵn sàng.
3.2 Khi Wear Leveling
- OP chứa block dự phòng để SSD luân chuyển dữ liệu, tránh mòn tập trung vào một số block.
3.3 Khi Bad Block xuất hiện
- Nếu cell NAND hỏng, controller sẽ thay block lỗi bằng block trong vùng OP.
3.4 Khi ổ gần đầy
- Nếu bạn ghi dữ liệu gần 100% dung lượng user space, SSD sẽ chỉ còn trông cậy vào OP để xoay vòng → hiệu năng giảm vì OP cũng bị khai thác hết công suất.
4. Overprovisioning và reserved space của SSD
SSD bị thiếu dung lượng so với thực tế chủ yếu là do đơn vị tính, đó là do khác biệt giữa GB (decimal) và GiB (binary) và vừa mất thêm một phần cho Overprovisioning.
Vì SSD còn mất thêm một phần cho Overprovisioning vì vậy ta cảm giác SSD hao hụt hơn nhiều so với HDD (chỉ khác nhau do đơn vị decimal và binary) nhất là với dòng enterprise vốn hy sinh dung lượng user để đổi lấy độ bền và hiệu năng.
Cách tính dung lượng (nhà sản xuất vs hệ điều hành)
- Nhà sản xuất SSD/HDD thường tính theo hệ thập phân (decimal):
- 1 GB = 1.000.000.000 bytes
- 1 TB = 1.000.000.000.000 bytes
- Hệ điều hành (Windows, Linux, macOS) thường tính theo nhị phân (binary, gọi là GiB/TiB):
- 1 GiB = 1.073.741.824 bytes
- 1 TiB = 1.099.511.627.776 bytes
Ví dụ:
- 2 TB (theo nhà sản xuất) = 2.000.000.000.000 bytes ≈ 1.81 TiB hiển thị trong Windows.
- 4 TB = 4.000.000.000.000 bytes ≈ 3.63 TiB.
→ Đây là lý do phổ biến nhất khiến bạn thấy đĩa thiếu dung lượng.
Ngoài sự khác nhau do đơn vị tính, SSD còn:
- Giữ lại một phần dung lượng làm overprovisioning (OP) cho GC, wear leveling, bad block replacement.
- Dung lượng này thường từ 7% đến 28% tùy SSD consumer hay enterprise.
Ví dụ:
- SSD 2 TB (raw NAND có thể là 2.2 TB) → hiển thị 2 TB decimal (≈1.81 TiB binary) → trong đó ~200 GB là OP ẩn.
- SSD enterprise (ví dụ Intel DC, Samsung PM series) có thể OP lên đến 28%, nên dung lượng user thấy còn ít hơn nữa.
4. Ví dụ minh họa
4.1 SSD 256 GB thực tế
- NAND thực: 272 GB.
- User thấy: 256 GB.
- OP: ~16 GB (ẩn).
4.2 Luồng ghi – xóa
- Bạn ghi đầy 200 GB dữ liệu.
- Xóa 20 GB file → OS báo TRIM, SSD đánh dấu invalid.
- GC sẽ copy 180 GB valid vào OP block để gom lại, erase block cũ.
- Block sạch trả về user space, OP lại rảnh.
5. Lời khuyên
- Luôn chừa dung lượng trống (10–20%) → để OP + free space hoạt động tốt.
- Với workload nặng (database, server), có thể cấu hình manual overprovisioning bằng cách tạo partition nhỏ hơn tổng dung lượng.
- Không nên ghi đầy 100%, vì khi OP cũng bị “vắt kiệt”, SSD sẽ chậm rõ rệt.
6. Kết luận
- Overprovisioning là phần NAND ẩn, không hiển thị cho người dùng, dùng cho quản lý nội bộ SSD: Garbage Collection, Wear leveling, Bad block replacement.
- Nó được sử dụng liên tục trong quá trình vận hành, đặc biệt khi ổ đầy hoặc có cell hỏng.
- OP chính là lý do tại sao SSD vẫn giữ được hiệu năng ổn định và tuổi thọ dài hơn.
Bạn có muốn mình vẽ sơ đồ block SSD có vùng OP (User space + OP hidden) để dễ hình dung hơn không?