ขนาดบล็อกระบบไฟล์ทำงานอย่างไร


11

ระบบไฟล์ Linux ทั้งหมดมีขนาดบล็อก 4kb สมมติว่าฉันมีพื้นที่เก็บข้อมูลบนฮาร์ดดิสก์ 10MB นั่นหมายความว่าฉันมีบล็อกจำนวน 2560 บล็อกและสมมติว่าฉันคัดลอกไฟล์ 2560 ไฟล์แต่ละไฟล์มีขนาด 1kb แต่ละบล็อก 1 kb จะครอบครอง 1 บล็อกแม้ว่ามันจะไม่ได้เต็มบล็อกทั้งหมด

ตอนนี้ดิสก์ทั้งหมดของฉันเต็มแล้ว แต่ฉันยังมีพื้นที่ว่าง 2560x3kb หากฉันต้องการจัดเก็บไฟล์อื่นว่า 1MB ระบบไฟล์จะอนุญาตให้ฉันจัดเก็บได้หรือไม่ มันจะเขียนในพื้นที่ว่างที่เหลืออยู่ในแต่ละบล็อคหรือไม่? มีแนวคิดใดที่จัดการกับปัญหานี้หรือไม่?

ฉันขอขอบคุณการชี้แจงบางอย่าง ขอบคุณล่วงหน้า


ตกลงไฟล์ 2560 ไฟล์แต่ละไฟล์คือ 1kb นั่นคือ 2560 * 0.001 mb = 2.56 mb ไฟล์ 1kb แต่ละไฟล์ควรมีพื้นที่บล็อกประมาณ 1/4 ของเนื่องจาก 1,000 * 4 = 4000 ใช่ไหม และขนาดบล็อกคือ 4096 ดังนั้นคุณต้องมี 4 ไฟล์เพื่อเติมเต็มบล็อก ไฟล์ 1mb จะทำให้คุณเสียค่าใช้จ่าย 1000000/4096 = 244 บล็อก
Sergiy Kolodyazhnyy

คำตอบ:


3

ขนาดบล็อกเริ่มต้นคือ 512 ไบต์ตั้งแต่ Linux ตัวแรกที่เคยมีมา ยกเว้นจนกระทั่งเมื่อไม่นานมานี้มีขนาดบล็อก 4k ซึ่งได้รับการแนะนำเพื่อรองรับดิสก์ที่เพิ่มขึ้น นี้เป็นจริงแม้ dictated เกือบฮาร์ดแวร์ดิสก์ (ดูเพิ่มเติมได้ที่: /unix/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd )

แต่สำหรับคำถามเฉพาะของคุณ: คุณถูกต้องที่ไฟล์ทั้งหมดจะเสียไบต์ที่ไม่ได้ใช้ของบล็อกสุดท้ายในระบบไฟล์หลายประเภทซึ่งเป็นประโยชน์อย่างยิ่งสำหรับไฟล์ขนาดเล็ก แต่ btfrs และ reiserfs ดูเหมือนจะสามารถรับมือได้ตามhttps://en.m.wikipedia.org/wiki/Block_suballocation


1
  1. ระบบไฟล์สามารถมีขนาดบล็อกได้ตั้งแต่ 512 ถึง (ปกติ) 65536 ไบต์ ขนาดบล็อกสามารถระบุเป็นตัวเลือก mkfs.xxx ขนาดบล็อกเริ่มต้นในระบบไฟล์ Linux ส่วนใหญ่ - 4096 ไบต์

  2. ระบบไฟล์บางระบบรองรับการจัดสรรหางและ / หรือการจัดสรรบล็อกย่อย ext2 / 3/4 - ทำ, xfs - ไม่ หากคุณวางแผนที่จะเติมพาร์ติชั่นด้วยไฟล์ขนาดเล็กหลาย ๆ ไฟล์คุณสามารถลดพื้นที่ "หาง" ที่สูญเปล่าได้โดยลดขนาดบล็อกเป็น 512 หรือ 1024

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