หากคุณใช้ Linux มานานพอ คุณจะเห็นคำว่า “inodes” เป็นสิ่งที่จะปรากฏขึ้นเป็นครั้งคราว แต่ไม่ส่งผลต่อสิ่งที่คุณกำลังทำ ที่นี่เราจะอธิบายว่าไอโหนดคืออะไรและทำงานอย่างไร
ไอโหนดคืออะไร
ในห้องสมุด หนังสือทุกเล่มจัดตามประเภท ชื่อผู้แต่ง หรือกลุ่มอายุของผู้ฟัง หากคุณต้องการค้นหาหนังระทึกขวัญของ “บ็อบบี้ แดเนียลส์” คุณจะต้องเดินไปที่ส่วนระทึกขวัญโดยตรง และเริ่มค้นหาชื่อผู้แต่งที่ขึ้นต้นด้วยตัว “B” เช่นเดียวกับไลบรารี ไฟล์ทั้งหมดในระบบ Linux ได้รับการจัดระเบียบเพื่อการดึงและใช้งานอย่างมีประสิทธิภาพ Inode เป็นเอนทิตีที่ช่วยในการจัดเรียงไฟล์ภายในระบบ Linux
ไฟล์เมตาดาต้าคืออะไร
สมมติว่าเรามีไฟล์ชื่อ “sample.txt” ที่มีข้อมูล “hello”
ไฟล์นี้มีข้อมูลบางส่วนและข้อมูลที่เกี่ยวข้อง เช่น ขนาดไฟล์ การอนุญาต ความเป็นเจ้าของของผู้ใช้และกลุ่ม การประทับเวลาการสร้าง/การเข้าถึง/การแก้ไข จำนวนลิงก์ ฯลฯ ข้อมูลทั้งหมดเหล่านี้เรียกรวมกันว่าข้อมูลเมตาของไฟล์
ระบบไฟล์คืออะไร
บนอุปกรณ์จัดเก็บข้อมูล เช่น ฮาร์ดไดรฟ์ พาร์ติชันจะได้รับการฟอร์แมตเป็นระบบไฟล์ก่อนที่จะใช้สำหรับการจัดเก็บไฟล์ ระบบไฟล์คือบรรณารักษ์สำหรับฮาร์ดไดรฟ์ อย่างเป็นทางการ มันคือชุดของโครงสร้างข้อมูลและอัลกอริธึมที่ทำงานควบคู่ไปกับการจัดเก็บไฟล์บนพาร์ติชั่นอย่างเป็นระบบ
พาร์ติชั่นบนระบบ Linux มักถูกฟอร์แมตด้วย EXT4 ระบบไฟล์อื่นๆ เช่น B-Tree File System (BTRFS), Reiser File System, ZFS และอื่นๆ ก็พร้อมให้ใช้งานเช่นกัน
เชื่อมโยงพวกเขาทั้งหมดเข้าด้วยกัน
Inode คือโครงสร้างข้อมูลบน Ext4 ซึ่งเก็บข้อมูลเมตาทั้งหมดสำหรับไฟล์
แน่นอนว่าจะมีไฟล์จำนวนมากในระบบไฟล์ ตามที่คุณเดา ทุกไฟล์จะมีไอโหนดเป็นของตัวเอง เพื่อระบุไอโหนดที่ไม่ซ้ำกัน แต่ละไอโหนดจะมีหมายเลข
การนับเลขไอโหนดจะเป็นอย่างไร
หมายเลขไอโหนดบนระบบไฟล์เริ่มต้นจาก 1 ไอโหนดสิบตัวแรกสงวนไว้สำหรับการใช้งานระบบ ไฟล์ผู้ใช้มีข้อมูลเมตาที่เก็บไว้จาก inode 11 inodes ทั้งหมดถูกซ้อนกันอย่างเรียบร้อยในตาราง Inode
หนึ่งรายการในตารางไอโหนดจะมีขนาด 256 ไบต์ สำหรับไฟล์ Linux จะจัดระเบียบข้อมูลเมตาทั้งหมดอย่างชาญฉลาดภายใน 256 ไบต์! นอกจากนี้ inode สำหรับไฟล์ยังมีข้อมูลเกี่ยวกับตำแหน่งที่ข้อมูลของไฟล์อยู่ในระบบไฟล์ โปรดจำไว้ว่า – เฉพาะข้อมูลเมตาของไฟล์เท่านั้นที่ถูกเก็บไว้ในไอโหนด
จำนวน inodes ทั้งหมดในระบบไฟล์ขึ้นอยู่กับพื้นที่ว่างและจำนวนไฟล์ที่สามารถจัดเก็บไว้ในพาร์ติชั่น
ไอโหนดมีการจัดสรรและจัดสรรคืนอย่างไร
เมื่อผู้ใช้เพิ่มไฟล์ลงในระบบไฟล์ที่จัดรูปแบบใหม่ ไอโหนดที่เริ่มต้นจาก 11 จะได้รับการจัดสรรเพื่อเก็บข้อมูลเมตาของไฟล์
มีโครงสร้างข้อมูลอื่นที่เรียกว่า "ไอโหนดบิตแมป" เพื่อติดตามสถานะการจัดสรรของไอโหนด เป็นชุดของบิตที่ทำหน้าที่เป็นแผนที่
ให้เราพิจารณาแปดบิตในไอโหนดบิตแมปเพื่อแสดงสถานะการจัดสรรของไอโหนด 11 ถึง 18 ดังแสดงในตารางด้านล่าง ค่า 1 ในบิตแมปหมายความว่าไอโหนดได้รับการจัดสรร เช่น ใช้เพื่อเก็บข้อมูลเมตาสำหรับไฟล์ ค่า 0 ในบิตแมปหมายความว่าไอโหนดไม่ได้ใช้งานอยู่ในขณะนี้ ในที่นี้ เราจะเห็นว่า inode 17 ถูกใช้งานอยู่
ในกรณีที่ไฟล์ที่มีข้อมูลเมตาในไอโหนด 17 ถูกลบ สถานะบิตแมปที่สอดคล้องกันจะกลายเป็น 0 แสดงว่าไฟล์อื่นใช้งานได้ฟรี
วิธีดูหมายเลขไอโหนดของไฟล์
มีสองวิธีในการทำเช่นนี้
อันแรกใช้ ls
คำสั่งด้วย –i
สวิตซ์ ตามด้วยชื่อไฟล์ ฟิลด์แรกในเอาต์พุตคือหมายเลขไอโหนดที่มีข้อมูลเมตาของ “sample.txt”
สามารถรับข้อมูลเดียวกันได้โดยใช้ stat
คำสั่งตามด้วยชื่อไฟล์
หากต้องการดูจำนวน inodes ทั้งหมดที่มีสำหรับพาร์ติชัน df
คำสั่งสามารถใช้ได้กับ -i
สวิตช์
ในพาร์ติชั่น “/dev/sda4” มีไอโหนด 404754480 ให้ใช้ โดยในจำนวนนี้ใช้ไอโหนดเพียง 359044 ตัวเท่านั้น
บทสรุป
โดยธรรมชาติแล้ว Inode Table จะสแต็คข้อมูลเมตาของไฟล์ทั้งหมดอย่างพิถีพิถันใน inodes พร้อมกับข้อมูลเกี่ยวกับตำแหน่งของข้อมูลไฟล์ ทั้งหมดที่เราพูดถึงเกี่ยวกับ Linux inodes เป็นเพียงส่วนเล็กๆ ของภูเขาน้ำแข็ง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำงานภายใน คุณสามารถดูได้ที่ลิงค์นี้