Disk Quota และ Inode เกินขีดจำกัด

เว็บไซต์หยุดทำงาน ส่ง 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 พุ่งเร็วที่สุดมักเป็นกระบวนการที่ทำงานอัตโนมัติเบื้องหลังโดยที่เจ้าของเว็บมองไม่เห็น:

วิธีตรวจสอบการใช้พื้นที่ใน DirectAdmin

เข้า DirectAdmin แล้วดูได้ 2 จุดหลัก:

1. ดูที่หน้า Account Summary

หน้าแรกของ DirectAdmin จะแสดง Usage Bar ของ Disk Space และ Inodes พร้อม Percentage ที่ใช้ไป ถ้าเกิน 90% ควรทำความสะอาดทันที

2. ใช้ Disk Usage Tool

  1. ไปที่ System Info & Files → Disk Usage
  2. เลือก Directory ที่ต้องการตรวจสอบ
  3. ระบบจะแสดงรายการโฟลเดอร์เรียงตามขนาดจากมากไปน้อย

หาไฟล์ที่กินพื้นที่มากที่สุด

หากมี 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 เช่นกัน เพียงไล่เปิดโฟลเดอร์ตามขนาดที่แสดง

ไฟล์ที่มักกินพื้นที่มากที่สุด

วิธีลบ Cache WordPress ผ่าน DirectAdmin File Manager

  1. เข้า DirectAdmin → File Manager
  2. ไปที่ public_html/wp-content/cache/
  3. เลือกทุกไฟล์และโฟลเดอร์ภายใน cache/ (ไม่ต้องลบโฟลเดอร์ cache เอง)
  4. คลิก Delete

วิธีลดการใช้พื้นที่และ Inode

เมื่อรู้แล้วว่าอะไรเป็นตัวการ ขั้นตอนต่อไปคือลดของจริง ไม่ใช่แค่ลบครั้งเดียวแล้วปล่อยให้กลับมาเต็มอีก แบ่งงานเป็นสามด้านหลัก: cache, อีเมล และรูปภาพ

1. ล้างและควบคุม Cache

Cache เป็นไฟล์ชั่วคราว ลบได้ปลอดภัยและจะถูกสร้างใหม่เมื่อมีผู้เข้าชม สิ่งที่ควรทำ:

2. จัดการอีเมลให้คืน Inode

อีเมลแต่ละฉบับคือหนึ่งไฟล์หนึ่ง Inode กล่องที่ไม่เคยล้างเป็นแหล่งกิน Inode เงียบๆ ที่ใหญ่ที่สุด:

3. Optimize รูปภาพและไฟล์มีเดีย

รูปภาพมักกินทั้งพื้นที่และ Inode (จาก thumbnail หลายขนาด) พร้อมกัน:

เคล็ดลับ: หลังลบไฟล์จำนวนมาก ให้รีเฟรชหน้า Account Summary ใน DirectAdmin ค่าการใช้งานอาจอัปเดตช้าราว 1–4 ชั่วโมงเพราะระบบคำนวณโควต้าเป็นรอบ ไม่ใช่เรียลไทม์ ไม่ต้องตกใจถ้าตัวเลขยังไม่ลดทันที

ป้องกัน Inode เต็มในอนาคต

ป้องกันไม่ให้เต็มซ้ำ และเมื่อไหร่ควรอัปเกรดแพ็ก

การล้างไฟล์เป็นการแก้ที่ปลายเหตุ ถ้าไม่วางระบบป้องกัน อีกไม่กี่สัปดาห์ปัญหาจะกลับมา หัวใจของการป้องกันคือทำให้การ "เก็บกวาด" เกิดขึ้นเองโดยอัตโนมัติ และเฝ้าดูแนวโน้มการใช้งานอย่างสม่ำเสมอ

ตั้งระบบเก็บกวาดอัตโนมัติ

เฝ้าดูแนวโน้มการใช้งาน

เข้าดูแถบ 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