ทุกอย่างใน Linux ถูกมองว่าเป็น file เพื่อความสอดคล้อง รวมถึง hardware devices, printers, directories, และ processes Regular files อย่างเพลง ข้อความ วิดีโอ และ multimedia files อื่นๆ ก็มี additional data เรียกว่า metadata
Inodes ใน Linux คืออะไร? Inode entries เป็นพื้นฐานของ Linux file system จัดการ metadata เกี่ยวกับ file และเป็น essential pieces ของ inner workings ของ Linux
โครงสร้าง File System เป็นอย่างไร?
File system แบ่งเป็น 2 ส่วน: data blocks และ inodes จำนวน blocks ตายตัวเมื่อสร้างแล้ว ไม่สามารถเปลี่ยนได้
ชื่อ, path, location, links และ file attributes อื่นๆ ไม่อยู่ใน directory Directories เป็นเพียงตารางที่มีชื่อไฟล์พร้อม inode number ที่ตรงกัน
คุณสร้าง hard link ได้ ทำให้มีชื่อมากกว่า 1 สำหรับไฟล์เดียวกัน ตอนสร้าง hard link จะสร้างชื่อใหม่ในตารางพร้อม inode แต่ไม่ย้ายไฟล์
ถ้าย้าย large file จะใช้เวลานาน มีประสิทธิภาพมากกว่าที่จะสร้าง name entry ใน directory ใหม่และลบ entry เก่า rename files ทำได้ด้วยวิธีเดียวกัน
Top ของ hierarchy คือ file system เอง ภายในมี file names file names link ไป inodes inodes link ไป physical data
Inodes ใน Linux คืออะไร?
Inode เป็น data structure define file หรือ directory บน file system เก็บไว้ใน directory entry Inodes point ไป blocks ที่รวมเป็น file Inode มี administrative data ทั้งหมดที่ต้องการอ่าน file ทุก file's metadata เก็บใน inodes แบบ table structure
ตอนใช้โปรแกรมอ้างอิง file โดยชื่อ ระบบจะดูใน directory entry file ที่มีอยู่ เพื่อดึง inode ที่ตรงกัน นี่ให้ระบบ file data และข้อมูลที่ต้องการทำ processes หรือ operations
Inodes ปกติอยู่ near beginning ของ partition เก็บข้อมูลทั้งหมดที่เกี่ยวกับ file ยกเว้น file name และ actual data ทุกไฟล์ใน Linux directory ใดๆ มี filename และ inode number ผู้ใช้ retrieve metadata ของ file ได้โดยอ้างอิง inode number
File names และ inode numbers เก็บใน separate index และ link ไป inode สามารถ link ไป metadata ที่ represent file ได้ เป็นไปได้ที่จะมี multiple file names link ไป one piece of data หรือ inode เดียวกัน ตามภาพด้านล่าง
Inode Number คืออะไร?
ทุก inode ใน Linux structure มี unique number ระบุตัวตน เรียกอีกอย่างว่า index number มี attributes ดังนี้:
- Size (ขนาด)
- Owner (เจ้าของ)
- Date/time (วันที่/เวลา)
- Permissions และ access control
- Location on the disk (ตำแหน่งบนดิสก์)
- File types (ประเภทไฟล์)
- Number of links (จำนวนลิงก์)
- Additional metadata เกี่ยวกับ file
เช็ครายการ inode numbers ด้วยคำสั่ง:
ls -i
Screenshot ด้านล่างแสดง directory พร้อม inode numbers ในคอลัมน์ซ้ายสุด
Inodes ทำงานอย่างไร?
ตอนสร้างไฟล์ใหม่ จะได้รับ file name และ inode number ทั้งคู่เก็บเป็น entries ใน directory รัน ls command (ls -li) จะแสดงรายการ file names และ inode numbers ที่เก็บใน directory
ใช้คำสั่งด้านล่างเพื่อ list inode information สำหรับแต่ละ file system:
df -hi
คุณใช้ Inodes ไปกี่ตัว?
วิธีหนึ่งที่ทำให้ filesystem เต็มคือใช้ inodes หมด แม้ disk free space พอ คุณก็สร้างไฟล์ใหม่ไม่ได้
การใช้ inodes หมดยังทำให้ระบบหยุดทำงานทันที ดูสถิติการใช้ inode: used, free, percentage used ด้วยคำสั่ง:
sudo df -ih
วิธีเพิ่มเติมที่ Inodes ถูกใช้
วิธีที่ inodes ทำงานใน Linux ทำให้ impossible to have conflicting inode numbers ไม่สามารถสร้าง hard link across different file systems ได้ แต่ใช้ soft links across different file systems ได้ คุณลบ original files และยังมี data ผ่าน hard link
การลบไฟล์ = ลบ name หนึ่งที่ point ไป specific inode number Data จะคงอยู่จนกว่าคุณจะลบ names ทั้งหมดที่ link ไป inode number เดียวกัน Linux systems update โดยไม่ต้อง reboot ส่วนใหญ่เพราะวิธีที่ inodes ทำงาน
Process หนึ่งใช้ library file พร้อมกันอีก process แทนที่ไฟล์เดียวกันด้วย newer updated version และสร้าง new inode Running process ใช้ old file ต่อ ไปครั้งหน้าที่ใช้ process เดียวกัน จะใช้ new version
Users ไม่ interact กับ inodes โดยตรง แต่มันคือ fundamental component ของ Linux file structures