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.
Mình tạo được rồi nhé. Do gõ site chính tả.
Không tạo được trên VPS VULTR CentOS 7×64.
Luân help nhe
Cụ thể bạn gặp vấn đề gì thế nhỉ?
Mình không tạo được swap
Bạn không mô tả cụ thể hơn mình chịu không giúp được nhé.
“Để đả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)”
Thêm file thủ công làm sao vậy a? E ko bít về lunix nên không biết cách làm 😀
File đó có sẵn rồi, bạn ko phải thêm. Lệnh edit em nó là
nano /etc/sysctl.conf
đó bạnBạn ơi cho mình hỏi chút mình đang sử dụng vps wordpress của vultr. Mình đang chạy site trên đó rồi, nhưng nó chỉ chạy đc 1 site mà thôi. Mình muốn cài luôn cái script này vào thì có được ko hay phải xóa hết đi cài lại. Với lại cái wordpress vps này mình k biết truy cập FPT và phpmyadmin cho site như nào. Truy cập bằng IP, Root, Pass và họ cung cấp cho mình mình k chạy đc URL dụng domain.com/wp-content/plugin/….file.php
Nếu muốn cài HocVPS Script thì bạn phải xóa hết đi cài lại VPS từ đầu mới được nhé. Bạn có thể backup toàn bộ site dùng plugin (vd Duplicator), cài xong VPS up website lên lại.
Hướng dẫn sử dụng WordPress trên Vultr bạn xem ở đây: https://www.vultr.com/docs/one-click-wordpress
Khi hết ram thì dùng đến swap, vậy có phải restart lại vps để server quay trở lại dùng ram k?
Không cần đâu bạn, hệ thống tự động thực hiện các việc đó rồi.
Mình có chỉnh thông số swappiness và đến bước chỉnh vm.swappiness ở cuối file /etc/sysctl.conf thì nó không hiện thông số vm.swappiness như của bạn để chỉnh được. Nó trống trơn như trong ảnh nè. Và mỗi khi reboot VPS thì nó lại trở về 30 trong khi mình muốn chỉnh cho nó về 10.
http://imgur.com/6Uart2v
Nếu không có thì bạn thêm dòng đó vào là được nhé.
Mình có thêm dòng đó nhưng vẫn không được, khi reboot VPS lại trở về như cũ.
Bạn cho mình hỏi bạn thực hiện trên VPS có OS gì, của nhà cung cấp nào để mình test lại?
Centos 7 64bit của Vultr nhé AD
Mình mới kiểm tra lại kĩ hơn, đây là một bug của CentOS 7.2 (CentOS 7.0 vẫn hoạt động bình thường), do tune profile. Mình đã update lại bài viết bổ sung đoạn cuối rồi, bạn tham khảo nhé.
OK
sao mình cài swap xong lại vào website không dc nhỉ ping cũng không thấy lun
Cho mình hỏi thông số swappiness này là như thế nào? Nếu để là 10 thì mặc định nó chỉ sử dụng 10% dung lượng swap ah. Nếu mình không sửa để mặc định thì có đc không, Còn nếu sửa VPS của mình 1GB ram ở Vurl thì nên để thông số bao nhiêu là hợp lý
@Luân Trần,
Cho mình hỏi nếu VPS của mình đang chạy Vesta Cp và website đã chạy rồi. Bây giờ thực hiện tạo Swap nó có ảnh hưởng gì tới hệ thống trên không?
Cảm ơn Luân Trần!
Mình nghĩ là không 😀
Mình setup theo thông số bạn hướng dẫn , do ram mình 2GB nên mình set up Swap thành 4GB , nhưng ko hiểu sao nó set thành 16gb làm giờ nó báo ổ cứng mình đã xài hết 16gb @@ . Hơn nữa mình dùng lệnh -free trong ssh để check thì thấy nó Swap báo Used = 0 , hình như nó ko hoạt động thì phải . Mình có kèm hình , bạn phân tích và chỉ bik mình là do tại sao ko
https://3.bp.blogspot.com/-DtPKNBlo0Z8/VxhDyoW61PI/AAAAAAAAMcU/oZgKDC9GDaIndkpebL9aFRESYI-oasTagCK4B/s1600/Untitled.png
Có cách nào để mình giảm dung lượng swap trở lại ko, chứ để vậy tốn SSD quá .
Swap chỉ hoạt động khi hết sạch RAM thôi, nếu used = 0 thì chứng tỏ server vẫn đang vận hành tốt (không nên dùng swap thường xuyên).
Bạn tham khảo bài này để xem cách remove swap nhé: https://www.digitalocean.com/community/questions/delete-swap-file
VPS của wable có hỗ trợ swap ko b?
tớ dùng CentOS 7, làm mấy bước đều hiện kết quả giống hình của bạn
nhưng tới swapon /swapfile thì nó báo:
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
swapon: /swapfile: read swap header failed: Invalid argument
Không nhé bạn, OpenVZ thường ko có swap.
Cho mình hỏi phát swap file đang có sẵn h mình mún thêm dung lượng cho nó thì làm sao?
Bạn xem bài hướng dẫn này nhé: http://googolflex.com/?p=813
Cho e hỏi cái này cài sau khi cài hocvps có được không vậy anh?
Và swap này có tác dụng gì ạ
Thanks Anh
Hoàn toàn được nhé. Tác dụng kiểu RAM ảo ấy bạn.
openvz k tạo đc. swap đúng k luân ơi 🙁
Đúng rồi, cái đó do nhà cung cấp qui định, mình ko can thiệp được.
Làm sao để đổi version mà k cần cài lại vậy bác
Đổi version là sao ta 😀
Version PHP đấy
Version mà lại hỏi bên bài SWAP à bạn 😀
Hiện bạn dùng version bao nhiêu, muốn nâng lên bao nhiêu? Server đang cài theo hướng dẫn nào rồi?
Có lé đồng chí cần tìm hiểu thêm về vấn đề này đi. Nó cực kỳ đơn giản
Chạy lệnh sau để off phân vùng/file swap vừa tạo ( sai hoặc muốn thay đổi)
swapoff /swapfile
Chạy lại từ bước đầu tiên như bài hướng dẫn này, chú ý thay đổi tên file swapfile thành swapfile1 hay xx tùy các bạn
./hết
He he, ngon cảm ơn bạn đã góp ý.
mình chạy lệnh swapoff -a 😀
Sao không xóa swap đi rồi tạo lại, hơn là tạo lại vps
Nghĩ thì đơn giản vậy thôi, nhưng thao tác ko đơn giản 🙂
Cho mình hỏi mình đang chạy VPS 2gb nhưng do ko để ý nên làm theo bài thành ra swap chỉ có 1gb, giờ mình muốn sửa lại thành x2 ram (4096) thì làm như thế nào ạ ?
Bạn nên sao lưu dữ liệu và tạo lại VPS thôi, thao tác chỉnh sửa SWAP rất phức tạp. Dù sao thì chạy 1GB Swap cũng ok hết.
Em chạy lệch swapon -s thì nó hiển thị là
—–
Filename Type Size Used Priority
/dev/xvda2 partition 524284 0 -1
—–
vậy là vps e có sẫn file swap rồi phải k anh ?
Và em tiếp tục cài hocvps script bình thường phải k anh ? file swap liệu có chạy được không ?
Vì em thấy bài của anh file swap ở /swapfile
Còn của em ở /dev/xvda2
Như thế có làm sao k ?
(lần đầu e xài vps ^^ )
VPS của bạn có sẵn rồi. Cài HocVPS Script bình thường thôi. Swap này chắc do nhà cung cấp tự cài trước, dùng bình thường thôi ko có vấn đề gì phải lo cả nhé.
A cho e hỏi là lúc đầu OS của em là Cent OS 6, e cài theo hướng dẫn thì ok. Sau e chuyển qua Cent OS 7 (để dùng MariaDB), nhưng giờ e kiểm tra thì nó không hiện ra gì cả? Vậy có cần phải cài lại từ đầu không a?
Tình hình thế nào rồi em?
Dạ em dùng Script của anh xong giờ ổn rồi ạ. Mà a cho e hỏi là làm sao để trỏ domain của em về VPS được hả a?
Em trỏ thằng domain về IP VPS là nó sẽ tự nhận.
Ok a. E làm được rồi, đang đợi nó update rồi test :D.
Chào Admin,
VPS mình ram 6gb thì tạo swap bao nhiêu là tốt nhất (mình dùng wp) mình tạo thử 2gb, nhưng check: swapon -s thì nó hiện: http://i.imgur.com/9pBegS4.jpg
Như thế có lỗi gì ko ad?
Cảm ơn ad nhiều.
Bác có thể hướng dẫn bằng tiếng việt cách xoá swap đi và setup lại được không ạ
Rất tiếc mình không giúp được vụ này.
Em thấy cả 2 bài đều phức tạp
Bác có thể chỉ rõ bằng tiếng việt cách nào đơn giản không ạ
Cảm ơn bác nhiều lắm
Mình chưa bao giờ resize nên không giúp được bạn vụ này. Bạn có thể backup rồi Deploy lại VPS ko?
Chào bác Luân,
Em dùng ram 1gb trước em setup cái swap là 1gb, nay em muốn nâng cấp lên 2gb swap
Em xem cái này nhưng chưa hiểu rõ lắm
https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-swap-removing.html
Nhờ bác chỉ giúp em cách remove swap cụ thể với nhé
Cảm ơn bác nhiều ạ
Bạn thử bài này xem: http://googolflex.com/?p=813
Việc này khá phức tạp mình khuyên không nên thực hiện nhé.
Sau khi chỉnh sửa file thì ấn phìm tắt nào để về con trỏ gõ lệnh vậy các bác?
E chỉnh file xong ấn Ctrl + X sau đó ấn Y thì nó vẫn cứ ở file đó. E mới làm quen với ZOC Terminal ạ.
Bạn sử dụng text editor nào vậy, nano à? Nếu đúng thì xem hướng dẫn sử dụng này của mình nhé: https://hocvps.com/cach-su-dung-nano-editor/
E chưa cài nano nhưng thấy Zoc có sẵn phím tắt. sử dụng thì thấy ko được. e bắt đầu thấy loạn hết lên rồi.
ZOC là chương trình kết nối SSH thôi, chứ ko sửa được file gì cả.
ok rồi bác ạ. thank bác. lọ mọ mệt ghê.
sao cái swap của mình nó ko được sử dụng, toàn chạy RAm vậy lý thế ạ !! http://imgur.com/qZ7dKYA
và cũng trong ảnh đó VPS mình vừa tạo luôn, chưa có post bài gì cả, chỉ mới update wordpress len bản mới nhất, nó báo RAM xài 231.59 MiB, có ổn ko vậy, bác phía trên kia nói online 100 người mà RAM co 70mb
Site của mình giờ giảm xuống còn hơn 3k traffic/ngày, tầm giờ chỉ có tầm 20 người onsite mà còn thừa có 7MB ram thôi này :3
Chỉ khi nào server hết sạch RAM nó mới dùng đến swap nhé bạn. RAM xài như thế là bình thường, bạn cứ sử dụng thôi.
Mình thử tạo swap trên vps của DO
VPS của mình có 512 ram nhưng mà lượng người onsite đến tầm ~100 người thì ram còn có 70mb mà mình thấy swap vẫn không sử dụng.
Vậy là swap của mình đã hoạt động hay chưa?
Phải khi nào hết sạch RAM thì mới dùng đến swap nhé bạn. Swap chưa sử dụng chứng tỏ server của bạn vẫn đủ RAM xài
Cảm ơn bác đã giải đáp thắc mắc của em 😀
Mình dùng câu lệnh:
sudo dd if=/dev/zero of=/swapfile bs=4096 count=4096k
Sau khi tạo swap xong, kiểm tra lại thì thấy:
Filename Type Size Used Priority
/swapfile file 16777212 0 -1
Mình thấy hơi bất ngờ. Vì Size = 16777212 thì lên tới tận 16GB.
Vậy có phải có sai sót gì không.
Và mình muốn xóa hoặc giảm size phân vùng Swap xuống phải làm sao ?
Mong nhận được sự giúp đỡ của bạn
🙂
Bạn dùng lại lệnh này đi:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=4096k
Khi đã tạo swap rồi thì rất khó để đổi size, tốt nhất bạn nên cài lại từ đầu.
Type the following command to create 4096K swap file (1024 * 4096k = 4194304 block size):
sudo dd if=/dev/zero of=/swapfile bs=1024 count=4096k
if=/dev/zero : Read from /dev/zero file. /dev/zero is a special file in that provides as many null characters to build storage file called /swapfile1.
of=/swapfile : Read from /dev/zero write storage file to /swapfile.
bs=1024 : Read and write 1024 BYTES bytes at a time.
count=4096k : Copy only 4096k BLOCKS input blocks.
Chào anh Luân!
Cho mình hỏi VPS giống Luân ở VULTR., RAM 2GB. Thì nên set swap
sudo dd if=/dev/zero of=/swapfile bs=2048 count=2048k
Hay sudo dd if=/dev/zero of=/swapfile bs=4096 count=4096k
Sẽ tối ưu hơn. Thấy Luân đang 512 thì phải 😀 (https://hocvps.com/huong-dan-config-vps-chiu-tai-lon-voi-hocvps-script/)
Bạn có thể setup 2GB hoặc 4GB cũng được. Mình thì thường chỉ setup = RAM thôi vì muốn sử dụng bộ nhớ chính là ở RAM, hiệu suất hoạt động cao hơn.
Anh luân sao của em vầy nè
free -m
total used free shared buff/cache available
Mem: 992 646 104 12 241 186
Swap: 1023 0 1023
Nó không chịu xài trong khi ram hệ thống gần hết em chỉnh cái vm.swapiness là 50 lận cũng ko xài swap !
Khi nào hết sạch RAM nó mới dùng đến swap, mà tốt nhất không nên điều chỉnh thông số vm.swapiness. Phương án cuối cùng hãy dùng swap.
Của mình đang chạy Minecraft Server, tạo fileswap xong đánh lệnh swapon -s nó hiện Used = -1. Chắc là ko dùng, làm sao chuyển nó về 0 vậy bạn
Bạn xem lại xem Used là -1 hay là 0?
Used vẫn là -1 Luân ah
Quá trình tạo swap của bạn ok chứ? Chạy mấy lệnh free -m và swapon -s gửi mình xem kết quả thế nào?
free -m:
total used free shared buff/cache available
Mem: 993 880 71 0 41 31
Swap: 2047 540 1507
swapon -s:
Filename Type Size Used Priority
/swapfile file 2097148 512320 -1
Cảm ơn bạn
Mình thấy mọi thứ đang hoạt động bình thường rồi đấy chứ, swap đang dùng 540MB
Cảm ơn bạn, tại mình thấy nó hiển thị là -1 ở Used nên hơi lo.
Vây tốt rồi
Bạn ơi, nó báo như thế này là VPS mình ko có hỗ trợ à( có phải VPS rơi vào hàng openVZ à), khi mua ko để ý lắm bạn à?
swapon: /swapfile: swapon failed: Operation not permitted
OpenVZ vẫn có thể có swap nhưng do nhà cung cấp qui định, bạn ko tự tạo swap được.
VPS mình ram 4GB, 4CPU thì nên để swap 8GB phải ko bạn
Ừ để tầm khoảng đó. Lưu ý ổ cứng phải là SSD thì mới nên tạo swap nhé.
Mình muốn thay đổi dung lượng swap, mà mình thấy có 1 partition dành cho Swap nó cứ 2GB, trong khi file Swap mình đã đổi dung lượng lớn hơn, Luân có thể giải thích giúp mình chổ này với. Làm thế nào để tăng dung lượng Swap Partition?
Cho mình hỏi 1 vps có thể tạo mấy file swap nhỉ?
vps của mình là 1gb, mình có thể tạo 2 file swap ko, mình dùng digitalocean ssd
1 swap thôi bạn, bạn có thể tạo 2GB
vậy mình đã tạo 1 file swap rồi, mình có thể chỉnh sửa dung lượng của file swap đó ko vậy? và chỉnh ntn nếu được
Không chỉnh được, bạn phải xóa swap đi và tạo mới lại. Xem hướng dẫn ở đây nhé: https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-swap-removing.html
Mình tạo cái swap nó báo
[root@vps ~]# sudo mkswap /swapfile
mkswap: /swapfile: warning: don’t erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=10b3e195-3112-4556-b296-679dc0ff246c
Lỗi này là gì vậy Luân?
Không có gì đâu bạn, warning thôi
swap của mình rất hay 100%, có cách nào cải thiện không admin ơi
VPS của bạn thiếu RAM rồi, tuyệt đối ko nên để swap phải chạy > 70%, hãy nâng RAM nên nhé.
cám ơn bạn nhé, trang game của mình cũng thường bị vấn đề này!
Thông số VPS:
250GB SSD Cached RAID-10 Disk Space
4GB Dedicated RAM
5TB Monthly Bandwidth
4 Cores @ 3.5GHz
Bạn hướng dẫn mình tạo file swap trên CentOS 6 64bit để cài Zpanel 10.1.1 nhé
Cảm ơn
SSD-Cached mình không chắc có nên tạo swap hay không nữa, có thể làm giảm performance hệ thống. Bạn hãy thử liên hệ support hỏi về swap xem ntn?
ok thanks bạn, vậy để mình support có gì ko rõ mình hỏi thêm nha
cảm ơn bạn!
Cấu hình VPS của mình như sau, mình cấu hình như thế nào cho phù hợp.
Thanks
[code]
250GB SSD Cached RAID-10 Disk Space
4GB Dedicated RAM (Burst or vSwap available)
5TB Monthly Bandwidth
4 Cores @ 3.5GHz[/code]
Bạn muốn làm gì đã?
mình chạy 1 forum 1 source update