ext4: วิธีการบัญชีสำหรับพื้นที่ระบบแฟ้ม?


16

ฉันเพิ่งฟอร์แมตไดรฟ์ 1.5 TB ด้วยความตั้งใจที่จะแทนที่ ntfs ด้วย ext4

จากนั้นฉันสังเกตเห็นว่าไฟล์ที่ฉันบันทึกไม่เหมาะกับพาร์ติชั่นใหม่

df:

ext4 (ext3 & ext2 show the same behavior)
Filesystem      1K-blocks   Used  Available Use% Mounted on
/dev/sdb1      1442146364   71160 1442075204    1% /media/Seagate

ntfs (similar to all other options that gparted offers):
/dev/sdb1      1465137148  110700 1465026448    1% /media/Seagate

ความแตกต่างของบล็อกขนาด 1K นั้นหมายถึงการใช้พื้นที่น้อยกว่า 22 GiB

ฉันได้ดำเนินการแล้ว

tune2fs -O \^has_journal
tune2fs -r 0
tune2fs -m 0

ด้วยแปลกใจไม่มีผลกระทบที่ไม่ส่งผลกระทบต่อบล็อกที่ไม่ได้มีเพียง

ยังคง fdisk รายงานว่าพาร์ติชัน ext4 ครอบคลุมดิสก์ทั้งหมด

fdisk -l /dev/sdb:

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1  2930277167  1465138583+  ee  GPT

และเช่นเช่น resize2fs รายงานว่า "ไม่มีอะไรให้ทำ!"

dumpe2fs -h /dev/sdb1:
dumpe2fs 1.41.14 (22-Dec-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          d6fc8971-89bd-4c03-a7cd-abdb945d2173
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              91578368
Block count:              366284288
Reserved block count:     0
Free blocks:              360518801
Free inodes:              91578357
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      936
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sat May 21 17:12:04 2011
Last mount time:          Sat May 21 17:15:30 2011
Last write time:          Sat May 21 17:24:32 2011
Mount count:              1
Maximum mount count:      32
Last checked:             Sat May 21 17:12:04 2011
Check interval:           15552000 (6 months)
Next check after:         Thu Nov 17 16:12:04 2011
Lifetime writes:          1372 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Default directory hash:   half_md4
Directory Hash Seed:      c334e6ef-b060-45d2-b65d-4ac94167cb09
Journal backup:           inode blocks

การใช้พื้นที่ที่ขาดหายไปนั้นคืออะไร

คำตอบ:


21

มาดูกัน. ขนาดอุปกรณ์คือ1,465,138,583½ kB = 1,500,301,909,504 B. ระบบไฟล์ประกอบด้วย 366,284,288 บล็อก 4096 B ต่อบล็อกซึ่งเป็น 1,500,300,443,648 B ผมไม่รู้ว่าส่วนที่เหลืออีก 1,465,856 B (1.4 MB) เป็นอย่างไร ฉันรู้ว่ามีกี่ kB ของพื้นที่เริ่มต้นสำหรับ bootloader)

ระบบไฟล์มี 91,578,368 inodes 256 ไบต์ต่อหน่วยซึ่งใช้เวลา 23,444,062,208 B (ประมาณ 22 GB, คำใบ้, คำใบ้) มี 1,442,146,364 kB = 1,476,757,876,736 B สำหรับเนื้อหาไฟล์ บัญชีนี้มี 23,444,062,208 B + 1,476,757,876,736 B = 1,500,201,938,944 B ขนาดที่เหลือคือ 98,504,704 B = 24,029 บล็อกซึ่งอยู่ในช่วงที่เหมาะสมที่จะเป็นขนาดวารสาร

อย่างที่คุณเห็นทุกอย่างเป็นสาเหตุ (ตกลงเกือบทุกอย่าง แต่เรากำลังพูดถึงเมกะไบต์ไม่ใช่กิกะไบต์)


1
ขอบคุณที่แน่นอน (วิธีที่คุณนำเสนอยังค่อนข้างชัดเจน - ฉันควรคิดเกี่ยวกับมันอีกเล็กน้อย) ดังนั้นฉันจึงสร้างพาร์ติชันขึ้นใหม่ด้วย "mkfs.ext4 -m 0 -O sparse_super -T largefile4" เนื่องจากมันควรจะมีขนาดใหญ่กว่าพัน ไฟล์ตอนนี้ 357728 inodes เทียบกับ 1464880364 บล็อกมีให้
misc

13

ก่อนอื่นความแตกต่างของพื้นที่ว่างที่คุณเห็นไม่ได้หมายความว่ามีพื้นที่ "เสีย" ไม่เสียเปล่าเพราะมันมีความสำคัญพื้นฐานสำหรับระบบไฟล์ที่จะทำงาน คุณไม่ควรเปรียบเทียบ Ext4 และ NTFS ด้วยวิธีนี้โดยไม่มีขนาดใหญ่มาก "แต่" ระบุการออกแบบและความแตกต่างของโครงสร้างระหว่างระบบไฟล์และเฉพาะของแต่ละการใช้งาน (เช่นวิธีที่แต่ละไดรเวอร์รายงานพื้นที่ว่างกับเลเยอร์ VFS)

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

และมีจำนวนมากของโครงสร้างข้อมูล บางคนเป็นใบ้มากคนอื่น ๆ อนุญาตให้คุณดึงข้อมูลได้เร็วขึ้นโดยใช้ค่าใช้จ่ายในการเขียนที่ช้ากว่าส่วนอื่น ๆ อนุญาตให้เขียนได้เร็วกว่าด้วยค่าใช้จ่ายในการอ่านบางคนอาจยังอ่านได้ดีทั้งการอ่านและเขียน ว่างเหนือศีรษะขณะที่จัดเรียงข้อมูลเป็นต้น

แน่นอนคุณต้องการระบบที่:

  1. รวดเร็วมากในการเขียนข้อมูล
  2. รวดเร็วในการดึงข้อมูลจากมัน
  3. ดีในการจัดระเบียบและจัดการข้อมูลที่เก็บไว้ในนั้น
  4. ใช้ประโยชน์จากพื้นที่ (พาร์ติชัน) ที่จัดเก็บระบบไฟล์ได้ดี
  5. มีความยืดหยุ่นต่อปัญหาฮาร์ดแวร์เพื่อให้คุณยังได้รับข้อมูลส่วนใหญ่หรือทั้งหมดของคุณกลับมาจากความล้มเหลวของระบบบางส่วน
  6. มีความยืดหยุ่นต่อปัญหาซอฟต์แวร์เพื่อให้ข้อผิดพลาดในแอปพลิเคชันหรือแอปพลิเคชันที่เป็นอันตรายติดตั้งจะไม่ทำลายข้อมูลของคุณอย่างถาวร
  7. มีความยืดหยุ่นต่อข้อผิดพลาดของมนุษย์เพื่อที่จะให้อภัยคุณเมื่อคุณสั่งให้ระบบลบบางสิ่งที่คุณไม่ควรทำ (โดยบังเอิญคือถังขยะ / ถังขยะ)

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

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


1
ขอบคุณส่วนสุดท้ายนั้นสำคัญมาก ฉันไม่ทราบว่า ext4 ทำ (เปรียบเทียบ) งานเวลาสร้างจำนวนมากที่ ntfs ทำระหว่างการดำเนินการ
อื่น ๆ

1
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! 
The util fdisk doesn't support GPT. Use GNU Parted.

ข้อความนี้ระบุว่าดิสก์ใช้การแบ่งพาร์ติชันแบบ GPT และfdiskเครื่องมือนี้เข้าใจสไตล์ MBR ดั้งเดิมเท่านั้น

เพื่อป้องกันการฟอร์แมตใหม่โดยไม่ได้ตั้งใจถ้าดิสก์ที่แบ่งพาร์ติชัน GPT ถูกต่อเข้ากับระบบที่ไม่ทราบอายุมากกว่า GPT รูปแบบการแบ่งพาร์ติชัน GPT มี "การป้องกัน MBR": ตารางพาร์ติชันปลอมทั้งหมดที่โดยทั่วไปบอกว่า ไม่ทราบอะไรเกี่ยวกับ "ระบบปฏิบัติการหรือเครื่องมือใด ๆ ที่เข้าใจการแบ่งพาร์ติชัน MBR เท่านั้น

ในการรับการแสดงผลตารางพาร์ติชั่นของคุณอย่างแม่นยำ/dev/sdbให้ใช้

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