Score:0

อะไรคือความแตกต่างระหว่างคุณสมบัติ ext4 เหล่านี้: dir_nlink vs large_dir

จากหน้าคน ext4(5):

dir_nลิงค์
โดยปกติ ext4 อนุญาตให้ไอโหนดมีฮาร์ดลิงก์ได้ไม่เกิน 65,000 สิ่งนี้ใช้กับไฟล์ทั่วไปและไดเร็กทอรี ซึ่งหมายความว่ามีไดเร็กทอรีย่อยได้ไม่เกิน 64,998 รายการในไดเร็กทอรี (เนื่องจากแต่ละรายการของ '.' และ '..' รวมถึงรายการไดเร็กทอรีสำหรับ ไดเร็กทอรีในไดเร็กทอรีหลักจะนับเป็นฮาร์ดลิงก์) คุณลักษณะนี้ยกเลิกขีดจำกัดนี้โดยกำหนดให้ ext4 ใช้จำนวนลิงก์เป็น 1 เพื่อระบุว่าไม่ทราบจำนวนของฮาร์ดลิงก์ไปยังไดเร็กทอรี เมื่อจำนวนลิงก์อาจเกินขีดจำกัดจำนวนสูงสุด

large_dir
คุณลักษณะนี้จะเพิ่มขีดจำกัดของจำนวนไฟล์ต่อไดเร็กทอรีโดยเพิ่มขนาดสูงสุดของไดเร็กทอรีและสำหรับไดเร็กทอรี b-tree ที่แฮช (ดู dir_index) ความสูงสูงสุดของ b-tree ที่แฮชที่ใช้เก็บรายการไดเร็กทอรี

เอาล่ะ เรามาดูกันดีกว่า dir_index ด้วย.

dir_index
ใช้ b-tree ที่แฮชเพื่อเพิ่มความเร็วในการค้นหาชื่อในไดเร็กทอรีขนาดใหญ่ คุณลักษณะนี้รองรับโดยระบบไฟล์ ext3 และ ext4 และถูกละเว้นโดยระบบไฟล์ ext2


ตามความเข้าใจของฉันที่หน้าคน:

  1. เมื่อไม่มีรายการในไดเร็กทอรี จะมีฮาร์ดลิงก์ 2 ตัว ได้แก่ . (ไดเรกทอรีชี้ไปที่ตัวเอง) และ .. (ชี้ไปที่ไดเร็กทอรีหลัก แต่ฮาร์ดลิงก์อ้างถึงการอ้างอิงจากไดเร็กทอรีหลักไปยังไดเร็กทอรี) และค่าของ st_nลิงค์ สนามใน สถิติ โครงสร้างเป็น 2. เมื่อมี 1 รายการ (เช่น 1 ไฟล์) ในไดเร็กทอรี จะมีฮาร์ดลิงก์ 3 ตัว และ st_nลิงค์ พูดว่า 3;
  2. ดังนั้น เพื่อแสดงจำนวนจริงของฮาร์ดลิงก์ st_nลิงค์ ต้องมีอย่างน้อย 2. เป็นผลให้ค่า 1 มีอิสระในการแสดงสิ่งอื่น แทนที่จะมีเพียง 1 ฮาร์ดลิงก์ ซึ่งไม่สมเหตุสมผล
  3. หากระบบไฟล์ ext4 ถูกฟอร์แมตโดยไม่มี dir_nลิงค์, แล้ว st_nลิงค์ ไม่สามารถมากกว่า 65000และระบบปฏิเสธที่จะเพิ่มรายการเมื่อถึงขีด จำกัด (ฉันอ่านเกี่ยวกับว่าเมล็ดสมัยใหม่อาจเปิดโดยอัตโนมัติ dir_nลิงค์แต่ไม่ต้องสนใจเรื่องนี้เพื่อความง่ายในการอภิปราย);
  4. หากระบบไฟล์ ext4 ถูกฟอร์แมตด้วย dir_nลิงค์แล้วเมื่อมีมากกว่า 65000 รายการในไดเร็กทอรี ค่า 1 จะเขียนถึง st_nลิงค์ ฟิลด์เพื่อระบุ "จำนวนฮาร์ดลิงก์ที่ไม่รู้จัก" ไคลเอนต์ (รหัสที่ใช้ระบบไฟล์ ext4) ต้องสำรวจรายการไฟล์ (บล็อกข้อมูลของไดเร็กทอรี) เพื่อนับจำนวนจริงของรายการที่อยู่ภายใน
  5. large_dir เพิ่มขนาดสูงสุดของไดเร็กทอรี
  6. ถ้า dir_index ถูกนำมาใช้, large_dir เพิ่มความสูงสูงสุดของ B-Tree ที่แฮช

คำถามของฉัน

  1. ถ้า dir_nลิงค์ ใช้เพียงอย่างเดียว ขนาดสูงสุดของไดเร็กทอรีคือเท่าใด ฉันเคยคิดว่ามันไม่มีที่สิ้นสุดตราบเท่าที่มีบล็อกข้อมูลเพียงพอที่จะจัดเก็บรายการไฟล์ในไดเร็กทอรี แต่ตอนนี้ดูเหมือนว่าจะไม่ใช่
  2. ผมว่าใช้ large_dir เพียงอย่างเดียวไม่สมเหตุสมผลเนื่องจากขนาดไดเร็กทอรียังคงถูกจำกัดไว้ 65000. ฉันถูกไหม?
  3. ถ้า large_dir ถูกใช้ ขนาดสูงสุดของไดเร็กทอรีคือเท่าใด
  4. มีข้อเสียในการใช้ large_dir? เหตุผลที่ฉันมีคำถามนี้คือใน Ubuntu 20.04 LTS dir_nลิงค์ ถูกตั้งค่าเป็นค่าเริ่มต้น (ดู /etc/mke2fs.confอยู่ในรายการที่ [fs_types] > ต่อ4 > คุณสมบัติ), แต่ large_dir ไม่ใช่.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา