โครงสร้างไดเร็กทอรีถูกเก็บไว้ในระบบไฟล์ UNIX อย่างไร?


8

ฉันได้อ่านแล้วว่าแต่ละไดเรกทอรีเก็บเนื้อหา (ไฟล์และไดเรกทอรีย่อย) โดยใช้รายการชื่อไฟล์และ inode pair แต่ไม่มีการอ้างอิงที่ฉันได้พูดอะไรเกี่ยวกับวิธีการจัดเก็บ

พวกเขาถูกเก็บไว้ใน inode ของไดเรกทอรีแม่ของพวกเขาโดยใช้บล็อกข้อมูลเช่นไฟล์ปกติหรืออาจใช้วิธีอื่น ๆ ที่ฉันไม่ทราบ?

ขอขอบคุณสำหรับการชี้แจง.


ไม่มีวิธีการเดียวที่ Unix เก็บไฟล์ คล้ายกับไม่มีวิธีเดียวกับที่ windows จัดเก็บไฟล์ ในทั้งสองกรณีขึ้นอยู่กับระบบไฟล์ที่ใช้ (FAT, NTFS, ext2, UFS, ... )
Hennes

สำหรับระบบไฟล์โครงสร้างไดเร็กทอรีบนดิสก์ถูกกำหนดใน dirent.h และคุณควรใช้ libcalls opendir / readdir / closedir ฯลฯ เพื่อเข้าถึงเนื้อหา
ott--

คำตอบ:


10

ดูinternals ระบบไฟล์ที่แสดงในวิธีที่ค่อนข้างง่าย internals ของระบบไฟล์ Unix ทั่วไป

ป้อนคำอธิบายรูปภาพที่นี่

ระบบไฟล์ Unix ส่วนใหญ่มี

  • บล็อกการบูต
  • Superblock (เรขาคณิตดิสก์รูปแบบพาร์ติชันจำนวนไอโหนด ฯลฯ )
  • บล็อกไอโหนด
  • บล็อกข้อมูล

ระบบไฟล์ที่ทันสมัยประกอบด้วยโครงสร้างเพิ่มเติม

สิ่งหนึ่งใน superblock คือตำแหน่งของ inodes สำหรับไดเรกทอรีรูท

ไดเรกทอรีเป็นไฟล์ที่จัดรูปแบบพิเศษ เช่นเดียวกับไฟล์ทั่วไปทั้งหมดมันมีบล็อคข้อมูล

คุณสามารถดูได้ในโครงการเอกสารลินุกซ์: ระบบไฟล์

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถใช้debugfsเพื่อสำรวจโครงสร้างเหล่านี้


2
"ไดเรกทอรีเป็นไฟล์ที่จัดรูปแบบพิเศษเช่นเดียวกับไฟล์ทั่วไปทั้งหมดมันมีบล็อคข้อมูล" ดังนั้นไดเรกทอรีต่างๆจึงจัดเก็บคู่ของชื่อไฟล์ - ไอโหนด (ตารางด้านซ้ายสุดของรูปภาพที่ 1 หรือแถวในรูปภาพที่ 2) ในบล็อคข้อมูล
Oka

1
@Oka: ถูกต้อง
RedGrittyBrick

ดังนั้นเพื่อความชัดเจนไดเรกทอรีเป็นไฟล์ดังนั้นจึงถูกเก็บไว้ในบล็อคข้อมูล ตัวอย่างแต่ละไดเร็กทอรีในext4ระบบไฟล์ (สิ่งที่แสดงโดยext4_dir_entry_2มีความยาว 263 ไบต์) บล็อก 4KB เดียวสามารถเก็บรายการไดเรกทอรีได้ประมาณ 15 รายการ?
campescassiano
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.