Swap là khái niệm bộ nhớ ảo được sử dụng trên hệ điều hành Linux. Khi VPS hoạt động, nếu thiếu RAM hệ thống sẽ tự động sử dụng một phần đĩa cứng để làm bộ nhớ thay thế tạm thời cho RAM.
Tuy việc truy xuất dữ liệu từ swap chậm hơn RAM (tất nhiên rồi) những nó là giải pháp cứu cánh trong nhiều tình huống. Tốt nhất chúng ra nên bỏ 1 chút dung lượng ổ đĩa trống ra để làm Swap trong khi chưa có điều kiện lắp thêm RAM
Mục lục nội dung
I. Kiểm tra thông tin Swap trên hệ thống
II. Tạo Swap file
III. Kích hoạt file Swap
IV. Tự động kích hoạt Swap khi khởi động
VI. Xóa file Swap
VIII. Lời kết
Kiểm tra thông tin Swap trên hệ thống
Trước khi tạo swap, chúng ta kiểm tra xem hệ thống hiện tại đã có swap chay chưa
swapon -s
Nếu không có thông tin gì hiện ra sau câu lệnh trên thì có nghĩa là swap chưa được kích hoạt trên hệ thống của bạn
Hoặc cách khác để kiểm tra swap đã tồn tại hay chưa là
free -m
Nếu các thông số của Swap là 0 như hình dưới thì hệ thống của bạn chưa sử dụng Swap.
total used free shared buff/cache available
Mem: 489 37 362 4 89 429
Swap: 0 0 0
Bây giờ bạn có thể kiểm tra xem dung lượng ổ đĩa còn trống của bạn là bao nhiêu, sử dụng lệnh df -h
:
[bigvn@centos7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 982M 18G 6% /
devtmpfs 236M 0 236M 0% /dev
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 245M 4.3M 241M 2% /run
tmpfs 245M 0 245M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/0
Tạo Swap file
Thông thường thì kích thước file swap nên bằng với dung lượng RAM,
Để tạo swapfile có kích thước 512MB tại /:
sudo fallocate -l 512m /swapfile
Kiểm tra file swap vừa tạo ra
ls -lh /swapfile
Kết quả như dưới là ổn
-rw-r--r-- 1 root root 512M Jun 1 13:37 /swapfile
Kích hoạt file Swap
Trước tiên chúng ta cần điều chỉnh quyền truy cập đến file swap, tốt nhất là chỉ có tài khoản root được phép đọc/viết
sudo chmod 600 /swapfile
Bây giờ file swap đã khá an toàn, chúng ta cần định dạng cho nó
sudo mkswap /swapfile
Kết quả
[bigvn@centos7 ~]$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=22236c7a-c6ab-4169-bf09-9e3661053955
Swapfile đã sẵn sàng, tuy nhiên nó chưa hoạt động. Kích hoạt nó ngay nào
sudo swapon /swapfile
Để chắc chắn rằng file swap đã được kích hoạt và sử dụng:
swapon -s
Kết quả
[bigvn@centos7 ~]$ swapon -s Filename Type Size Used Priority /swapfile file 524284 0 -1
Để kiểm tra dung lượng đã sử dụng (used) của swap, dùng lệnh free -m
:
[bigvn@centos7 ~]$ free -m
total used free shared buff/cache available
Mem: 489 42 334 4 112 423
Swap: 511 0 511
Tự động kích hoạt Swap khi khởi động
Sau khi khởi động lại, swap sẽ không tự động kích hoạt. Bạn cần khai báo trong fstab
để swap file tự động kích hoạt sau mỗi lần reboot
sudo nano /etc/fstab
Thêm dòng này vào cuối file
/swapfile swap swap sw 0 0
Tùy chỉnh Swappiness.
Swappiness là mức độ ưu tiên sử dụng swap, khi lượng RAM còn lại bằng giá trị của swappiness (tính theo tỷ lệ phần trăm) thì swap sẽ được sử dụng. Swappiness có giá trị trong khoảng 0 – 100.
- swappiness có giá trị càng gần 0, hệ thống càng ít sử dụng swap, trừ khi thật cần thiết
- swappiness có giá trị càng gần 100, hệ thống càng sớm sử dụng swap
Ví dụ
swappiness = 0: swap chỉ được sử dụng khi bộ nhớ RAM đã hết
swappiness = 30: swap được sử dụng khi RAM còn 30% (chế độ mặc định).
swappiness = 70: swap được sử dụng khi RAM còn 70%.
swappiness = 100: swap được ưu tiên ngang với RAM (điều này chỉ đem lại hiệu quả trong 1 số ít trường hợp)
Để xem giá trị swappiness hiện tại
cat /proc/sys/vm/swappiness
Trên CentOS 7, giá trị swappiness mặc định là 30, nó là phù hợp với đa số máy tính để bàn, server. Đối với hệ thống VPS bạn có thể giảm nó xuống để có hiệu quả tốt hơn
Ví dụ để thiết lập swappiness = 10:
sudo sysctl vm.swappiness=10
Bây giờ hãy kiểm tra lại để chắc chắn nó rằng nó làm việc tốt:
cat /proc/sys/vm/swappiness
Giá trị là 10. Như vậy là bạn đã thay đổi giá trị của swappiness thành công. Tuy nhiên, việc thay đổi trên sẽ không được áp dụng cho các lần khởi động tiếp theo.
Để thiết lập giá trị vĩnh viễn cho swappiness, mở file /etc/sysctl.conf
:
sudo nano /etc/sysctl.conf
Thêm vào cuối file đó với dòng sau:
vm.swappiness=10
Như vậy, máy chủ vps sẽ tự động thiết lập swappiness với giá trị bạn đã khai báo sau khi khởi động.
Xóa file Swap
Đôi khi chúng ta cần gỡ bỏ swap ra khỏi hệ thống và lấy lại phần không gian file swap đã chiếm dụng. Bạn hãy xóa nó bằng cách làm ngược lại quá trình đã tạo ra nó
Mở file /etc/fstab
:
sudo nano /etc/fstab
Xóa dòng sau và lưu file lại:
/swapfile swap swap sw 0 0
Tắt swap
sudo swapoff /swapfile
Xóa file swap
sudo rm /swapfile
Ok, vậy là xong
Thay đổi dung lượng swap
Bạn cần xóa file swap trước rồi tạo lại theo các cách hướng dẫn ở trên
Lời kết
Trong vps nói riêng và server nói chung, swap là thành phần không thể thiếu hỗ trợ đắc lực cho cả hệ thống. Dù RAM của bạn có nhiều đến mấy song vẫn nên dành một phần không gian cho swap phòng những lúc quá tải, bị hết RAM. Đối với những hệ thống nhỏ việc này lại càng mang nhiều ý nghĩa bởi bạn sẽ tiết kiệm được chi phí cho việc nâng cấp dung lượng RAM.