यदि 4 बिलियन फ़ाइलों की सीमा एक ext4 विभाजन में पार हो गई थी तो क्या होगा?


46

यदि उदाहरण के लिए 5 बिलियन फ़ाइलों के हस्तांतरण के साथ, एक्स 4 विभाजन में 4 बिलियन फ़ाइलों की सीमा पार हो गई तो क्या होगा?

जवाबों:


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: यदि कई फाइलें नियमित रूप से उपयोग नहीं की जाती हैं - तो बस बैकअप प्रयोजनों के लिए - आप प्रत्येक प्रोजेक्ट को अपनी टार फाइल में डालने पर विचार कर सकते हैं। यदि आप एक संपीड़न विकल्प का उपयोग करते हैं, तो फ़ाइलों की संख्या काफी कम हो जाती है, और स्थान भी घेर लिया है।

27
@jamesqf यदि आप पहले से ही नहीं हैं, git repackतो अलग-अलग ऑब्जेक्ट्स को एक पैक फ़ाइल में संयोजित करने के लिए प्रत्येक गिट रिपॉजिटरी में चलने का प्रयास करें ।
user253751

13
+1 चूंकि आप केवल उपयोग कर रहे हैं touch, कोई फैंसी नहीं echo, आप एक महत्वपूर्ण बिंदु और अक्सर बनाई गई गलत धारणा भी दिखाते हैं: खाली फ़ाइलों के साथ डिस्क भरना संभव है।
rexkogitans

6
@jamesqf git repackकिसी भी कार्यक्षमता को ढीला नहीं करता है, यह अभी भी कार्यात्मक रूप से एक ही गैटो रेपो है, tarयह कई कार्यक्रमों के लिए अपठनीय बनाता है जो एक परियोजना या गिट रिपॉजिटरी की उम्मीद करता है
फेरीबिग

52

एक बार सीमा समाप्त हो जाने के बाद, फ़ाइलों को बनाने के बाद के प्रयास विफल हो जाएंगे ENOSPC, यह दर्शाता है कि लक्ष्य फ़ाइल सिस्टम में नई फ़ाइलों के लिए कोई जगह नहीं है।

आपके द्वारा वर्णित परिदृश्य में, यह आम तौर पर एक बार सीमा समाप्त होने के बाद स्थानांतरण को रद्द कर देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.