» » Cách tạo Swap file cho VPS Linux (Ubuntu, CentOS 6/7)

Cách tạo Swap file cho VPS Linux (Ubuntu, CentOS 6/7)

Swap là một vùng trên ổ đĩa và nó được sử dụng để làm RAM ảo cho máy tính. Bạn có thể tạo Swap file cho VPS Linux, bao gồm Ubuntu, CentOS 6/7 rất dễ dàng. Nếu như bạn có một VPS hay máy tính với bộ nhớ RAM nhỏ (như 512MB) hoặc bộ nhớ RAM không đủ để xử lý thì việc tạo Swap để làm RAM ảo là phương pháp khá hoàn hảo.

Lý do để sử dụng Swap là hệ thống của bạn cần giải phóng bộ nhớ RAM để sử dụng cho mục đích khác. Có hai loại Swap mà bạn có thể sử dụng đó là tạo phân vùng swap và swap file. Ưu điểm khi bạn sử dụng swap file là dễ dàng khởi tạo, thay đổi kích thước và an toàn. Đối với VPS Linux (như DigitalOcean, Vultr…) với một phân vùng thì sử dụng swap file là cách duy nhất. Đối với các máy tính để bàn hoặc laptop với nhiều phân vùng, bạn có thể tạo phân vùng swap thay vì sử dụng swap file. Bạn có thể tìm hiểu chi tiết về Swap tại đây.

Bài viết này sẽ hướng dẫn bạn cách tạo Swap file cho VPS, máy tính để bàn hoặc laptop sử dụng hệ điều hành Linux như Ubuntu, Debian, RHEL, CentOS…

  1. Kiểm tra thông tin hệ thống
  2. Tạo Swap file
  3. Kích hoạt file Swap
  4. Thiết lập Swappiness
  5. Xóa file Swap
  6. Kết luận

Kiểm tra thông tin hệ thống

Để bắt đầu, bạn cần đăng nhập vào SSH nếu bạn đang sử dụng VPS hoặc mở Terminal nếu bạn đang dùng máy tính để bàn.

Đầu tiên bạn nên kiểm tra xem hệ thống đã sử dụng Swap hay chưa bằng cách sử dụng lệnh free -m.

              total        used        free      shared  buff/cache   available
Mem:            489          43         224           4         221         362
Swap:             0           0           0

Nếu các thông số của Swap là 0 thì hệ thống của bạn chưa sử dụng Swap. 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:

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  1.5G   18G   8% /
devtmpfs        237M     0  237M   0% /dev
tmpfs           245M     0  245M   0% /dev/shm
tmpfs           245M  4.3M  241M   2% /run
tmpfs           245M     0  245M   0% /sys/fs/cgroup

Thông số về dung lượng ổ đĩa hệ thống của bạn được liệt kê ở dòng đầu tiên và dung lượng còn trống nằm trong phần Avail. Bạn sẽ cần phải tính toán xem nên sử dụng bao nhiêu không gian cho swap. Bạn không nên tạo swap file có kích thước quá lớn trong khi dung lượng ổ đĩa còn trống của bạn quá ít.

Tạo Swap file

Để tạo swap file, sử dụng lệnh sau:

sudo fallocate -l 512m /swapfile

Lệnh trên sẽ tạo ra file swapfile có kích thước 512MB tại /. Bạn có thể thiết lập kích thước tùy ý cho file swap, ở đây mình sẽ tạo file swap có kích thước bằng với lượng RAM. Để tạo file swap có kích thước 2Gb, sử dụng lệnh sau:

sudo fallocate -l 2G /swapfile

Nếu bạn gặp lỗi “fallocate failed: Operation not supported” khi sử dụng lệnh trên, bạn có thể sử dụng lệnh dưới đây để thay thế:

sudo dd if=/dev/zero of=/swapfile bs=1M count=512

Kết quả:

512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 2.3815 s, 225 MB/s

Bạn nên kiểm tra lại file swap để xác nhận rằng mọi thứ đều ổn:

ls -lh /swapfile

Kết quả ở dưới cho thấy file swap đã được tạo ra đúng cách:

-rw-r--r-- 1 root root 512M Nov  7 01:11 /swapfile

Thiết lập quyền cho file để hạn chế người dùng có thể truy cập đến file này.

sudo chmod 600 /swapfile

Định dạng swap cho file:

sudo mkswap /swapfile

Kết quả:

Setting up swapspace version 1, size = 524284 KiB
no label, UUID=3fa74a4e-9b72-45fe-9c2c-972cfe87ef9a

Kích hoạt file Swap

Sau khi bạn đã có một file swap, bây giờ bạn có thể kích hoạt để hệ thống sử dụng file swap này:

sudo swapon /swapfile

Để chắc chắn rằng file swap đã được kích hoạt và sử dụng, bạn có thể kiểm tra như sau:

sudo swapon -s

Kết quả:

Filename                                Type            Size    Used    Priority
/swapfile                               file    524284  0       -1

Bạn có thể kiểm tra dung lượng còn trống (free) và đã sử dụng (used) của swap bằng cách sử dụng lệnh free -m:

# free -m
              total        used        free      shared  buff/cache   available
Mem:            489          45          55           8         387         353
Swap:           511           0         511

Lưu ý: bạn phải kích hoạt lại swap cho mỗi lần khởi động tiếp theo hoặc thiết lập để hệ thống tự động kích hoạt và sử dụng swap.

Để hệ thống tự động sử dụng file swap mỗi khi khởi động, bạn cần khai báo thêm trong /etc/fstab.

Đối với Ubuntu, Debian và Linux Mint, sử dụng lệnh sau:

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

Đối với CentOS và RHEL:

echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab

Bây giờ thì Swap sẽ được tự động kích hoạt khi khởi động lại máy hoặc VPS. Bạn có thể khởi động lại máy tính và sử dụng lệnh free -m để kiểm tra.

Thiết lập Swappiness

Tham số Swappiness sẽ quyết định khi nào các tài nguyên và dữ liệu được lưu giữ trong bộ nhớ RAM sẽ được di chuyển đến không gian Swap. Thời gian để truy cập đến Swap sẽ chậm hơn trên bộ nhớ RAM, bạn nên chỉ định thời điểm hợp lý để hệ thống sử dụng Swap.

  1. Swappiness có giá trị từ 0 đến 100.
  2. Swappiness có giá trị càng lớn thì hệ thống sẽ sử dụng Swap càng sớm càng tốt.
  3. Swappiness có giá trị càng nhỏ thì hệ thống sẽ sử dụng Swap càng chậm càng tốt.

Ví dụ: bộ nhớ RAM của bạn là 4Gb và bạn thiết lập giá trị của “Swappiness” là 50. Khi hệ thống sử dụng 50% bộ nhớ RAM (2Gb) thì sẽ bắt đầu sử dụng Swap.

Nếu thời gian giải phóng bộ nhớ RAM chậm hơn thời gian mà các chương trình sẽ tiêu thụ dấn đến quá tải cho hệ thống, hãy thiết lập để sử dụng Swap càng sớm càng tốt. Trì hoãn sử dụng Swap nếu bộ nhớ RAM của bạn giải phóng kịp thời để phục vụ cho các chương trình. Bởi vì sử dụng bộ nhớ RAM sẽ giúp hệ thống chạy nhanh hơn.

Để kiểm tra giá trị của Swappiness, sử dụng lệnh sau:

cat /proc/sys/vm/swappiness

Kết quả là 30. Giá trị này sẽ khác nhau tùy theo hệ điều hành bạn đang sử dụng (Ubuntu, CentOS…) hoặc phiên bản dành cho máy tính để bàn, server. Đối với máy tính để bàn thì bạn có thể giữ giá trị mặc định là 60. Đối với máy chủ web thì bạn có thể giảm giá trị này về 10.

Để thay đổi giá trị của Swappiness, sử dụng lệnh như dưới đây:

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

Tìm đến dòng “vm.swappiness” và thay đổi giá trị mà bạn muốn. Nếu không tìm thấy dòng trên, bạn có thể thêm vào cuối file đó với dòng sau:

vm.swappiness=10

Lưu file và khởi động lại VPS hoặc máy tính.

Xóa file Swap

Nếu bạn cho rằng VPS hoặc máy tính để bàn của bạn có đủ RAM để sử dụng và bạn không cần sử dụng Swap, bạn có thể dễ dàng loại bỏ không gian swap ra khỏi hệ thống. Để loại bỏ không gian swap ra khỏi hệ thống, bạn có thể làm ngược lại quá trình mà bạn đã tạo ra chúng.

Mở file /etc/fstab:

sudo nano /etc/fstab

Xóa dòng sau và lưu file này lại:

/swapfile swap swap defaults 0 0

Tiếp theo, bạn chỉ cần tắt swap và xóa file swap trên hệ thống:

sudo swapoff /swapfile && sudo rm /swapfile

Vậy là xong. Bạn không cần phải khởi động lại nhé.

Kết luận

Việc sử dụng swap file là đơn giản và dễ dàng hơn việc tạo phân vùng swap. Mặc dù sử dụng không gian Swap là chậm hơn nhiều so với bộ nhớ RAM nhưng đổi lại bạn sẽ tiết kiệm được chi phí cho việc nâng cấp lượng RAM.

Thích hoặc chia sẽ bài này

  • Hi ad, khi tới lệnh “swapon /swapfile” thì mình gặp thông báo “swapon: /swapfile: skipping – it appears to have holes.” và mình kiểm tra lại “swapon -s” thì không có gì hết. Vậy phải xử lý ntn, thank ad

    • Bạn dùng lệnh nào để tạo Swap vậy?
      Bạn thử dùng lệnh này để kiểm tra file Swap thử nhé
      ls -l /