# Inodes และ 'No space left on device'

> inode คืออะไร วิธีดูการใช้งาน inode ด้วย df -i และวิธีค้นหาไดเรกทอรีที่มีไฟล์ขนาดเล็กจำนวนมหาศาล

inode คือโครงสร้างข้อมูลที่ระบบไฟล์แบบ Unix ใช้จัดเก็บข้อมูลเกี่ยวกับไฟล์ เช่น เจ้าของไฟล์ สิทธิ์การเข้าถึง ขนาด และตำแหน่งที่จัดเก็บข้อมูล ไฟล์แต่ละไฟล์จะใช้ inode หนึ่งตัว และระบบไฟล์จำนวนมากมีการกำหนดจำนวน inode ไว้คงที่ ดังนั้นไฟล์ขนาดเล็กจำนวนหลายล้านไฟล์อาจทำให้เกิดข้อผิดพลาด 'No space left on device' ได้ แม้ว่า df -h จะยังแสดงว่ามีพื้นที่ว่างเหลืออยู่ก็ตาม

## วิธีตรวจสอบ

'df -i' จะแสดงรายการ inode ทั้งหมด, ที่ใช้งานไปแล้ว และที่ว่างอยู่ของแต่ละระบบไฟล์ 'ls -i' จะแสดงหมายเลข inode ของไฟล์ และ 'stat <file>' จะแสดงรายละเอียด inode ของไฟล์นั้น

## สาเหตุทั่วไป

ไดเรกทอรีเซสชันหรือแคชของเว็บแอปพลิเคชัน, คิวอีเมล, ไฟล์บันทึก (log) ขนาดเล็กที่ไม่ได้หมุนเวียน (rotate) และแคชของการ build อาจสร้างไฟล์จำนวนหลายล้านไฟล์ได้

## การค้นหาไดเรกทอรี

GNU du สามารถนับจำนวน inode ได้: 'du --inodes -x / | sort -n | tail' จะแสดงรายการไดเรกทอรีที่มีจำนวนรายการมากที่สุด

## วิธีแก้ไขปัญหา inode เต็ม

1. ยืนยันปัญหา: df -i (IUse% ใกล้ถึง 100%)
2. ค้นหาไดเรกทอรี: sudo du --inodes -x --max-depth=3 / | sort -n | tail -20
3. ตรวจสอบว่าไฟล์เหล่านั้นถูกสร้างขึ้นจากอะไรก่อนที่จะลบสิ่งใดออกไป
4. ลบไฟล์เก่าของแอปพลิเคชันนั้นด้วยเครื่องมือของแอปพลิเคชันเอง หรือใช้คำสั่ง find ตัวอย่างเช่น: find /path -type f -mtime +7 -delete หลังจากทดสอบรันคำสั่งโดยไม่มี -delete ก่อน

## ข้อควรระวัง

- ควรเรียกใช้คำสั่ง find โดยไม่มี -delete ก่อนเสมอเพื่อตรวจสอบรายการไฟล์
- จำนวน inode ของ ext4 จะถูกกำหนดไว้คงที่ตั้งแต่ตอนสร้างระบบไฟล์

## แหล่งอ้างอิง

- [inode(7)](https://man7.org/linux/man-pages/man7/inode.7.html)
- [df(1)](https://man7.org/linux/man-pages/man1/df.1.html)
- [du(1)](https://man7.org/linux/man-pages/man1/du.1.html)
- [find(1)](https://man7.org/linux/man-pages/man1/find.1.html)

อัปเดตล่าสุด: 2026-10-08
URL: https://raincleaner.eu/th/wiki/linux/inodes
