ทำไมพาร์ติชั่น 100 MiB ของฉันที่ขนาดบล็อกไม่เกิน 1 KiB จึงไม่มีบล็อก / พื้นที่ว่างที่สอดคล้องกัน?


33

ฉันมีสภาพแวดล้อมแบบเสมือนจริงที่มีความหนาแน่นสูงมากพร้อมกับคอนเทนเนอร์ดังนั้นฉันจึงพยายามทำให้แต่ละคอนเทนเนอร์เล็กมาก "ขนาดเล็กจริง ๆ " หมายถึง 87 MB บนฐานUbuntu 14.04 (Trusty Tahr) โดยไม่แยกความเข้ากันได้ของตัวจัดการแพ็กเกจ

ดังนั้นฉันจึงใช้LVMเป็นที่เก็บข้อมูลสำรองสำหรับตู้คอนเทนเนอร์ของฉันและเมื่อเร็ว ๆ นี้ฉันพบตัวเลขที่แปลกมาก พวกเขาอยู่ที่นี่

ลองสร้างปริมาณตรรกะ 100 MiB (ใช่กำลัง 2)

sudo lvcreate -L100M -n test1 /dev/purgatory

ฉันต้องการตรวจสอบขนาดดังนั้นฉันจึงออก sudo lvs --units k

test1             purgatory  -wi-a----  102400.00k

หวานนี่จริง ๆ 100 MiB

ตอนนี้ให้สร้างระบบไฟล์ext4 และแน่นอนเราจำ-m 0พารามิเตอร์ซึ่งช่วยป้องกันการสูญเสียพื้นที่

sudo mkfs.ext4 -m 0 /dev/purgatory/test1

mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

หวานและสะอาด คำนึงถึงขนาดบล็อก - โลจิคัลวอลุ่มของเรามีขนาดเล็กดังนั้น mkfs.ext4 จึงตัดสินใจสร้างบล็อกขนาด 1 KiB ไม่ใช่ 4 KiB ปกติ

ตอนนี้เราจะติดมัน

sudo mount /dev/purgatory/test1 /mnt/test1

และเราจะโทรdfโดยไม่มีพารามิเตอร์ (เราอยากเห็นบล็อก 1 KiB)

/dev/mapper/purgatory-test1     95054    1550     91456   2% /mnt/test1

เดี๋ยวก่อนนะชิ ~

เรามีบล็อกทั้งหมด 95054 บล็อก แต่ตัวอุปกรณ์นั้นมี 102400 บล็อกของ 1 KiB เรามีพื้นที่จัดเก็บของเราเพียง 92.8% บล็อกของฉันอยู่ที่ไหน

ลองดูที่อุปกรณ์บล็อกจริง A มีดิสก์เสมือน 16 GiB, 16777216 บล็อก 1K แต่มีเพียง 15396784 บล็อกเท่านั้นที่อยู่ในเอาต์พุต df 91.7% มันคืออะไร?

ตอนนี้ติดตามการสอบสวน(สปอยเลอร์: ไม่มีผลลัพธ์)

  1. ระบบไฟล์อาจเริ่มต้นไม่ได้ที่จุดเริ่มต้นของอุปกรณ์ มันแปลก แต่เป็นไปได้ โชคดีที่ ext4 มีเวทย์มนตร์เป็นไบต์ลองตรวจสอบสถานะของพวกเขา

    sudo hexdump -C / dev / purgatory / test1 | grep "53 ef"

สิ่งนี้แสดงให้เห็นถึง superblock:

00000430  a9 10 e7 54 01 00 ff ff  53 ef 01 00 01 00 00 00  |...T....S.......|

Hex 430 = Dec 1072 ดังนั้นบางแห่งหลังจากกิโลไบต์แรก ดูสมเหตุสมผล ext4 ข้าม 1024 ไบต์แรกเพื่อหาสิ่งแปลกประหลาดเช่น VBR เป็นต้น

  1. นี่คือบันทึกประจำวัน!

ไม่มันไม่ใช่. Journal ใช้พื้นที่จากว่างหาก df เอาต์พุต

  1. โอ้เรามี dump2fs และสามารถตรวจสอบขนาดได้!

... greps จำนวนมาก ...

sudo dumpe2fs /dev/purgatory/test1 | grep "Free blocks"

อุ๊ยตาย

Free blocks:              93504
  Free blocks: 3510-8192
  Free blocks: 8451-16384
  Free blocks: 16385-24576
  Free blocks: 24835-32768
  Free blocks: 32769-40960
  Free blocks: 41219-49152
  Free blocks: 53249-57344
  Free blocks: 57603-65536
  Free blocks: 65537-73728
  Free blocks: 73987-81920
  Free blocks: 81921-90112
  Free blocks: 90113-98304
  Free blocks: 98305-102399

และเรามีหมายเลขอื่น บล็อกฟรี 93504

คำถามคือเกิดอะไรขึ้น

  • อุปกรณ์บล็อก: 102400k (lvs พูดว่า)
  • ขนาดระบบไฟล์: 95054k (df พูดว่า)
  • บล็อกฟรี: 93504k (dumpe2fs พูดว่า)
  • ขนาดที่มี: 91456k (df พูดว่า)

นั่นเป็นเหตุผลที่ฉันยังคงใช้ext2สำหรับพาร์ติชันเล็ก ๆ
frostschutz

@frostschutz ext2ดูสมเหตุสมผลที่นี่แน่นอน
maniaque

คำตอบ:


32

ลองสิ่งนี้: mkfs.ext4 -N 104 -m0 -O ^has_journal,^resize_inode /dev/purgatory/test1

ฉันคิดว่าสิ่งนี้จะช่วยให้คุณเข้าใจ "สิ่งที่เกิดขึ้น"

-N 104 (ตั้งค่าจำนวน iNodes ที่ระบบไฟล์ของคุณควรมี)

  • ทุกพื้นที่ที่สามารถใช้งานได้ของ iNode "ต้นทุน" (128 ไบต์)

-m 0(ไม่มีบล็อกที่สงวนไว้)
-O ^has_journal,^resize_inode(ปิดการใช้งานคุณสมบัติhas_journalและresize_inode

  • resize_inode"ค่าใช้จ่าย" ฟรีพื้นที่ (ส่วนใหญ่ของ 1550 1K บล็อก / 2% ที่คุณเห็นในของคุณdf - 12K จะใช้สำหรับการ "ที่หายไปพบ + โฟลเดอร์")
  • has_journal"ต้นทุน" พื้นที่ใช้งานได้ (4096 1K-Blocks ในกรณีของคุณ)

เรา102348ออกไป102400แล้วบล็อกอีก 52 บล็อกใช้ไม่ได้ (ถ้าเราลบโฟลเดอร์ "lost + found") ดังนั้นเราจึงดำดิ่งลงไปdumpe2fs:

Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
  Checksum 0x5ee2, unused inodes 65533
  Primary superblock at 1, Group descriptors at 2-2
  Block bitmap at 3 (+2), Inode bitmap at 19 (+18)
  Inode table at 35-35 (+34)
  8150 free blocks, 0 free inodes, 1 directories, 65533 unused inodes
  Free blocks: 17-18, 32-34, 48-8192
  Free inodes: 
Group 1: (Blocks 8193-16384) [BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x56cf, unused inodes 5
  Backup superblock at 8193, Group descriptors at 8194-8194
  Block bitmap at 4 (+4294959107), Inode bitmap at 20 (+4294959123)
  Inode table at 36-36 (+4294959139)
  8190 free blocks, 6 free inodes, 0 directories, 5 unused inodes
  Free blocks: 8193-16384
  Free inodes: 11-16
Group 2: (Blocks 16385-24576) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x51eb, unused inodes 8
  Block bitmap at 5 (+4294950916), Inode bitmap at 21 (+4294950932)
  Inode table at 37-37 (+4294950948)
  8192 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 16385-24576
  Free inodes: 17-24
Group 3: (Blocks 24577-32768) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x3de1, unused inodes 8
  Backup superblock at 24577, Group descriptors at 24578-24578
  Block bitmap at 6 (+4294942725), Inode bitmap at 22 (+4294942741)
  Inode table at 38-38 (+4294942757)
  8190 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 24577-32768
  Free inodes: 25-32
Group 4: (Blocks 32769-40960) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x79b9, unused inodes 8
  Block bitmap at 7 (+4294934534), Inode bitmap at 23 (+4294934550)
  Inode table at 39-39 (+4294934566)
  8192 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 32769-40960
  Free inodes: 33-40
Group 5: (Blocks 40961-49152) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x0059, unused inodes 8
  Backup superblock at 40961, Group descriptors at 40962-40962
  Block bitmap at 8 (+4294926343), Inode bitmap at 24 (+4294926359)
  Inode table at 40-40 (+4294926375)
  8190 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 40961-49152
  Free inodes: 41-48
Group 6: (Blocks 49153-57344) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x3000, unused inodes 8
  Block bitmap at 9 (+4294918152), Inode bitmap at 25 (+4294918168)
  Inode table at 41-41 (+4294918184)
  8192 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 49153-57344
  Free inodes: 49-56
Group 7: (Blocks 57345-65536) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x5c0a, unused inodes 8
  Backup superblock at 57345, Group descriptors at 57346-57346
  Block bitmap at 10 (+4294909961), Inode bitmap at 26 (+4294909977)
  Inode table at 42-42 (+4294909993)
  8190 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 57345-65536
  Free inodes: 57-64
Group 8: (Blocks 65537-73728) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0xf050, unused inodes 8
  Block bitmap at 11 (+4294901770), Inode bitmap at 27 (+4294901786)
  Inode table at 43-43 (+4294901802)
  8192 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 65537-73728
  Free inodes: 65-72
Group 9: (Blocks 73729-81920) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x50fd, unused inodes 8
  Backup superblock at 73729, Group descriptors at 73730-73730
  Block bitmap at 12 (+4294893579), Inode bitmap at 28 (+4294893595)
  Inode table at 44-44 (+4294893611)
  8190 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 73729-81920
  Free inodes: 73-80
Group 10: (Blocks 81921-90112) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x60a4, unused inodes 8
  Block bitmap at 13 (+4294885388), Inode bitmap at 29 (+4294885404)
  Inode table at 45-45 (+4294885420)
  8192 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 81921-90112
  Free inodes: 81-88
Group 11: (Blocks 90113-98304) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x28de, unused inodes 8
  Block bitmap at 14 (+4294877197), Inode bitmap at 30 (+4294877213)
  Inode table at 46-46 (+4294877229)
  8192 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 90113-98304
  Free inodes: 89-96
Group 12: (Blocks 98305-102399) [INODE_UNINIT, ITABLE_ZEROED]
  Checksum 0x9223, unused inodes 8
  Block bitmap at 15 (+4294869006), Inode bitmap at 31 (+4294869022)
  Inode table at 47-47 (+4294869038)
  4095 free blocks, 8 free inodes, 0 directories, 8 unused inodes
  Free blocks: 98305-102399
  Free inodes: 97-104

และนับจำนวนบล็อกที่ใช้ (สำหรับการสำรองข้อมูล superblock, Group descriptors, Block bitmap, Inode bitmap และตาราง Inode) หรือgrepนับจากเรา

LANG=C dumpe2fs /dev/mapper/vg_vms-test1 | grep ' at ' | grep -v ',' | wc -l

ซึ่งทำให้เรานับจำนวนบรรทัดที่มีบล็อกเดียว (ในตัวอย่างของเรา) และ

LANG=C dumpe2fs /dev/mapper/vg_vms-test1 | grep ' at ' | grep ',' | wc -l

ซึ่งทำให้เรานับจำนวนบรรทัดที่มีสองช่วงตึก (ในตัวอย่างของเรา)

ดังนั้นเราจึงมี (ในตัวอย่างของเรา) 13บรรทัดที่มีหนึ่งบล็อกแต่ละบล็อกและ19บรรทัดที่มีสองบล็อกแต่ละบล็อก

13+19*2

ซึ่งทำให้เรา51บล็อกที่มีการใช้งานโดย ext4 ตัวเอง ในที่สุดก็เหลือเพียงหนึ่งบล็อก บล็อก 0 ซึ่งเป็น1024ไบต์ที่ถูกข้ามที่จุดเริ่มต้นสำหรับสิ่งต่าง ๆ เช่นบูตเซกเตอร์


และถ้าสมุดรายวันใช้เวลาเพียง 4096k ฉันไม่มีหมายเลขนี้ (95054 - 4096)! = 91456?
maniaque

ตัวเลขทั้งหมดที่นี่มีหน่วยเป็น k ดังนั้นจำนวนรวมทั้งสิ้น 95054k - วารสาร 4096k! = มีให้ 91456k
maniaque

1
dfบน fs กับวารสาร: 95054k - dfบน fs ที่ไม่มี jorunal 99150k - และอย่ารวมพื้นที่ "ใช้งานได้" และ "ฟรี"
xx4h

ระบบไฟล์บางระบบเช่น xfs จัดสรรพื้นที่สำหรับ inodes แบบไดนามิกตามต้องการ คุณอาจต้องการลอง xfs และ btrfs หากคุณอยากรู้ mkfs.xfs -l size=512 -d agcount=1จะทำให้ระบบไฟล์มีขนาดบันทึกขั้นต่ำสุด (aka journal) แต่ประสิทธิภาพในการเขียนอาจลดลง ฉันไม่คิดว่ารหัส XFS รองรับการทำงานหากไม่มีบันทึก อาจเป็นแบบอ่านอย่างเดียวเพื่อรองรับกรณีที่อุปกรณ์บันทึกภายนอกเสีย (เช่นกันagcount=1อาจเป็นความคิดที่แย่มากสำหรับประสิทธิภาพการเขียนโดยเฉพาะขนานและส่วนหัวของกลุ่มการจัดสรรอาจมีขนาดเล็กเช่นกัน)
Peter Cordes

มีความอยากรู้อยากเห็นและลอง XFS หากมีการรวมกันของตัวเลือกสำหรับ Linux XFS ที่จะช่วยให้ขนาดบันทึกขั้นต่ำลงไปขั้นต่ำที่แน่นอนของ 512 บล็อก IDK มันคืออะไร mkfs.xfs -d agcount=1บนพาร์ติชัน 100MiB สร้าง FS ของ 95980kiB โดยใช้ 5196k ใช้งานได้ 90784k agcount เริ่มต้นคือ 4 และขนาดบันทึกเริ่มต้นคือ 1605 บล็อก (รวมถึงจำนวนขั้นต่ำ) ดังนั้น XFS จะใช้บันทึกเล็ก ๆ ตามที่เต็มใจให้คุณระบุสำหรับ FSes ขนาดเล็ก
Peter Cordes

19

คำตอบสั้น ๆ :

พื้นที่ทั้งหมดในอุปกรณ์บล็อกจะมีพื้นที่ว่างสำหรับข้อมูลของคุณ: พื้นที่ว่างบางส่วนเป็นสิ่งจำเป็นสำหรับการใช้งานระบบไฟล์, การทำบัญชีเบื้องหลัง

การทำบัญชีนั้นรวมถึง super block, descriptors กลุ่มบล็อก, บล็อกบิตแมปและ inode และตาราง inode นอกจากนี้ยังมีการสร้างสำเนาของบล็อก super สำหรับวัตถุประสงค์ในการสำรอง / กู้คืนที่สถานที่หลายแห่ง อ่านอย่างละเอียดเกี่ยวกับระบบไฟล์ภายใน EXT4 สามารถพบได้ในext4.wiki.kernel.org ext4.wiki.kernel.org

เนื่องจาก EXT4 เป็นระบบไฟล์ที่ถูกเจอร์นัลซึ่งกินพื้นที่เช่นกัน

นอกจากนี้พื้นที่บางส่วนถูกสงวนไว้สำหรับการขยายในอนาคตของระบบไฟล์

คำตอบที่ยาว:

ฉันได้สร้างสถานการณ์จำลองของคุณใหม่ในระบบทดสอบของฉัน:

lvcreate -L 100M -n test MyVG
mkfs.ext4 -b 1024 /dev/MyVG/test 

จากนั้นก่อนที่จะทำการติดตั้งระบบไฟล์จะมีdumpe2fsรายการแสดง:

Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              25688
Block count:              102400
Reserved block count:     5120
Free blocks:              93504
Free inodes:              25677
First block:              1
Block size:               1024
Fragment size:            1024
Reserved GDT blocks:      256
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         1976
Inode blocks per group:   247
Flex block group size:    16
Filesystem created:       Fri Feb 20 13:20:54 2015
Last mount time:          n/a
Last write time:          Fri Feb 20 13:20:55 2015
...
Journal size:             4096k  
...

และหลังการติดตั้ง:

df /tmp/test/
Filesystem              1K-blocks  Used Available Use% Mounted on
/dev/mapper/MyVG-test       99150  5646     88384   7% /tmp/test

แล้วอะไรล่ะ dfแสดงให้เราเห็น? จาก 102400 บล็อกของอุปกรณ์จัดเก็บข้อมูลดิบความจุ 99150 1K บล็อกสามารถมองเห็นได้ในระบบไฟล์ซึ่งหมายความว่า 3250 1-กิโลไบต์บล็อกของพื้นที่จัดเก็บดิบได้กลายเป็นใช้ไม่ได้สำหรับการจัดเก็บข้อมูลที่แท้จริง

บล็อกเหล่านั้นไปที่ใด การเลื่อนลงในdumpe2fsผลลัพธ์แสดงให้เห็นว่า:

Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
  Checksum 0x0d67, unused inodes 1965
  Primary superblock at 1, Group descriptors at 2-2
  Reserved GDT blocks at 3-258
  Block bitmap at 259 (+258), Inode bitmap at 275 (+274)
  Inode table at 291-537 (+290)
  4683 free blocks, 1965 free inodes, 2 directories, 1965 unused inodes
  Free blocks: 3510-8192
  Free inodes: 12-1976

1 block (บล็อก # 0) 1024 ไบต์แรกจะถูกข้ามเพื่ออนุญาตให้ติดตั้ง x86 บูตเซกเตอร์และสิ่งแปลกประหลาดอื่น ๆ
1 block ถูกครอบครองโดย Primary super block
1 block มีตัวอธิบายกลุ่ม
256 blocksถูกสงวนไว้สำหรับตารางตัวอธิบายกลุ่มเพื่ออนุญาตให้ปรับขนาดระบบไฟล์ในอนาคต 16 blocks ถูกกำหนดสำหรับบล็อกบิตแมป
16 blocksถูกกำหนดสำหรับบิตแมปไอโหนด
246 blocksถูกกำหนดให้กับตาราง inode

ที่มีอยู่แล้วสำหรับ 537 จาก 3250 บล็อกที่หายไป ระบบไฟล์ ext4 ถูกแบ่งออกเป็นชุดของกลุ่มบล็อกและการเลื่อนลงจะแสดงการจัดสรรความจุหน่วยเก็บข้อมูลดิบที่คล้ายกันไปยัง internals ระบบไฟล์ในกลุ่มบล็อกอื่น ๆ :

Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED]
  Checksum 0x0618, unused inodes 1976
  Backup superblock at 8193, Group descriptors at 8194-8194
  Reserved GDT blocks at 8195-8450
  Block bitmap at 260 (+4294959363), Inode bitmap at 276 (+4294959379)
  Inode table at 538-784 (+4294959641)
  7934 free blocks, 1976 free inodes, 0 directories, 1976 unused inodes
  Free blocks: 8451-16384
  Free inodes: 1977-3952
Group 2: (Blocks 16385-24576) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0xcfd3, unused inodes 1976
  Block bitmap at 261 (+4294951172), Inode bitmap at 277 (+4294951188)
  Inode table at 785-1031 (+4294951696)
  8192 free blocks, 1976 free inodes, 0 directories, 1976 unused inodes
  Free blocks: 16385-24576
  Free inodes: 3953-5928 
Group ....

กลับไปที่dfเอาต์พุต:

df /tmp/test/
Filesystem              1K-blocks  Used Available Use% Mounted on
/dev/mapper/MyVG-test       99150  5646     88384   7% /tmp/test

เหตุผลที่ระบบไฟล์สดนั้นมีอยู่ถึง 7% ของความจุถูกทำเครื่องหมายว่าใช้งานอยู่:

99150 (ขนาดของระบบไฟล์) ลบ 5120 (จำนวนบล็อกที่สงวนไว้) ลบ 5646 (ใช้บล็อก 4096 ซึ่งมาจากวารสาร (อีกส่วนหนึ่งของเอาท์พุท dumpe2fs`))
= 88384

จำนวนบล็อกว่างใน dumpe2fs คือขนาดที่มีอยู่ของระบบไฟล์ลบการใช้งานจริง (และไม่คำนึงถึงบล็อกที่สงวนไว้พิจารณา) ดังนั้น 99150 - 5646 = 93504


0

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

ฉันสร้างพาร์ติชั่นด้วย FSes ทั้งหมดที่ Ubuntu 14.10 ส่งมาให้ mkfs สำหรับบนพาร์ติชั่น 100MiB (ยกเว้น minix ซึ่งรองรับเฉพาะ 64MiB และ bfs ซึ่งเป็นสิ่ง SCO ที่ฉันไม่เคยได้ยินมาก่อน)

ครั้งแรกที่ฉันดูdf -kพื้นที่ว่าง (ด้วยการตั้งค่าเริ่มต้น mkfs) จากนั้นฉันddแก้ไข/dev/zeroไฟล์ในแต่ละ FS เพื่อให้แน่ใจว่าสามารถเติมเต็มได้ตลอด (เช่นตรวจสอบว่ามีการอ้างสิทธิ์available spaceจริง ๆ )
for i in /media/ubuntu/small-*;do sudo dd if=/dev/zero of="$i/fill" bs=16k;done

* FS: empty `df -k` : non-zero `df -k` when full (false bottom)
* jfs:  101020k
* fat32:100808k  : 4
* ntfs:  99896k
* btrfs: 98276k  : 4428
* ext2:  92480k
* xfs:   90652k  : 20
* ext4:  86336k
* ext3:  88367k
* reiserfs(v3): 69552k

ทำไม btrfs ถึงมีพื้นที่ไม่สามารถใช้งานได้มาก? อาจจะเป็นข้อมูลเมตา ไม่กัน:

$ for i in /media/ubuntu/small-*;do sudo touch "$i/touched";done
touch: cannot touch ‘/media/ubuntu/small-btrfs/touched’: No space left on device
touch: cannot touch ‘/media/ubuntu/small-reiser/touched’: No space left on device

ทั้งระบบไฟล์แบบทรีไม่สามารถบรรจุไฟล์เปล่าในที่ใดก็ได้ แต่ระบบไฟล์อื่นสามารถทำได้

หรือเพียงแค่ดูว่าคุณสามารถสร้างไฟล์ได้มากแค่ไหน:

$ ls -SdlG --block-size=1k /media/ubuntu/small-*/*
-rw-r--r-- 1 root   101020 Feb 21 11:55 /media/ubuntu/small-jfs/fill
-rw-r--r-- 1 ubuntu 100804 Feb 21 11:55 /media/ubuntu/small-fat/fill
-rw------- 1 ubuntu  99848 Feb 21 11:55 /media/ubuntu/small-ntfs/fill
-rw-r--r-- 1 root    97216 Feb 21 11:55 /media/ubuntu/small-ext2/fill
-rw-r--r-- 1 root    93705 Feb 21 11:27 /media/ubuntu/small-btrfs/foo
-rw-r--r-- 1 root    93120 Feb 21 11:55 /media/ubuntu/small-ext3/fill
-rw-r--r-- 1 root    91440 Feb 21 11:55 /media/ubuntu/small-ext/fill
-rw-r--r-- 1 root    90632 Feb 21 11:55 /media/ubuntu/small-xfs/fill
-rw-r--r-- 1 root    69480 Feb 21 11:55 /media/ubuntu/small-reiser/fill
drwx------ 2 root       12 Feb 21 11:33 /media/ubuntu/small-ext2/lost+found
drwx------ 2 root       12 Feb 21 11:43 /media/ubuntu/small-ext3/lost+found
drwx------ 2 root       12 Feb 21 11:29 /media/ubuntu/small-ext/lost+found

(ฉันเรียกพาร์ติชัน ext4 ของฉัน "small-ext" เพราะฉันไม่ได้วางแผนที่จะไปที่ถั่วและสร้างระบบไฟล์ทุกตัวดังนั้น ext = ext4 ที่นี่ไม่ใช่ ext-ext2 ดั้งเดิมดั้งเดิม)

และdf -kเอาต์พุตหลังจากลบออกอีกครั้ง:

/dev/sdd6          95980    5328     90652   6% /media/ubuntu/small-xfs
/dev/sdd7          95054    1550     86336   2% /media/ubuntu/small-ext
/dev/sdd5         102400   93880    101020  96% /media/ubuntu/small-btrfs
/dev/sdd8         101168  101168         0 100% /media/ubuntu/small-jfs
/dev/sdd9          99150    1550     92480   2% /media/ubuntu/small-ext2
/dev/sdd10        102392   32840     69552  33% /media/ubuntu/small-reiser
/dev/sdd11        100808       1    100808   1% /media/ubuntu/small-fat
/dev/sdd12        102396    2548     99848   3% /media/ubuntu/small-ntfs
/dev/sdd13         95054    1567     88367   2% /media/ubuntu/small-ext3

(jfs กลับไปใช้ 1% หลังจากที่ฉันลบ "touched" เช่นกันอาจมีการหน่วงเวลาหรือใช้การเขียนอีกครั้งเพื่อให้ได้ขนาดที่สามารถอัปเดตได้)

อย่างไรก็ตามฉันคิดว่ามันเกี่ยวกับความอยากรู้อยากเห็นของฉัน

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