CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Trang chủHướng dẫnHướng dẫn chi tiết cách thêm Swap trên Ubuntu 22.04

Hướng dẫn chi tiết cách thêm Swap trên Ubuntu 22.04

CyStack blog 8 phút để đọc
CyStack blog07/10/2025
Locker Avatar

Chris Pham

Technical Writer

Locker logo social
Reading Time: 8 minutes

thêm Swap trên Ubuntu 22.04

Trong bài viết này, tôi sẽ chia sẻ từng bước chi tiết cách thêm swap trên Ubuntu 22.04 của bạn. Việc nắm vững kỹ thuật này không chỉ giúp bạn ngăn ngừa các sự cố tiềm ẩn mà còn tối ưu hóa hiệu suất tổng thể của server, đảm bảo ứng dụng luôn chạy ổn định ngay cả khi RAM bị quá tải.

Swap là gì?

Đầu tiên, chúng ta hãy tìm hiểu cặn kẽ về Swap. Swap là một phần dung lượng ổ cứng được hệ điều hành dành riêng để tạm thời lưu trữ dữ liệu mà nó không còn có thể giữ trong RAM. Điều này cho phép bạn tăng lượng thông tin mà máy chủ có thể giữ trong bộ nhớ làm việc, dù có một vài hạn chế.

Không gian swap trên ổ cứng chủ yếu được sử dụng khi không còn đủ chỗ trong RAM để chứa dữ liệu ứng dụng đang sử dụng.

Thông tin ghi vào đĩa sẽ chậm hơn đáng kể so với thông tin được giữ trong RAM, nhưng hệ điều hành sẽ ưu tiên giữ dữ liệu ứng dụng đang chạy trong bộ nhớ và sử dụng swap cho dữ liệu cũ hơn.

Nhìn chung, việc có swap space như một giải pháp dự phòng khi RAM của hệ thống cạn kiệt có thể là một cách tốt để chống lại các ngoại lệ hết bộ nhớ.

Cách thêm swap trên Ubuntu 22.04

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

Trước khi chúng ta bắt đầu, chúng ta cần kiểm tra xem hệ thống đã có swap space nào chưa. Mặc dù có thể có nhiều swap file hoặc phân vùng swap, nhưng thông thường, một là đủ.

Chúng ta có thể xem hệ thống có bất kỳ swap nào được cấu hình bằng cách gõ:

sudo swapon --show

Nếu bạn không nhận được bất kỳ kết quả đầu ra nào, điều này có nghĩa là hệ thống của bạn hiện không có swap space.

Bạn có thể xác minh rằng không có swap nào đang hoạt động bằng cách sử dụng tiện ích free:

free -h

Bạn sẽ thấy một kết quả tương tự như sau:

Output              total        used        free      shared  buff/cache   available
Mem:          981Mi       122Mi       647Mi       0.0Ki       211Mi       714Mi
Swap:            0B          0B          0B

Như bạn có thể thấy trong dòng Swap của kết quả đầu ra, không có swap nào đang hoạt động trên hệ thống này.

Bước 2: Kiểm tra không gian đĩa trống trên phân vùng ổ cứng

Trước khi chúng ta tạo file swap, chúng ta sẽ kiểm tra dung lượng đĩa hiện tại của mình để đảm bảo chúng ta có đủ không gian. Thực hiện điều này bằng cách nhập:

df -h

Kết quả đầu ra sẽ tương tự như thế này:

OutputFilesystem      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

Thiết bị có / trong cột Mounted on là đĩa của chúng ta trong trường hợp này. Chúng ta có rất nhiều không gian trống trong ví dụ này (chỉ 1.4G được sử dụng). Mức sử dụng của bạn có thể sẽ khác.

Mặc dù có nhiều ý kiến khác nhau về kích thước phù hợp cho swap space, nhưng nó thực sự phụ thuộc vào sở thích cá nhân và yêu cầu ứng dụng của bạn. Thông thường, một lượng bằng hoặc gấp đôi lượng RAM trên hệ thống là một điểm khởi đầu tốt. Một quy tắc chung khác là bất kỳ thứ gì trên 4G swap có thể là không cần thiết nếu bạn chỉ sử dụng nó như một phương án dự phòng RAM.

Bước 3: Tạo File Swap

Bây giờ chúng ta đã biết dung lượng ổ cứng có sẵn, chúng ta có thể tạo một file swap trên hệ thống file của mình. Chúng ta sẽ cấp phát một file có kích thước mong muốn, đặt tên là swapfile trong thư mục gốc (/).

Cách tốt nhất để tạo file swap là sử dụng chương trình fallocate. Lệnh này tạo ngay lập tức một file với kích thước được chỉ định.

Vì máy chủ trong ví dụ của chúng ta có 1G RAM, chúng ta sẽ tạo một file 1G trong hướng dẫn này. Bạn hãy điều chỉnh điều này để phù hợp với nhu cầu của máy chủ riêng bạn:

sudo fallocate -l 1G /swapfile

Chúng ta có thể xác minh rằng lượng không gian chính xác đã được dành riêng bằng cách gõ:

ls -lh /swapfile

Kết quả đầu ra sẽ xác nhận:

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

File của chúng ta đã được tạo với lượng không gian chính xác được dành riêng.

Bước 4: Kích hoạt File Swap

Bây giờ chúng ta đã có một file với kích thước chính xác, chúng ta cần biến nó thành swap space.

Đầu tiên, chúng ta cần khóa quyền của file để chỉ người dùng có đặc quyền root mới có thể đọc nội dung. Điều này ngăn chặn người dùng thông thường truy cập vào file, điều có thể gây ra các vấn đề bảo mật đáng kể.

Đặt file chỉ có thể truy cập được bởi root bằng cách gõ:

sudo chmod 600 /swapfile

Xác minh thay đổi quyền bằng cách gõ:

ls -lh /swapfile

Kết quả đầu ra sẽ cho thấy:

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

Như bạn có thể thấy, chỉ người dùng root mới có quyền đọc và ghi được bật.

Chúng ta có thể đánh dấu file này là swap space bằng cách gõ:

sudo mkswap /swapfile

Bạn sẽ thấy một kết quả tương tự:

OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Sau khi đánh dấu file, chúng ta có thể kích hoạt file swap, cho phép hệ thống của chúng ta bắt đầu sử dụng nó:

sudo swapon /swapfile

Xác minh rằng swap đã có sẵn bằng cách gõ:

sudo swapon --show

Kết quả đầu ra sẽ hiển thị:

OutputNAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -2

Chúng ta có thể kiểm tra lại kết quả đầu ra của tiện ích free để xác nhận những phát hiện của mình:

free -h

Output              total        used        free      shared  buff/cache   available
Mem:          981Mi       123Mi       644Mi       0.0Ki       213Mi       714Mi
Swap:         1.0Gi          0B       1.0Gi

Swap của chúng ta đã được thiết lập thành công và hệ điều hành của chúng ta sẽ bắt đầu sử dụng nó khi cần thiết.

Bước 5: Thiết lập Swap File vĩnh viễn

Những thay đổi gần đây của chúng ta đã kích hoạt file swap cho phiên hiện tại. Tuy nhiên, nếu chúng ta khởi động lại, máy chủ sẽ không tự động giữ lại các cài đặt swap. Chúng ta có thể thay đổi điều này bằng cách thêm file swap vào file /etc/fstab của mình.

Hãy sao lưu file /etc/fstab phòng trường hợp có sự cố:

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

Thêm thông tin file swap vào cuối file /etc/fstab của bạn bằng cách gõ:

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

Tiếp theo, chúng ta sẽ xem xét một số cài đặt có thể cập nhật để tinh chỉnh không gian swap của mình, giúp hệ thống hoạt động hiệu quả hơn nữa.

Bước 6: Tinh chỉnh cài đặt Swap của bạn

Có một vài tùy chọn mà bạn có thể cấu hình sẽ ảnh hưởng đến hiệu suất hệ thống khi xử lý swap.

Điều chỉnh thuộc tính Swappiness

Tham số swappiness cấu hình tần suất hệ thống di chuyển dữ liệu từ RAM ra swap space. Đây là một giá trị từ 0 đến 100, đại diện cho một tỷ lệ phần trăm.

Với các giá trị gần bằng 0, nhân hệ điều hành (kernel) sẽ không di chuyển dữ liệu vào đĩa trừ khi thực sự cần thiết. Hãy nhớ rằng, tương tác với file swap rất “tốn kém” vì chúng mất nhiều thời gian hơn đáng kể so với tương tác với RAM và chúng có thể gây giảm hiệu suất đáng kể. Việc yêu cầu hệ thống không phụ thuộc nhiều vào swap thường sẽ làm cho hệ thống của bạn nhanh hơn.

Các giá trị gần 100 sẽ cố gắng đưa nhiều dữ liệu hơn vào swap để giữ cho không gian RAM trống nhiều hơn. Tùy thuộc vào cấu hình bộ nhớ của ứng dụng hoặc mục đích sử dụng máy chủ của bạn, điều này có thể tốt hơn trong một số trường hợp.

Chúng ta có thể xem giá trị swappiness hiện tại bằng cách gõ:

cat /proc/sys/vm/swappiness

Bạn sẽ thấy một giá trị như:

Output60

Đối với một máy tính để bàn, cài đặt swappiness là 60 không phải là một giá trị tệ. Tuy nhiên, đối với một máy chủ, bạn có thể muốn di chuyển nó gần hơn về 0.

Chúng ta có thể đặt swappiness thành một giá trị khác bằng cách sử dụng lệnh sysctl.

Ví dụ, để đặt swappiness thành 10, chúng ta có thể gõ:

sudo sysctl vm.swappiness=10

Kết quả sẽ là:

Outputvm.swappiness = 10

Cài đặt này sẽ tồn tại cho đến khi khởi động lại tiếp theo. Chúng ta có thể đặt giá trị này tự động khi khởi động lại bằng cách thêm dòng vào file /etc/sysctl.conf của mình:

sudo nano /etc/sysctl.conf

Ở cuối file, bạn có thể thêm:

vm.swappiness=10

Lưu và đóng file khi bạn hoàn thành.

Điều chỉnh cài đặt Cache Pressure

Một giá trị liên quan khác mà bạn có thể muốn sửa đổi là vfs_cache_pressure. Cài đặt này cấu hình mức độ hệ thống sẽ ưu tiên lưu trữ thông tin inodedentry hơn các dữ liệu khác.

Về cơ bản, đây là dữ liệu truy cập về hệ thống file. Việc tra cứu dữ liệu này thường rất tốn kém và được yêu cầu rất thường xuyên, vì vậy việc hệ thống của bạn lưu trữ nó là một điều tuyệt vời. Bạn có thể xem giá trị hiện tại bằng cách truy vấn lại hệ thống file proc:

cat /proc/sys/vm/vfs_cache_pressure

Bạn sẽ thấy kết quả:

Output100

Với cấu hình hiện tại, hệ thống của chúng ta loại bỏ thông tin inode khỏi bộ đệm quá nhanh. Chúng ta có thể đặt điều này thành một cài đặt bảo thủ hơn như 50 bằng cách gõ:

sudo sysctl vm.vfs_cache_pressure=50

Kết quả sẽ là:

Outputvm.vfs_cache_pressure = 50

Một lần nữa, điều này chỉ có hiệu lực cho phiên hiện tại của chúng ta. Chúng ta có thể thay đổi điều đó bằng cách thêm nó vào file cấu hình của mình như chúng ta đã làm với cài đặt swappiness:

sudo nano /etc/sysctl.conf

Ở cuối file, thêm dòng chỉ định giá trị mới của bạn:

vm.vfs_cache_pressure=50

Lưu và đóng file khi bạn hoàn thành. Với những điều chỉnh này, chúng ta đã có một hệ thống swap được tối ưu và sẵn sàng hỗ trợ các ứng dụng một cách mạnh mẽ nhất.

Kết luận

Chúng ta đã cùng nhau khám phá quy trình từ kiểm tra swap hiện có, kiểm tra không gian đĩa, tạo và kích hoạt swap file, cho đến việc thiết lập nó vĩnh viễn và tinh chỉnh các thông số quan trọng như swappinessvfs_cache_pressure. Tuy nhiên, tôi muốn nhấn mạnh rằng swap là một công cụ dự phòng.

Nếu bạn đang gặp phải lỗi OOM (out of memory) liên tục hoặc thấy hệ thống không thể sử dụng các ứng dụng bạn cần, giải pháp tốt nhất vẫn là tối ưu hóa cấu hình ứng dụng của bạn để chúng sử dụng ít bộ nhớ hơn hoặc nâng cấp phần cứng (thêm RAM) cho server của bạn. Việc này sẽ cung cấp hiệu suất tốt nhất vì RAM luôn nhanh hơn nhiều so với swap trên ổ đĩa.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất