ทำไมไดเร็กตอรี่ / home, / usr, / var, ฯลฯ ล้วนมีหมายเลขไอโหนดเดียวกัน (2)?


31

ฉันพบว่าภายใต้ไดเรกทอรีรากของฉันมีบางไดเรกทอรีที่มีหมายเลขไอโหนดเดียวกัน:

$ ls -aid */ .*/

2 home/ 2 tmp/ 2 usr/ 2 var/ 2 ./ 2 ../ 1 sys/ 1 proc/

ฉันรู้เพียงว่าชื่อไดเรกทอรีนั้นถูกเก็บไว้ในไดเรกทอรีหลักและข้อมูลของพวกเขาจะถูกเก็บไว้ใน inode ของไดเรกทอรีเอง

ฉันสับสนที่นี่

นี่คือสิ่งที่ฉันคิดว่าเมื่อฉันติดตามชื่อพา ธ / home / user1

  • ก่อนอื่นฉันจะเข้าสู่ inode 2 ซึ่งเป็นไดเรกทอรีรูทซึ่งมีรายการไดเรกทอรี
  • จากนั้นฉันก็พบชื่อบ้านที่จับคู่กับ inode 2
  • ดังนั้นฉันกลับไปที่ดิสก์เพื่อค้นหา inode 2?
  • และฉันจะได้รับชื่อผู้ใช้ 1 ที่นี่?

2
ดูเพิ่มเติมที่: grymoire.com/Unix/Inodes.html
Richard Neumann

คำตอบ:


39

พวกเขาอยู่ในอุปกรณ์ที่แตกต่างกัน

หากเราดูผลลัพธ์ของstatเรายังสามารถดูอุปกรณ์ที่ไฟล์นั้นอยู่:

# stat / | grep Inode
Device: 801h/2049d      Inode: 2           Links: 24
# stat /opt | grep Inode
Device: 803h/2051d      Inode: 2           Links: 5

ดังนั้นทั้งสองอยู่บนอุปกรณ์ / ระบบแฟ้มแยกต่างหาก หมายเลขไอโหนดนั้นไม่ซ้ำกันภายในระบบไฟล์ดังนั้นจึงไม่มีอะไรผิดปกติที่นี่ ใน ext2 / 3/4 inode 2 ยังเป็นไดเรกทอรีรากเสมอดังนั้นเราจึงรู้ว่ามันเป็นรากของระบบไฟล์ที่เกี่ยวข้อง

การรวมกันของหมายเลขอุปกรณ์ + inode มีแนวโน้มที่จะไม่ซ้ำกันในทั้งระบบ (มีระบบไฟล์ที่ไม่มี inodes ในความหมายดั้งเดิม แต่ฉันคิดว่าพวกเขายังต้องปลอมตัวระบุที่เป็นเอกลักษณ์บางอย่างแทนพวกเขาต่อไป)

หมายเลขอุปกรณ์ที่ปรากฏจะเหมือนกันกับที่แสดงบนโหนดอุปกรณ์ดังนั้นให้/dev/sda1เก็บระบบไฟล์ที่/เปิดอยู่:

# ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Sep 21 10:45 /dev/sda1

ขอบคุณตอนนี้ฉันได้สถิติมีประโยชน์สำหรับฉันฉันจะเรียนรู้ที่จะใช้มัน
youxiao

1
สำหรับเร็กคอร์ดระบบไฟล์ทั้งหมดมีบางอย่างที่เทียบเท่าแม้ว่าพวกเขาจะจัดสรร inodes แบบไดนามิก ตัวอย่างเช่นบน BTRFS (ซึ่งทำการจัดสรร inode แบบไดนามิกตรงกันข้ามกับตาราง inode แบบคงที่ของ ext2 / 3/4) ค่า inode เฉพาะที่ใช้เช่น 256 คือ (เพราะทุกอย่างที่ต่ำกว่าถูกสงวนไว้สำหรับรายการพิเศษในต้นไม้ metadata) .
Austin Hemmelgarn

1
@AustinHemmelgarn ระบบไฟล์บางตัวเช่น FAT หรือ ISO9660 ไม่มี inodes ในความหมายใด ๆ ของคำว่า ไดรเวอร์ระบบไฟล์ทำหน้าที่เล็กน้อยเพื่อให้มองไปที่ส่วนอื่น ๆ ของระบบที่ทำ
ทำเครื่องหมาย

@ Mark: คำว่า "Sense sense of the word" ที่มีความหมายต่อมาตรฐานที่กำหนดคือ "หมายเลขซีเรียลของไฟล์ [เฉพาะภายในอุปกรณ์]" การยืนยันความคิดของ inodes ว่าเป็นโครงสร้างข้อมูลแบบ on-disk นั้นมีความเป็นไปได้ที่จะย้อนกลับเมื่อคิดถึง ttys เป็น teletypes เชิงกล

1
@R .. ฉันคิดว่าคำจำกัดความที่ระบบไฟล์ FAT มี inodes แต่ "หมายเลขซีเรียลไฟล์" สำหรับไฟล์ที่กำหนดในระบบไฟล์ FAT ไม่มั่นคงในการเมานต์หรือแม้กระทั่งเวลาผ่านเมานต์เดียว: หากความดันหน่วยความจำ ทำให้โครงสร้างไอโหนดสังเคราะห์ถูกขับออกจากแคชไฟล์จะได้รับหมายเลขใหม่ในครั้งต่อไปที่มีบางสิ่งที่ร้องขอข้อมูล inode
ทำเครื่องหมาย

24

หมายเลข inode ของไฟล์ใด ๆ ที่ระบุนั้นไม่ซ้ำกันกับระบบไฟล์ แต่ไม่จำเป็นต้องเป็นเอกลักษณ์ของระบบไฟล์ทั้งหมดที่ติดตั้งบนโฮสต์ที่กำหนด เมื่อคุณมีระบบไฟล์หลายระบบคุณจะเห็นหมายเลขไอโหนดซ้ำกันระหว่างระบบไฟล์ซึ่งเป็นเรื่องปกติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.