Table of Contents
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…
- Kiểm tra thông tin hệ thống
- Tạo Swap file
- Kích hoạt file Swap
- Thiết lập Swappiness
- Xóa file Swap
- 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ệnhfree -m
.
total used free shared buff/cache available Mem: 489 43 224 4 221 362 Swap: 0 0 0Nế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/cgroupThô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 /swapfileLệ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 /swapfileNế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=512Kết quả:
512+0 records in 512+0 records out 536870912 bytes (537 MB) copied, 2.3815 s, 225 MB/sBạn nên kiểm tra lại file swap để xác nhận rằng mọi thứ đều ổn:
ls -lh /swapfileKế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 /swapfileThiế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 /swapfileKết quả:
Setting up swapspace version 1, size = 524284 KiB no label, UUID=3fa74a4e-9b72-45fe-9c2c-972cfe87ef9a[caption id="attachment_581" align="aligncenter" width="661"] Tạo Swap cho Debian VPS[/caption] Như hình, mình đã tạo Swap file 1G cho VPS của mình
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 -sKết quả:
Filename Type Size Used Priority /swapfile file 524284 0 -1[caption id="attachment_584" align="aligncenter" width="664"] Kích hoạt và kiểm tra Swap[/caption] 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 511Lư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[caption id="attachment_586" align="aligncenter" width="662"] Thiết lập hệ thống tự động sử dụng file swap mỗi khi khởi động[/caption] Đối với CentOS và RHEL:
echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstabBâ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.- Swappiness có giá trị từ 0 đến 100.
- 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.
- Swappiness có giá trị càng nhỏ thì hệ thống sẽ sử dụng Swap càng chậm càng tốt.
cat /proc/sys/vm/swappinessKế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=10Bâ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/swappinessGiá 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.confTì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=10Lư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/fstabXóa dòng sau và lưu file này lại:
/swapfile swap swap defaults 0 0Tiế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 /swapfileVậy là xong. Bạn không cần phải khởi động lại nhé.