सवाल लाखों छोटी फाइलों के लिए फाइल सिस्टम


आप किस लिनक्स फाइल सिस्टम के लिए चुनते हैं सबसे अच्छी गति निम्नलिखित परिदृश्य में:

  • सौ मिलियन फाइलें
  • औसतन 2k फ़ाइल आकार
  • 95% पढ़ने का उपयोग

  • सुंदर यादृच्छिक अभिगम
  • उच्च सहमति (> 100 प्रक्रियाएं)

ध्यान दें: बड़ी निर्देशिकाओं से बचने के लिए फ़ाइलों को गहरे पदानुक्रमित पेड़ में संग्रहीत किया जाता है। प्रत्येक पत्ती निर्देशिका में लगभग एक हजार फाइलें होती हैं।

आप इसे कैसे बेंचमार्क करेंगे?


40
2018-05-09 22:38


मूल


कुछ अतिरिक्त जानकारी की आवश्यकता है। उदाहरण के लिए, क्या आप सभी फ़ाइलों को एक फ्लैट निर्देशिका में, या नेस्टेड (क्रमबद्ध) निर्देशिका में संग्रहीत कर रहे हैं? फ़ाइल एक्सेस समय पर इसका नाटकीय प्रदर्शन प्रभाव हो सकता है। एक "फ्लैट" व्यवस्था में 100,000,000 प्रविष्टियों के माध्यम से स्थानांतरित करने से एफएस प्रकार के बावजूद महत्वपूर्ण ओवरहेड होगा; सबसे अच्छा मामला, आप किसी प्रकार की वृक्ष खोज देख रहे हैं, जिसे अभी भी आपकी फ़ाइल पर आने के लिए कई लुकअप की आवश्यकता है। यदि आप उपनिर्देशिकाओं में फ़ाइलों को कैटोरोरिज़ करते हैं, तो एक्सेस समय काफी तेज़ी से बढ़ जाएगा क्योंकि प्रत्येक स्तर पर खोज करने के लिए कम प्रविष्टियां हैं। - Avery Payne
क्या फ़ाइल क्रमशः या समवर्ती रूप से उपयोग की जाती है? - Steve Schnepp


जवाब:


यहाँ कुछ है परिणाम सभी प्रमुख लिनक्स एफएस की तुलना में बोनी ++ के साथ आप एक शुरुआती बिंदु के रूप में उपयोग कर सकते हैं।

यादृच्छिक रूप से रेज़र जीतने के मामले में, EXT4 के बाद, जेएफएस के बाद। मुझे यकीन नहीं है कि यह वास्तव में निर्देशिका लुकअप से संबंधित होगा, लेकिन ऐसा लगता है कि यह एक संकेतक होगा। आपको इसके लिए अपने स्वयं के परीक्षण करना होगा। EXT2 फ़ाइल निर्माण समय के लिए सबकुछ बंद कर देता है, संभवतः जर्नल की कमी के कारण, अभी भी EXT4 रीज़र को छोड़कर सबकुछ धड़कता है जिसे आप हंस रीज़र की वर्तमान स्थिति के कारण उपयोग नहीं करना चाहते हैं।

आप एनसीक्यू का समर्थन करने वाले ड्राइव में देखना चाहते हैं, और यह सुनिश्चित कर लें कि आपका इंस्टॉल इसका उपयोग करने के लिए सेटअप है। भारी मांग के तहत इसे गति बढ़ावा देना चाहिए।

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


19
2018-05-09 23:37



बोनी ++ की समस्या यह है कि यह मेरे उपयोग परिदृश्य का मोटे तौर पर परीक्षण भी नहीं करता है - bene
आपको इसके बारे में एक बिंदु मिली है जो निर्देशिका लुकअप का परीक्षण नहीं कर रहा है, लेकिन ईमानदारी से, यदि यह आपका चोक पॉइंट है, तो आप अपने डेटा को वास्तविक डेटाबेस में डंप करने से बेहतर हैं। फाइल सिस्टम लगभग छोटी वस्तुओं पर काम नहीं करते हैं, अधिकांश डेटाबेस का उपयोग करने के लिए डिज़ाइन किया गया है - Andrew Cholakian
@AndrewCholakian लिंक अब मर चुका है। - Don Scott


एंड्रयू ने जो कुछ कहा, उससे मैं सहमत हूं, सिवाय इसके कि मैं अनुशंसा करता हूं Reiser4 या पुराना (लेकिन बेहतर समर्थित) ReiserFS। चूंकि उन परीक्षणों (और रीइज़रएफएस के लिए प्रलेखन) इंगित करता है, यह सटीक रूप से उस स्थिति के लिए डिज़ाइन किया गया है जिसके बारे में आप पूछ रहे हैं (बड़ी संख्या में छोटी फाइलें या निर्देशिकाएं)। मैंने बिना किसी समस्या के जेनेटू और उबंटू के साथ अतीत में रीइज़रएफएस का उपयोग किया है।

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


8
2018-05-10 00:34



मैंने लंबे समय तक ReiserFS का उपयोग किया है। दरअसल, मैं हूं फिर भी इसे पुराने जेनेटू सर्वर पर उपयोग करके मैं अभी तक पुनर्स्थापित करने के लिए नहीं मिला है। यह स्थापना इस मई में 4 साल पुरानी है। मैं क्या कर सकते हैं आपको बताएं कि यह काफी धीमा हो गया है। यह घटना रीइजरएफएस का उपयोग कर सभी फाइल सिस्टम पर समय के साथ हुई है जो सभी मशीनों पर सक्रिय पढ़ने + लिखने के उपयोग में हैं, जिनके पास फाइल सिस्टम, कोई अपवाद नहीं है - इसलिए यदि आप इसे लंबे समय तक इस्तेमाल करना चाहते हैं तो यह कुछ रखना है दिमाग में। बड़े फाइल सिस्टम के लिए अब एक्सएफएस का उपयोग करके, मैं इससे दूर चले गए हैं। - Mihai Limbăşan


मुझे पता है कि यह आपके प्रश्न का सीधा जवाब नहीं है, लेकिन इन मामलों में मुझे लगता है कि डेटाबेस होस्ट करने के लिए अधिक उपयुक्त हो सकता है। छोटी फ़ाइलों को डेटाबेस तालिका में बाइनरी प्रारूप में संग्रहीत किया जा सकता है और wil पर पुनर्प्राप्त किया जा सकता है। सॉफ़्टवेयर जो इन फ़ाइलों का उपयोग कर रहा है, हालांकि इसका समर्थन करने में सक्षम होना चाहिए ...


3
2018-05-10 07:09



फाइल सिस्टम क्या है, अगर सिर्फ पदानुक्रमित डेटाबेस नहीं है? आपका प्रस्ताव अमूर्तता, जटिलता और सॉफ़्टवेयर की परतों को जोड़ता है जो संभवतः जरूरी नहीं हैं। इसके अलावा, सवाल का मालिक 'यूनिक्स फिलॉसफी' के साथ अपना काम पूरा कर रहा है, जिसमें मुझे संदेह है कि आप विंडोज़ लड़के से अधिक नापसंद करते हैं? - Stu Thompson
सबसे पहले, मेरे पास यूनिक्स या उस क्षेत्र में कुछ भी नहीं है। फाइल सिस्टम और डेटाबेस के बीच बड़े अंतर हैं और यही कारण है कि दोनों प्रौद्योगिकियां विकसित की गईं। डेटाबेस को बड़ी मात्रा में छोटी इकाइयों के साथ काम करने के लिए डिज़ाइन किया गया है, जिसमें वे अधिकांश फाइल सिस्टम की तुलना में बेहतर काम करते हैं। मैं केवल यह इंगित कर रहा था कि एक और सड़क हो सकती है जिसके साथ आप इसे ले सकते हैं। - Jeroen Landheer
और लिनक्स पर फाइल सिस्टम को डीफ्रैग करने से डीबी फाइल को "साफ / वैक्यूम" करना बहुत आसान है। अधिकांश / सभी एफएस उस कार्यक्षमता प्रदान नहीं करते हैं, यह कहते हुए कि यह आवश्यक नहीं है। यद्यपि मिहाई की टिप्पणी को ध्यान में रखते हुए, आप देख सकते हैं कि यह सख्ती से सच नहीं है। - Gringo Suave


यूनिक्स स्टैक एक्सचेंज पर किसी ने इस परिदृश्य का परीक्षण करने के लिए एक बेंचमार्क (स्रोत के साथ) बनाया है:

प्रश्न: बहुत सी छोटी फाइलें (एचडीडी, एसएसडी नहीं) को स्टोर करने के लिए सबसे ज्यादा प्रदर्शन वाले लिनक्स फाइल सिस्टम क्या हैं?

सबसे अच्छा पढ़ने का प्रदर्शन ReiserFS से आता है।


3
2018-04-04 06:22



बीआरटीएफ को सबकुछ में बेहतर या तुलनीय परिणाम दिखते हैं लेकिन हटाते हैं। लेकिन, आप 300k फ़ाइलों को कितनी बार हटाते हैं? मुझे अतीत में आरएफएस पसंद आया, लेकिन भविष्य के लिए बीआरटीएफ बेहतर शर्त हो सकती है। - Gringo Suave


मेरे अनुभव में, ext2 छोटी फ़ाइलों के लिए पानी से बाहर ext4 उड़ाता है। यदि आपको अखंडता लिखने की परवाह नहीं है, तो यह बहुत अच्छा है। उदाहरण के लिए, उपversण बहुत सारे और बहुत सारे और बहुत छोटी फाइलें बनाता है, जो ext4 और अन्य फाइल सिस्टम (एक्सएफएस) चोक करते हैं (एक क्रॉन जॉब चलाएं जो प्रत्येक आधे घंटे में ext2 से ext4 को डेटा को rsyncs करता है या तो समस्या को हल करता है।)

इन आदेशों को चलाने से ext2 भी तेज़ हो जाता है (भले ही इनमें से अधिकतर विकल्प क्रैश के बाद फ़ाइल सिस्टम को अस्थिर बनाते हैं, जब तक कि आप क्रैश होने से पहले सिंक चलाते हैं)। इन आदेशों के पास छोटी फ़ाइलों के साथ ext4 पर लगभग कोई प्रभाव नहीं पड़ता है।

echo 15 > /proc/sys/vm/swappiness
echo 10 > /proc/sys/vm/vfs_cache_pressure
echo 99 > /proc/sys/vm/dirty_ratio
echo 50 > /proc/sys/vm/dirty_background_ratio
echo 360000 > /proc/sys/vm/dirty_expire_centisecs
echo 360000 > /proc/sys/vm/dirty_writeback_centisecs
echo "2000" > /proc/sys/vm/vfs_cache_pressure

3
2017-10-30 16:51





मुझे लगता है कि ext3 (या ext4), शायद जेएफएस अच्छा समाधान होगा। मैं ext4 और btrfs से सावधान रहूंगा (फाइल सिस्टम मुश्किल हैं - यदि आप नवीनतम, नवीनतम सामग्री का उपयोग करना चाहते हैं तो बैकअप के साथ तैयार रहें)।

एमसीएफएस समय के दौरान फाइल सिस्टम को अपनी पसंद के अनुसार ट्यून करने के लिए आप विभिन्न पैरामीटर्स भी ट्विक कर सकते हैं।

मैं निश्चित रूप से सिफारिश करेंगे विरुद्ध XFS। ऐसा नहीं है क्योंकि यह एक खराब फाइल सिस्टम है, लेकिन सृजन / हटाना इस पर एक महंगा संचालन है।


निर्देशिका खोजों के साथ समस्याओं से बचने के लिए, एक बुद्धिमान नामकरण योजना का उपयोग करें, उदाहरण के लिए:

<first letter of id>_<last letter of id>/<id>

या समान, अधिक जटिल योजनाएं। इससे आपकी निर्देशिका की खोज तेज हो जाएगी और इस प्रकार समग्र पहुंच गति होगी। (यह एक पुरानी यूनिक्स चाल है, वी 7 से मुझे लगता है)


1
2018-05-31 17:07



पहले और आखिरी पत्र का उपयोग करने का क्या फायदा है न केवल पहले एन अक्षरों? - bene
यह केवल संभावित योजनाओं में से एक है - चाहे वह लाभ होगा, इंडेक्सिंग के लिए उपयोग की जाने वाली "कुंजी" पर निर्भर करता है। इस विशेष योजना को मैंने उस एप्लिकेशन के संदर्भ में देखा था जो संगठन में लोगों पर डेटा संग्रहीत करता है, और इस तरह उन्हें बेहतर अनुक्रमण मिल गया है। हमेशा के रूप में, आपको इसे अपने डेटा में अनुकूलित करने की आवश्यकता होती है और तब तक प्रोफ़ाइल को सटीक उत्तरों तक प्राप्त करने की आवश्यकता होती है :)


ज्यादातर एफएस एक डीआईआर में 65 से अधिक फाइलों के साथ चकित होंगे, मुझे लगता है कि यह अभी भी ext4 के बारे में सच है। रीज़र फ़ाइल सिस्टम में उस सीमा नहीं है (एमपी 3.com पर लोगों को यह सुनिश्चित करने के लिए भुगतान किया जाता है)। किसी और चीज के बारे में निश्चित नहीं है, लेकिन यह उपयोग परिदृश्यों में से एक है कि ReiserFS के लिए बनाया गया था।


1
2018-06-08 04:38



यह ReiserFS है, RieserFS नहीं - Daniel Rikowski
इस सप्ताह के अंत में मेरे पास 1000000 फाइलों के साथ ext4 पर एक डीआईआर था। जब तक आप नहीं करते हैं ls या टैब-पूर्णता यह तेजी से काम करता है। शायद सूचकांक के कारण। - Ole Tange
ext4 में dir_index एक्सटेंशन है, जो एक निर्देशिका में कई फ़ाइलों को गति देता है। - alfonx