Linux

Tạo Swap trên CentOS/ Ubuntu

Swap thường được gọi là RAM ảo, nó được trích một phần từ ổ đĩa cứng khi bộ nhớ RAM vật lý đã hết. Swap được dùng trên các hệ điều hành Linux CentOS, Ubuntu và cả trên Windows. Khi máy chủ sử dụng hết RAM vật lý, các trang web hoặc ứng dụng của bạn sẽ tự động chuyển sang sử dụng bộ nhớ Swap. Tuy nhiên, chúng ta không nên lạm dụng Swap bởi bộ nhớ của nó được trích từ ổ đĩa nên sẽ chậm hơn RAM vật lý.

Khi nào cần sử dụng Swap?

Swap rất cần thiết trong các hệ điều hành phổ biến hiện nay. Theo kinh nghiệm của chúng tôi thì tất cả Vps/ Dedicated server cấu hình cao hay thấp cũng nên sử dụng swap, đôi khi swap vẫn chạy song song với RAM vật lý. Đặc biệt các máy chủ có cấu hình thấp, một khi bộ nhớ RAM vật lý hết thì các ứng dụng hoặc trang web của bạn sẽ không thể truy cập được, có thể xảy ra tình trạng mất dữ liệu và thường xuất hiện lỗi “Establishing a Database Connection”.

Điều kiện để tạo Swap

  • Một Vps/ Dedicated Server mới
  • Hệ điều hành Ubuntu/ Debian/ CentOS
  • RAM tối thiểu 500MB
  • HDD/ SSD tối thiểu 10GB
  • Quyền đăng nhập Root

Trong bài viết này, chúng tôi sẽ giới thiệu cách tạo một tệp Swap trên các hệ điều hành CentOS 6/7/8 và Ubuntu 16.04/18.04/20.04.

Kiểm tra hệ thống máy chủ

Trước khi tạo swap chúng ta phải chắc chắn rằng ổ đĩa cứng còn thừa nhiều dung lượng trống, và tệp swap chưa được cài đặt sẵn trên máy chủ. Các bước sau đây giúp chúng ta xác nhận thông số hệ thống máy chủ của bạn.

Kiểm tra dung lượng ổ đĩa

Để kiểm tra dung lượng ổ đĩa:

# df-h

Kết quả trả về:

root@k3host:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            447M     0  447M   0% /dev
tmpfs            99M  1.1M   98M   2% /run
/dev/vda1        24G  5.7G   17G  26% /
tmpfs           491M  168K  491M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           491M     0  491M   0% /sys/fs/cgroup

Như hình trên, dung lượng trống của ổ đĩa là 17G, đủ để tạo swap.

Kiểm tra Swap

Một số nhà cung cấp Vps thường cài đặt sẵn swap nên chúng ta phải kiểm tra xem swap đã có trên máy chủ hay chưa.
Để kiểm tra tình trạng swap:

# sudo swapon -s

Kết quả trả về:

root@k3host:~# sudo swapon -s
Filename                                Type            Size    Used    Priority
root@k3host:~#

Thông số trả về như hình trên thì swap hiện chưa có sẵn trên máy chủ, chúng ta có thể tạo swap.

Thực hiện các bước tạo Swap

Sau khi hoàn tất kiểm tra hệ thống máy chủ, công việc chính của chúng ta bây giờ là tạo swap.

Tạo Swap

Để tạo một tệp swap với dung lượng 2GB:

# dd if=/dev/zero of=/swapfile count=2048 bs=1MiB

Kết quả trả về:

root@k3host:~# swapon -s
root@k3host:~# dd if=/dev/zero of=/swapfile count=2048 bs=1MiB
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 5.82565 s, 369 MB/s
root@k3host:~#

Vậy là đã tạo xong tệp swap với dung lượng 2GB rồi. Bạn có thể thay đổi giá trị count=2048 phù hợp với cấu hình máy chủ. Dung lượng swap tối đa chỉ nên gấp đôi RAM vật lý.

Tạo phân vùng Swap

Sau khi tạo xong tệp swap, chúng ta cần tạo phân vùng cho swap:

# mkswap /swapfile

Kết quả trả về:

root@k3host:~# mkswap /swapfile
mkswap: /swapfile: insecure permissions 0644, 0600 suggested.
mkswap: /swapfile: warning: wiping old swap signature.
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=e0dd890d-cb9b-42a1-9c15-aea81ab10046
root@k3host:~#

Như kết quả trên chúng ta đã tạo được phân vùng cho swap.

Kích hoạt Swap

Để kích hoạt swap:

# swapon /swapfile

Bỏ qua thông báo lỗi ở bước này nếu có.

Kiểm tra lại tình trạng Swap

Kiểm tra lại tình trạng swap:

root@k3host:~# swapon -s
Filename                                Type            Size    Used    Priority
/swapfile                               file            2097148 93184   -2
root@k3host:~#

Như hình trên có nghĩa là swap đã được tạo thành công.

Thiết lập tự động kích hoạt Swap

Thiết lập tự động kích hoạt mỗi khi reboot lại máy chủ:

# nano /etc/fstab

Thêm đoạn mã này vào cuối dòng:

/swapfile   swap    swap    sw  0   0

Như hình bên dưới:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
# / was on /dev/vda1 during curtin installation
/dev/disk/by-uuid/45827384-b3827-47e0-a202-9055e53a6678 / ext4 defaults 0 1
/swapfile   swap    swap    sw  0   0

Sau đó nhấn tổ hợp phím ctrl+ O và nhấn Enter để lưu lại, bấm ctrl+ X để thoát.

Bảo mật Swap

Để bảo mật swap, chúng ta chỉ cấp quyền đọc/ ghi cho Root:

# chown root:root /swapfile
# chmod 0600 /swapfile

Tham số Swappiness

Tham số swappiness cho biết thời điểm hệ thống sẽ chuyển từ bộ nhớ RAM vật lý sang bộ nhớ tạm swap. Giá trị của swappiness dao động từ 0 đến 100 và mặc định là 30.

  • swappiness = 0: giá trị bằng 0 thì sẽ hệ thống sẽ không sử dụng swap.
  • swappiness = 60: giá trị bằng 60 thì hệ thống sẽ sử dụng khi RAM vật lý còn 60%.
  • swappiness = 100: giá trị bằng 100 thì hệ thống sẽ ưu tiên sử dụng swap.

Vì tốc độ xử lý dữ liệu trên RAM vật lý cao hơn so với swap, chúng ta nên đặt giá trị này từ 5-10 để tận dụng tối đa RAM vật lý.

Kiểm tra giới hạn sử dụng Swap

# cat /proc/sys/vm/swappiness

Kết quả tra về:

root@k3host:~# cat /proc/sys/vm/swappiness
60
root@k3host:~#

Như kết quả trên khi sử dụng RAM vật lý đạt mức 60% thì tự động chuyển sang sử dụng swap.

Thiết lập lại thông số Swappiness

Để tận dụng hết RAM vật lý, chúng ta phải thiết lập lại swappiness:

# sudo nano /etc/sysctl.conf

Thêm đoạn mã sau vào cuối dòng:

vm.swappiness = 10

Đặt vào vị trí như hình bên dưới:

# Magic system request Key
# 0=disable, 1=enable all, >1 bitmask of sysrq functions
# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
# for what other values do
#kernel.sysrq=438
vm.swappiness = 10

Nếu chúng ta đặt vm.swappiness = 10 thì khi bộ nhớ RAM vật lý còn 10%, hệ thống sẽ tự động chuyển sang sử dụng swap.
Sau khi cấu hình xong, nhấn tổ hợp phím ctrl+ O và nhấn Enter để lưu lại, bấm ctrl+ X để thoát.

Khởi động lại máy chủ:

# reboot

Kiểm tra lại thông số Swappiness

Kiểm tra lại thông số swappiness:

# cat /proc/sys/vm/swappiness

Kết quả trả về:

root@k3host:~# cat /proc/sys/vm/swappiness
10
root@k3host:~#

Như hình trên, chúng ta đã hoàn thành việc cấu hình swappiness ở mức 10.

Thay đổi dung lượng swap

Để thay đổi dung lượng swap, chúng ta cần Tắt và Xóa swap, sau đó lặp lại các bước trên.

1. Tắt Swap:

# sudo swapoff /swapfile

2. Xóa Swap:

# sudo rm -f /swapfile

3. Tạo lại Swap có dung lượng 4GB

# sudo dd if=/dev/zero of=/swapfile bs=1024 count=4096k

4. Tạo phân vùng cho Swap:

# sudo mkswap /swapfile

5. Kích hoạt Swap:

# sudo swapon /swapfile

6. Bảo mật Swap:

# chown root:root /swapfile
# sudo chmod 600 /swapfile

7. Kiểm tra lại tình trạng Swap:

# sudo swapon -s

Các thiết lập khác vẫn được giữ nguyên nên bạn không cần phải làm lại nữa.

Kết luận !

Ngoài việc tạo swap, để tránh tình trạng máy chủ nhanh chóng bị ngốn hết RAM và gây ra tình trạng quả tải, bạn nên:

  1. Tối ưu website
  2. Sử dụng Cache
  3. Sử dụng CDN
  4. Nâng cao các biện pháp phòng chống DDoS

Vậy là đã kết thúc quá trình tạo Swap trên CentOS/ Ubuntu. Nếu có ý kiến đóng góp, vui lòng để lại bình luận bên dưới.

5/5 - (1 bình chọn)

Để lại một bình luận