หากใช้ Linux มาพักหนึ่ง คุณคงเคยเห็นคำว่า "inode" มันปรากฏบ้างครั้ง แต่ไม่ค่อยส่งผลต่อการใช้งานทั่วไป มาทำความเข้าใจว่า inode คืออะไร และทำงานอย่างไร
Inode คืออะไร?
เหมือนห้องสมุดจัดหนังสือตามประเภท/ผู้เขียน/กลุ่มอายุ Linux จัดระเบียบไฟล์เพื่อค้นหาและใช้งานได้มีประสิทธิภาพ Inode คือเอนทิตี้ (entity) ที่ช่วยจัดการการจัดเก็บไฟล์ในระบบ
File Metadata คืออะไร?
ไฟล์ sample.txt มีข้อมูล "hello" แต่ยังมีข้อมูลเมตาด้วย: ขนาดไฟล์, สิทธิ์, เจ้าของ user/group, timestamp (สร้าง/เข้าถึง/แก้ไข), link count ฯลฯ ข้อมูลเหล่านี้รวมกันเรียกว่า File Metadata
File System คืออะไร?
พาร์ติชันบนฮาร์ดดิสก์ต้องจัดรูปแบบ (format) เป็น File System ก่อนเก็บไฟล์ได้ File System คือ "หัวหน้าห้องสมุด" ของฮาร์ดดิสก์: ชุดโครงสร้างข้อมูลและอัลกอริทึมที่จัดเก็บไฟล์อย่างเป็นระบบ Linux มักใช้ EXT4 (อื่นๆ: BTRFS, ReiserFS, ZFS)
Inode, Metadata และ File System: มันเชื่อมโยงกันอย่างไร?
Inode คือโครงสร้างข้อมูล (data structure) บน EXT4 ที่เก็บ metadata ทั้งหมดของไฟล์แต่ละไฟล์
- ทุกไฟล์มี inode ของตัวเอง
- Inode แต่ละตัวมี inode number เฉพาะตัว (unique)
- Inode ทั้งหมดรวมอยู่ใน Inode Table
Inode Numbering เป็นอย่างไร?
- Inode number เริ่มจาก 1
- 10 inode แรก (1-10) สำรองไว้ระบบ
- ไฟล์ผู้ใช้เริ่มเก็บที่ inode 11 เป็นต้นไป
- แต่ละ entry ใน Inode Table ใหญ่ 256 bytes — Linux จัด metadata ทั้งหมดไว้ใน 256 bytes นี้!
- Inode ยังเก็บ pointer ไปยังตำแหน่งข้อมูลจริงของไฟล์บนดิสก์ (metadata อยู่ inode, ข้อมูลจริงอยู่ที่อื่น)
- จำนวน inode ทั้งหมด ขึ้นอยู่กับพื้นที่และจำนวนไฟล์สูงสุดของพาร์ติชัน
Inode ถูกจัดสรรและปลดปล่อยอย่างไร?
- เพิ่มไฟล์ใหม่ → Inode เริ่มจาก 11 ถูกจัดสรรเก็บ metadata
- มี Inode Bitmap ติดตามสถานะ: bit = 1 (ใช้งาน), 0 (ว่าง)
- ลบไฟล์ → bitmap ของ inode นั้นกลายเป็น 0 → inode นั้นว่างรอใช้ใหม่
ดู Inode Number ของไฟล์
ls -i filename→ ฟิลด์แรกคือ inode numberstat filename→ แสดงรายละเอียดรวม inodedf -i→ ดูจำนวน inode ทั้งหมด/ใช้แล้ว/เหลือ ของแต่ละพาร์ติชัน
สรุป
Inode Table จัดเก็บ metadata ทุกไฟล์อย่างเป็นระบบ พร้อม pointer ไปยังข้อมูลจริง บทความนี้เพียง "ปลายน้ำแข็ง" สำหรับรายละเอียดลึก ดูเพิ่มได้จากเอกสารทางเทคนิคของ EXT4