हम एक छोटे से एम्बेडेड लिनक्स सिस्टम (2.6.35-ish) पर काम कर रहे हैं जो ओएस और एप्लिकेशन (250-500Meg) के लिए एक छोटे आंतरिक एनएंड डिवाइस और डेटा के लिए 8 जीबी एसडीएचसी एसडी कार्ड के साथ एक एसडी कार्ड है।
यूनिट की बिजली कभी भी काटी जा सकती है।
सिस्टम को एसडी कार्ड में डेटा स्टोर करना होगा। यह डेटा बहुत महत्वपूर्ण है ... यह सिस्टम का पूरा उद्देश्य है। सिस्टम आमतौर पर दूरस्थ स्थानों में किसी भी नेटवर्क से पूरी तरह से डिस्कनेक्ट हो जाते हैं और डेटा को हर 4-8 सप्ताह में चुपके से प्राप्त किया जाता है।
वर्तमान में, हम एसडी कार्ड पर केवल VFAT मिला है। यह मुख्य रूप से ऐसा था कि पहला परीक्षण ग्राहक अपने Win7 लैपटॉप पर मैन्युअल रूप से डेटा को आसानी से कॉपी कर सकते थे।
हालाँकि, मैं अब चिंतित हूँ कि यह केवल कुछ समय की बात है जब तक कि गलत समय पर बिजली की निकासी डेटा हानि का कारण न हो।
डेटा हानि को रोकने के लिए ऐसी प्रणाली को कॉन्फ़िगर करने का सबसे अच्छा तरीका क्या है? JFFS2 लगता है कि मैं क्या चाहता हूं कि यह डेटा कैसे लिखता है (और प्रदर्शन की आवश्यकताएं अधिक नहीं हैं), लेकिन यह ब्लॉक 2mtd का उपयोग करने के लिए काफी मज़ेदार लगता है, आदि। मुझे यह भी यकीन नहीं है कि कार्ड के पहनने के स्तर की बातचीत कैसे होगी। इसके साथ।
ऐसा करने का सबसे अच्छा तरीका क्या है?
संपादित करें
अब मैं फाइलसिस्टम VFAT को छोड़ने और एक समय में दिन के आकार की फाइलें आवंटित करने के बारे में सोच रहा हूं, जो कि 0xFF से भरा है, जो कि पावर साइकिल विफलताओं के संपर्क को बहुत सीमित कर देना चाहिए। मैं तब केवल उन ब्लॉक किए गए ब्लॉक के भीतर रिकॉर्ड जोड़ सकता था, और उम्मीद है कि एसडी कार्ड इतने बेवकूफ नहीं हैं कि वे 0xFF क्षेत्रों को लिख / मिटा दें।
मैं noatime का उपयोग कर सकता हूं, लेकिन क्या संशोधित समय क्षेत्र में लिखने से रोकने के लिए VFAT नामांकन समान है? मुझे किसी भी मेटाडेटा अद्यतन को रोकने के लिए किसी तरह की आवश्यकता होगी जब तक कि एक नए दिन की फ़ाइल नहीं बनाई जाती है।
EDIT 2
इलेक्ट्रॉनिक्स स्टैक एक्सचेंज पर किसी ने याद दिलाया कि NAND पर ECC डेटा भी है, इसलिए इरेज़ की आवश्यकता को रोकने का कोई तरीका नहीं है।
तो, इस स्थिति में ब्लॉक 2mtd के माध्यम से JFFS2 उपयुक्त होगा?
EDIT 3
यह जितना मैंने सोचा था उससे भी बदतर है। आपके पास जो एसडी कार्ड हैं, वे डेटा ब्लॉक को मिटा देंगे, भले ही आप डिस्क पर सटीक समान सामग्री लिखें। इरेज़ब्लॉक 64 केबी हैं, और यह पूरी तरह से देरी के लिए बहुत बड़ा है। मैं NAND फ्लैश में 128KB डेटा (जो मैं लिखने के व्यवहार को नियंत्रित कर सकता हूं) तक स्टोर करूंगा, एक तरह की पत्रिका में, और फिर एसडी कार्ड पर एक VFAT विभाजन में 128KB- संरेखित फ़ाइल में 128KB ब्लॉक लिखूंगा (में) अन्य एसडी कार्ड में 128KB इरेज़ब्लॉक है)।
sync
एसडी कार्ड पर प्रत्येक लिखने के बाद कमांड का उपयोग करें , यह बिट्स को आपके द्वारा परिवर्तित किए जाने के बाद, उन्हें रैम में स्टोर किए बिना ही बना देगा / बना देगा ताकि आपके परिवर्तन कार्ड पर हो जाएं। और बिजली की हानि से नहीं गुजरेगा।
sync
संभवत: यह और भी बदतर बना देगा, क्योंकि यह समय के अंश को बढ़ाता है कि मेटाडेटा मध्य-अद्यतन है।