Thêm Swap trên Ubuntu 22.04

Swap thực tế là một loại kĩ thuật chuyển đổi 1 phần ổ cứng thành RAM khi hệ thống cần nhiều RAM hơn phần RAM vật lý hiện có . Nói cách khác bạn có thể hiểu swap chính là RAM ảo.

  • Không gian hoán đổi có thể giúp các máy có dung lượng RAM nhỏ. Trong trường hợp máy chủ của bạn có RAM 1GB, thì bộ nhớ của bạn sẽ cạn kiệt và bạn sẽ gặp lỗi do máy chủ của bạn không thể phân bổ đủ bộ nhớ.
  • Khi hệ thống của bạn yêu cầu nhiều RAM hơn so với dung lượng RAM vật lý bạn có
  • … và nhiều lý do khác nữa.

Có 2 loại Swap là swap partitionswap file, Bây giờ bạn sẽ tìm hiểu cách thêm swap file và cũng như xóa swap file đã được tạo.

Kiểm tra Swap

Trước tiên, bạn cần kiểm tra xem máy chủ của mình đã cấu hình Swap chưa. Các máy ảo thường không được bật Swap theo mặc định. Kiểm tra không gian hoán đổi bằng lệnh sau.

sudo swapon --show

Nếu bạn không nhận được bất kỳ đầu ra nào, thì máy chủ của bạn không có bất kỳ không gian trao đổi nào.

Hoặc đầu ra của bạn như bên dưới:

Filename                      Type            Size            Used            Priority
/dev/dm-0                     partition       524284          524284          -2

Tức là bạn đã có swap partition với dung lượng chỉ 512M. Kệ nó, ta sẽ thêm Swap file sau đây để dễ quản lý sau này.

Đối chiếu bảng sau để có dung lượng swap thích hợp cho server của bạn nhé :

Total RAM Server Hệ thống Desktop
< 2G 2xRAM 3xRAM
2G < RAM < 8G RAM 2xRAM
8G < RAM < 64G 0.5xRAM 1.5xRAM
64G < RAM < 0.5xRAM Không khuyến khích

01. Tạo Swap file

Bây giờ bạn có thể tạo một tệp swap để thêm dung lượng 8 GB ( 8G ). Bạn cũng có thể tăng hoặc dung lượng bạn cần. (Ram vật lý của mình là 16GB)

sudo fallocate -l 8G /swapfile

02. Thiết lập quyền swap file

Bây giờ bạn có một swap file có kích thước chính xác và có thể được kích hoạt dưới dạng swap space.

Tiếp tục bằng cách thiết lập quyền.

sudo chmod 600 /swapfile

03. Thiết lập không gian hoán đổi

Bây giờ bạn có thể đánh dấu swapfileswap space bằng lệnh mkswap.

sudo mkswap /swapfile

Bạn sẽ nhận được đầu ra tương tự như thế này:

# sudo mkswap /swapfile
Setting up swapspace version 1, size = 8 GiB (8589930496 bytes)
no label, UUID=6da7b0f1-d59a-4055-80f2-7b1400603985

04. Kích hoạt Swap Space

Kích hoạt Swap file và cho phép hệ thống sử dụng nó.

sudo swapon /swapfile

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

sudo swapon --show

Đầu ra:

NAME      TYPE      SIZE USED PRIO
/dev/dm-0 partition 512M 512M   -2
/swapfile file        8G 1.9G   -3

Bạn có thể kiểm tra bằng lệnh:

free -h
# OUTPUT
               total        used        free      shared  buff/cache   available
Mem:            15Gi        13Gi       190Mi       690Mi       2.3Gi       1.3Gi
Swap:          8.5Gi       2.6Gi       5.9Gi

05. Làm cho Swap file là vĩnh viễn

Bây giờ Swap file chỉ được tạo cho phiên hiện tại. Nếu bạn khởi động lại máy chủ, những thay đổi hiện tại sẽ biến mất. Vì vậy, bạn có thể đặt cài đặt này vĩnh viễn bằng cách thêm Swap file vào tập tin /etc/fstab.

Sao lưu tệp /etc/fstab trong trường hợp xảy ra sự cố.

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

Thêm thông tin tệp Swap file vào cuối tệp /etc/fstab của bạn bằng lệnh sau.

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

06. Cấu hình giá trị swap

Tham số swappiness cho phép định cấu hình tần suất hệ thống của bạn hoán đổi dữ liệu từ RAM sang Swap.

Giá trị này sẽ nằm trong khoảng từ 0 đến 100 theo phần trăm. Các giá trị gần bằng 0, hạt nhân sẽ không hoán đổi dữ liệu sang đĩa trừ khi thực sự cần thiết. Giá trị càng gần 100 càng cao sẽ cố gắng đưa nhiều dữ liệu vào hoán đổi nhằm nỗ lực giữ thêm dung lượng RAM trống.

  • swappiness=0 : Không hoán đổi dữ liệu
  • swappiness=10 : Hoán đổi dữ liệu khi RAM sử dụng 90%
  • swappiness=40 : Hoán đổi dữ liệu khi RAM sử dụng 60%
  • swappiness=60 : Hoán đổi dữ liệu khi RAM sử dụng 40% (mặc định)
  • swappiness=100 : Swap hoạt động song song với RAM

Vì vậy, yêu cầu hệ thống không phụ thuộc nhiều vào hoán đổi thường sẽ giúp hệ thống của bạn nhanh hơn.

Bạn có thể thấy giá trị hoán đổi hiện tại bằng cách nhập:

cat /proc/sys/vm/swappiness
# Output
60

Bây giờ đặt giá trị thành 10 bằng lệnh sau.

sudo sysctl vm.swappiness=10
# Output
vm.swappiness = 10

Bạn có thể đặt giá trị này vĩnh viễn bằng cách thêm dòng sau vào cuối tệp /etc/sysctl.conf của mình.

vm.swappiness=10

Xóa Swap file

Để xóa một không gian hoán đổi, bạn cần chạy swapoff, xóa mục nhập khỏi tệp /etc/fstab và cuối cùng xóa tệp Swapfile.

sudo swapoff -v /swapfile

Chỉnh sửa tệp /etc/fstab và xóa dòng /swapfile swap swap defaults 0 0
Cuối cùng, xóa tệp swapfile.

sudo rm /swapfile