Superblock, Inode, Dentry และไฟล์คืออะไร?


125

จากบทความกายวิภาคของระบบไฟล์ลินุกซ์โดยเอ็มทิมโจนส์ผมอ่านที่ลินุกซ์ทุกมุมมองระบบไฟล์จากมุมมองของชุดทั่วไปของวัตถุและวัตถุเหล่านี้เป็นซุปเปอร์บล๊อก , ไอโหนด , Dentryและไฟล์ แม้ว่าส่วนที่เหลือของย่อหน้าจะอธิบายข้างต้น แต่ฉันก็ไม่สบายใจกับคำอธิบายนั้น

ใครสามารถอธิบายคำศัพท์เหล่านี้ให้ฉันได้บ้าง

คำตอบ:


136

แรกและสำคัญที่สุดและฉันรู้ว่ามันไม่ได้เป็นหนึ่งของข้อตกลงจากคำถามของคุณคุณจะต้องเข้าใจเมตาดาต้า เมตาดาต้าและถูกขโมยมาจากวิกิพีเดียนั้นเป็นข้อมูลเกี่ยวกับข้อมูล กล่าวคือข้อมูลเมตามีข้อมูลเกี่ยวกับข้อมูลส่วนหนึ่ง ตัวอย่างเช่นถ้าฉันเป็นเจ้าของรถฉันมีชุดข้อมูลเกี่ยวกับรถ แต่ไม่ได้เป็นส่วนหนึ่งของรถ ข้อมูลเช่นหมายเลขลงทะเบียนยี่ห้อรุ่นปีที่ผลิตข้อมูลการประกันและอื่น ๆ ข้อมูลทั้งหมดนั้นเรียกรวมกันว่าเมทาดาทา ในข้อมูลเมตาของระบบไฟล์ Linux และ UNIX มีอยู่ในหลายระดับขององค์กรตามที่คุณเห็น

ซุปเปอร์บล๊อกเป็นหลักเมตาดาต้าไฟล์ระบบและกำหนดชนิดของระบบไฟล์ขนาดสถานะและข้อมูลเกี่ยวกับโครงสร้างข้อมูลเมตาอื่น ๆ (เมตาดาต้าของเมตาดาต้า) ซุปเปอร์บล็อกนั้นมีความสำคัญอย่างยิ่งต่อระบบไฟล์ดังนั้นจึงถูกจัดเก็บในสำเนาที่ซ้ำซ้อนหลายชุดสำหรับระบบไฟล์แต่ละระบบ superblock เป็นโครงสร้างข้อมูลเมตา "ระดับสูงมาก" สำหรับระบบไฟล์ ตัวอย่างเช่นหาก superblock ของพาร์ติชัน / var เสียหายดังนั้นระบบไฟล์ที่สงสัย (/ var) จะไม่สามารถติดตั้งโดยระบบปฏิบัติการ โดยทั่วไปในเหตุการณ์นี้คุณต้องเรียกใช้fsckซึ่งจะเลือกสำเนาสำรองของ superblock สำรองโดยอัตโนมัติและพยายามกู้คืนระบบไฟล์ สำเนาสำรองตัวเองจะถูกเก็บไว้ในกลุ่มบล็อกแพร่กระจายผ่านระบบไฟล์โดยเก็บครั้งแรกที่ออฟเซ็ต 1 บล็อกตั้งแต่เริ่มต้นพาร์ติชัน นี่เป็นสิ่งสำคัญในกรณีที่จำเป็นต้องกู้คืนด้วยตนเอง คุณสามารถดูข้อมูลเกี่ยวกับการสำรองข้อมูล superblock ด้วยคำสั่งdumpe2fs /dev/foo | grep -i superblockซึ่งมีประโยชน์ในกรณีที่มีการพยายามกู้คืนด้วยตนเอง ขอให้เราคิดว่าคำสั่ง dumpe2fs outputs Backup superblock at 163840, Group descriptors at 163841-163841บรรทัด เราสามารถใช้ข้อมูลนี้และความรู้เพิ่มเติมเกี่ยวกับโครงสร้างระบบไฟล์จะพยายามที่จะใช้การสำรองข้อมูล superblock /sbin/fsck.ext3 -b 163840 -B 1024 /dev/fooนี้: โปรดทราบว่าฉันได้สมมติขนาดบล็อกเป็น 1024 ไบต์สำหรับตัวอย่างนี้

มีinodeในหรือบนระบบไฟล์และแทนข้อมูลเมตาเกี่ยวกับไฟล์ เพื่อความชัดเจนวัตถุทั้งหมดในระบบ Linux หรือ UNIX คือไฟล์ ไฟล์จริงไดเรกทอรีอุปกรณ์และอื่น ๆ โปรดทราบว่าในบรรดาข้อมูลเมตาที่อยู่ในไอโหนดไม่มีชื่อไฟล์ที่มนุษย์คิดว่าจะเป็นสิ่งสำคัญในภายหลัง inode มีข้อมูลเป็นหลักเกี่ยวกับความเป็นเจ้าของ (ผู้ใช้กลุ่ม) โหมดการเข้าถึง (อ่าน, เขียน, เรียกใช้สิทธิ์) และประเภทไฟล์

Dentryเป็นกาวที่ถือ inodes และไฟล์ที่เกี่ยวข้องกันโดยหมายเลขไอโหนดที่จะยื่นชื่อ Dentries ยังมีบทบาทในการแคชไดเรกทอรีซึ่งเป็นการดีที่สุดที่จะเก็บไฟล์ที่ใช้บ่อยที่สุดในมือเพื่อให้เข้าถึงได้เร็วขึ้น การข้ามผ่านระบบไฟล์เป็นอีกด้านหนึ่งของ Dentry เนื่องจากจะรักษาความสัมพันธ์ระหว่างไดเร็กทอรีและไฟล์ของพวกเขา

ไฟล์ในนอกจากจะเป็นสิ่งที่มักจะมนุษย์คิดว่าเมื่อนำเสนอด้วยคำว่าเป็นจริงเพียงบล็อกของข้อมูลที่เกี่ยวข้องกับพลเหตุผล ค่อนข้างน่าเบื่อมากเมื่อพิจารณาจากงานทั้งหมดที่ทำ (ด้านบน) เพื่อติดตามงาน

ฉันตระหนักดีว่าบางประโยคไม่ได้ให้คำอธิบายที่สมบูรณ์เกี่ยวกับแนวคิดเหล่านี้ดังนั้นโปรดอย่าลังเลที่จะสอบถามรายละเอียดเพิ่มเติมเมื่อใดและที่จำเป็น


@Tok: มันจะถ่ายโอนข้อมูลแบบนี้ (ดังแสดงในคำตอบ): Backup superblock ที่ 163840, Group descriptors ที่ 163841-163841 หรือเป็นแบบนี้: Backup superblock ที่ 163840, Group descriptors ที่ 163841-163842? นั่นเป็นข้อผิดพลาดการพิมพ์ผิดหรือเปล่า? :-)
เซน

@TOK: การสำรองข้อมูล superblock ที่ 163840, ตัวอธิบายกลุ่มที่ 163841-163842, ตัวอธิบายกลุ่มถ่ายทอดข้อมูลอะไร
เซน

@Sen - ผู้อธิบายกลุ่มตามทฤษฎีสามารถขยายหลายบล็อกได้ แต่สำหรับระบบเดสก์ท็อปส่วนใหญ่คุณจะเห็นพวกเขาใช้เพียงบล็อกเดียวและอ้างอิงเป็น $ ((BackupBlock + 1)) - $ (BackupBlock + 1)
Tok

@TOK: ตกลงในระบบของฉันฉันเห็นว่ามันเหมือน $ ((BackupBlock + 1)) - $ ((BackupBlock + 2))
Sen

@Sen - ตัวอธิบายกลุ่มอธิบายกลุ่มบล็อก นั่นหมายความว่าอย่างไร? ข้อมูลเมตาเพิ่มเติม โดยพื้นฐานแล้วตัวอธิบายกลุ่มประกอบด้วยบล็อกบิตแมป (หมายเลขบล็อกของบล็อกการจัดสรรบิตแมป), บิตแมปไอโหนด (เหมือนกัน แต่สำหรับไอโหนด) ตารางไอโหนด (หมายเลขบล็อกของบล็อกเริ่มต้นสำหรับตารางไอโหนด) จำนวนบล็อกว่างและ inode และจำนวนไดเรกทอรีที่ใช้ ทั้งหมดนี้ใช้ระบบไฟล์ ext2 ตัวอธิบายกลุ่มมีความสำคัญอย่างยิ่งต่อการทำงานของระบบไฟล์ที่เหมาะสมและมีการทำซ้ำควบคู่ไปกับซุปเปอร์บล็อก
Tok

49

ไฟล์

ไฟล์หมายถึงจำนวนไบต์ที่ถูกจัดเรียงตามลำดับที่แน่นอน มันเป็นสิ่งที่คนปกติเรียกเนื้อหาของไฟล์ เมื่อ Linux เปิดไฟล์มันจะสร้างวัตถุไฟล์ซึ่งเก็บข้อมูลเกี่ยวกับที่จัดเก็บไฟล์และกระบวนการที่ใช้งานอยู่ วัตถุไฟล์ (แต่ไม่ใช่ข้อมูลไฟล์เอง) จะถูกโยนทิ้งไปเมื่อไฟล์ถูกปิด

inode

inode (ย่อมาจาก "index node") เป็นกลุ่มของแอ็ตทริบิวต์เกี่ยวกับไฟล์ที่ Linux จัดเก็บ มี inode หนึ่งอันสำหรับแต่ละไฟล์ (แม้ว่าจะมีระบบไฟล์บางระบบ แต่ Linux ต้องสร้าง inode ของตัวเองเพราะข้อมูลนั้นจะกระจายไปทั่วระบบไฟล์) inode เก็บข้อมูลเช่นใครเป็นเจ้าของไฟล์ขนาดไฟล์ใหญ่เท่าไหร่และใครบ้างที่ได้รับอนุญาตให้เปิดไฟล์ แต่ละไอโหนดยังมีหมายเลขเฉพาะสำหรับพาร์ติชันระบบแฟ้ม มันเหมือนกับหมายเลขซีเรียลสำหรับไฟล์ที่อธิบายโดยไอโหนดนั้น

Dentry

Dentry (ย่อมาจาก "รายการไดเรกทอรี") เป็นสิ่งที่เคอร์เนล Linux ใช้ในการติดตามลำดับชั้นของไฟล์ในไดเรกทอรี Dentry แต่ละอันจะจับคู่หมายเลขไอโหนดกับชื่อไฟล์และไดเรกทอรีหลัก

ซุปเปอร์บล๊อก

ซุปเปอร์บล็อกนั้นเป็นโครงสร้างข้อมูลที่ไม่เหมือนใครในระบบไฟล์ (แม้ว่าจะมีหลาย ๆ สำเนาเพื่อป้องกันความเสียหาย) superblock เก็บข้อมูลเมตาเกี่ยวกับระบบไฟล์เช่นเดียวกับ inode ซึ่งเป็นไดเรกทอรีระดับบนสุดและประเภทของระบบไฟล์ที่ใช้


11

ซุปเปอร์บล๊อกโหนดดัชนี (หรือinode ) รายการไดเรกทอรี (หรือDentry ) และในที่สุดไฟล์วัตถุเป็นส่วนหนึ่งของระบบเสมือนจริงไฟล์ (วีเอฟเอ) หรือสวิทช์ระบบแฟ้มเสมือน วัตถุประสงค์ของ VFS คือการอนุญาตให้แอปพลิเคชันไคลเอนต์สามารถเข้าถึงระบบไฟล์คอนกรีตประเภทต่างๆได้อย่างสม่ำเสมอ

ความสัมพันธ์ของวัตถุหลักใน VFS

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


Inodeเป็นโครงสร้างข้อมูลบนระบบไฟล์ Unix / Linux inode เก็บข้อมูลเมตาเกี่ยวกับไฟล์ไดเรกทอรีหรือวัตถุระบบไฟล์อื่น ๆ Inode ทำหน้าที่เป็นส่วนต่อประสานระหว่างไฟล์และข้อมูล ไอโหนดสามารถอ้างถึงไฟล์หรือไดเรกทอรีหรือลิงก์สัญลักษณ์ไปยังวัตถุอื่น มันมีหมายเลขที่ไม่ซ้ำกัน (หมายเลข i) คุณลักษณะของไฟล์รวมถึงชื่อวันที่ขนาดและสิทธิ์ในการอ่าน / เขียนและตัวชี้ไปยังตำแหน่งของไฟล์ เป็นคู่กับตาราง FAT ในโลก DOS / Windows

โปรแกรมการให้บริการ, ข้อความ, ภาพ, และอื่น ๆ มีทั้งหมดไฟล์ อุปกรณ์อินพุตและเอาต์พุตและโดยทั่วไปอุปกรณ์ทั้งหมดถือว่าเป็นไฟล์ตามระบบ

ซุปเปอร์บล๊อกเป็นภาชนะสำหรับเมตาดาต้าระดับสูงเกี่ยวกับระบบไฟล์ superblock เป็นโครงสร้างที่มีอยู่ในดิสก์ (จริงๆแล้วมีหลายที่บนดิสก์สำหรับความซ้ำซ้อน) และในหน่วยความจำ จัดเตรียมพื้นฐานสำหรับการจัดการกับระบบไฟล์บนดิสก์ตามที่กำหนดพารามิเตอร์การจัดการของระบบไฟล์ (ตัวอย่างเช่นจำนวนบล็อกทั้งหมดบล็อกว่างโหนดดัชนีรูท)

Dentry เป็นส่วนต่อประสานระหว่างไฟล์กับ Inodes Dentries ยังมีบทบาทในการแคชไดเรกทอรีซึ่งเป็นการดีที่สุดที่จะเก็บไฟล์ที่ใช้บ่อยที่สุดในมือเพื่อให้เข้าถึงได้เร็วขึ้น

แหล่ง


5

ในความเรียบง่าย dentry และ inode เป็นสิ่งเดียวกันสิ่งที่เป็นนามธรรมของไฟล์หรือไดเรกทอรี ความแตกต่างระหว่าง dentry และ inode คือ dentry ใช้เพื่ออำนวยความสะดวกในการดำเนินงานเฉพาะไดเรกทอรี inode เป็นเพียงชุดของข้อมูลเมตาเกี่ยวกับไฟล์หรือไดเรกทอรี Superblock เป็นนามธรรมของระบบไฟล์

struct fileในเคอร์เนล linux นั้นถูกเข้าใจผิดว่าเป็นสิ่งอื่น (เช่นstruct address_space) และไม่ได้เป็นนามธรรมของ "ไฟล์" ที่แท้จริง (เช่น / etc / passwd) มันย่อมาจาก "ไฟล์" หรือไดเรกทอรีที่เปิด struct fileถูกสร้างโดยsys_openในเคอร์เนลดังนั้นกระบวนการสามารถมีจำนวนมากstruct fileสำหรับไฟล์เดียวกัน

ทำไมเราต้องมีฟัน มันถูกใช้เพื่อเพิ่มความเร็วการแปลจากชื่อเส้นทาง (เช่น / etc / passwd) เพื่อ inode เคอร์เนล Linux ใช้ inode เพื่อจัดการ "file" หรือไดเรกทอรีไม่ใช่ชื่อของพวกเขา


4

โปรดทราบว่าข้อกำหนดเหล่านี้ไม่ได้เฉพาะเจาะจงของ Linux แต่เฉพาะระบบไฟล์ ระบบไฟล์ส่วนใหญ่ที่ใช้โดยระบบปฏิบัติการ Unix และ Unix ในปัจจุบันนั้นเป็นระบบไฟล์ที่ได้รับแรงบันดาลใจจากระบบไฟล์ Unix ดั้งเดิมซึ่งกำหนด superblock และ inode ลีนุกซ์สามารถติดตั้งระบบไฟล์หลาย ๆ ตัวที่ไม่มีความคิดของ superblock และ / หรือ inode ซึ่งเป็น FAT ที่พบได้บ่อยที่สุด อีกหนึ่ง ZFS ไม่ได้ใช้ superblock แต่เป็นüberblocks


หวังว่าคุณจะได้อ่านความคิดเห็นนี้หลังจากนั้นไม่นาน ฉันอ่านว่า VFS มี inodes และ superblock ที่ไม่เกี่ยวข้องกับ inodes และ superblock ของการพูด EXT2 ดังนั้นเพื่อไม่ให้เข้าใจผิดในสิ่งที่คุณพูดโดยอาศัย Linux ทุกตัวที่มี VFS พวกเขาทั้งหมดควรใช้ inodes และ superblock ใช่ไหม?
CuriousKimchi

1
@CuriousKimchi แม้จะมีชื่อเดียวกันกับที่นี่ แต่คุณไม่ควรสับสนข้อมูลที่เก็บไว้ในดิสก์ (superblock / inodes) และโครงสร้างที่เคอร์เนลใช้เพื่อเข้าถึงระบบไฟล์และไฟล์ของมัน ทุกระบบไฟล์มีข้อมูลเมตาบางส่วนบนดิสก์ที่อธิบายคุณสมบัติของระบบไฟล์ข้อมูลเมตานี้จะใช้เพื่อเติมโครงสร้าง superblock Linux VFS ในทำนองเดียวกันไฟล์มีโครงสร้าง inode kernel inode ภายใต้ VFS เมื่อระบบไฟล์ที่อยู่เบื้องหลังขาดแนวคิดของ inode โครงสร้างนี้จะมีหมายเลข inode ปลอมที่สร้างขึ้นโดยระบบปฏิบัติการ
jlliagre
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.