Swap là khái niệm bộ nhớ ảo được sử dụng trên hệ điều hành Linux. Khi VPS/Server hoạt động, nếu hết RAM hệ thống sẽ tự động sử dụng một phần ổ cứng để làm bộ nhớ cho các ứng dụng hoạt động.
Với những server không có swap, khi hết RAM hệ thống thường tự động stop service MySQL, do đó hay xuất hiện thông báo lỗi Establishing a Database Connection.
Do sử dụng ổ cứng có tốc độ chậm hơn RAM, nhất là với những server dùng ổ cứng thường không dùng SSD, do đó không nên thường xuyên sử dụng Swap sẽ làm giảm hiệu năng hệ thống. Nếu tình trạng hết RAM hay xảy ra, bạn hãy tối ưu server, tăng cache và nâng cấp bổ sung thêm RAM.
Với các VPS dùng công nghệ ảo hóa OpenVZ, có thể bạn sẽ không tạo được swap do hệ thống đã tự động kích hoạt sẵn.
Nội dung bài viết
Hướng dẫn tạo Swap
Áp dụng được cả trên CentOS và Ubuntu.
1. Kiểm tra swap
Trước khi tiến hành tạo file swap cần kiểm tra xem hiện tại hệ thống đã kích hoạt swap hay chưa bằng cách chạy:
swapon -s
Nếu không có thông tin gì hoặc trả về như hình dưới chứng tỏ server chưa có swap và bạn có thể tạo.
2. Kiểm tra dung lượng trống
Sử dụng lệnh df -h
để kiểm tra dung lượng trống. Còn 13GB, vẫn thoải mái để tạo swap:
3. Tạo swap
– Chạy lệnh dd. Ở đây mình tạo 1GB swap (count=1024k) cho VPS 768MB RAM
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
Lệnh trên sẽ tạo swap có dung lượng 1Gb. Bạn có thể thay count=1024k bằng count=2048k… để tạo swap dung lượng 2Gb. Dung lượng Swap tối đa chỉ nên gấp đôi RAM vật lý.
– Tạo phân vùng swap
mkswap /swapfile
– Kích hoạt swap
swapon /swapfile
Đoạn này có thể gặp thông báo warning insecure permissions 0644, không sao cả bạn cứ bỏ qua. Chúng ta sẽ chỉnh lại ở bước sau.
– Kiểm tra lại tình trạng swap bạn sẽ thấy như sau:
swapon -s
– Thiết lập swap tự động được kích hoạt mỗi khi reboot
echo /swapfile none swap defaults 0 0 >> /etc/fstab
– Bảo mật file swap bằng cách chmod
chown root:root /swapfile chmod 0600 /swapfile
4. Cấu hì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 = 0: swap chỉ được dùng khi RAM được sử dụng hết.
- swappiness = 10: swap được sử dụng khi RAM còn 10%.
- swappiness = 60: swap được sử dụng khi RAM còn 60%.
- swappiness = 100: swap được ưu tiên như là RAM.
Do tốc độ xử lý dữ liệu trên RAM cao hơn nhiều so với Swap, do đó bạn nên đặt giá trị này về gần với 0 để tận dụng tối đa sức mạnh hệ thống. Tốt nhất nên chỉnh về 10.
– Kiểm tra mức độ sử dụng file swap của hệ thống bằng cách chạy dòng lệnh sau
cat /proc/sys/vm/swappiness
– Chỉnh thông số swappiness bằng cách dùng lệnh sysctl
sysctl vm.swappiness=10
– Kiểm tra lại bạn sẽ thấy kết quả trả về 10
cat /proc/sys/vm/swappiness
Để đảm bảo giữ nguyên thông số này mỗi khi khởi động lại VPS bạn cần điều chỉnh tham số vm.swappiness
ở cuối file /etc/sysctl.conf
(nếu không có bạn hãy add thủ công vào)
nano /etc/sysctl.conf
Thêm dòng sau vào cuối nếu chưa có, nếu có rồi thì update lại giá trị:
vm.swappiness = 10
Nhấn Ctrl + O để lưu, Enter và Ctrl + X để thoát.
– Khởi động lại VPS và kiểm tra lại kết quả:
swapon -s cat /proc/sys/vm/swappiness
Lưu ý
– Với CentOS 7.2 có thể tune profile sẽ overwrite vm.swappiness
mỗi lần reboot, bạn cần kiểm tra profile nào đang overwrite để cấu hình lại thủ công.
grep vm.swappiness /usr/lib/tuned/*/tuned.conf
Output có thể như sau:
[root@hocvps ~]# grep vm.swappiness /usr/lib/tuned/*/tuned.conf
/usr/lib/tuned/latency-performance/tuned.conf:vm.swappiness=10
/usr/lib/tuned/throughput-performance/tuned.conf:vm.swappiness=10
/usr/lib/tuned/virtual-guest/tuned.conf:vm.swappiness = 30
Lúc này, bạn hãy mở file /usr/lib/tuned/virtual-guest/tuned.conf
, tìm vm.swappiness
và thay đổi vm.swappiness = 30
thành vm.swappiness = 10
.
nano /usr/lib/tuned/virtual-guest/tuned.conf
Nhấn Ctrl + O để lưu, Enter và Ctrl + X để thoát.
Khởi động lại VPS và kiểm tra lại kết quả.
Thay đổi dung lượng swap
Nếu bạn đã theo các hướng dẫn trên để tạo swap file và muốn thay đổi dung lượng swap, hãy thực hiện ngược lại quá trình.
– Tắt swap
swapoff /swapfile
– Xóa file swap
rm -f /swapfile
– Tạo mới file swap với dung lượng mong muốn. Ví dụ mình tạo 2GB (2048k)
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048k
– Tạo phân vùng swap
mkswap /swapfile
– Kích hoạt swap
swapon /swapfile
– Bảo mật file swap bằng cách chmod
chown root:root /swapfile chmod 0600 /swapfile
– Kiểm tra lại tình trạng swap
swapon -s
Khi thay đổi dung lượng swap, các cài đặt từ trước như tự động kích hoạt khi server reboot, thông số Swappiness được giữ nguyên nên bạn không cần phải thao tác gì thêm.
Giờ khởi động lại server rồi kiểm tra lại kết quả thôi.
Cảm ơn, hocvps vẫn chạy tốt từ 2020 tới 2024 😀 Script nhẹ và ổn định
Các bạn cho mình hỏi, khi mình edit file “sysctl.conf” với lệnh “nano /etc/sysctl.conf”, nhưng sao nội dung file của mình khác hoàn toàn với file trong bài viết nhỉ 🙁
https://imgur.com/Uu38FoJ
bạn ơi hôm này mình cài hocvps thì báo lỗi như hình không cài được là sao ạ : https://imgur.com/pZvWTI0 , mong bạn giúp mình với cám ơn ạ
Những vps khác mình làm ok, tự dưng hôm nay tạo cái vps mới, làm xong kiểm tra bằng lệnh swapon -s thì nó cứ ra /dev/null .
Ai bị lỗi này thì giúp mình fix với.
Cảm ơn
Anh Luân Trần sao lâu rồi không thấy hoạt động vậy ạ , Bash này cũng lâu không được cập nhật
cái này có gì phải cập nhật đâu bạn? centos 8 vẫn dùng lệnh này nhé
Hi bạn
Bình mình swap không sao nhưng lần này restart báo lỗi:
“Failed to restart nginx.service: Unit not found.”
Sau đó mình chạy lệnh dưới:
yum update
yum install epel-release
yum install nginx
systemctl -l enable nginx
systemctl -l start nginx
Vậy mình có cài hocvps như bt được không? Hay cần setup từ server mới tinh.
Lỗi nginx thì sửa theo lỗi chứ cài mới làm gì đâu bạn, làm thế lại chèn đè lung tung vào cấu hình Nginx gốc.
HocVPS thì cần cài trên server mới tinh nhé bạn
cảm ơn bạn đã chia sẻ Bài viết rất chi tiết, mình tạo swap trên centos 6 rất ngon
Mình làm theo hướng dẫn nhưng thấy nó trả về kết quả ko giống như hướng dẫn, không biết kết quả này có đúng ko ad ơi.
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
Kết quả bình thường và okie nhé bạn
Mình cài hocvps trên digitalocean nhưng import file data.sql chỉ 50M mà bị 502 Bad Gateway thì khắc phục như thế nào nhỉ
Bạn import database bằng dòng lệnh trên SSH nhé
https://hocvps.com/backup-va-restore-mysql-database-bang-lenh/
Cho mình hỏi mình cài hoc vps và lets ssl theo hướng dẫn trên đây , giờ vào upload plugin hay là bất cứ gì nó cũng ko cho là sao nhĩ : báo lỗi là : Tập tin được tải không thể chuyển tới wp-content/uploads/2019/04. Giúp mình với ! Cảm ơn ạ
Bạn chạy hocvps 14)Phan Quyen Webserver và kiểm tra lại xem
Priority -2 mình tạo nó ra là -2 . Vậy cho hỏi -1 hay -2 tốt hơn và làm sao để chỉnh nó thành -1 ?
Có nhiều hơn 1 swap mới cần quan tâm nhé bạn
Bạn có thể tham khảo
https://www.systutorials.com/241018/how-to-set-swap-priority-in-linux/
Cái chỉ số Priority của em nó là -2 thì nó nói lên vấn đề gì bác nhỉ. Em thấy vps nó cứ bị chậm chậm
“Với những server không có swap, khi hết RAM hệ thống thường tự động stop service MySQL, do đó hay xuất hiện thông báo lỗi Establishing a Database Connection.”
Nếu bị trường hợp này thì mình vào đâu để sửa lỗi. Xin các bạn hướng dẫn chi tiết.
Bạn tạo swap như trong bài đó
Bác viết chi tiết và rõ ràng, em chỉ copy và paste haha.
Mỗi lần tạo mới Vultr VPS là phải tạo swap cho ẻm, hay bác Phương làm cái script tạo nhanh swap nhỉ 😀
Mới bắt đầu học bên server vps, bài viết rất rõ, thank bác!
Luân cho mình hỏi, mình sử dụng ram 512 tạo swap chạy vẫn khá ổn, giờ mình nâng cấp lên 2GB ram có nên tạo swap ko?
Bạn cứ tạo đề phòng thôi
Cái phần Thay đổi dung lượng swap chắc bác Luân mới cập nhật sau này.
Đợt trước mình có hỏi thấy Luân gửi hướng dãn cho mình cái link khá phức tạp.
Vừa rồi cần thay đổi swap lại phải setup lại cả VPS, cay qúa cơ.
Cập nhật bài mới cho centos luôn đi bác Phương
Hệ thống CentOS có gì mới à bạn?
Em comment bên bài setup varnish mà ta @@
Hiện tại mình nâng cấp ram gấp đôi lên ram cũ. Và mình muốn thay đổi dung lượng Swap thì làm sao? Mình thử chạy rm -f /swapfile để xóa swap nhưng thông báo rm: cannot remove ‘/swapfile’: Operation not permitted.
Cảm ơn bạn.
Bạn off swap chưa?
Mình làm được rồi. Cảm ơn bạn.
Mình làm tới bước # nano /etc/sysctl.conf thì báo
-bash: nano: command not found
VPS này là cái mới mua bên OVH. Còn bên Vultr và Digital Ocean thì mình vẫn làm theo hướng dẫn này dễ dàng.
Mình thử lệnh vim để edit file cũng không được. Không biết phải làm sao ?
Bạn chỉ giúp mình với.
Thanks
À, có phải do VPS không phải SSD nên không thể tạo swap được phải không bạn ? 😀
Không phải. Thông báo kia chỉ là bạn chưa cài nano. Nếu là CentOS thì bạn chạy
yum install nano
để cài nano rồi dùng nano để editok bạn, hqua mình search lỗi thì cũng mới thấy.
Cảm ơn bạn
Mình cài swap bị lỗ này. nhờ xem giúp mình với
[root@vps192170 ~]# mkswap /swapfile
mkswap: /swapfile: warning: don’t erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=b89ff6fb-3e79-4bfe-a3cc-63d1c73ec3a8
Bạn vẫn chạy được bình thường, chỉ là thông báo lưu ý. Hình như hệ điều hành của bạn là bản cũ?
Em tạo 16384k swap cho vps 8GB ram thì bị lỗi full disk /dev/vda1 là sao anh?
VPS bạn còn trống tận 16GB không?
VPS mới trống 100GB cơ anh, em test thử tạo swap 8GB thì dung lượng mất vài chục GB
Cho mình dòng lệnh tạo swap và kết quả của bạn
Cùng kết quả của df -ah
VPS có ram 1GB
sudo dd if=/dev/zero of=/swapfile bs=2048 count=2048k
swapon -s:
Filename Type Size Used Priority
/swapfile file 4194300 272 -1
df -ah:
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 6.4G 17G 28% /
VPS ram 8GB
sudo dd if=/dev/zero of=/swapfile bs=4096 count=4096k
/swapfile file 16777212 0 -1
/dev/vda1 99G 20G 75G 21% /
Kết quả như bạn bảo thì có lỗi gì đâu
Theo như bài viết thì swap có thể tạo với dung lượng gấp đôi RAM, nhưng em tạo vậy thì /dev/vda1 chiếm hết dung lượng. VPS của em có 8GB RAM, mà em chỉ dám tạo tạo 4GB swap thôi.
Tầm 4GB RAM trở lên thì mức swap chỉ nên tạo là 1 nửa. Tùy hệ thống thôi bạn.
Cảm ơn anh, em cứ nghĩ cứ tạo trong khoảng gấp đôi là được.
Với mức RAM bé thôi. Mức lớn thì swap quá nhiều không cần thiết
Tạo swap nhiều ngoài việc tốn dung lượng ổ cứng thì có ảnh hưởng gì khác tới hệ thống hay tốc độ web không anh?
VPS Azdigi chạy nó báo “swapon failed: Operation not permitted”. LÀm sao cài đây?
VPs không cho kích hoạt swap.
1. Bạn kiểm tra công nghệ ảo hóa của VPS
yum install virt-what && virt-what
2. Bạn dùng user có quyền root chứ
Mình tắt cái Swap thì đc nhưng khi nhập các lệnh xóa, tạo mới….sau đó thì nó ko chạy gì cả bạn ơi ??
Kết quả các lệnh ntn bạn?
À, sau khi comment mình tắt rồi thử lại thì mọi thứ okie lại rồi bác ạ :)). Ko hiểu bị gì
Ok bạn 🙂
Hello Admin!
Minh sử dụng VPS OVH 2 core ram 2Gz.
Mỗi khi tạo swap 2GZ và reboot lạ VPS là không thể kết nối SSH được nữa
VPS hoàn toàn mới reinstall và chưa cài đặt gì ngoài swap. Đã thử Cenos 6, 7 đề bị
Xin admin chỉ dùm! Cám ơn bạn.
1. Bạn kết nối qua console thì service SSH ntn?
2. Bạn ping IP VPS thì ntn
3. Bạn login qua SSH thông báo gì
Chao Phương
Mình kêt nối SSH với Bitvise thì bao lỗi:
The SSH2 session has terminated with error. Reason: FlowSocketReader: Error receiving bytes. Windows error 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
Con Ping trong cmd thi không kết nối được luôn
Có thông báo với OVH thì họ bảo chuyển qua chế độ Resuse Mode thi ping bình thường. Họ báo đây là do minh phần mền cài lên VPS loi84 config.
Làm rất nhiều lần mãi vẫn bị.
Xin cám ơn
Helo Phương
Minh thấy thông báo lỗi từ OVH gửi về cho mình như thế náy:
Our monitoring system has just detected a fault on your VPS
The fault was noticed on 2018-02-17 12:14:00
Your VPS may function correctly,
though a few false positives may appear:
– following a reboot of the VPS with a fsck which
would be launched automatically, delaying the reboot
– on setting up firewall rules that block the
monitoring requests (139.99.104.72)
Xin cám ơn!
Nếu vậy tức bạn config xong VPS off luôn chứ chả phải là không kết nối qua SSH được. Bạn thử deploy VPS mới gửi qua support@hocvps.com mình xem cài swap cho
Cám ơn Phương. Hiện nay nó vẫn đang chạy tốt. để theo dõi vài ngày xem sao. Nếu vẫn bị mình lại email bạn giúp minh nha!
Xin cám ơn!
Tưởng bạn bảo ping IP VPS không được thì sao chạy được?
đến phần mkswap /swapfile mình bị báo lỗi /swapfile: Permission denied
Khắc phục như thế nào vậy bạn
thanks
Bạn không có quyển chỉnh sửa đối với swapfile. Bạn dùng tài khoản root chứ?
Chào bạn!
Mình cài swap xong, khởi động lại server thì site ko truy cập được nữa. Nhưng FPT và ZOC vẫn vào bình thường, PING ip vẫn tới. Không hiểu bị lỗi gì. Bạn đã gặp trường hợp này chưa?
Site không truy cập được thì bạn kiểm tra Nginx và PHP-FPM kết quả ntn?
Cảm ơn admin rất nhiều. Bài viết rất chi tiết, mình tạo swap trên centos 6 rất ngon nhưng khi chuyển sang Centos 7 (mình sử dụng bản 7.4, ram 512MB của Digital Ocean) thì không thể tạo đưowjc nó báo lỗi: “swapon: /swapfile: swapon failed: Invalid argument”. Mọi người giúp mình với.
Cho mình hỏi sao mình làm hết các bước rồi mà khi bấm lệnh: swapon -s nó không hiện ra gì hết vậy ạ?
Như vậy ko biết đã cài xong Swap chưa nữa 🙁
Cái trên mình ổn rồi, Swap mình khi mình Free m
total used free shared buff/cache available
Mem: 1016380 94116 798232 12984 124032 777904
Swap: 4194300 0 4194300
Ổn chưa ạ? Mình dùng Vultr 1G
Ok nhé bạn
Chào ad mình đang chạy Swap theo hướng dẫn của ad, nhưng chạy được 1 thời gian ổ cứng của mình bị full, mình kiểm tra lệnh : df -h thì thấy ở phần /dev/vdal đã sử dụng 100% mặc dù website mình không thêm gì cả. Lúc trước mình có tìm thấy bài hướng dẫn kiểm tra những file chiếm dung lượng lớn để xóa đi mà giờ tìm không ra nữa. Hy vọng Ad có thể hướng dẫn trong trường hợp này nên làm như thế nào ạ . Thanks
Đây bạn nhé https://hocvps.com/cach-tim-file-thu-muc-lon-nhat-tren-linux-unix-bsd/
Bài viết rất hay và rất chi tiết. Làm đến đâu xem hình minh họa đến đó. Không như các bài viết ở site khác –> Làm theo hướng dẫn bài này không gặp bất kỳ sự trở ngại nào. Tôi rất cảm ơn tác giả đã soạn bài viết này.
Em đang muốn xóa đi tạo lại file swap thì bị lỗi này
swapoff failed: Cannot allocate memory
Nhờ anh Việt Phương hướng dẫn giúp em với ạ
Bạn post full cả lệnh lúc bạn thực hiện nhé, cho mình thêm kết quả của
free -m
vàdf -ah
– Tắt swap
swapoff /swapfile
– Xóa file swap
rm -f /swapfile
– Tạo mới file swap với dung lượng mong muốn. Ví dụ mình tạo 2GB (2048k)
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048k
– Tạo phân vùng swap
mkswap /swapfile
– Kích hoạt swap
swapon /swapfile
Em làm theo trên mà anh Phương
free -m
total used free shared buff/cache available
Mem: 992 773 73 73 145 25
Swap: 1023 1017 6
df -ah em còn 11GB trống
Ý mình là thông báo lỗi lúc bạn thực hiện lệnh nào?
swapoff /swapfile lệnh này anh
Bạn xem có file
swapfile
ở ngoài cùng, ngang hàng với /root/ /etc không?ls -al /
Dạ có anh
Anh Phương giúp em cái @@
Lỗi hình như liên quan đến memory. Tuy vậy thấy
free -m
của bạn hoàn toàn bình thườngBạn tạo 1 cái swap khác (đặt tên khác swapfile1 chẳng hạn). Tạo xong thì off cái cũ đi xem được không
Chào các bạn.
Mình mới mua VPS HostHatch, đã tạo sẵn 127MB swap. Mình muốn thay đổi dung lượng swap theo hướng dẫn, nhưng khi tắt swap với lệnh: swapoff /swapfile, thì mình nhận được thông báo:
“swapoff failed: No such file or directory”
File swap họ để ở đâu thì bạn vào tắt ở đó nhé. Bài viết hướng dẫn là swapfile ở ngay ngoài cùng, ngang với /root/ hay /etc/
Bạn hướng dẫn mình cách kiểm tra file swap ở đâu với nhé.
Mình thử làm theo cách mà HostHatch hỗ trợ, thì dường như nó tạo 2 file swap rồi, ko biết có tốt ko:
Mình kiểm tra = lệnh: swapon -s
[root@vinael ~]# swapon -s
Filename Type Size Used Priority
/mnt/1GB.swap file 1048572 0 -2
/dev/vda2 partition 131068 0 -1
Mình gửi lại hình ảnh: http://sv1.upsieutoc.com/2017/09/02/Capture1f1ae.png
VPS bạn là 1GB Swap thì phải
Mặc định là 131068KB đó bạn, mình làm theo họ hướng dẫn lên tạo thêm 1 cái 1048572 nữa bạn.
Bạn
swapoff -a
là có thể disable all swap rồi tạo lại nhéMình làm như bạn hướng dẫn, kiểm tra lại = test tốc độ thì swap =0, nhưng khi reboot lại thì swap vẫn còn như cũ
Mình làm đến bước này nano /etc/sysctl.conf thì nó báo command not found. Mình dùng VPS Ram 1G của DO. Vẫn như thế nhưng khi làm ở Vultr gói 1G thì lại bình thường. Cả hai đều dùng CentOS. Có ai biết lỗi này là sao không ạ? Và làm thế nào để khắc phục?
Cảm ơn.
yum install nano
rồi chạy lại xem bạnCảm ơn bạn, mình chạy yum install nano và đã cài đặt được thành công.
vps mình đã chạy được 2 tuần r giờ muốn cài swap lại được ko vậy mn?
Được bạn nhé.