Swap VPS là gì
Swap là bộ nhớ ảo được sử dụng trên hệ điều hành Linux.
Khi máy chủ Linux hoạt đông nếu hết Ram thì máy chủ sẽ sử dụng một phần ổ cứng để làm bộ nhớ cho các tiến trình hoạt động bình thường.
Trong trường hợp máy chủ không có swap, nếu hết RAM, bạn sẽ gặp phải lỗi Establishing a Database Connection. Nguyên nhân khi hết RAM service MySQL sẽ stop lại.
Trong bài viết này mình sẽ hướng dẫn bạn tạo Swap trong trường hợp máy chủ chưa được cấp phát.
Nếu bạn đã tạo swap mà tình trạng hết RAM vẫn hay xảy ra, đó là thời điểm bạn cần nâng cấp thêm RAM.
Lưu ý: VPS dùng công nghệ ảo hóa OpenVZ, bạn có thể không tạo được swap do hệ thống đã kích hoạt sẵn.
Trong bài viết này mình sẽ chạy các câu lệnh với user không phải là root nên nhiều câu lệnh cần bắt đầu sudo để có quyền root. Vì lý do bảo mật, mình khuyên bạn không nên sử dụng user root. Tham khảo cách bảo mật cho máy chủ Linux.
Hướng dẫn tạo Swap trên máy chủ Linux
Đầu tiên bạn cần kiểm tra xem máy chủ bạn đã có swap chưa với câu lệnh sau:
swapon -s

Nếu không thông tin gì trả về như trên, có nghĩa là máy chủ của bạn chưa có swap.
Bạn có thể kiểm tra thêm bằng câu lệnh

Tiếp theo bạn kiểm tra dung lượng ổ cứng còn trống bằng lệnh sau: (df -h)

Quy tắc bộ nhớ cấp phát cho swap gấp đôi RAM. Ví dụ nếu RAM của bạn 512MB bạn sẽ lấy 1GB ổ cứng làm swap.
Tiếp theo tạo swap với câu lệnh bên dưới.Ví dụ bên dưới mình tạo swap 1GB (count=1024k). Bạn chỉnh lại cho phù hợp với trường hợp của bạn.
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k

Tiếp theo, tạo phân vùng swap với câu lệnh sau:
sudo mkswap /swapfile

Tiếp theo kích hoạt swap với lệnh sau:
sudo swapon /swapfile
Kiểm tra lại swap bạn sẽ thấy như sau:
swapon -s

Swap bạn tạo như trên sẽ mất đi nếu máy chủ khởi động lại. Để duy trì bạn cần sửa lại file /etc/fstab với editor nano:
sudo nano /etc/fstab
Copy và paste dòng sau vào cuối file. Sau đó ấn Ctrl + O rồi Enter để lưu file, rồi ấn Ctrl + X để thoát.
/swapfile swap swap defaults 0 0
Tăng bảo mật cho swap bằng lệnh sau:
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile
Cấu hình swappiness
Swappiness là mức độ ưu tiên sử dụng swap khi phần trăm RAM còn lại bằng giá trị của swappiness. Swappiness có giá trị trong khoảng 0-100.
- swappiness = 100: swap sẽ được ưu tiên sử dụng như là RAM
- swappiness = 60: swap được sử dụng khi RAM còn 60%
- swappiness = 60 swap được sử dụng khi RAM còn 10%
- swappiness = 0: swap chỉ được dùng khi hết RAM.
Tốc độ swap không thể sánh bằng RAM. Do vậy bạn thiết lập giá swappiness gần về 0 để tận dụng RAM. Giá trị đề xuất là 10.
Kiểm tra giá trị swappiness máy chủ của bạn với lệnh sau:
cat /proc/sys/vm/swappiness
Thiết lập lại giá swappiness bằng câu lệnh sau
sudo sysctl vm.swappiness=10
Bây giờ bạn sử dụng câu lệnh kiểm tra swappiness ở trên check lại.
Để giữ cho thông số swappiness giữ lại khi khởi động lại máy chủ, bạn cần chỉnh lại vm.swappiness ở cuối file /etc/sysctl.conf.
sudo nano /etc/sysctl.conf
Nếu chưa có thêm dòng này vm.swappiness = 10 vào cuối file.
Bây giờ khởi động lại VPS. Check lại swap và swappiness.
sudo swapon -s
sudo cat /proc/sys/vm/swappiness
Centos 7.2 có quá trình tune profile do vậy sẽ ghi đè vm.swappiness mỗi khi reboot. Bạn cần kiểm tra đang profile đang bị ghi đè để cấu hình lại.
grep vm.swappiness /usr/lib/tuned/*/tuned.conf
Kết quả như sau:

Lúc này, bạn mở file /usr/lib/tuned/virtual-guest/tuned.conf và đổi vm.swappiness = 30 thành vm.swappiness = 10.
sudo nano /usr/lib/tuned/virtual-guest/tuned.conf
Thay đổi dung lượng swap
Nếu bạn làm theo hướng dẫn trên để tạo file swap, bạn có thể làm các bước sau để chỉnh lại kích thước swap.
Tắt swap
sudo swapoff /swapfile
Xóa file swap
sudo rm -f /swapfile
Tạo mới file swap với kích thước bạn muốn ví dụ tạo 2GB
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048k
Tạo phân vùng swap:
sudo mkswap /swapfile
Kích hoạt swap:
swapon /swapfile
Bảo mật cho swap bằng 2 lệnh sau:
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile
Kiểm tra lại swap đã chuẩn chưa:
swapon -s
Phần cấu hình swap khi khởi động lại máy chủ và thiết lập swappiness bạn không cần thay đổi.
Bây giờ khởi động lại server và kiểm tra lại lần nữa.
Nếu bạn gặp vấn đề với quá trình tạo swap, hãy để lại bình luận bên dưới.
Yêu thích viết blog.