मैं ext3 / 4 पर पारदर्शी, कुशल, फ़ाइल सिस्टम स्नैपशॉट या संस्करण कैसे प्राप्त करूं?


11

मैंने लंबे समय से फाइल सिस्टम के संस्करण के बारे में सोचा है। यह एक किलर फीचर है और मैंने Wayback, ext3cow, zfs, फ़्यूज़ सॉल्यूशंस या सिर्फ cvs / svn / git ओवरले पर देखा है।

मैं अपनी आवश्यकताओं के लिए ext3cow मॉडल पर विचार करता हूं। पारदर्शी, कुशल, लेकिन मैं अतिरिक्त ls abc@timestampसुविधा के बिना कर सकता हूं । जब तक मैं किसी तरह अपनी फाइलों की स्वचालित, पारदर्शी संस्करण प्राप्त कर लेता हूं।

यह तात्कालिक हो सकता है या यह 10s, 30s, 1m, 5m, 15m, आदि के अंतराल पर स्नैपशॉट पर आधारित हो सकता है। बस कुछ ऐसा है जो किसी दिए गए डायरेक्टरी में हजारों फाइलों के साथ कुशलता से निपटेगा। 100 मीटर से 1 जीबी तक ऊपर की ओर।

ZFS वास्तव में एक विकल्प नहीं है जैसा कि मैं लिनक्स पर हूं (और फ्यूज के माध्यम से इसका उपयोग नहीं करना पसंद करेंगे क्योंकि मेरे पास पहले से ही एक एक्स 3 सेटअप है जिसे मैं संस्करण बनाना चाहता हूं, कुछ नया नहीं)।

वहाँ क्या समाधान हैं?

जवाबों:


7

यदि आप LVM का उपयोग करके अपने फाइल सिस्टम को लपेटते हैं, तो आप अंतर्निहित लॉजिकल वॉल्यूम लेयर का उपयोग करके स्नैपशॉट वॉल्यूम बना सकते हैं। यह एक बहुत ही सरल प्रक्रिया है और मानक "स्नैपशॉट" चीजों के लिए आश्चर्यजनक रूप से प्रभावी है, जैसे कि बैकअप और पूर्ववत rm -froopsies।


जवाब के लिए धन्यवाद। दुर्भाग्य से, मैं एक ऐसी चीज की तलाश में हूं जिसे मौजूदा फाइल सिस्टम पर लागू किया जा सके।
डेल फॉरेस्टर

6

8 साल की खोज के बाद मुझे Marco R. Gazzetta द्वारा SVNFS मिला (जो कि जॉन मैडेन [जो अलग-अलग चीजें करता है] द्वारा इसी नाम के साथ पुराने प्रोजेक्ट से अलग है)। यह SVNFS r / w संचालन में पारदर्शी रूप से svn का उपयोग करता है :

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

यह पायथन में लिखा गया है और FUSE का उपयोग करता है:

अब आप स्क्रिप्ट संलग्न करके संस्करण फ़ाइल सिस्टम शुरू करते हैं:

python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles

एक बार जब सब कुछ ठीक हो जाता है, तो आपको दोनों निर्देशिकाओं की एक सूची प्राप्त करने में सक्षम होना चाहिए और देखना चाहिए कि सामग्री समान हैं।

अब, यदि आप किसी भी डायरेक्टरी में कोई फाइल बनाते हैं, तो यह फेंस के दूसरी तरफ भी दिखाई देगा। बड़ा अंतर यह है कि यदि आप myfiles निर्देशिका में एक फ़ाइल बनाते हैं, तो यह स्वचालित रूप से संस्करण नियंत्रण के तहत रखा जाएगा (विपरीत सच नहीं है)।

उदाहरण में SVNFS रेपो के लिए अलग निर्देशिका का उपयोग करता है। हालांकि मैंने इसका परीक्षण नहीं किया है। अपनी जरूरतों के लिए मैं अपने कामकाजी डायर में रिपॉजिटरी अधिकार रखना चाहता हूं।


मुझे 4 साल पहले Reiser4 की संस्करण क्षमताओं का संदर्भ मिला है :

देखें Reiser 4. फाइलें निर्देशिका हैं।

उदाहरण के लिए: diff -u main.C main.C/r/123

या गुणों तक पहुँचने के लिए

cat main.C/p/svn-eolstyle

echo "foobar" > main.C/p/my-property 

ऐसा लगता है कि उस मॉडल का पालन करना सबसे अच्छा होगा, क्योंकि एक प्रमुख फाइल सिस्टम पहले से ही उस मार्ग पर जा रहा है।

-पुल क्वर्ना

लेकिन मैंने इसे भी चेक नहीं किया है।


दो साल पहले मैं आगे की खोज के लिए गया, स्टैकेबल फाइल सिस्टम बनाने के लिए प्रोजेक्ट FiST पाया और प्रोफेसर से संपर्क किया। Erez सादोक के स्टोनी ब्रुक विश्वविद्यालय कौन था सलाहकार / संरक्षक परियोजना कहा जाता है के लिए versionfs बहुत पहले। का हवाला देते हुए:

http://www.fsl.cs.sunysb.edu/docs/versionfs-fast04/

http://www.fsl.cs.sunysb.edu/docs/versionfs-msthesis/versionfs.pdf

उपयोगकर्ताओं को आसानी से और कुशलता से अपने स्वयं के संस्करणों का प्रबंधन करने की अनुमति देता है। वर्जनफोर्स यह कार्यक्षमता प्रदान करता है जिसमें विशिष्ट उपयोगकर्ता जैसे वर्कलोड के लिए 4% से अधिक ओवरहेड नहीं होता है। वर्जनफोर्स उपयोगकर्ताओं को यह चुनने की अनुमति देता है कि दोनों संस्करणों को क्या रखा गया है और उन्हें क्रमशः अवधारण नीतियों और भंडारण नीतियों के माध्यम से कैसे संग्रहीत किया जाता है। उपयोगकर्ता स्थान और प्रदर्शन के बीच व्यापार-बंद का चयन कर सकते हैं जो उनकी व्यक्तिगत जरूरतों को पूरा करता है: पूर्ण प्रतियां, संपीड़ित प्रतियां या ब्लॉक डेल्टा। यद्यपि उपयोगकर्ता अपने संस्करणों को नियंत्रित कर सकते हैं, प्रशासक न्यूनतम और अधिकतम मूल्यों को लागू कर सकता है, और उपयोगकर्ताओं को समझदार चूक प्रदान कर सकता है।

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

अंत में, वर्जनफॉफ अतीत के सिस्टम द्वारा नियोजित साधारण कॉपी-ऑन-राइट से आगे निकल जाता है: हम कॉपी-ऑन-परिवर्तन को लागू करते हैं। हालाँकि पहले हमें उम्मीद थी कि पुराने और नए पन्नों के बीच तुलना बहुत महंगी होगी, हमने पाया कि सिस्टम समय में वृद्धि अपरिवर्तित ब्लॉक लिखने के साथ जुड़े I / O और CPU समय की तुलना में अधिक है। जब अधिक महंगी भंडारण नीतियों का उपयोग किया जाता है (जैसे, संपीड़न), तो कॉपी-ऑन-परिवर्तन और भी अधिक उपयोगी होता है।

यह मुझे बहुत दिलचस्प लगा, लेकिन इस परियोजना पर काम करने वाले लोगों से संपर्क करने पर पता चला कि सिंहासन इसका स्रोत कोड नहीं है। प्रोफेसर ने खुद कहा मेल:

वर्जनफोर्स कोड अब बहुत पुराना है, और यह केवल कर्नेल 2.4 में काम करता है। यदि आप अभी भी एक स्टैकेबल वर्जनिंग एफ / एस चाहते हैं, तो किसी को इसे स्क्रैच से लिखना होगा - संभवतः रैपफ्स के आधार पर (देखें। wrafs.filesystems.org/)।

इसलिए यहां कोई काम करने वाली परियोजना नहीं है, हालांकि स्टैकेबल फाइल सिस्टम की अवधारणा मुझे बहुत अच्छी लगती है। क्या कोई भी ओफ़्फ़ रफ़्फ़्स पर आधारित प्रोजेक्ट शुरू करना चाहेगा , कृपया मुझे सूचित करें :)


3

आप gitfs की जाँच कर सकते हैं । यह एक फाइल फाइल सिस्टम है जो git पर आधारित है, उपयोग करने के लिए बहुत स्थिर और सुपर आसान है।

असल में, यह गिट पर एक ओवरले है। जब भी आप किसी फ़ाइल या निर्देशिका को अपडेट करते हैं, तो यह उस परिवर्तन के साथ एक कमिट बनाता है (यह जानता है कि कमिट्स को स्नान करना ताकि आप किसी संग्रह को अनज़िप करने पर 100 कमिट्स के साथ समाप्त न हों)। अपने रिमोट को सिंक करना जानता है और 'हमेशा मेरा स्वीकार करो' रणनीति का उपयोग करते हुए टकराव को मर्ज करता है।

जब आप इसे माउंट करते हैं, तो यह आपके लिए दो निर्देशिकाएं लाता है: वर्तमान और इतिहास ├── current │   ├── test1.md │   ├── test2.md │   ├── test3.md -> current/test2.md │   ├── test4.md │   └── test_directory └── history ├── 2014-11-23 │   ├── 20-00-21-d71d1579a7 │   │   └── testing.md │   └── 20-42-32-7d09611d83 │   ├── test2.md │   └── testing.md ├── 2014-12-08 │   ├── 16-38-30-6d6e71fe47 │   │   ├── test2.md │   │   └── test1.md

अधिक जानकारी इस पृष्ठ पर पाई जा सकती है ।


अधिक जानकारी जोड़ने से यह उत्तर बेहतर होगा।
डेव एम

2

बूप आशाजनक लगता है।

इसकी पुरानी चर्चा यहाँ: http://lwn.net/Articles/380983/


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

0

Rsnapshot को आज़माएं - मैंने इसे स्वयं उपयोग नहीं किया है, लेकिन मैंने @ फ़ाइल-स्तरीय समर्पण प्रणालियों को देखते हुए इस पर ठोकर खाई।


यह तो दिलचस्प है। मैं निश्चित रूप से इस पर गौर करूंगा। मेरी चिंता यह है कि इसका io भार मेरे सिस्टम पर हकलाने का कारण बनेगा (मैंने कुछ समय पहले rsync के साथ ऐसा कुछ नहीं किया था और इसे चलाने पर अन्य कंसोल में हाइट्स / हकलाने वाले व्यवहार के कारण इसका उपयोग करना बंद कर दिया था)।
डेल फॉरेस्टर

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

1
कठिनाई आपकी आवश्यकताओं में है। rsnapshot, या LVM, ext2 / ext3 जैसी कुछ चीजों के अलावा इसमें स्नैपशॉट सुविधा नहीं है। आप ext3cow को इंगित करते हैं, लेकिन आपको अंतर्निहित फ़ेसेलसिस्टम को बदलना होगा। ध्यान दें कि ऐसा लगता है कि आप rsnapshot का उपयोग कर सकते हैं और अपने डेटा को ANOTHER मशीन पर संग्रहीत कर सकते हैं , मुझे पता है कि आपकी किस तरह की जगह है, लेकिन यह आपके स्नैपशॉट को किसी अन्य मशीन पर रखने का कोई मतलब हो सकता है? यह भी ध्यान रखें कि किसी भी प्रकार के स्नैपशॉट को डिस्क स्थान की आवश्यकता होगी। यदि आपकी ड्राइव्स क्षमता के पास हैं, तो आपके पास स्नैपशॉट के लिए कितनी जगह बची है?
जेसन

0

R1Soft से हॉट कॉपी पर एक नज़र डालें।

http://www.r1soft.com/tools/linux-hot-copy/

यह एक कर्नेल मॉड्यूल है जो LVM का उपयोग किए बिना मानक सिस्टम के लिए कॉपी-ऑन-राइट स्नैपशॉट प्रदान करता है। यह मेरे लिए काफी अच्छा काम कर रहा है और मैं इसे रिबूट के बिना भी स्थापित कर सकता हूं।

इसे भी देखें: http://www.r1soft.com/tools/linux-hot-copy/hcp-tips/

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