Hướng dẫn sử dụng Swap trên CentOS 7

Swap là khái niệm bộ nhớ ảo được sử dụng trên hệ điều hành Linux. Khi VPS hoạt động, nếu thiếu RAM hệ thống sẽ tự động sử dụng một phần đĩa cứng để làm bộ nhớ thay thế tạm thời cho RAM.

Tuy việc truy xuất dữ liệu từ swap chậm hơn RAM (tất nhiên rồi) những nó là giải pháp cứu cánh trong nhiều tình huống. Tốt nhất chúng ra nên bỏ 1 chút dung lượng ổ đĩa trống ra để làm Swap trong khi chưa có điều kiện lắp thêm RAM

Kiểm tra thông tin Swap trên hệ thống

Trước khi tạo swap, chúng ta kiểm tra xem hệ thống hiện tại đã có swap chay chưa

swapon -s

Nếu không có thông tin gì hiện ra sau câu lệnh trên thì có nghĩa là swap chưa được kích hoạt trên hệ thống của bạn

Hoặc cách khác để kiểm tra swap đã tồn tại hay chưa là

free -m

Nếu các thông số của Swap là 0 như hình dưới thì hệ thống của bạn chưa sử dụng Swap.

              total        used        free      shared  buff/cache   available
Mem:            489          37         362           4          89         429
Swap:             0           0           0

 Bây giờ bạn có thể kiểm tra xem dung lượng ổ đĩa còn trống của bạn là bao nhiêu, sử dụng lệnh df -h:

[bigvn@centos7 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  982M   18G   6% /
devtmpfs        236M     0  236M   0% /dev
tmpfs           245M     0  245M   0% /dev/shm
tmpfs           245M  4.3M  241M   2% /run
tmpfs           245M     0  245M   0% /sys/fs/cgroup
tmpfs            49M     0   49M   0% /run/user/0  

Tạo Swap file

Thông thường thì kích thước file swap nên bằng với dung lượng RAM, 

Để tạo swapfile có kích thước 512MB tại /:

sudo fallocate -l 512m /swapfile

Kiểm tra file swap vừa tạo ra

ls -lh /swapfile

Kết quả như dưới là ổn

-rw-r--r-- 1 root root 512M Jun  1 13:37 /swapfile   

Kích hoạt file Swap

Trước tiên chúng ta cần điều chỉnh quyền truy cập đến file swap, tốt nhất là chỉ có tài khoản root được phép đọc/viết

sudo chmod 600 /swapfile

Bây giờ file swap đã khá an toàn, chúng ta cần định dạng cho nó

sudo mkswap /swapfile

Kết quả

[bigvn@centos7 ~]$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=22236c7a-c6ab-4169-bf09-9e3661053955 

Swapfile đã sẵn sàng, tuy nhiên nó chưa hoạt động. Kích hoạt nó ngay nào

sudo swapon /swapfile

Để chắc chắn rằng file swap đã được kích hoạt và sử dụng:

swapon -s

Kết quả

[bigvn@centos7 ~]$ swapon -s
Filename                                Type            Size    Used    Priority
/swapfile                               file            524284  0       -1                 

Để kiểm tra dung lượng đã sử dụng (used) của swap, dùng lệnh free -m:

[bigvn@centos7 ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:            489          42         334           4         112         423
Swap:           511           0         511     

Tự động kích hoạt Swap khi khởi động

Sau khi khởi động lại, swap sẽ không tự động kích hoạt. Bạn cần khai báo trong fstab để swap file tự động kích hoạt sau mỗi lần reboot

sudo nano /etc/fstab

Thêm dòng này vào cuối file

/swapfile swap swap sw 0 0

Tùy chỉnh Swappiness.

Swappiness là mức độ ư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 có giá trị càng gần 0, hệ thống càng ít sử dụng swap, trừ khi thật cần thiết
  • swappiness có giá trị càng gần 100, hệ thống càng sớm sử dụng swap

Ví dụ

swappiness = 0: swap chỉ được sử dụng khi bộ nhớ RAM đã hết
swappiness = 30: swap được sử dụng khi RAM còn 30% (chế độ mặc định).
swappiness = 70: swap được sử dụng khi RAM còn 70%.
swappiness = 100: swap được ưu tiên ngang với RAM (điều này chỉ đem lại hiệu quả trong 1 số ít trường hợp)

Để xem giá trị swappiness hiện tại

cat /proc/sys/vm/swappiness

Trên CentOS 7, giá trị swappiness  mặc định là 30, nó là phù hợp với đa số máy tính để bàn, server. Đối với hệ thống VPS bạn có thể giảm nó xuống để có hiệu quả tốt hơn 

Ví dụ để thiết lập swappiness = 10:

sudo sysctl vm.swappiness=10

Bây giờ hãy kiểm tra lại để chắc chắn nó rằng nó làm việc tốt:

cat /proc/sys/vm/swappiness

Giá trị là 10. Như vậy là bạn đã thay đổi giá trị của swappiness thành công. Tuy nhiên, việc thay đổi trên sẽ không được áp dụng cho các lần khởi động tiếp theo.

Để thiết lập giá trị vĩnh viễn cho swappiness, mở file /etc/sysctl.conf:

sudo nano /etc/sysctl.conf

Thêm vào cuối file đó với dòng sau:

vm.swappiness=10

 Như vậy, máy chủ vps sẽ tự động thiết lập swappiness với giá trị bạn đã khai báo sau khi khởi động.

Xóa file Swap

Đôi khi chúng ta cần gỡ bỏ swap ra khỏi hệ thống và lấy lại phần không gian file swap đã chiếm dụng. Bạn hãy xóa nó bằng cách làm ngược lại quá trình đã tạo ra nó

Mở file /etc/fstab:

sudo nano /etc/fstab

Xóa dòng sau và lưu file lại:

/swapfile swap swap sw 0 0

Tắt swap

sudo swapoff /swapfile

Xóa file swap

sudo rm /swapfile

Ok, vậy là xong

Thay đổi dung lượng swap

Bạn cần xóa file swap trước rồi tạo lại theo các cách hướng dẫn ở trên

Lời kết

Trong vps nói riêng và server nói chung, swap là thành phần không thể thiếu hỗ trợ đắc lực cho cả hệ thống. Dù RAM của bạn có nhiều đến mấy song vẫn nên dành một phần không gian cho swap phòng những lúc quá tải, bị hết RAM. Đối với những hệ thống nhỏ việc này lại càng mang nhiều ý nghĩa bởi bạn sẽ tiết kiệm được chi phí cho việc nâng cấp dung lượng RAM.

 

loading...

Viết nhận xét