Swap trên Linux là vùng RAM ảo được tạo ra trên đĩa cứng, cho phép CPU sử dụng như RAM vật lý.

Nếu bạn có 1 máy tính cũ RAM yếu hoặc một con server cùi không đủ bộ nhớ (ví dụ như các EC2 loại nhỏ của AWS, hoặc các droplet rẻ tiền trên DigitalOcean chỉ có chừng 500MB đến 1GB RAM mà thôi!). Khi đó bạn sẽ khó mà build được Node.js hay cài đặt MongoDB, Redis... lên chúng.

Ngay cả nếu cài được, các services này cũng dễ dàng bị crash khi CPU yêu cầu nhiều RAM hơn giới hạn vật lý.

Lúc này, bạn cần nghĩ đến việc thêm vào một lượng RAM ảo để hỗ trợ RAM thực.

Trước khi thực hiện tạo swap, các bạn có thể dùng các lệnh freedf để kiểm tra thông số RAM và ổ cứng.

free -m
df -h

Kết quả như hình dưới:

Kiểm tra RAM và hard drive

Nếu máy chưa có swap thì chúng ta sẽ tạo ra bằng các lệnh sau (áp dụng được cho cả 2 dòng Debian và RedHat):

# Create 2GB swap file:
sudo fallocate -l 2G /swapfile

# Check it:
ls -lh /swapfile

# Chmod it:
sudo chmod 600 /swapfile

# Setup swap space:
sudo mkswap /swapfile

# Enable swap:
sudo swapon /swapfile

# Check swap space:
sudo swapon -s

Thông thường, dung lượng swap nên gấp đôi dung lượng RAM vật lý. Chẳng hạn RAM của máy là 1GB thì swap sẽ là 2GB. Một số chuyên gia khác lại cho rằng điều đó chỉ nên áp dụng khi RAM thực ít hơn 2GB. Nếu RAM lớn hơn thì nên +2GB thay vì x2.

Bây giờ swap đã sẵn sàng để sử dụng. Các bạn có thể kiểm tra lại bằng lệnh free -m.

Swap thực ra là một phân vùng trên đĩa cứng. Nhiều khả năng hệ điều hành không nhận ra phân vùng swap sau khi restart. Do đó, chúng ta cũng cần khai báo nó trong file cấu hình fstab, nơi chứa thông tin toàn bộ các phân vùng. Khi hệ điều hành boot lên, nó sẽ đọc file fstab và tự động mount các phân vùng ghi trong đó.

sudo nano /etc/fstab

Copy và paste vào nội dung sau:

/swapfile   none    swap    sw    0   0

Lưu file này lại là xong.

Trên thực tế, cho dù với lượng RAM vật lý dư dả, chúng ta vẫn nên tạo thêm swap để tối ưu hóa hiệu suất hoạt động của hệ thống. Chẳng hạn khi máy vừa mở lên, một số applications và services sử dụng RAM để kích hoạt tiến trình khởi tạo, sau đó không dùng đến nữa nhưng chúng vẫn chiếm một lượng RAM nhất định. Nếu có swap, hệ thống sẽ đủ thông minh để đẩy các "pages" này vào swap, dành RAM thực cho các tiến trình khác.