Khi SSD NVMe vẫn là chưa đủ
Bạn nhìn vào dashboard: CPU load thấp, RAM còn trống cả chục GB, nhưng ứng dụng vẫn phản hồi chậm chạp? Nếu lệnh top hiển thị chỉ số %wa (I/O Wait) thường xuyên vượt ngưỡng 10-15%, hệ thống của bạn đang bị nghẽn cổ chai ở ổ cứng.
Thực tế, ngay cả SSD NVMe xịn nhất cũng có độ trễ (latency) khoảng 10-100 microseconds. Trong khi đó, RAM chỉ mất khoảng vài chục đến 100 nanoseconds. Tức là RAM nhanh hơn ổ cứng từ 100 đến 1.000 lần. Với những tác vụ ghi dữ liệu tạm liên tục, việc bắt ổ cứng làm việc là một sự lãng phí tài nguyên khủng khiếp.
Trước đây, khi quản trị cụm server chạy CentOS 7 xử lý hàng nghìn session mỗi giây, mình từng đau đầu vì disk I/O luôn chạm trần. Giải pháp lúc đó cực kỳ đơn giản nhưng hiệu quả: tmpfs. Thay vì để PHP ghi session xuống đĩa, mình đẩy thẳng chúng lên RAM.
tmpfs: Bộ nhớ ảo linh hoạt
tmpfs là một filesystem lưu trữ dữ liệu trực tiếp trên bộ nhớ ảo (Virtual Memory). Nó không cố định dung lượng ngay từ đầu. Nếu bạn mount 2GB nhưng chỉ dùng 100MB, hệ thống chỉ tiêu tốn đúng 100MB RAM thực tế.
Nhiều người hay nhầm lẫn tmpfs với ramfs. Điểm khác biệt nằm ở chỗ: ramfs sẽ tiếp tục phình to cho đến khi làm treo máy (kernel panic) nếu bạn ghi quá nhiều. Ngược lại, tmpfs cho phép đặt giới hạn (size limit) và có thể đẩy dữ liệu sang phân vùng Swap nếu RAM vật lý bị cạn kiệt. Điều này giúp hệ thống an toàn hơn hẳn trong môi trường production.
Cấu hình tmpfs trong 30 giây
Mọi bản phân phối từ Ubuntu, Debian đến RHEL/CentOS đều tích hợp sẵn tmpfs vào kernel. Bạn không cần cài thêm bất cứ package nào.
1. Mount nhanh để thử nghiệm
Giả sử bạn cần một không gian 1GB để xử lý file tạm thời, hãy chạy lệnh sau:
sudo mkdir -p /mnt/ramdisk
sudo mount -t tmpfs -o size=1G tmpfs /mnt/ramdisk
Kiểm tra thành quả bằng lệnh df -h. Bạn sẽ thấy một phân vùng mới với tốc độ truy xuất cực nhanh.
2. Cấu hình vĩnh viễn qua /etc/fstab
Để thư mục tự động mount lại sau khi reboot (rất quan trọng cho Nginx cache hoặc PHP session), bạn cần sửa file cấu hình hệ thống:
sudo nano /etc/fstab
Thêm dòng này xuống cuối file:
tmpfs /mnt/ramdisk tmpfs rw,nodev,nosuid,size=2G 0 0
Giải thích các tham số bảo mật:
- nodev: Ngăn chặn việc tạo các thiết bị ngoại vi giả lập trên phân vùng.
- nosuid: Chặn thực thi các file có quyền SUID, giảm rủi ro leo thang đặc quyền.
- size=2G: Giới hạn tối đa. Bạn cũng có thể dùng
size=50%để linh hoạt theo dung lượng RAM máy chủ.
Chạy sudo mount -a để áp dụng ngay mà không cần khởi động lại máy.
Ứng dụng thực tế: Con số biết nói
Đừng dùng tmpfs chỉ vì nó “nghe có vẻ nhanh”. Hãy áp dụng vào đúng những điểm nóng (hotspots) sau đây.
Tăng tốc Web Server (Nginx/PHP)
Mặc định, PHP lưu session vào /var/lib/php/sessions. Với 1.000 user truy cập cùng lúc, ổ cứng phải thực hiện hàng nghìn thao tác đọc/ghi file nhỏ lẻ mỗi giây. Khi chuyển thư mục này sang tmpfs, độ trễ phản hồi trang web (TTFB) có thể giảm từ 200ms xuống còn dưới 50ms.
# Thêm vào /etc/fstab
tmpfs /var/lib/php/sessions tmpfs rw,nodev,nosuid,size=512M 0 0
Bảo vệ tuổi thọ SSD khi xử lý Media
Nếu bạn dùng FFmpeg để convert video hoặc ImageMagick để resize ảnh, các file tạm trung gian sẽ “bào” tuổi thọ SSD rất nhanh. Hãy trỏ thư mục output tạm vào RAM:
import subprocess
# Thư mục đã được mount tmpfs
temp_path = "/mnt/ramdisk/output.mp4"
subprocess.run(["ffmpeg", "-i", "input.mov", temp_path])
Giám sát và những lưu ý “xương máu”
Dùng tmpfs rất sướng nhưng nếu chủ quan, bạn sẽ phải trả giá. Khi phân vùng RAM đầy, ứng dụng sẽ văng lỗi “No space left on device” và crash ngay lập tức.
Bạn nên theo dõi dung lượng thường xuyên bằng lệnh:
watch -n 5 df -h /mnt/ramdisk
3 quy tắc bắt buộc phải nhớ:
- Dữ liệu sẽ MẤT SẠCH: Khi mất điện hoặc reboot, mọi thứ trên tmpfs sẽ biến mất. Tuyệt đối không để database hoặc source code quan trọng ở đây.
- Tránh tình trạng OOM: Đừng cấp quá 50% RAM cho tmpfs nếu server còn chạy nhiều dịch vụ khác. Nếu RAM hết, Kernel sẽ kích hoạt OOM Killer và tự động tắt các tiến trình như MySQL hoặc Nginx.
- Phân quyền chuẩn: Nếu dùng cho
/tmp, hãy set quyền 1777 (sticky bit) để đảm bảo an toàn:chmod 1777 /mnt/ramdisk.
Tận dụng tmpfs là cách rẻ nhất để nâng cấp hiệu năng server mà không tốn một đồng mua phần cứng mới. Chúc các bạn tối ưu hệ thống thành công!

