2010-09-01 14 views
20

मुझे बहुत अधिक फाइलें बनाने की ज़रूरत है जो बहुत बड़ी नहीं हैं (जैसे 4kb, 8kb)। यह कारण यह सब inodes 100% तक ले जाता है और मैं अधिक फ़ाइलें नहीं बना सकते अपने कंप्यूटर पर संभव नहीं है:प्रति इनोड कितने बाइट्स?

$ df -i /dev/sda5 
Filesystem   Inodes IUsed IFree IUse% Mounted on 
/dev/sda5   54362112 36381206 17980906 67% /scratch 

(मैं फ़ाइलों को हटाने शुरू कर दिया, कारण है कि यह अब 67% है, यह है)

bytes- (ext4) प्रति-नोड्स मेरी फाइल सिस्टम पर 256 के हैं

$ sudo tune2fs -l /dev/sda5 | grep Inode 
Inode count:    54362112 
Inodes per group:   8192 
Inode blocks per group: 512 
Inode size:    256 

मुझे आश्चर्य है अगर यह और भी 128 से नीचे बहुत कम (reformating के दौरान) यह मान सेट करने के लिए संभव है। यदि हां, तो मुझे किस मूल्य का उपयोग करना चाहिए? Thx

+2

'इनोड आकार' बाइट्स-प्रति-इनोड जैसा नहीं है। 'इनोड आकार' बस प्रत्येक इनोड में डेटा के डेटा (बाइट्स की संख्या) हो सकता है, जबकि बाइट्स-प्रति-इनोड अनुपात इनपुट को डिस्कोड में संदर्भित करता है। दोनों मूल्य स्वतंत्र हैं। –

उत्तर

24

डिफ़ॉल्ट बाइट्स आमतौर पर 16384, जो डिफ़ॉल्ट रूप /etc/mke2fs.conf में inode_ratio (यह रचना फ़ाइल में करने से पहले पढ़ा है) है। आप inodes से बाहर चला रहे हैं, उदाहरण के लिए कोशिश कर सकते हैं:

mkfs.ext4 -i 8192 /dev/mapper/main-var2 

इस -T-T news है, आम तौर पर जो आगे 4096.

इसके अलावा करने के लिए इसे कम कर देता है प्रभावित करता है एक और विकल्प है, तो आप बदल नहीं सकते एक ext3 या ext4 फाइल सिस्टम में इनोड्स की संख्या फिर से बनाने या हेक्स-संपादन के बिना। रीज़र फाइल सिस्टम गतिशील हैं ताकि आपको उनके साथ कोई समस्या न हो।

+4

मैं फाइल सिस्टम के लिए वर्तमान बाइट्स-प्रति-इनोड मान कैसे निर्धारित करूं? आपका आदेश काम करता है, लेकिन क्या tune2fs आउटपुट में कुछ मान है जो अनुपात दिखाता है? –

+1

मैं सिर्फ टिप्पणी करना चाहता था कि आप Red Hat और derivatives पर '/ etc/mke2fs.conf' में डिफ़ॉल्ट मान को सत्यापित/परिवर्तित कर सकते हैं। –

-7

मैं mke2fs आदमी पृष्ठ पर मेरी समस्या का हल मिल गया है:

मैं inode आकार

बाइट में प्रत्येक नोड आकार निर्दिष्ट करें। mke2fs डिफ़ॉल्ट रूप से 256-बाइट इनोड बनाता है। 2.6.10 के बाद कर्नेल में और कुछ पहले विक्रेता कर्नेल बेहतर प्रदर्शन के लिए विस्तारित विशेषताओं को संग्रहीत करने के लिए 128 बाइट्स से बड़े इनोड्स का उपयोग करना संभव है। इनोड-आकार मान 2 बड़ा या 128 के बराबर होना चाहिए। बड़ा इनोड-आकार जितना अधिक स्थान इनोड तालिका का उपभोग करेगा, और इससे फाइल सिस्टम में उपयोग करने योग्य स्थान कम हो जाएगा और प्रदर्शन पर भी नकारात्मक प्रभाव पड़ सकता है। विस्तारित बड़े इनोड में संग्रहीत गुण पुराने कर्नेल के साथ दिखाई नहीं दे रहे हैं, और ऐसे फाइल सिस्टम 2.4 कर्नेल के साथ माउंट करने योग्य नहीं होंगे। फाइल सिस्टम के निर्माण के बाद इस मान को बदलना संभव नहीं है।

अधिकतम जो आप सेट करने में सक्षम होंगे, वह आपके ब्लॉक-आकार द्वारा दिया गया है।

sudo tune2fs -l /dev/sda5 | grep "Block size" 
Block size:    4096 

आशा इस मदद कर सकते हैं .... inode प्रति

+6

इनोड-आकार ('-I') बाइट्स-प्रति-इनोड (' -i') सेटिंग से कुछ अलग है। इनोड-आकार एक एकल इनोड के आकार को निर्धारित करता है, बड़े इनोड में ब्लॉक पर अधिक पॉइंटर्स हो सकते हैं, लागत पर अप्रत्यक्ष ब्लॉक की आवश्यकता को कम कर सकते हैं या डिस्क उपयोग में वृद्धि हो सकती है।बाइट्स-प्रति-इनोड सेटिंग एक अनुपात सेट करती है जिसका उपयोग अधिकतम संख्या में इनोड निर्धारित करने के लिए किया जाएगा। फाइल सिस्टम के निर्माण के बाद इन दो मूल्यों में से कोई भी बदला नहीं जा सकता है। – Tader

8

आप उपलब्ध इनोडों की संख्या से उपलब्ध स्थान के आकार को विभाजित करके अनुमानित इनोड अनुपात का पता लगा सकते हैं। उदाहरण के लिए:

$ sudo tune2fs -l /dev/sda1 | awk -F: ' \ 
    /^Block count:/ { blocks = $2 } \ 
    /^Inode count:/ { inodes = $2 } \ 
    /^Block size:/ { block_size = $2 } \ 
    END { blocks_per_inode = blocks/inodes; \ 
      print "blocks per inode:\t", blocks_per_inode, \ 
       "\nbytes per inode:\t", blocks_per_inode * block_size }' 

blocks per inode: 3.99759 
bytes per inode:  16374.1 
+0

अगर आपको "tune2fs:" blkid "चलाने का प्रयास करते समय" devune2fs: सुपर-ब्लॉक में खराब जादू संख्या "खोलने का प्रयास करते समय त्रुटि मिलती है। मुझे उपयोग करने के लिए आवश्यक वास्तविक फ़ाइल सिस्टम "/ dev/mapper/myubuntu - vg-root" था। – jamshid