เพิ่ม Swap File บน Ubuntu

Adveresting

ที่มา : https://medium.com/@supachaija/%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B8%A5%E0%B8%B7%E0%B8%A1-%E0%B9%80%E0%B8%9E%E0%B8%B4%E0%B9%88%E0%B8%A1-swap-file-%E0%B8%9A%E0%B8%99-ubuntu-7639cd1d52a8

[ประสบการณ์ตรง] สืบเนื่องจากทางผมใช้งานผู้ให้บริการในไทย ที่เรียกตัวเองว่า Cloud แต่ไม่มีสร้าง Swap ไว้ให้บนเครื่อง Ubuntu Server Template ป๊าดด!!! คือเป็นจั๋งซี้น้อ..

พอผมสร้าง Docker ไปเยอะๆ เข้า เรียบร้อย เครื่องตายไปเลย ต้อง Reboot ใหม่ มานั่งดู สรุป Ram บนเครื่อง ไม่เยอะ แถมแต่ไม่มี Swap ให้ด้วย

ดังนั้นผมจึงต้องสร้างไฟล์ Swap เองแล้วกัน ซึ่งปกติ Swap มักจะถูก mapping ไว้กับ Partition ตั้งแต่ติดตั้งนั้นเอง แต่เราสามารถสร้างไฟล์ Swap ทีหลังได้ครับ

คำสั่งตรวจสอบ Swap บน เครื่องเรา

$ sudo swapon --show

กรณีที่เครื่องเราไม่มี swap ตั้งค่าไว้ จะไม่ขึ้นอะไรเลย ให้ลองดูอีกคำสั่ง

$ sudo free -h

จากนั้นทำการสร้างไฟล์สำหรับ swap

$ sudo fallocate -l 2G /swapmem# ถ้าไม่มีคำสั่ง fallocate ให้ใช้อีก คำสั่ง
$ sudo dd if=/dev/zero of=/swapmem bs=2048 count=1048576# Only root user should be able to write and read the swap file.
$ sudo chmod 600 /swapfile# Utility to set up a Linux swap area on the file
$ sudo mkswap /swapmem# Activate the swap file using the following command:
$ sudo swapon /swapmem$ sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapmem file 2G 8.8M -2

แค่ก็สร้างเสร็จครับ แต่ถ้าเครื่องเรา Reboot ไป swapmem จะไม่ active ให้อัตโนมัติครับ ให้ทำการเพิ่มบรรทัดสุดท้าย ในไฟล์ /etc/fstab ดังนี้

$ sudo vi /etc/fstab/swapmem swap swap defaults 0 0

จากนั้นก็ลองตรวจสอบ Memory บนเครื่องเราอีกทีครับ

$ sudo free -h
total used free shared buff/cache available
Mem: 1.4G 944M 66M 44M 471M 303M
Swap: 2.0G 8.8M 2.0G

แค่นี้ก็เรียบร้อยสำหรับการสร้าง Swap ไฟล์ครับ

การปรับค่า Swappiness (มีค่าตั้งแต่ 0–100) เพื่อให้เหมาะสมกับการใช้งานเครื่อง Server เรา โดยเป็นการให้ Kernel เลือกใช้งาน Swap ได้อย่างเหมาะสม ถ้าปรับค่าน้อยๆ จะทำการให้ Kernel พยายามหลีกเลี่ยงการทำ Swapping มากเท่านั้น

$ cat /proc/sys/vm/swappiness
60
# ค่า 60 เป็นค่าเริ่มต้น (default) ที่กำหนดมา ซึ่งเหมาะกับกรณีที่เครื่องเป็น Desktop แต่สำหรับ Server นั้นอาจจะปรับค่า Swappiness ให้น้อยลงครับ $ sudo sysctl vm.swappiness=10
$ echo "vm.swappiness=10" >> /etc/sysctl.conf

จากนั้นวิธีการลบ Swap ทิ้งไป

$ sudo swapoff -v /swapmem$ sudo vi /etc/fstab
# /swapmem swap swap defaults 0 0$ sudo rm /swapmem

แค่นี้ก็เรียบร้อยจร้า..

Add a Comment

Your email address will not be published. Required fields are marked *