ชื่อไฟล์ถูกเก็บไว้ในระบบไฟล์ที่ไหน?


43

ชื่อไฟล์ถูกเก็บไว้ในระบบไฟล์ที่ไหน?

ไม่ได้อยู่ใน inode หรือเนื้อหาของไฟล์จริงเนื่องจากเรามีฮาร์ดลิงก์ที่ชื่อไฟล์สองไฟล์สามารถชี้ไปที่ไอโหนดเดียวกัน


4
อย่างเคร่งครัดพูดว่าขึ้นอยู่กับที่ระบบแฟ้มคุณกำลังพูดถึง ไม่ใช่ทั้งหมดที่มี inodes (หรือแม้กระทั่งไดเรกทอรี)
Michael Borgwardt

NTFS หรือ FAT12 / 16/32 และระบบไฟล์อื่น ๆ มากมายไม่มี inode
phuclv

หลายไฟล์มีมากกว่าหนึ่งชื่อในมากกว่าหนึ่งไดเรกทอรี ไฟล์ประเภทไดเรกทอรีทั้งหมดมีอย่างน้อย 2 ชื่อหนึ่งในนั้นอยู่.ในตัวเอง
Stéphane Chazelas

@ LưuVĩnhPhúc, ntfs ทำ .. มันแค่เรียกมันว่า MFT record แต่มันค่อนข้าง inode
psusi

คำตอบ:


60

ฉันไม่พบสำเนาที่เหมาะสมดังนั้นนี่คือคำตอบสำหรับคำถามของคุณ

ชื่อไฟล์และไดเรกทอรี

สิ่งที่สกัดมา

ชื่อไฟล์และผลกระทบของไดเรกทอรี:

  • inodes ไม่มีชื่อไฟล์เฉพาะข้อมูลเมตาของไฟล์อื่น ๆ
  • ไดเร็กทอรี Unix คือรายการของโครงสร้างการเชื่อมโยงซึ่งแต่ละไฟล์มีหนึ่งชื่อไฟล์และหมายเลขไอโหนดหนึ่ง
  • ไดรเวอร์ระบบไฟล์ต้องค้นหาไดเร็กทอรีที่ค้นหาชื่อไฟล์เฉพาะจากนั้นแปลงชื่อไฟล์ให้เป็นหมายเลข inode ที่ถูกต้อง

ที่มา: หน้า Wikipedia บน Inode

ดังนั้นชื่อของไฟล์จะถูกเก็บไว้ในโครงสร้างข้อมูลของไดเรกทอรี ตัวอย่างเช่น:

                         เอสเอสของ fs

โครงสร้างของสารบบ

สิ่งที่สกัดมา

ในระบบไฟล์ EXT2 ไดเรกทอรีเป็นไฟล์พิเศษที่ใช้ในการสร้างและถือพา ธ การเข้าถึงไฟล์ในระบบไฟล์ รูปที่ 9.3 แสดงโครงร่างของรายการไดเรกทอรีในหน่วยความจำ

ไฟล์ไดเร็กทอรีคือรายการของรายการไดเร็กทอรีแต่ละไฟล์มีข้อมูลต่อไปนี้:

  • inode - inode สำหรับรายการไดเรกทอรีนี้ นี่คือดัชนีลงในอาร์เรย์ของ inodes ที่จัดขึ้นในตาราง Inode ของกลุ่มบล็อก ในรูปที่ 9.3 รายการไดเร็กทอรีสำหรับไฟล์ที่ชื่อ file มีการอ้างอิงถึงหมายเลข inode i1
  • name length - ความยาวของรายการไดเร็กทอรีนี้เป็นไบต์
  • ชื่อ - ชื่อของรายการไดเรกทอรีนี้

สองรายการแรกสำหรับทุกไดเรกทอรีเป็นมาตรฐาน.และ..รายการหมายถึง "ไดเรกทอรีนี้" และ "ไดเรกทอรีหลัก" ตามลำดับ

นี่คือรูปที่ 9.3การอ้างอิงด้านบน:

                 เอสเอส # 2

ที่มา: โครงการเอกสารลินุกซ์: ระบบไฟล์

อ้างอิง


9

ชื่อไฟล์จะถูกเก็บไว้ในไดเรกทอรีที่เกี่ยวข้อง ("ไฟล์ไดเรกทอรี") รายการนี้ชี้ไปที่ไอโหนด


1
ฉันไม่เห็นว่า symlink เป้าหมายสามารถสิ้นสุดในรายการไดเรกทอรีได้อย่างไร เป้าหมาย symlink อาจพบได้ในไอโหนดของ inode แต่ไม่ได้อยู่ใน (ใด ๆ ) ของรายการไดเรกทอรีที่เชื่อมโยงกับ symlink ซึ่งจะไม่สมเหตุสมผล
Stéphane Chazelas

@ StéphaneChazelasตัวเชื่อมโยงนั้นมีชื่ออื่นที่ควรเปิดแทน การค้นหาชื่อจะเริ่มต้นอีกครั้งในชื่อใหม่ซึ่ง (หากมีอยู่ทั้งหมด) เป็นรายการไดเรกทอรีบางแห่ง
psusi

1

ชื่อไฟล์จะถูกเก็บไว้ในโครงสร้างข้อมูล "ไดเรกทอรี" ซึ่งมี "(สตริง) ชื่อไฟล์" และ inode "(int) inode" ที่สอดคล้องกัน ไดเรกทอรีรับผิดชอบการแม็พชื่อไฟล์ -> inode และ inode จะทำหน้าที่แมป inode -> sector บนดิสก์

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