Tháng Chín 20, 2021
Hướng dẫn tạo bộ nhớ ảo Swap trên VPS sử dụng CentOS

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

Swap là một khoảng trống trên ổ cứng và được sử dụng làm bộ làm tịch nhớ lưu trữ trợ thì na ná như bộ nhớ Ram, khi dung lượng bộ nhớ RAM đầy thì nó 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 dùng WordPress sẻ gặp phải lỗi

Establishing a Database Connection
thường nhật 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 để giả nhớ ảo

Lưu ý là nếu VPS của bạn dùng ổ cứng SSD thì hãy tạo Swap còn nếu 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. Rà soát Swap

Để thẩm tra VPS của bạn đã có Swap chưa bạn hãy dùng lệnh sau (vận 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. rà soát dung lượng ổ cứng của VPS

hẳn nhiên để tạo được bộ nhớ ảo Swap thì bạn phải soát xem ổ cứng có còn trống để bạn giành 1 phần bộ nhớ để giả tảng nhớ ảo hay không

Bạn dễ dàng thẩ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 thả sức 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 rà 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 dùng. Swappiness có giá trị trong khoảng 0 – 100.

  • swappiness = 0: swap chỉ được dùng khi RAM được dùng hết
  • swappiness = 10: swap được dùng khi RAM còn 10%
  • swappiness = 60: swap được 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.

thẩ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 tham số swappiness bằng cách dùng lệnh

sysctl

sysctl vm.swappiness=10


Sysctl vm.swappiness=10

rà soát 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 tham số này mỗi khi phát độ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

phát động lại VPS và thẩ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 thẩ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 đó, phát động lại VPS và soát lại kết quả.


Xem bộ nhớ vps
Dùng lệnh htop để xem bộ nhớ VPS

5. đổi thay dung lượng swap

Nếu bạn muốn thay đổi dung lượng swap, hãy thực hành 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. tỉ 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

– soát 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 tin 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 đây1. 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<=”p”></>

2. sau hết 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, tham 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.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *