यहां कई चीजें चल रही हैं।
सबसे पहले, सभी आधुनिक डिस्क प्रौद्योगिकियां बल्क ट्रांसफर के लिए अनुकूलित हैं। यदि आपको 100MB डेटा स्थानांतरित करने की आवश्यकता है, तो वे इसे बहुत तेजी से करेंगे यदि वे सभी जगह में बिखरे हुए एक सन्निहित ब्लॉक में हैं। SSD यहां बहुत मदद करते हैं, लेकिन यहां तक कि वे सन्निहित ब्लॉकों में डेटा पसंद करते हैं।
जहाँ तक डिस्क संचालन जाता है, दूसरा, फिर से बदलना बहुत इष्टतम है। आप एक डिस्क से डेटा का एक विशाल सन्निहित हिस्सा पढ़ते हैं, उस पर कुछ तेज़ सीपीयू करते हैं, फिर इसे दूसरे बड़े सन्निहित चंक में दूसरे डिस्क पर फिर से लिखते हैं। यदि बिजली किसी भी बड़े सौदे के माध्यम से विफल हो जाती है, तो आप खराब चेकसमों के साथ किसी भी डेटा को अनदेखा करेंगे और सामान्य रूप से आगे बढ़ेंगे।
तीसरा, किसी फ़ाइल को हटाना वास्तव में धीमा है । ZFS विशेष रूप से खराब है, लेकिन व्यावहारिक रूप से सभी फाइलसिस्टम हटाने के लिए धीमी हैं। उन्हें डिस्क पर डेटा की एक बड़ी संख्या को संशोधित करना चाहिए और इसे सही ढंग से समय देना चाहिए (अर्थात प्रतीक्षा करें) ताकि पावर सिस्टम विफल होने पर फाइल सिस्टम क्षतिग्रस्त न हो।
यह कैसे संभव है कि पूरे सरणी को फिर से व्यवस्थित करने में एक घंटा लगता है, लेकिन डिस्क से हटाने में 4 दिन लगते हैं?
Resilvering एक ऐसी चीज है जो डिस्क वास्तव में बहुत तेज़ है, और डिलीशन एक ऐसी चीज़ है जो डिस्क धीमी है। डिस्क की प्रति मेगाबाइट, आपको केवल थोड़ा सा फेरबदल करना होगा। आपके पास उस स्थान पर एक हजार फाइलें हो सकती हैं, जिन्हें हटाने की आवश्यकता है।
70 विलोपन / सेकंड बहुत खराब प्रदर्शन लगता है
निर्भर करता है। मुझे इससे आश्चर्य नहीं होगा। आपने उल्लेख नहीं किया है कि आप किस प्रकार के एसएसडी का उपयोग कर रहे हैं। आधुनिक इंटेल और सैमसंग एसएसडी इस तरह के ऑपरेशन (रीड-मॉडिफ़ाइड-राइट) पर बहुत अच्छे हैं और बेहतर प्रदर्शन करेंगे। सस्ता / पुराना SSDs (जैसे Corsair) धीमा होगा। प्रति सेकंड I / O संचालन की संख्या (IOPS) यहाँ का निर्धारण कारक है।
ZFS है विशेष रूप से चीजों को नष्ट करने के लिए धीमी गति से। आम तौर पर, यह पृष्ठभूमि में विलोपन करेगा, ताकि आपको देरी न दिखे। यदि आप उनमें से एक बड़ी संख्या में कर रहे हैं तो इसे छिपा नहीं सकते हैं और आपको देरी करनी चाहिए।
परिशिष्ट: विलोपन धीमा क्यों हैं?
- किसी फ़ाइल को हटाने के लिए कई चरणों की आवश्यकता होती है। फ़ाइल मेटाडेटा को 'हटाए गए' के रूप में चिह्नित किया जाना चाहिए, और अंततः इसे पुनः प्राप्त करना होगा ताकि स्थान का पुन: उपयोग किया जा सके। ZFS एक 'लॉग स्ट्रक्चर्ड फाइलसिस्टम' है जो सबसे अच्छा प्रदर्शन करता है यदि आप कभी भी चीजें बनाते हैं, तो उन्हें कभी भी डिलीट न करें। लॉग संरचना का मतलब है कि यदि आप कुछ हटाते हैं, तो अंतराल को भरने के लिए लॉग में अंतराल है और इसलिए अन्य डेटा को फिर से व्यवस्थित (डीफ़्रैग्मेन्टेड) किया जाना चाहिए। यह उपयोगकर्ता के लिए अदृश्य है लेकिन आम तौर पर धीमा है।
- परिवर्तनों को इस तरह से किया जाना चाहिए कि यदि बिजली के माध्यम से भाग को विफल करना है, तो फाइल सिस्टम सुसंगत रहता है। अक्सर, इसका अर्थ है कि जब तक डिस्क यह पुष्टि नहीं करती कि डेटा वास्तव में मीडिया पर है; एक एसएसडी के लिए, यह एक लंबा समय (सैकड़ों मिलीसेकंड) ले सकता है। इसका शुद्ध प्रभाव यह है कि बहुत अधिक बहीखाता पद्धति (यानी डिस्क I / O संचालन) है।
- सभी परिवर्तन छोटे हैं। पूरे फ्लैश ब्लॉक (या चुंबकीय डिस्क के लिए सिलेंडर) को पढ़ने, लिखने और मिटाने के बजाय आपको थोड़ा सा संशोधित करने की आवश्यकता है। ऐसा करने के लिए, हार्डवेयर को पूरे ब्लॉक या सिलेंडर में पढ़ा जाना चाहिए, इसे मेमोरी में संशोधित करें, फिर इसे फिर से मीडिया में लिखें। इसमें लंबा समय लगता है।