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 partition
và swap 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 swapfile
là swap 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