Storage: HDD và SSD¶
Hai loại ổ lưu trữ phổ biến nhất: HDD (đĩa từ) và SSD (flash), nguyên lý hoạt động, giao tiếp và đánh đổi.
Bản ôn tập
Trang này là bản ôn tập ngắn gọn, sẽ mở rộng sau. Vị trí của storage trong phân cấp bộ nhớ nằm ở Memory Hierarchy.
1. HDD (Hard Disk Drive)¶
HDD lưu dữ liệu bằng từ tính trên các đĩa (platter) quay liên tục. Đầu đọc/ghi (head) gắn trên cánh tay di chuyển qua bề mặt đĩa.
- Track: vòng tròn đồng tâm trên đĩa. Sector: đơn vị nhỏ nhất của track (512 B hoặc 4 KB).
- Thời gian truy cập một sector gồm:
- Seek time: dời đầu đọc đến đúng track (vài ms).
- Rotational latency: chờ sector quay tới dưới đầu đọc, trung bình bằng nửa vòng quay (7200 RPM ≈ 4,2 ms).
- Transfer time: đọc dữ liệu thực sự, nhỏ so với hai khoản trên.
- Truy cập tuần tự nhanh (100 - 250 MB/s), truy cập ngẫu nhiên rất chậm (~100 IOPS) vì mỗi lần đều trả giá seek + quay.
Ưu điểm: giá trên mỗi TB thấp, dung lượng lớn. Nhược điểm: chậm khi truy cập ngẫu nhiên, có phần cơ khí nên dễ hỏng do va đập, ồn, tốn điện.
2. SSD (Solid State Drive)¶
SSD không có phần chuyển động, lưu dữ liệu trong chip NAND flash. Mỗi ô nhớ giữ điện tích trong cổng nổi (floating gate / charge trap) để biểu diễn bit.
Các loại ô NAND¶
| Loại | Bit/ô | Tốc độ | Độ bền (chu kỳ xoá) | Giá |
|---|---|---|---|---|
| SLC | 1 | Nhanh nhất | ~100.000 | Cao nhất |
| MLC | 2 | Khá | ~3.000 - 10.000 | Trung bình |
| TLC | 3 | Trung bình | ~1.000 - 3.000 | Thấp |
| QLC | 4 | Chậm hơn | ~100 - 1.000 | Thấp nhất |
Càng nhiều bit trên mỗi ô, dung lượng/giá càng tốt nhưng tốc độ và độ bền càng giảm. Con số trên chỉ là cỡ tham khảo, khác nhau theo nhà sản xuất và thế hệ.
Page, block và ràng buộc của flash¶
- Page (4 - 16 KB) là đơn vị đọc/ghi. Block (hàng trăm page) là đơn vị xoá.
- Chỉ ghi được vào page đã xoá, và chỉ xoá được cả block. Không ghi đè tại chỗ (in-place) như HDD.
FTL (Flash Translation Layer)¶
Controller của SSD chạy FTL để che giấu ràng buộc trên, giúp hệ điều hành thấy một ổ block thông thường:
- Address mapping: ánh xạ địa chỉ logic (LBA) sang vị trí vật lý; ghi mới đi vào page trống, page cũ bị đánh dấu invalid.
- Garbage collection: gom page còn hợp lệ sang block mới rồi xoá block cũ để lấy lại chỗ trống.
- Wear leveling: dàn đều số lần xoá giữa các block để không block nào mòn trước.
- TRIM: hệ điều hành báo cho SSD biết block nào không còn dùng, giúp GC hiệu quả hơn.
- Over-provisioning: dành một phần dung lượng ẩn cho GC và thay block hỏng.
Hệ quả: write amplification (lượng ghi thực xuống flash lớn hơn lượng host ghi) và hiệu năng ghi có thể sụt khi ổ gần đầy.
3. Giao tiếp¶
| Giao tiếp | Bus | Băng thông cỡ | Ghi chú |
|---|---|---|---|
| SATA III | SATA, giao thức AHCI | ~600 MB/s | Thiết kế cho HDD, một hàng đợi 32 lệnh |
| NVMe | PCIe, giao thức NVMe | ~3 - 14 GB/s (PCIe 3.0 - 5.0 x4) | Thiết kế cho flash, tới 64K hàng đợi, mỗi hàng 64K lệnh |
| eMMC / UFS | Bus riêng gắn trên board | Từ ~400 MB/s (eMMC) tới vài GB/s (UFS) | Phổ biến trong hệ thống nhúng, điện thoại |
Hình dạng và đầu nối thực tế¶
Hình minh hoạ sơ đồ, không vẽ đúng tỉ lệ.
- SATA 2.5": ổ có vỏ kim loại, nối bằng một cáp dữ liệu SATA và một cáp nguồn. Cùng kiểu dáng với HDD laptop nên dễ thay thế nhau.
- M.2 2280: thẻ mạch dài 80 mm cắm thẳng vào khe M.2. Hai loại có cùng kích thước nhưng khác khe cắt (key) ở đầu nối: SATA dùng B+M, NVMe dùng M. Hai loại khác giao thức, nên cần xem mainboard hỗ trợ loại nào.
- eMMC / UFS: chip BGA hàn thẳng lên board, thường gặp trong hệ thống nhúng, ví dụ Raspberry Pi CM4 bản có eMMC.
NVMe nhanh hơn SATA không chỉ vì PCIe băng thông cao hơn mà còn vì giao thức song song, độ trễ thấp, hợp với tính song song của flash.
4. So sánh¶
| HDD | SSD (SATA) | SSD (NVMe) | |
|---|---|---|---|
| Độ trễ truy cập | vài ms | ~100 µs | 10 - 100 µs |
| Đọc tuần tự | 100 - 250 MB/s | ~550 MB/s | 3 - 14 GB/s |
| IOPS ngẫu nhiên | ~100 | ~100K | 500K - 1M+ |
| Độ bền | Hỏng do cơ khí | Giới hạn chu kỳ xoá | Giới hạn chu kỳ xoá |
| Giá/TB | Thấp nhất | Trung bình | Cao hơn |
| Dùng cho | Lưu trữ lớn, sao lưu | Ổ hệ thống, laptop | Máy trạm, server, database |
Con số là cỡ tham khảo.
5. Liên hệ với hệ điều hành¶
- Độ trễ HDD/SSD lớn hơn DRAM hàng nghìn đến hàng triệu lần, nên OS dùng page cache và swap để che giấu. Khi page fault phải nạp từ ổ, tiến trình bị chặn lâu (xem Memory Hierarchy).
- I/O scheduler trên HDD gom và sắp xếp request để giảm seek; trên SSD/NVMe lịch trình đơn giản hơn (
none,mq-deadline) vì không có seek. - Với flash, nên bật TRIM định kỳ (
fstrim) và tránh ghi dồn liên tục lên cùng vùng với eMMC nhỏ trong hệ thống nhúng. - Gộp nhiều ổ để tăng hiệu năng hoặc chịu lỗi: xem RAID.