Optimization

Cách bật swap trên VPS ít RAM chi tiết 2026

SSH vào VPS 2GB RAM, chạy free -h thấy gần hết bộ nhớ, mở thêm một service nhẹ là OOM Killer gõ cửa. Tình huống quen thuộc với ai đang thuê VPS giá rẻ chạy nhiều dịch vụ. Trước khi nghĩ đến chuyện nâng cấp RAM, hãy bật swap. Bài này hướng dẫn chi tiết cách tạo file swap trên Ubuntu 24.04 LTS và Debian 12, cấu hình swappiness cho phù hợp, và cách theo dõi sau khi bật.

Yêu cầu trước khi bắt đầu

  • VPS chạy Ubuntu 24.04 LTS hoặc Debian 12 (các bước tương tự cho bản mới hơn).
  • Quyền root hoặc user có quyền sudo.
  • Ít nhất 1GB dung lượng trống trên ổ đĩa để tạo swapfile (kiểm tra bằng df -h).

Vì sao VPS ít RAM cần swap

Swap là vùng trên ổ đĩa được hệ điều hành dùng làm bộ nhớ ảo khi RAM vật lý đầy. Kernel sẽ di chuyển những trang bộ nhớ ít được dùng sang swap, giải phóng RAM cho các tiến trình đang hoạt động. Điều này giúp hệ thống không bị treo hoặc bị kernel OOM Killer tấn công.

Với VPS 2GB hoặc 4GB RAM, swap đặc biệt hữu ích khi chạy nhiều dịch vụ cùng lúc: Nginx, MariaDB, PHP-FPM, Docker, hoặc n8n. Thay vì để hệ thống sập, swap cho bạn thời gian xử lý. Đừng nhầm swap với giải pháp thay thế RAM, nó chậm hơn rất nhiều, nhưng là phao cứu sinh vào những lúc cao điểm.

Bước 1 - Kiểm tra swap hiện có và dung lượng ổ đĩa

Trước khi tạo, kiểm tra xem VPS đã có swap chưa và ổ đĩa còn bao nhiêu chỗ trống.

swapon --show
free -h
df -h /

Nếu lệnh swapon --show không trả về kết quả nào, nghĩa là VPS chưa có swap. Bạn cần ít nhất 1GB dung lượng trống trên phân vùng gốc /.

Verify: Lệnh free -h hiện dòng Swap: với giá trị 0B hoặc không có dòng này.

Bước 2 - Tạo file swap

Chúng ta tạo một file swap 2GB ngay tại thư mục gốc. Kích thước này phù hợp cho VPS 2GB RAM. Nếu VPS 4GB, bạn có thể tạo 2-4GB tùy nhu cầu.

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Giải thích từng lệnh:

  • fallocate -l 2G /swapfile: Tạo file /swapfile có dung lượng 2GB. Nếu lệnh báo lỗi "fallocate failed", dùng dd if=/dev/zero of=/swapfile bs=1M count=2048.
  • chmod 600 /swapfile: Chỉ cho phép root đọc ghi file. Đây là yêu cầu bảo mật, tránh người dùng khác đọc nội dung bộ nhớ.
  • mkswap /swapfile: Định dạng file thành vùng swap.
  • swapon /swapfile: Kích hoạt swap ngay lập tức.

Verify: Chạy swapon --show, bạn thấy dòng /swapfile với kích thước 2G và cột TYPEfile.

Bước 3 - Cấu hình swap tự động bật khi khởi động

Swap vừa tạo sẽ mất khi reboot. Cần khai báo trong /etc/fstab để hệ thống tự động kích hoạt mỗi lần khởi động.

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Kiểm tra lại nội dung file để chắc chắn dòng đã được thêm:

cat /etc/fstab

Verify: Dòng /swapfile none swap sw 0 0 xuất hiện ở cuối file. Có thể test bằng lệnh sudo swapoff /swapfile && sudo swapon -a để chắc chắn cấu hình hoạt động, không cần reboot.

Bước 4 - Tinh chỉnh swappiness cho phù hợp

swappiness là tham số kernel kiểm soát mức độ ưu tiên sử dụng swap. Giá trị mặc định là 60, nghĩa là kernel khá "hào phóng" trong việc đẩy bộ nhớ xuống swap. Với VPS ít RAM, bạn cần cân nhắc.

Mình để swappiness=10 cho VPS 2GB. Lý do: hạn chế việc đẩy các tiến trình quan trọng xuống swap quá sớm, giữ hiệu năng ứng dụng ổn định. Kernel chỉ bắt đầu swap khi RAM thực sự cạn. Với VPS chạy database hoặc ứng dụng cần độ trễ thấp, giá trị 10 là hợp lý. Nếu VPS chạy dịch vụ nền ít tương tác, có thể để 20-30.

sysctl vm.swappiness=10

Lệnh trên chỉ áp dụng cho phiên hiện tại. Để lưu lâu dài, thêm vào /etc/sysctl.conf:

echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

Verify: Chạy sysctl vm.swappiness, kết quả trả về vm.swappiness = 10.

Bước 5 - Theo dõi hiệu quả sử dụng swap

Sau khi bật, bạn nên theo dõi để biết hệ thống có thực sự cần swap hay không, và dung lượng swap được dùng bao nhiêu.

free -h
swapon --show
vmstat 1 5
  • free -h: Xem tổng quan RAM và swap, đã dùng bao nhiêu, còn bao nhiêu.
  • swapon --show: Xem trạng thái và kích thước swap đang hoạt động.
  • vmstat 1 5: Theo dõi liên tục 5 giây, cột si (swap in) và so (swap out). Nếu hai cột này liên tục khác 0, hệ thống đang phụ thuộc nhiều vào swap, bạn nên cân nhắc nâng cấp RAM hoặc tối ưu dịch vụ đang chạy.

Nếu thấy swap bị dùng gần hết thường xuyên, đã đến lúc giảm tải dịch vụ hoặc nâng cấp RAM. Swap không phải giải pháp lâu dài cho workload nặng, nó chỉ giúp hệ thống sống sót qua những đợt cao điểm.

Xử lý lỗi thường gặp

Lỗi 1: fallocate báo lỗi hoặc file swap không hoạt động.
Một số hệ thống file không hỗ trợ fallocate, đặc biệt là trên một số loại ổ cứng ảo hóa. Dùng lệnh dd để tạo file thay thế:

dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Lưu ý: lệnh dd chậm hơn, mất vài chục giây đến vài phút tùy tốc độ ổ đĩa.

Lỗi 2: swapon báo "Permission denied".
File swap phải có quyền 600 và thuộc root. Kiểm tra lại bằng ls -lh /swapfile, nếu không đúng, chạy lại chmod 600 /swapfile.

Lỗi 3: Kernel OOM Killer vẫn giết tiến trình dù đã bật swap.
Kiểm tra xem swap có bị tắt khi chạy nhiều tiến trình không, và kiểm tra vm.swappiness có bị đặt quá thấp không. Nếu swappiness=0, kernel gần như không dùng swap cho đến khi RAM cạn kiệt hoàn toàn, lúc đó OOM Killer hoạt động. Đặt lại swappiness về 10 và kiểm tra bằng sysctl vm.swappiness.

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

Swap có thay thế được RAM không?

Không. Swap chậm hơn RAM hàng trăm lần vì phải ghi vào ổ đĩa. Nó chỉ giúp hệ thống không bị sụp khi RAM đầy, cho bạn thời gian xử lý. Workload nặng và ổn định cần RAM thật sự.

Nên tạo swap bao nhiêu cho VPS 2GB RAM?

2GB là kích thước phổ biến, tương đương RAM vật lý. Nếu ổ đĩa còn nhiều chỗ, có thể tạo 4GB. Với VPS 4GB RAM, tạo 2-4GB là hợp lý, không nên quá 8GB vì lãng phí dung lượng ổ đĩa.

Làm sao để tắt swap?

Chạy sudo swapoff /swapfile để tắt ngay, sau đó xóa dòng /swapfile none swap sw 0 0 trong /etc/fstab và xóa file sudo rm /swapfile.

Swappiness để bao nhiêu là hàng đầu?

Không có con số chung. Với VPS ít RAM, mình khuyên dùng 10 để ưu tiên hiệu năng. Nếu bạn chạy dịch vụ nền không cần độ trễ thấp, thử 20-30. Quan sát vmstat để điều chỉnh.

Bài viết liên quan

Lưu ý: Bài viết mang tính tham khảo, tổng hợp kiến thức chung. Mỗi hệ thống, hạ tầng và nhu cầu có đặc thù riêng, nên kiểm thử trong môi trường an toàn và tham vấn kỹ sư trước khi triển khai thực tế.