Hướng Dẫn Thêm Không Gian Swap trên Ubuntu 20.04

Giới thiệu

Một cách hiệu quả để tránh lỗi hết bộ nhớ (out-of-memory) trong ứng dụng là thêm không gian swap vào máy chủ của bạn. Trong bài viết này, chúng tôi sẽ hướng dẫn cách tạo tệp swap trên máy chủ Ubuntu 20.04.

Swap là gì?

Swap là một phần không gian lưu trữ trên ổ cứng được hệ điều hành sử dụng để lưu trữ tạm thời dữ liệu khi RAM không còn đủ chỗ chứa. Điều này giúp tăng lượng thông tin mà máy chủ có thể xử lý, mặc dù việc sử dụng swap có một số hạn chế.

Khi không đủ RAM để lưu dữ liệu của ứng dụng, hệ thống sẽ sử dụng không gian swap trên ổ cứng. Tuy nhiên, việc truy cập dữ liệu từ ổ cứng sẽ chậm hơn rất nhiều so với RAM. Do đó, hệ điều hành ưu tiên giữ dữ liệu đang chạy trong RAM và sử dụng swap cho dữ liệu cũ hơn.

Với các hệ thống có ổ cứng không phải SSD, thêm swap là một giải pháp tốt để tránh lỗi hết bộ nhớ.

Bước 1 – Kiểm tra thông tin Swap trên hệ thống


Trước tiên, hãy kiểm tra xem hệ thống đã có không gian swap chưa bằng lệnh sau:

sudo swapon --show


Nếu không có kết quả trả về, nghĩa là hệ thống hiện không có không gian swap. Bạn có thể xác minh thêm bằng lệnh:

free -h


Kết quả ví dụ:

Kết quả
              total        used        free      shared  buff/cache   available
Mem:          981Mi       122Mi       647Mi       0.0Ki       211Mi       714Mi
Swap:            0B          0B          0B


Dòng Swap trong kết quả cho thấy không có swap đang hoạt động.

Bước 2 – Kiểm tra dung lượng ổ cứng

Trước khi tạo tệp swap, hãy kiểm tra dung lượng ổ cứng bằng lệnh:

df -h


Kết quả ví dụ:

Kết quả
Filesystem      Size  Used Avail Use% Mounted on
udev            474M     0  474M   0% /dev
tmpfs            99M  932K   98M   1% /run
/dev/vda1        25G  1.4G   23G   7% /
tmpfs           491M     0  491M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           491M     0  491M   0% /sys/fs/cgroup
/dev/vda15      105M  3.9M  101M   4% /boot/efi
/dev/loop0       55M   55M     0 100% /snap/core18/1705
/dev/loop1       69M   69M     0 100% /snap/lxd/14804
/dev/loop2       28M   28M     0 100% /snap/snapd/7264
tmpfs            99M     0   99M   0% /run/user/1000


Dung lượng sử dụng khác nhau tùy thuộc vào hệ thống của bạn. Một nguyên tắc thông dụng là kích thước swap nên bằng hoặc gấp đôi dung lượng RAM, nhưng không cần thiết vượt quá 4GB nếu chỉ sử dụng làm giải pháp dự phòng RAM.

Bước 3 – Tạo tệp Swap

Sau khi xác định dung lượng ổ cứng khả dụng, bạn có thể tạo tệp swap. Sử dụng lệnh sau để tạo tệp 1GB:

sudo fallocate -l 1G /swapfile


Kiểm tra tệp vừa tạo:

ls -lh /swapfile


Kết quả ví dụ:

-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile


Bước 4 – Kích hoạt tệp Swap

Để sử dụng tệp swap, thực hiện các bước sau:

1. Đặt quyền truy cập chỉ cho root:

sudo chmod 600 /swapfile


Kiểm tra lại:

ls -lh /swapfile


Kết quả ví dụ:

Kết quả
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile


2. Đánh dấu tệp là không gian swap:

sudo mkswap /swapfile


Kết quả:

Kết quả
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf


3. Kích hoạt swap:

sudo swapon /swapfile


4. Kiểm tra swap:

sudo swapon --show

Kết quả
NAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -2


Bước 5 – Thiết lập swap vĩnh viễn

Hiện tại, swap chỉ hoạt động trong phiên làm việc này. Để giữ swap sau khi khởi động lại, bạn cần thêm thông tin vào tệp /etc/fstab:

1. Sao lưu tệp /etc/fstab:

sudo cp /etc/fstab /etc/fstab.bak


2. Thêm dòng sau vào cuối tệp:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab


Bước 6 – Tối ưu Cài đặt Swap để Cải thiện Hiệu Suất Hệ Thống

1. Điều chỉnh tham số swappiness

Tham số swappiness quyết định tần suất hệ thống chuyển dữ liệu từ RAM sang bộ nhớ swap. Giá trị này nằm trong khoảng từ 0 đến 100, tương ứng với tỷ lệ phần trăm.

  • Giá trị gần 0: Hệ thống sẽ hạn chế sử dụng swap trừ khi thật sự cần thiết. Điều này giúp cải thiện hiệu suất vì việc truy cập swap (bộ nhớ trên ổ đĩa) chậm hơn nhiều so với RAM. Đặt giá trị thấp phù hợp khi bạn muốn hệ thống hoạt động nhanh hơn.
  • Giá trị gần 100: Hệ thống sẽ ưu tiên chuyển nhiều dữ liệu sang swap, giữ RAM trống hơn. Trường hợp này phù hợp nếu bạn chạy các ứng dụng đòi hỏi quản lý bộ nhớ cao.

Kiểm tra giá trị hiện tại:

cat /proc/sys/vm/swappiness


Để đặt giá trị swappiness thành 10, hãy dùng lệnh:

sudo sysctl vm.swappiness=10


Lưu ý, thiết lập này chỉ hiệu lực đến khi khởi động lại hệ thống. Để áp dụng giá trị tự động sau mỗi lần khởi động, sửa tệp cấu hình /etc/sysctl.conf:

sudo nano /etc/sysctl.conf


Thêm dòng sau

vm.swappiness=10

2. Điều chỉnh Tham số Cache Pressure

Tham số vfs_cache_pressure quy định mức độ ưu tiên hệ thống lưu trữ thông tin inode và dentry trong bộ nhớ đệm so với các loại dữ liệu khác.

  • Inode và dentry là thông tin truy cập hệ thống tệp, được sử dụng thường xuyên và tốn tài nguyên nếu phải truy vấn lại. Vì vậy, lưu trữ chúng trong bộ nhớ đệm sẽ tăng hiệu suất.

Kiểm tra giá trị hiện tại của cache pressure

cat /proc/sys/vm/vfs_cache_pressure


Để sửa giá trị thành 50, sử dụng câu lệnh

sudo sysctl vm.vfs_cache_pressure=50



Như trước, thiết lập này chỉ hiệu lực đến khi khởi động lại. Để duy trì sau mỗi lần khởi động, chỉnh sửa tệp:

sudo nano /etc/sysctl.conf


Thêm dòng sau vào cuối tệp:

vm.vfs_cache_pressure=50

Kết luận

Thêm không gian swap giúp máy chủ của bạn xử lý tốt hơn khi RAM bị quá tải. Với các bước trên, bạn đã thiết lập swap thành công và tối ưu hóa hiệu suất hệ thống.

Lên đầu trang