เพิ่ม Swap File บน Linux Server
Swap คือพื้นที่บนดิสก์ที่ Linux ใช้เป็นหน่วยความจำสำรองเมื่อ RAM ใกล้เต็ม Cloud Server หลาย Image ไม่ได้สร้าง Swap ไว้ให้ เมื่อโปรแกรมใช้ RAM เกิน ระบบจะเรียก OOM Killer มาปิดโปรแกรมที่ใช้หน่วยความจำมาก ซึ่งมักเป็น MySQL/MariaDB หรือ PHP-FPM ทำให้เว็บไซต์ล่มกะทันหัน การเพิ่ม Swap File ช่วยให้ระบบมีที่พักข้อมูลในช่วงที่ใช้หน่วยความจำพุ่งสูงชั่วคราว
ควรเข้าใจว่า Swap ช้ากว่า RAM มาก จึงเป็นเพียงตาข่ายนิรภัย ไม่ใช่สิ่งทดแทน RAM ถ้าเซิร์ฟเวอร์ใช้ Swap หนักอยู่ตลอดเวลา แปลว่าควรเพิ่มสเปก RAM คู่มือนี้ใช้ได้กับ Ubuntu 22.04/24.04 และ AlmaLinux/Rocky Linux 8-9 บนระบบไฟล์ ext4 หรือ XFS
สิ่งที่ต้องเตรียม
- สิทธิ์ root หรือผู้ใช้ที่ใช้
sudoได้ - พื้นที่ดิสก์ว่างมากกว่าขนาด Swap ที่ต้องการ ตรวจด้วย
df -h / - ขนาด Swap ที่เหมาะสม ดูแนวทางด้านล่าง
| RAM ของเซิร์ฟเวอร์ | ขนาด Swap ที่แนะนำเป็นจุดเริ่มต้น |
|---|---|
| ไม่เกิน 2 GB | เท่ากับ RAM ถึง 2 เท่า |
| 2-8 GB | เท่ากับ RAM |
| มากกว่า 8 GB | 4-8 GB ก็เพียงพอสำหรับงานเว็บและฐานข้อมูลทั่วไป |
ตัวอย่างในคู่มือนี้สร้าง Swap ขนาด 2 GB
ขั้นตอนที่ 1: ตรวจว่ามี Swap อยู่แล้วหรือไม่
sudo swapon --show
free -h
ถ้า swapon --show ไม่แสดงอะไรเลย และบรรทัด Swap: ของ free -h เป็น 0B แปลว่ายังไม่มี Swap ถ้ามีอยู่แล้วและต้องการเพิ่ม สร้างไฟล์ที่สองด้วยชื่ออื่นได้ เช่น /swapfile2
ขั้นตอนที่ 2: สร้างไฟล์ Swap
sudo fallocate -l 2G /swapfile
fallocate จองพื้นที่ทันทีโดยไม่ต้องเขียนข้อมูลจริง จึงเสร็จในไม่กี่วินาที ถ้าคำสั่งแจ้งว่าไม่รองรับ หรือขั้นตอนที่ 4 แจ้งว่าไฟล์มี Hole ให้ลบไฟล์แล้วสร้างใหม่ด้วย dd ซึ่งเขียนศูนย์ลงไปจริงทั้งไฟล์ (ใช้เวลานานกว่า)
sudo rm -f /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
ตรวจขนาดไฟล์
ls -lh /swapfile
ควรเห็นขนาด 2.0G
ขั้นตอนที่ 3: ตั้งสิทธิ์ไฟล์
Swap อาจมีข้อมูลที่อยู่ในหน่วยความจำ เช่น รหัสผ่านหรือข้อมูลลูกค้า จึงต้องให้ root อ่านเขียนได้เท่านั้น
sudo chmod 600 /swapfile
ถ้าข้ามขั้นตอนนี้ swapon จะเตือน insecure permissions 0644, fix with: chmod 0600 /swapfile
ขั้นตอนที่ 4: จัดรูปแบบและเปิดใช้งาน
sudo mkswap /swapfile
sudo swapon /swapfile
mkswap จะแสดงข้อความประมาณ Setting up swapspace version 1, size = 2 GiB ส่วน swapon ไม่แสดงอะไรเมื่อสำเร็จ
ขั้นตอนที่ 5: ให้ Swap เปิดอัตโนมัติหลังรีบูต
Swap ที่เปิดด้วย swapon จะหายไปเมื่อรีบูต ต้องเพิ่มลงในไฟล์ /etc/fstab ไฟล์นี้สำคัญต่อการบูต ถ้าเขียนผิดเครื่องอาจบูตไม่ขึ้น ให้สำรองไว้ก่อน
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
ตรวจว่าไฟล์ fstab อ่านได้ถูกต้องโดยไม่ต้องรีบูต
sudo findmnt --verify
ผลลัพธ์ไม่ควรมีบรรทัดที่ขึ้นต้นด้วย [E] (Error) ถ้ามี ให้คืนไฟล์เดิมด้วย sudo cp /etc/fstab.bak /etc/fstab แล้วตรวจอีกครั้ง
ขั้นตอนที่ 6: ปรับ swappiness (ไม่บังคับ)
ค่า vm.swappiness (ค่าเริ่มต้นคือ 60) บอกว่า Kernel จะย้ายข้อมูลจาก RAM ไป Swap เร็วแค่ไหน สำหรับเซิร์ฟเวอร์เว็บและฐานข้อมูล นิยมลดลงเหลือ 10 เพื่อให้ใช้ RAM ก่อนและใช้ Swap เมื่อจำเป็นจริง ๆ
cat /proc/sys/vm/swappiness
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system
ค่าใหม่มีผลทันทีและคงอยู่หลังรีบูต
ตรวจสอบผลลัพธ์
sudo swapon --show
free -h
ตัวอย่างผลลัพธ์ที่ถูกต้อง
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
และบรรทัด Swap: ของ free -h ต้องแสดงขนาดรวมประมาณ 2.0Gi ถ้าต้องการยืนยันว่าค่าใน fstab ใช้ได้จริง ให้รีบูตในช่วงเวลาที่กระทบผู้ใช้น้อยแล้วรัน swapon --show อีกครั้ง
ติดตามการใช้งาน Swap ในระยะยาวด้วย vmstat 5 ถ้าคอลัมน์ si และ so (Swap In/Out) มีค่าสูงตลอดเวลา แปลว่า RAM ไม่พอสำหรับงานที่รันอยู่
ปัญหาที่พบบ่อย
swapon: /swapfile: swapon failed: Invalid argument
มักเกิดเมื่อไฟล์ถูกสร้างด้วย fallocate บนระบบไฟล์ที่ Swap ไม่รองรับไฟล์แบบนั้น ให้สร้างไฟล์ใหม่ด้วย dd ตามขั้นตอนที่ 2 ถ้าระบบไฟล์เป็น Btrfs ต้องใช้วิธีเฉพาะ ดู เอกสาร Btrfs เรื่อง Swapfile
fallocate: fallocate failed: No space left on device
พื้นที่ดิสก์ไม่พอ ลดขนาด Swap หรือเคลียร์พื้นที่ก่อน ดู ดิสก์เต็ม: ตรวจสอบพื้นที่และหาไฟล์ขนาดใหญ่บน Linux
ต้องการลบหรือเปลี่ยนขนาด Swap
ปิด Swap ก่อน (ต้องมี RAM ว่างพอรับข้อมูลที่อยู่ใน Swap ตรวจด้วย free -h) ลบบรรทัด /swapfile ออกจาก /etc/fstab แล้วจึงลบไฟล์
sudo swapoff /swapfile
sudo nano /etc/fstab
sudo rm /swapfile
ถ้าต้องการขนาดใหม่ ให้ทำตามขั้นตอนที่ 2 ถึง 5 อีกครั้งหลังลบไฟล์เดิม
มี Swap แล้วแต่โปรแกรมยังถูก OOM Killer ปิด
ตรวจ Log ด้วย sudo journalctl -k | grep -i 'out of memory' ถ้ายังเกิดซ้ำแปลว่าใช้หน่วยความจำเกินทั้ง RAM และ Swap ควรลดค่าการใช้หน่วยความจำของโปรแกรม เช่น จำนวน Process ของ PHP-FPM หรือ Buffer ของฐานข้อมูล หรือเพิ่ม RAM ของเซิร์ฟเวอร์
หากไม่แน่ใจว่าควรเพิ่ม Swap หรือเพิ่ม RAM สำหรับงานของคุณ ติดต่อทีมซัพพอร์ต THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


