Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

Inode ใน Linux ทำงานอย่างไร? ทำความเข้าใจโครงสร้างข้อมูลไฟล์

หากใช้ 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 number
  • stat filename → แสดงรายละเอียดรวม inode
  • df -i → ดูจำนวน inode ทั้งหมด/ใช้แล้ว/เหลือ ของแต่ละพาร์ติชัน

สรุป

Inode Table จัดเก็บ metadata ทุกไฟล์อย่างเป็นระบบ พร้อม pointer ไปยังข้อมูลจริง บทความนี้เพียง "ปลายน้ำแข็ง" สำหรับรายละเอียดลึก ดูเพิ่มได้จากเอกสารทางเทคนิคของ EXT4