จะเกิดอะไรขึ้นถ้าเกินขีด จำกัด ของไฟล์ 4 พันล้านไฟล์ในพาร์ติชั่น ext4?


46

จะเกิดอะไรขึ้นถ้าเกินขีด จำกัด ของไฟล์ 4 พันล้านไฟล์ในพาร์ติชั่น ext4 โดยมีการถ่ายโอนไฟล์ 5 พันล้านไฟล์?

คำตอบ:


79

สันนิษฐานว่าคุณจะเห็นรสชาติของข้อผิดพลาด "ไม่มีที่เหลือบนอุปกรณ์":

# truncate -s 100M foobar.img
# mkfs.ext4 foobar.img
Creating filesystem with 102400 1k blocks and 25688 inodes
---> number of inodes determined at mkfs time ^^^^^
# mount -o loop foobar.img loop/
# touch loop/{1..25688}
touch: cannot touch 'loop/25678': No space left on device
touch: cannot touch 'loop/25679': No space left on device
touch: cannot touch 'loop/25680': No space left on device

และในทางปฏิบัติคุณถึงขีด จำกัด นี้เร็วกว่า "4 พันล้านไฟล์" ตรวจสอบระบบไฟล์ของคุณกับทั้งสองdf -hและdf -iจะหาวิธีพื้นที่มากมีซ้าย

# df -h loop/
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0       93M  2.1M   84M   3% /dev/shm/loop
# df -i loop/
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/loop0      25688 25688     0  100% /dev/shm/loop

ในตัวอย่างนี้ถ้าไฟล์ของคุณไม่ใช่ขนาด 4K โดยเฉลี่ยคุณจะใช้พื้นที่ไอโหนดเร็วกว่าพื้นที่เก็บข้อมูล มันเป็นไปได้ที่จะระบุอัตราส่วนอื่น ( mke2fs -N number-of-inodesหรือ-i bytes-per-inodeหรือ-T usage-typeตามที่กำหนดใน/etc/mke2fs.conf)


1
ขอขอบคุณสำหรับคำตอบของคุณบางครั้งผมกังวลฉันมีมากกว่า 400 ล้านไฟล์ในพาร์ทิชันหลักของฉัน (RAID 50) ฉันมีเก็บคอมไพล์จำนวนมากก็คือการรักษาความปลอดภัยหากพบว่าจะเกิดขึ้น
Bensuperpc

5
@ensuperpc: หากไฟล์จำนวนมากไม่ได้ใช้เป็นประจำ - เพียงแค่มีเพื่อการสำรองข้อมูล - คุณอาจลองวางแต่ละโครงการไว้ในไฟล์ tar ของตัวเอง ซึ่งจะลดจำนวนไฟล์ลงอย่างมากและยังมีพื้นที่ว่างหากคุณใช้ตัวเลือกการบีบอัด
jamesqf

27
@jamesqf หากคุณยังไม่ได้ลองใช้งานgit repackในที่เก็บ git แต่ละอันเพื่อรวมวัตถุทั้งหมดแยกเป็นไฟล์แพ็ค
user253751

13
+1 เนื่องจากคุณเพิ่งจะใช้touchไม่ต้องแฟนซีechoคุณยังแสดงจุดสำคัญและความเข้าใจผิดที่มักเกิดขึ้น: มันเป็นไปได้ที่จะเติมดิสก์ด้วยไฟล์เปล่า
rexkogitans

6
@jamesqf git repackไม่ได้หลวมฟังก์ชั่นใด ๆ แต่ก็ยังคงเป็นฟังก์ชั่น repo คอมไพล์เดียวกันtarทำให้ไม่สามารถอ่านได้สำหรับหลาย ๆ โปรแกรมที่คาดว่าโครงการหรือพื้นที่เก็บข้อมูลคอมไพล์
Ferrybig

52

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

ในสถานการณ์ที่คุณอธิบายโดยทั่วไปสิ่งนี้จะส่งผลให้การถ่ายโอนยกเลิกเมื่อถึงขีด จำกัด

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