Hướng dẫn tạo Swap cho máy chủ Linux

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
cách tạo swap file cho máy chủ Linux 1

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

cách tạo swap file cho máy chủ Linux 2

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

cách tạo swap file cho máy chủ Linux 3

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
cách tạo swap file cho máy chủ Linux 4

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

sudo mkswap /swapfile
cách tạo swap file cho máy chủ Linux 5

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
cách tạo swap file cho máy chủ Linux 6

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: 

cách tạo swap file cho máy chủ Linux 7

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. ​