कई छोटी फ़ाइलों (xfs, btrfs, ext4) के लिए इनोड्स, अंतरिक्ष की तुलना की खपत


9

मेरे पास एक्सएम 4 विभाजन (एक वीएम पर LVM) है जिसमें बड़ी मात्रा में छोटी फाइलें हैं , जिन्हें मुझे हर 3-4 महीने में विस्तारित करना है।

इनोड्स द्वारा उपयोग की जाने वाली जगह की मात्रा के बारे में।

क्या xfs, btrfs या ext4 फ़ाइल सिस्टम में से एक कम स्थान का उपयोग करता है?

दूसरे शब्दों में, क्या btrfs या xfs पर स्विच करने से इनडोज़ धीमा हो जाएगा और फिर ext4 के साथ भर जाएगा?


यदि आप ext4 का उपयोग करते हैं और ज्यादातर छोटे प्रकारों के भंडारण की उम्मीद करते हैं, तो आपको इसे mkfs.ext4 -t newsसर्वोत्तम परिणामों के साथ बनाना चाहिए । इसके अलावा, मैं सुझाव देता हूं कि परीक्षण करें - (lvm पर, या उदाहरण के लिए लूपबैक डिवाइस पर) बारी-बारी से प्रत्येक फाइलाइटीज़, और अपनी वास्तविक फ़ाइलों को तब तक कॉपी करना शुरू करें, जब तक कि यह भर न जाए। जब यह भर जाता है, तो df -i(या find | wc -l) यह पता लगाने के लिए कि कौन आपकी अधिकांश फ़ाइलों को संग्रहीत करने में कामयाब है - इस तरह से आप निश्चित रूप से जान जाएंगे।
मतिजा नलिस

1
@MatijaNalis, -Tएक अपरकेस T के साथ। कॉन्फिग फ़ाइल में कुछ अन्य उपयोगी दिखने वाले विकल्प भी हैं
ilkkachu

@ilkachachu सही है, धन्यवाद। यह होना चाहिएmkfs.ext4 -T news
मतिजा नलिस

फाइलें कितनी छोटी हैं?
drudru

जवाबों:


6

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

Btrfs में डायनामिक इनकोड एलोकेशन है, इसलिए आपके पास भरने के लिए ऐसा कोई विकल्प नहीं है जैसे कि ext4 (इन साइज जिसके लिए ext4 फाइलसिस्टम क्रिएशन टाइम में सेट किया गया है) के लिए इनोड टेबल है।

एक्सएफएस एक समान तरीके से गतिशील है, लेकिन इसकी एक सीमा है (फाइल सिस्टम का प्रतिशत जो कि इनोड के लिए इस्तेमाल किया जा सकता है), इसलिए वहां, चाहे आप अपने इनोड भत्ते को भरते हों, प्रतिशत सेट के साथ-साथ फाइल काउंट / फाइल साइज पर भी निर्भर करता है


जल्दी जवाब देने का शुक्रिया! लगता है कि XFS अब के लिए सबसे सुरक्षित विकल्प है। क्या इस इनकोड उपयोग प्रतिशत को गतिशील रूप से बदला जा सकता है? और यदि नहीं, तो क्या भविष्यवाणी करने का एक तरीका है कि कितनी आवश्यकता होगी?
abadys

1
आप ऐसा करने के साथ सक्षम होना चाहिएxfs_growfs -m XX
Anthon

3

हां, और ध्यान रखें कि सब कुछ आपकी आवश्यकताओं पर निर्भर करता है:

Btrfs (बटर एफएस, बेहतर एफएस या बी-ट्री एफएस के रूप में उच्चारण)

यह देखते हुए कि btrfs कई हार्ड ड्राइव पर फैले हुए हैं, यह एक बहुत अच्छी कविता है कि यह ext4 की तुलना में 16 गुना अधिक ड्राइव स्पेस का समर्थन कर सकता है । Btrfs फ़ाइल सिस्टम का अधिकतम विभाजन आकार 16 एक्सिबिबाइट्स है, साथ ही अधिकतम फ़ाइल आकार 16 एक्सबिबाइट्स भी है।

अधिकतम फ़ाइलें की संख्या: 2 ** 64

XFS

XFS एक उच्च प्रदर्शन 64-बिट फ़ाइल journaling प्रणाली है। XFS 64-बिट फ़ाइल सिस्टम के लिए 8 एक्सिबिबाइट्स के अधिकतम फ़ाइल सिस्टम आकार का समर्थन करता है। अब, RHEL 7.0/boot विभाजन के लिए XFS का उपयोग करने के लिए समर्थन सहित XFS को डिफ़ॉल्ट फाइल सिस्टम के रूप में उपयोग करता है ।

अधिकतम फ़ाइलें की संख्या: 2 ** 64

EXT4

Ext4 अच्छी तरह से क्योंकि ext3 से अधिक गति सुधार लाने के लिए जाना जाता है। Ext4 की कुछ सीमाएँ हैं। अधिकतम फ़ाइल आकार 16 टेबीबाइट्स (जो लगभग 17.6 टेराबाइट्स है)। आपके पास ext4 के साथ सबसे बड़ी मात्रा / विभाजन 1 छूट है। सबसे आधुनिक फाइल सिस्टम की तरह, यह एक जर्नलिंग फाइल सिस्टम है, जिसका अर्थ है कि यह एक जर्नल रखेगा जहां फाइलें मुख्य रूप से डिस्क पर होती हैं और डिस्क में होने वाले किसी भी अन्य बदलाव पर। इसकी सभी विशेषताओं के बावजूद, यह पारदर्शी संपीड़न, पारदर्शी एन्क्रिप्शन या डेटा कटौती का समर्थन नहीं करता है। स्नैपशॉट तकनीकी रूप से समर्थित हैं, लेकिन इस तरह की सुविधा सबसे अच्छा है।

फ़ाइलों की अधिकतम संख्या: 4 बिलियन

XFS बनाम Btrfs

XFS के पास कोई RAID नहीं है, जबकि Btrfs RAID अभी पूरी तरह से स्थिर नहीं है और अपने शुरुआती दिनों में है। XFS Btrfs की तुलना में अधिक परिपक्व है , लेकिन हम इस बात से इंकार नहीं कर सकते कि Btrfs शक्तिशाली और एक अच्छा-बढ़ता फ़ाइल सिस्टम है।

अभी के लिए, एक्सएफएस मेरी पसंद है - विशेष रूप से क्योंकि यह आरएचईएल 7 पर डिफ़ॉल्ट एफएस है - जब तक मुझे वास्तव में बीट्रॉफ़ की आवश्यकता नहीं है।


1
यह सामान्य रूप से फाइल सिस्टम पर कुछ अच्छी पृष्ठभूमि की जानकारी रखता है, लेकिन मुझे यहां बताई जा रही छोटी फाइलों का विशिष्ट मुद्दा नहीं दिखता है।
ilkachachu

@ilkachachu "बड़ी मात्रा में छोटी फाइलें" इसका क्या मतलब है? यह सब इनोड के बारे में है क्योंकि फाइल सभी इनोड के माध्यम से बनाई गई है और इनोड एक डेटा संरचना है जिसका उपयोग फाइलसिस्टम ऑब्जेक्ट को दर्शाने के लिए किया जाता है। इसलिए मुझे लगता है कि मैंने सभी लेखकों की ज़रूरतों को समझाया है, साथ ही मैंने अधिकतम फ़ाइलों के बारे में उल्लेख किया है।
FarazX

2

मुझे लगता है कि आपके पास जो समस्या है वह विभाजन नहीं है जो कि प्रति इनोड के साथ भर रहा है, लेकिन फाइलसिस्टम में इनोड की संख्या से बाहर चल रहा है। ext4 फाइल सिस्टम के बनने के दौरान स्टैटिकली इनोड्स को सुरक्षित रखता है, लेकिन आप संख्याओं को विकल्पों केmkfs.ext4 साथ सेट कर सकते हैं :

-i बाइट्स-प्रति-इनोड
बाइट्स / इनोड अनुपात निर्दिष्ट करें। mke2fs डिस्क पर अंतरिक्ष के हर बाइट्स-प्रति-इनोड बाइट्स के लिए एक आईनोड बनाता है। बाइट्स-प्रति-इनोड अनुपात जितना बड़ा होगा, उतने कम इनोड बनाए जाएंगे।

-एन नंबर-ऑफ-इनोड्स
फाइल सिस्टम के लिए आरक्षित किए जाने वाले इनोड्स की संख्या की डिफ़ॉल्ट गणना को ओवरराइड करता है (जो ब्लॉक की संख्या और बाइट्स-प्रति-इनोड अनुपात पर आधारित है)। यह उपयोगकर्ता को वांछित इनोड की संख्या को सीधे निर्दिष्ट करने की अनुमति देता है।

मैन्युअल रूप से स्पष्ट रूप से कहा गया है कि एफएस बनाए जाने के बाद बाइट्स इनोड अनुपात को बदला नहीं जा सकता है, लेकिन एफएस के आकार बदलने पर कुल संख्या अनुपात को पूरा करने के लिए पैमाने पर होगी।

आप प्रत्येक इनोड का आकार भी निर्धारित कर सकते हैं । डिफ़ॉल्ट "अधिकांश" फाइल सिस्टम पर 256 बाइट्स है, लेकिन इसे घटाकर 128 ("छोटे" फाइल सिस्टम के लिए डिफ़ॉल्ट) किया जा सकता है। अतिरिक्त विशेषताओं (जैसे SELinux लेबल) को संग्रहीत करने के लिए अतिरिक्त स्थान का उपयोग किया जाता है, इसलिए यदि आपको उन की आवश्यकता नहीं है, तो आकार को न्यूनतम करने के लिए सुरक्षित होना चाहिए।

-I इनकोड-आकार
बाइट्स में प्रत्येक इनोड के आकार को निर्दिष्ट करें। इनकोड-आकार का मान 2 बड़ा या 128 के बराबर की शक्ति होना चाहिए।

df -iआवंटित और उपयोग किए गए इनोड की संख्या को दिखाना चाहिए। डिफ़ॉल्ट विकल्पों के साथ, एक 30 GB के विभाजन को मैंने हर 16 केबी के लिए एक इनोड देखा था, लेकिन यदि आपकी फाइलें बहुत छोटी हैं, तो आप -i 4096सिस्टम पर प्रत्येक डेटा ब्लॉक के लिए एक इनोड सेट कर सकते हैं ।

यदि आपकी फाइलें 4096 से छोटी हैं, तो आप फ़ाइल सिस्टम ब्लॉक आकार को भी कम करना चाह सकते हैं, क्योंकि सभी नियमित फ़ाइलों को वैसे भी एक पूर्ण डेटा ब्लॉक की आवश्यकता होगी। (वह है, ext4 पर। मुझे नहीं पता कि क्या अन्य वर्तमान फाइल सिस्टम छोटी फाइलों की पैकिंग करते हैं।)

-b ब्लॉक-आकार
बाइट्स में ब्लॉक के आकार को निर्दिष्ट करें। मान्य ब्लॉक-आकार मान प्रति ब्लॉक 1024, 2048 और 4096 बाइट्स हैं। यदि छोड़ दिया जाता है, तो ब्लॉक-साइज़ फ़ाइल सिस्टम के आकार और फाइल सिस्टम के अपेक्षित उपयोग द्वारा निर्धारित किया जाता है (देखें -T विकल्प देखें)।

mkfs.ext4भी है -T <type>विकल्प है कि इनमें से कुछ या सभी के लिए एक आशुलिपि के रूप में इस्तेमाल किया जा सकता। सेटिंग्स में हैं /etc/mke2fs.conf, जो मेरे डेबियन बनाता है जैसे के mkfs.ext4 -T smallबराबर

mkfs.ext4 -b 1024 -I 128 -i 4096

हो सकता है कि बहुत सारी छोटी फ़ाइलों (और कोई xattrs) के लिए विकल्पों का बुरा सेट न हो।

यदि आपकी फाइलें एक kB से भी छोटी हैं, तो डेटा को बचाने के लिए एक फ़ाइल सिस्टम सबसे अच्छा तरीका नहीं हो सकता है, लेकिन डेटाबेस या एप्लिकेशन विशिष्ट सिस्टम जैसी किसी चीज़ पर शायद विचार किया जाना चाहिए।

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