Kết nối với ThuThuat.VIP

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 (Hiện tại chỉ thấy mỗi nhà cung cấp VPS Linode sẻ tạo Swap tự động khi bạn cài hệ điều hành Linux) 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

tạo bộ nhớ ảo Swap

Hãy cùng TTV tạo bộ nhớ ảo Swap trên hệ điều hành CentOS nào

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

Tạo swap vps

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

Kiểm tra dung lượng ổ cứng vps

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

Tạo phân vùng swap

Ở 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

Phân vùng cho swap

Tiếp theo bạn hãy chmod cho file swap bằng lệnh

chown root:root /swapfile
chmod 0600 /swapfile

Chown cho swap

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

Hướng dẫn tạo bộ nhớ ảo trên vps

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

Swappiness

Chỉnh thông số swappiness bằng cách dùng lệnh sysctl

sysctl vm.swappiness=10

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

Sửa file sysctl.conf

Khởi động lại VPS và kiểm tra lại kết quả

swapon -s
cat /proc/sys/vm/swappiness

Lưu ý: Với CentOS 7.2 có thể tune profile sẽ overwrite vm.swappiness mỗi lần reboot, bạn cần kiểm tra profile nào đang overwrite để cấu hình lại thủ công.

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.

Hướng dẫn tạo swap chi tiết

Sau đó, khởi động lại VPS và kiểm tra lại kết quả.

Xem bộ nhớ vps

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=1024k

– 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

Một số trường hợp bạn sẻ gặp phải thông báo như “swapoff: /swapfile: swapoff failed: Cannot allocate memory” khi thay đổi dung lượng Swap thì có thể làm theo hướng dẫn dưới đây

1. Tạo 1 file swap mới với tên swapfile4G (Vd: Mình muốn tăng swap lên 4GB)

sudo fallocate -l 4G /swapfile4G
sudo mkswap /swapfile4G
sudo swapon /swapfile4G
sudo swapoff /swapfile # < old swapfile sudo rm /swapfile sudo swapon -s # verify

2. Sau cùng bạn thiết lập swap tự động được kích hoạt mỗi khi reboot

echo /swapfile4G none swap defaults 0 0 >> /etc/fstab

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.

Comment

Hướng dẫn tạo bộ nhớ ảo Swap trên VPS sử dụng CentOS

by Tien Dung
0