Swap là một khoảng trống trên ổ cứng và được sử dụng làm bộ nhớ lưu trữ tạm thời tương tự như bộ nhớ Ram, khi dung lượng bộ nhớ RAM đầy thì nó sẻ sử dụng phần không gian được giành ra để lưu trữ dữ liệu, việc này sẻ làm cho VPS đỡ bị treo, lag khi đã đầy bộ nhớ, đặc biệt với những ai sử dụng WordPress sẻ gặp phải lỗi Establishing a Database Connection
Thông thường bạn cài đặt xong VPS thì sẽ không có bộ nhớ Swap mà bạn phải thực hiện một số thao tác để chia và phân vùng nhớ trên ổ cứng để làm bộ nhớ ảo.
Lưu ý là nếu VPS của bạn sử dụng ổ cứng SSD thì hãy tạo Swap còn nếu sử dụng HDD mà tạo Swap cũng chả cải thiện được gì cả đôi khi lợi bất cập hại.
Với các VPS dùng công nghệ ảo hóa OpenVZ, có thể bạn sẽ không tạo được swap do hệ thống đã tự động kích hoạt sẵn rồi nha
Giờ thì chúng ta hãy cùng nhau bắt tay vào tạo Swap nhé.
1. Kiểm tra Swap
Để kiểm tra VPS của bạn đã có Swap chưa bạn hãy dùng lệnh sau (Áp dụng được cả trên CentOS và Ubuntu)
free -m
Bạn sẻ dễ dàng thấy thông số Swap (Như hình này là không có Swap)
2. Kiểm tra dung lượng ổ cứng của VPS
Tất nhiên để tạo được bộ nhớ ảo Swap thì bạn phải kiểm tra xem ổ cứng có còn trống để bạn giành 1 phần bộ nhớ để làm bộ nhớ ảo hay không
Bạn dễ dàng kiểm tra dung lượng ổ cứng còn trống bao nhiêu GB bằng lệnh sau
df -h
Ví dụ VPS của mình còn trống 5.6GB nên tha hồ tạo Swap
3. Tạo bộ nhớ ảo Swap cho VPS
Thông thường, bạn nên tạo Swap có dung lượng bằng hoặc gấp đôi dung lượng RAM (Vd: RAM 1GB thì nên tạo 2GB Swap)
Để tạo Swap 1GB 1 bạn dùng lệnh sau
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
Để tạo Swap 2GB 1 bạn dùng lệnh sau
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048k
Ở vd này mình tạo 2GB Swap
Tiếp theo bạn tạo phân vùng cho Swap bằng lệnh sau
mkswap /swapfile
Tiếp theo bạn hãy chmod cho file swap bằng lệnh
chown root:root /swapfile
chmod 0600 /swapfile
Tiếp theo, bạn có thể kích hoạt swap bằng câu lệnh
swapon /swapfile
Tiếp theo, thiết lập swap tự động được kích hoạt mỗi khi reboot
echo /swapfile none swap defaults 0 0 >> /etc/fstab
Giờ bạn kiểm tra lại bộ nhớ bằng lệnh free -m sẻ thấy có Swap rồi đấy
4. Cấu hình Swappiness
Swappiness là độ ưu tiên sử dụng swap, khi lượng RAM còn lại bằng giá trị của swappiness (tính theo tỷ lệ phần trăm) thì swap sẽ được sử dụng. Swappiness có giá trị trong khoảng 0 – 100.
- swappiness = 0: swap chỉ được dùng khi RAM được sử dụng hết
- swappiness = 10: swap được sử dụng khi RAM còn 10%
- swappiness = 60: swap được sử dụng khi RAM còn 60%
- swappiness = 100: swap được ưu tiên như là RAM
Do tốc độ xử lý dữ liệu trên RAM cao hơn nhiều so với Swap, do đó bạn nên đặt giá trị này về gần với 0 để tận dụng tối đa sức mạnh hệ thống. Tốt nhất nên chỉnh về 10.
Kiểm tra mức độ sử dụng file swap của hệ thống bằng cách chạy dòng lệnh sau (mặc định bạn sẻ thấy swappiness là 30 như hình bên dưới)
cat /proc/sys/vm/swappiness
Chỉnh thông số swappiness bằng cách dùng lệnh sysctl
sysctl vm.swappiness=10
Kiểm tra lại swappiness bạn sẽ thấy kết quả trả về 10 (cat /proc/sys/vm/swappiness)
Để đảm bảo giữ nguyên thông số này mỗi khi khởi động lại VPS bạn cần điều chỉnh tham số vm.swappiness ở cuối file /etc/sysctl.conf (nếu không có bạn hãy add thủ công vào)
Mở file sysctl.conf bằng trình soạn thảo Nano
nano /etc/sysctl.conf
Tiếp đó thêm vào cuối dòng bên dưới, sau đó nhấn Ctrl + X > Y > Ctrl + M + A để thoát.
vm.swappiness = 10
Khởi động lại VPS và kiểm tra lại kết quả
swapon -s
cat /proc/sys/vm/swappiness
grep vm.swappiness /usr/lib/tuned/*/tuned.conf
Bạn sẻ nhìn thấy
[root@nguyenthanhtbbgmail ~]# grep vm.swappiness /usr/lib/tuned/*/tuned.conf
/usr/lib/tuned/latency-performance/tuned.conf:vm.swappiness=10
/usr/lib/tuned/throughput-performance/tuned.conf:vm.swappiness=10
/usr/lib/tuned/virtual-guest/tuned.conf:vm.swappiness = 30
[root@nguyenthanhtbbgmail ~]#
Lúc này, bạn hãy mở file /usr/lib/tuned/virtual-guest/tuned.conf, tìm vm.swappiness và thay đổi vm.swappiness = 30 thành vm.swappiness = 10
nano /usr/lib/tuned/virtual-guest/tuned.conf
Ctrl + X > Y > Ctrl + M + A để thoát.
Sau đó, khởi động lại VPS và kiểm tra lại kết quả.
Dùng lệnh htop để xem bộ nhớ VPS
5. Thay đổi dung lượng swap
Nếu bạn muốn thay đổi dung lượng swap, hãy thực hiện theo các bước sau
– Tắt swap
swapoff /swapfile
– Xóa file swap
rm -f /swapfile
– Tạo mới file swap với dung lượng mong muốn. Ví dụ mình tạo 1GB (1024k)
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048k
– Tạo phân vùng swap
mkswap /swapfile
– Kích hoạt swap
swapon /swapfile
– chmod cho swap
chown root:root /swapfile
chmod 0600 /swapfile
– Kiểm tra lại tình trạng swap
free -m
Khi thay đổi dung lượng swap, các cài đặt từ trước như tự động kích hoạt khi server reboot, thông số Swappiness được giữ nguyên nên bạn không cần phải thao tác gì thêm.
Giờ khởi động lại server rồi kiểm tra lại kết quả thôi.
Chúc bạn thành công.