ความแตกต่างระหว่างขนาดบล็อกและขนาดคลัสเตอร์


20

ฉันมีคำถามเกี่ยวกับขนาดบล็อกและขนาดคลัสเตอร์ เกี่ยวกับสิ่งที่ฉันได้อ่านเกี่ยวกับสิ่งที่ฉันถือว่าต่อไปนี้:

  • ขนาดบล็อกคือขนาดฟิสิคัลของบล็อกส่วนใหญ่ 512 ไบต์ ไม่มีทางที่จะเปลี่ยนแปลงสิ่งนี้
  • ขนาดคลัสเตอร์คือขนาดที่เล็กที่สุดของบล็อกที่ระบบอ่านและเขียนได้ หากฉันสร้างระบบไฟล์ใหม่เช่น ext3 ฉันสามารถระบุขนาดบล็อกขั้นต่ำนี้ด้วยสวิตช์ -b เกือบทุกโปรแกรมเช่น dumpe2fs, mke2fs ใช้ขนาดบล็อกเป็นชื่อสำหรับขนาดคลัสเตอร์

หากฉันมีผลลัพธ์ต่อไปนี้:

$ stat test
File: `test'
Size: 13            Blocks: 4          IO Block: 2048   regular file
Device: 700h/1792d  Inode: 15          Links: 1

ถูกต้องหรือไม่ว่าขนาดเป็นพื้นที่จริงเป็นไบต์บล็อกเป็นบล็อกที่ใช้จริง (512 ไบต์สำหรับแต่ละรายการ) และบล็อก IO เกี่ยวข้องกับขนาดบล็อกที่ระบุเมื่อสร้าง FS หรือไม่

คำตอบ:


26

ฉันคิดว่าคุณสับสนเพราะคุณอ่านเอกสารหลายฉบับที่ใช้คำศัพท์ต่างกัน คำเช่น "ขนาดบล็อก" และ "ขนาดคลัสเตอร์" ไม่มีความหมายสากลแม้จะอยู่ในบริบทของวรรณกรรมระบบไฟล์

ระบบแฟ้ม

สำหรับext2หรือext3สถานการณ์ค่อนข้างง่าย: แต่ละไฟล์ใช้จำนวนบล็อกที่แน่นอน บล็อกทั้งหมดในระบบไฟล์ที่กำหนดมีขนาดเท่ากันโดยปกติจะเป็นหนึ่งใน 1024, 2048 หรือ 4096 ไบต์ ไฟล์ที่มีขนาดอยู่ระหว่างบล็อก N บวกหนึ่งไบต์และบล็อก N + 1 ครอบครองบล็อก N + 1 mke2fs -bบล็อกขนาดนั่นคือสิ่งที่คุณระบุด้วย ไม่มีแนวคิดเรื่องกระจุก

FATระบบแฟ้มที่ใช้โดยเฉพาะใน MS-DOS และรุ่นแรกของ Windows มีการจัดสรรพื้นที่ที่เรียบง่ายในทำนองเดียวกัน สิ่งที่เรียกว่าบล็อก ext2, FAT เรียกกลุ่ม ; แนวคิดเดียวกัน

ระบบไฟล์บางระบบมีรูปแบบการจัดสรรที่ซับซ้อนยิ่งขึ้น: มีขนาดบล็อกคงที่ แต่สามารถใช้บล็อกเดียวกันเพื่อเก็บสองสามไบต์สุดท้ายของไฟล์มากกว่าหนึ่งไฟล์ นี้เป็นที่รู้จักกันsuballocation บล็อก ; ReiserfsและBtrfsทำ แต่ไม่ใช่ ext3 หรือ ext4

ยูทิลิตี้

ยูทิลิตี Unix มักใช้คำว่า "บล็อก" เพื่อหมายถึงหน่วยขนาดที่ไม่มีกฎเกณฑ์ซึ่งโดยทั่วไปแล้วจะมีขนาด 512 ไบต์หรือ 1kB การใช้งานนี้ไม่เกี่ยวข้องกับระบบไฟล์หรือฮาร์ดแวร์ดิสก์ใด ๆ ในอดีตบล็อก 512B เกิดขึ้นเพราะดิสก์และระบบไฟล์ในเวลานั้นมักจะทำงานในบล็อก 512B แต่การใช้งานที่ทันสมัยนั้นเป็นเรื่องที่ไม่แน่นอน สาธารณูปโภคดั้งเดิมยูนิกซ์และอินเตอร์เฟซยังคงใช้บล็อก 512B บางครั้งแม้ว่าบล็อก 1KB ตอนนี้มักจะแนะนำ คุณต้องตรวจสอบเอกสารของแต่ละโปรแกรมอรรถประโยชน์เพื่อทราบขนาดของบล็อกที่ใช้ (บางตัวมีสวิตช์เช่นdu -Bหรือdf -Bบน Linux)

ในstatยูทิลิตี้GNU / Linux blocksตัวเลขคือจำนวนบล็อก 512B ที่ใช้โดยไฟล์ IO Blockรูปเป็นขนาดที่แนะนำสำหรับไฟล์อินพุทที่อยู่ในหลักการที่ไม่เกี่ยวข้องกัน แต่มักจะเป็นข้อบ่งชี้ของบล็อกขนาดระบบแฟ้มต้นแบบ (หรือขนาดของคลัสเตอร์ถ้านั่นคือสิ่งที่คุณต้องการที่จะเรียกมัน) ที่นี่คุณมีไฟล์ขนาด 13 ไบต์ซึ่งครอบครองหนึ่งบล็อกบนระบบไฟล์ ext3 ที่มีขนาดบล็อก 2048 ดังนั้นไฟล์จะใช้หน่วย 512 512 ไบต์ (เรียกว่า "บล็อก" โดยstat)

ดิสก์

ดิสก์ส่วนใหญ่นำเสนออินเตอร์เฟซที่แสดงให้เห็นดิสก์เป็นพวงของหนึ่งภาค ดิสก์สามารถเขียนหรืออ่านเซกเตอร์ทั้งหมดไม่เฉพาะบิตหรือไบต์ ฮาร์ดดิสก์ส่วนใหญ่มีเซกเตอร์ 512 ไบต์แม้ว่าดิสก์เซกเตอร์ 4kB เริ่มปรากฏเมื่อสองสามปีก่อน

ขนาดเซกเตอร์ของดิสก์ไม่เกี่ยวข้องโดยตรงกับขนาดบล็อกของระบบไฟล์ แต่การมีบล็อกเป็นจำนวนเซกเตอร์ทั้งหมดจะดีกว่าสำหรับประสิทธิภาพ

¹ ข้อยกเว้น: ไฟล์หร็อมแหร็มประหยัดพื้นที่


2
ขอบคุณสำหรับคำชี้แจงของคุณ ฉันมาที่นี่เนื่องจากความสับสนที่เกิดจากเครื่องมือ ext2fsd สำหรับ windows ตัวเลือกบรรทัดคำสั่งของพวกเขาเริ่มต้น: ´การใช้งาน: mke2fs [-c | -l ชื่อไฟล์] [-b block-size] [-C ขนาดคลัสเตอร์] ... ´ คุณเห็นทั้งบล็อกและขนาดคลัสเตอร์ ...
Bernhard Hiller

ฉันสนใจที่จะทราบว่าอะไรคือความแตกต่างระหว่างขนาดบล็อกและขนาดคลัสเตอร์ของ mke2fs มีใครรู้บ้าง
X.LINK

1
@ X.LINK มันอธิบายไว้ในหน้าคน ขนาดของคลัสเตอร์ถูกใช้โดยคุณสมบัติ bigallocซึ่งถ้าฉันเข้าใจถูกต้องจะทำให้สามารถเข้าถึงไฟล์ขนาดใหญ่ได้เร็วขึ้นด้วยค่าใช้จ่ายของพื้นที่จัดเก็บที่สิ้นเปลืองมากขึ้น
Gilles 'หยุดความชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.