
เว็บไซต์หยุดทำงาน ส่ง Email ไม่ออก หรือ Upload ไฟล์ไม่ได้ สาเหตุหนึ่งที่พบบ่อยมากบน Shared Hosting คือ Disk Quota หรือ Inode เต็ม ปัญหานี้แก้ไขได้ไม่ยากหากรู้ขั้นตอนที่ถูกต้อง บทความนี้จะอธิบายความแตกต่างระหว่าง Disk Quota กับ Inode รวมถึงวิธีตรวจสอบและทำความสะอาดพื้นที่บน DirectAdmin Hosting
Disk Quota vs Inode คืออะไร
Disk Quota — ขนาดข้อมูล
Disk Quota คือขีดจำกัดของ ขนาดข้อมูลรวม ที่คุณสามารถเก็บบน Hosting วัดเป็น MB หรือ GB หากใช้พื้นที่เกินกว่าที่แพ็กเกจกำหนด ระบบจะไม่อนุญาตให้เขียนไฟล์ใหม่อีกต่อไป เว็บไซต์ที่ใช้ PHP เขียนไฟล์ Cache หรือ Log จะเริ่มมีข้อผิดพลาด
Inode — จำนวนไฟล์
Inode คือขีดจำกัดของ จำนวนไฟล์และโฟลเดอร์ ที่สามารถมีได้ บน Linux ทุกไฟล์ใช้ Inode 1 ตัว แม้ไฟล์นั้นจะมีขนาด 0 ไบต์ก็ตาม หาก Inode เต็มก่อนที่ Disk Space จะเต็ม ระบบก็จะไม่สามารถสร้างไฟล์ใหม่ได้เช่นกัน
ตัวอย่างที่พบบ่อย: WordPress เก็บ Cache ไว้ใน wp-content/cache/ บางปลั๊กอิน Cache อย่าง W3 Total Cache หรือ WP Super Cache อาจสร้างไฟล์ Cache หลักแสนไฟล์จนทำให้ Inode เต็ม แม้ขนาดรวมจะไม่มากก็ตาม
Inode คืออะไร ทำไมเต็มได้แม้พื้นที่ยังเหลือ
คำถามที่เจอบ่อยที่สุดคือ "พื้นที่ยังเหลือตั้งหลาย GB ทำไมเว็บถึงเขียนไฟล์ไม่ได้" คำตอบอยู่ที่ระบบไฟล์ของ Linux ใช้โครงสร้างชื่อ Inode (index node) เพื่อเก็บข้อมูลกำกับของแต่ละไฟล์ ได้แก่ เจ้าของไฟล์ สิทธิ์การเข้าถึง เวลาแก้ไขล่าสุด และตำแหน่งที่ข้อมูลจริงถูกเก็บบนดิสก์ ทุกไฟล์และทุกโฟลเดอร์จะใช้ Inode หนึ่งตัวเสมอ ไม่ว่าไฟล์นั้นจะมีขนาด 0 ไบต์ หรือ 500 MB ก็ตาม
นั่นหมายความว่าโควต้าบน Hosting มีสองมิติที่แยกจากกันโดยสิ้นเชิง มิติแรกคือ "พื้นที่ (Disk Space)" วัดจากผลรวมขนาดของข้อมูล อีกมิติคือ "จำนวนไฟล์ (Inode)" วัดจากจำนวนรายการไฟล์และโฟลเดอร์ทั้งหมด เว็บที่มีรูปวิดีโอไม่กี่ไฟล์อาจกินพื้นที่เยอะแต่ใช้ Inode น้อย ในทางกลับกัน เว็บที่มีไฟล์เล็กจิ๋วนับแสนรายการอาจใช้ Inode หมดทั้งที่กินพื้นที่จริงแค่ไม่กี่ร้อย MB เมื่อ Inode เต็มก่อน ระบบจะปฏิเสธการสร้างไฟล์ใหม่ทันที ทั้งที่แถบ Disk Space ยังไม่เต็ม
อะไรที่สร้างไฟล์เล็กจำนวนมหาศาล
แหล่งที่ทำให้ Inode พุ่งเร็วที่สุดมักเป็นกระบวนการที่ทำงานอัตโนมัติเบื้องหลังโดยที่เจ้าของเว็บมองไม่เห็น:
- ไฟล์ Cache ของ CMS — WordPress, Magento หรือ PrestaShop สร้างไฟล์ cache แยกต่อหนึ่งหน้า เว็บที่มีหลายพันหน้าจะมีไฟล์ cache หลายพันถึงหลายแสนไฟล์
- PHP Session — ทุกครั้งที่มีผู้เข้าชม PHP อาจสร้างไฟล์
sess_*ไว้ ถ้าไม่มีการล้าง ไฟล์เหล่านี้สะสมได้วันละหลายพันไฟล์ - อีเมลในกล่อง — ระบบ Maildir เก็บอีเมลแต่ละฉบับเป็น 1 ไฟล์ กล่องที่มีอีเมล 50,000 ฉบับ = 50,000 Inode
- Thumbnail รูปภาพ — WordPress สร้างรูปย่อหลายขนาดต่อรูปต้นฉบับหนึ่งรูป การอัปโหลดรูป 2,000 รูปอาจกลายเป็นไฟล์ภาพรวมเกือบหมื่นไฟล์
- node_modules / Composer vendor — โฟลเดอร์ dependency ของโปรเจกต์เดียวมีไฟล์ย่อยได้หลายหมื่นไฟล์
วิธีตรวจสอบการใช้พื้นที่ใน DirectAdmin
เข้า DirectAdmin แล้วดูได้ 2 จุดหลัก:
1. ดูที่หน้า Account Summary
หน้าแรกของ DirectAdmin จะแสดง Usage Bar ของ Disk Space และ Inodes พร้อม Percentage ที่ใช้ไป ถ้าเกิน 90% ควรทำความสะอาดทันที
2. ใช้ Disk Usage Tool
- ไปที่ System Info & Files → Disk Usage
- เลือก Directory ที่ต้องการตรวจสอบ
- ระบบจะแสดงรายการโฟลเดอร์เรียงตามขนาดจากมากไปน้อย
หาไฟล์ที่กินพื้นที่มากที่สุด
หากมี Shell Access ให้ใช้คำสั่งเหล่านี้ผ่าน Terminal หรือ SSH:
หา Directory ที่ใหญ่ที่สุด
du -sh /home/username/* | sort -rh | head -20
หาไฟล์เดี่ยวที่ใหญ่ที่สุด
find /home/username -type f -size +50M -exec ls -lh {} \; | sort -k5 -rh | head -20
นับจำนวนไฟล์ใน Directory (ตรวจ Inode)
find /home/username/public_html -type f | wc -l
หาว่าอะไรกินพื้นที่และ Inode มากที่สุด
ก่อนจะลบอะไร ต้องรู้ก่อนว่า "ตัวการ" อยู่ที่ไหน การไล่ลบแบบเดามักลบผิดหรือลบไม่ครบ วิธีที่เป็นระบบคือไล่จากโฟลเดอร์ใหญ่สุดลงไปทีละชั้น แล้วแยกดูทั้งสองมิติ (ขนาด และ จำนวนไฟล์) เพราะตัวที่กินพื้นที่กับตัวที่กิน Inode มักไม่ใช่ตัวเดียวกัน
ไล่หาขนาดทีละชั้นด้วย du
เริ่มจากรากของบัญชี แล้วเจาะลึกเข้าไปในโฟลเดอร์ที่ใหญ่ที่สุดทีละขั้น จนกว่าจะเจอตัวที่กินพื้นที่จริง:
du -sh /home/username/public_html/* | sort -rh | head -15
เมื่อเห็นว่าโฟลเดอร์ไหนใหญ่ผิดปกติ (เช่น wp-content) ให้รันคำสั่งเดิมซ้ำโดยชี้เข้าไปในโฟลเดอร์นั้นเพื่อหาว่าโฟลเดอร์ย่อยตัวใดเป็นต้นเหตุ
นับ Inode แยกตามโฟลเดอร์
หาก Disk Space ยังเหลือแต่ Inode ใกล้เต็ม ให้นับจำนวนไฟล์แยกตามโฟลเดอร์ย่อยเพื่อหาตัวที่สร้างไฟล์เยอะ:
| เป้าหมาย | คำสั่ง |
|---|---|
| นับไฟล์ในแต่ละโฟลเดอร์ย่อย | for d in */; do echo "$(find "$d" -type f | wc -l) $d"; done | sort -rn |
| นับไฟล์ทั้งบัญชี | find /home/username -type f | wc -l |
| ดู Inode ที่ระบบเหลือ | df -i /home |
เจาะดู cache, log และ email โดยเฉพาะ
สามแหล่งนี้คือผู้ต้องสงสัยอันดับต้นเสมอ ตรวจทีละจุด:
find . -type d -name cache -exec sh -c 'echo "$(find "$1" -type f | wc -l) $1"' _ {} \;
ls -lh public_html/error_log
du -sh ~/imap/* 2>/dev/null | sort -rh | head
บรรทัดแรกไล่หาโฟลเดอร์ชื่อ cache ทุกชั้นพร้อมจำนวนไฟล์ บรรทัดที่สองดูขนาด error_log ที่อาจโตจนหลาย GB และบรรทัดสุดท้ายดูว่ากล่องอีเมลไหนกินพื้นที่มากที่สุด หากไม่มี Shell Access ทุกอย่างนี้ดูได้ผ่าน Disk Usage และ File Manager ใน DirectAdmin เช่นกัน เพียงไล่เปิดโฟลเดอร์ตามขนาดที่แสดง
ไฟล์ที่มักกินพื้นที่มากที่สุด
- WordPress Cache —
wp-content/cache/ลบได้อย่างปลอดภัยทั้งหมด - WordPress Backups — Backup plugin มักเก็บไฟล์ zip ไว้ใน
wp-content/backups/ - Error Logs —
error_logและaccess_logที่โตขึ้นเรื่อยๆ โดยไม่มีการ Rotate - Email Spam — กล่องรับ Mail ที่ไม่ได้ล้างอาจมีอีเมล Spam หลักพันฉบับ
- Session Files —
/tmp/sess_files จาก PHP Session ที่ค้างอยู่ - Old Themes/Plugins — Themes และ Plugins ที่ไม่ได้ใช้แต่ยังไม่ได้ลบ
วิธีลบ Cache WordPress ผ่าน DirectAdmin File Manager
- เข้า DirectAdmin → File Manager
- ไปที่
public_html/wp-content/cache/ - เลือกทุกไฟล์และโฟลเดอร์ภายใน cache/ (ไม่ต้องลบโฟลเดอร์ cache เอง)
- คลิก Delete
วิธีลดการใช้พื้นที่และ Inode
เมื่อรู้แล้วว่าอะไรเป็นตัวการ ขั้นตอนต่อไปคือลดของจริง ไม่ใช่แค่ลบครั้งเดียวแล้วปล่อยให้กลับมาเต็มอีก แบ่งงานเป็นสามด้านหลัก: cache, อีเมล และรูปภาพ
1. ล้างและควบคุม Cache
Cache เป็นไฟล์ชั่วคราว ลบได้ปลอดภัยและจะถูกสร้างใหม่เมื่อมีผู้เข้าชม สิ่งที่ควรทำ:
- ลบไฟล์ทั้งหมดใน
wp-content/cache/ผ่าน File Manager หรือใช้ปุ่ม "Clear Cache" ในปลั๊กอิน - ตั้งค่าปลั๊กอิน Cache ให้เก็บไฟล์ไม่เกิน 24–48 ชั่วโมง อย่าตั้ง TTL ไว้นานเป็นเดือน
- ถ้าใช้ Object Cache แบบไฟล์ ให้เปลี่ยนมาใช้แบบในหน่วยความจำ (เช่น Redis ถ้า Hosting รองรับ) เพื่อไม่สร้างไฟล์เล็กจำนวนมาก
- ลบโฟลเดอร์ cache ของ log/debug ที่ปลั๊กอินบางตัวทิ้งไว้ เช่น
wp-content/debug.log
2. จัดการอีเมลให้คืน Inode
อีเมลแต่ละฉบับคือหนึ่งไฟล์หนึ่ง Inode กล่องที่ไม่เคยล้างเป็นแหล่งกิน Inode เงียบๆ ที่ใหญ่ที่สุด:
- เข้า Webmail แล้วล้างโฟลเดอร์ Junk/Spam และ Trash ให้เกลี้ยง
- ตั้งให้ระบบลบอีเมลในถังขยะอัตโนมัติทุก 30 วัน
- ใช้ IMAP แทน POP3 และเปิดให้ลบอีเมลออกจากเซิร์ฟเวอร์หลังดาวน์โหลด เพื่อไม่ให้สะสมค้างหลายเครื่อง
- ถ้ามีบัญชีอีเมลเก่าที่เลิกใช้แล้ว ให้สำรองข้อมูลออกแล้วลบบัญชีนั้นทิ้ง
3. Optimize รูปภาพและไฟล์มีเดีย
รูปภาพมักกินทั้งพื้นที่และ Inode (จาก thumbnail หลายขนาด) พร้อมกัน:
- บีบอัดรูปก่อนอัปโหลดด้วยปลั๊กอินอย่าง Smush หรือ ShortPixel หรือบีบด้วยมือให้ต่ำกว่า 200 KB ต่อรูป
- ลดจำนวนขนาด thumbnail ที่ WordPress สร้าง โดยปิดขนาดที่ธีมไม่ได้ใช้จริง
- เปลี่ยนรูปเป็นฟอร์แมต WebP เพื่อลดขนาดไฟล์ลง 25–35%
- ลบไฟล์มีเดียที่ไม่ได้ใช้ใน Media Library และล้างไฟล์อัปโหลดเก่าที่ไม่เกี่ยวกับเนื้อหาปัจจุบัน
เคล็ดลับ: หลังลบไฟล์จำนวนมาก ให้รีเฟรชหน้า Account Summary ใน DirectAdmin ค่าการใช้งานอาจอัปเดตช้าราว 1–4 ชั่วโมงเพราะระบบคำนวณโควต้าเป็นรอบ ไม่ใช่เรียลไทม์ ไม่ต้องตกใจถ้าตัวเลขยังไม่ลดทันที
ป้องกัน Inode เต็มในอนาคต
- ตั้งค่า Cache plugin ให้ลบ Cache อัตโนมัติทุก 24-48 ชั่วโมง
- ตั้ง Cron Job ลบ Session files เก่ากว่า 1 วัน:
find /tmp -name "sess_*" -mtime +1 -delete - ตั้ง Log Rotation สำหรับ error_log ให้ไม่โตเกิน 10 MB
- ย้าย Backup ออกนอก Hosting ไปยัง Cloud Storage (Google Drive, Dropbox)
- ลบ Themes และ Plugins ที่ไม่ได้ใช้งานออกทันที
ป้องกันไม่ให้เต็มซ้ำ และเมื่อไหร่ควรอัปเกรดแพ็ก
การล้างไฟล์เป็นการแก้ที่ปลายเหตุ ถ้าไม่วางระบบป้องกัน อีกไม่กี่สัปดาห์ปัญหาจะกลับมา หัวใจของการป้องกันคือทำให้การ "เก็บกวาด" เกิดขึ้นเองโดยอัตโนมัติ และเฝ้าดูแนวโน้มการใช้งานอย่างสม่ำเสมอ
ตั้งระบบเก็บกวาดอัตโนมัติ
- ตั้ง Cron Job ลบ session เก่าทุกคืน:
find /tmp -name "sess_*" -mtime +1 -delete - ตั้ง Cron Job ล้าง cache ที่เก่ากว่า 2 วัน:
find ~/public_html/wp-content/cache -type f -mtime +2 -delete - เปิด log rotation ให้
error_logไม่โตเกิน 10 MB และเก็บย้อนหลังเพียงไม่กี่ไฟล์ - ตั้งให้ปลั๊กอิน Backup เก็บไฟล์สำรองในเครื่องไว้ไม่เกิน 1–2 ชุด ที่เหลือส่งออก Cloud
เฝ้าดูแนวโน้มการใช้งาน
เข้าดูแถบ Disk Space และ Inodes ในหน้า Account Summary ของ DirectAdmin อย่างน้อยเดือนละครั้ง จดค่าไว้เปรียบเทียบ ถ้าตัวเลขไต่ขึ้นเรื่อยๆ ทุกเดือนแม้จะล้างแล้ว แสดงว่าเว็บกำลังโตจริง ไม่ใช่แค่ขยะสะสม นี่คือสัญญาณว่าควรวางแผนขยายพื้นที่ก่อนที่จะชนเพดาน
เมื่อไหร่ที่การอัปเกรดคุ้มกว่าการล้าง
พิจารณาอัปเกรดแพ็กเกจเมื่อเข้าเงื่อนไขข้อใดข้อหนึ่ง:
| สัญญาณ | ความหมาย |
|---|---|
| ล้างแล้วยังเกิน 80% ภายใน 2–3 สัปดาห์ | การใช้งานจริงเกินขนาดแพ็ก ไม่ใช่ขยะสะสม |
| Inode เต็มบ่อยแม้ตั้ง Cron ล้างแล้ว | จำนวนไฟล์ของเว็บโตเกินโควต้า Inode |
| ต้องลบเนื้อหาจริง (รูป/สินค้า) เพื่อให้พอ | ไม่มีขยะเหลือให้ลบแล้ว ต้องเพิ่มพื้นที่ |
| เว็บโตเร็วจากสินค้า/ผู้ใช้/รูปที่เพิ่มขึ้น | ควรขยายล่วงหน้าก่อนชนเพดาน |
การอัปเกรดแพ็ก Hosting ที่ AsiaGB ทำได้ทันทีโดยไม่ต้องย้ายเว็บและข้อมูลไม่หาย คุณจะได้ทั้งพื้นที่ SSD และโควต้า Inode ที่สูงขึ้นพร้อมกัน ทำให้ไม่ต้องคอยล้างไฟล์บ่อยจนเสียเวลา
คำถามที่พบบ่อย
พื้นที่ยังเหลือเยอะ แต่ทำไมเขียนไฟล์ไม่ได้
เกือบทั้งหมดเกิดจาก Inode เต็มก่อน Disk Space เพราะมีไฟล์ขนาดเล็กจำนวนมาก เช่น cache, session หรืออีเมล ตรวจ Inode ในหน้า Account Summary ของ DirectAdmin ถ้าแถบ Inodes ใกล้ 100% ให้ลบไฟล์เล็กๆ ที่ไม่จำเป็นออก แล้วระบบจะเขียนไฟล์ใหม่ได้ทันที
ลบโฟลเดอร์ cache ทั้งหมดได้ไหม ปลอดภัยหรือเปล่า
ลบไฟล์ภายในโฟลเดอร์ cache ได้อย่างปลอดภัย แต่ควรเก็บตัวโฟลเดอร์ cache เองไว้ ระบบจะสร้างไฟล์ cache ขึ้นใหม่เมื่อมีผู้เข้าชม การลบ cache ไม่ทำให้ข้อมูลเว็บหรือฐานข้อมูลหาย เป็นเพียงไฟล์ชั่วคราวเพื่อเพิ่มความเร็วเท่านั้น
อีเมลกินพื้นที่และ Inode มากเกิน ต้องทำอย่างไร
ล้างกล่อง Junk และ Trash ใน Webmail ตั้งให้ลบอีเมลในถังขยะอัตโนมัติทุก 30 วัน และเปิด IMAP แทน POP3 เพื่อไม่ให้อีเมลค้างสะสมหลายเครื่อง ถ้ามีอีเมล spam หลักพันฉบับ ให้เลือกทั้งหมดแล้วลบทีเดียวเพื่อคืน Inode
ควรอัปเกรดแพ็กเกจเมื่อไหร่
หากทำความสะอาดแล้วพื้นที่หรือ Inode ยังเกิน 80% ภายในไม่กี่สัปดาห์ หรือเว็บโตขึ้นจริงจากจำนวนสินค้า รูปภาพ หรือผู้ใช้ที่เพิ่มขึ้น แสดงว่าถึงเวลาอัปเกรด การอัปเกรดแพ็ก Hosting ที่ AsiaGB ทำได้ทันทีโดยไม่ต้องย้ายเว็บ และข้อมูลไม่หาย
ต้องการพื้นที่ SSD เพิ่มเติม?
AsiaGB Hosting มีแพ็กเกจหลายขนาด SSD พื้นที่ไม่อั้นในบางแพ็กเกจ เริ่มต้น 500 บาท/ปี พร้อม DirectAdmin และ Uptime 99%
ดูแพ็กเกจ Hosting