यह उत्तर और ईमेल संदेश बताता है कि "ओवरलेएफएस" नामक कुछ उबंटू 11.10 में उपलब्ध है और यह उबंटू 12.04 में एयूएफ को जबरदस्ती बदल देगा।
मैं इसे कैसे इस्तेमाल करूं? इसका प्रलेखन कहाँ है?
यह उत्तर और ईमेल संदेश बताता है कि "ओवरलेएफएस" नामक कुछ उबंटू 11.10 में उपलब्ध है और यह उबंटू 12.04 में एयूएफ को जबरदस्ती बदल देगा।
मैं इसे कैसे इस्तेमाल करूं? इसका प्रलेखन कहाँ है?
जवाबों:
संपादित करें: इस उत्तर को लिखने के बाद, कुछ चीजें ओवरलेफ्स में बदल गई हैं, अर्थात् एक आवश्यक पैरामीटर के अलावा workdir
, इस नए पैरामीटर के विस्तृत विवरण के लिए टोट्टी का जवाब नीचे देखें।
मैं अंत में इसे खोजने में कामयाब रहा। मैंने इसे कर्नेल स्रोत में संदर्भित किया, लेकिन किसी कारण से यह कर्नेल ओआरजी पर गिट ट्री में दिखाई नहीं देता है। परंतु! यदि आप उबंटू कर्नेल स्रोत को इस तरह खींचते हैं: apt-get source linux-image-3.0.0-16-generic
आप इसे पा सकते हैं linux-3.0.0/Documentation/overlayfs.txt
। यह linux-doc पैकेज में भी उपलब्ध है /usr/share/doc/linux-doc/filesystems/overlayfs.txt.gz
।
जैसा कि वास्तविक सहायता प्रलेखन "कैसे काम करता है" के बजाय एक "कैसे इसके साथ माउंट करने के लिए" का अधिक है, यहां एक संक्षिप्त ठहरनेवाला है (कर्नेल प्रलेखन में एक उदाहरण है):
mount -t overlayfs -o [mount options] overlayfs [mountpoint for merged system]
जहां [माउंट विकल्प] हो सकते हैं:
एक चीज जिसने मुझे पहली बार भ्रमित किया, इसलिए मुझे शायद स्पष्ट करना चाहिए, यह है कि एक ओवरलेफ्स बढ़ते हुए वास्तव में एक फाइल सिस्टम माउंट नहीं करता है। मैं एक overlayfs माउंट का उपयोग कर एक स्क्वाशफ़्स फाइल सिस्टम को माउंट करने की कोशिश कर रहा था, लेकिन यह नहीं है कि यह कैसे काम करता है। आपको पहले (मेरे मामले में स्क्वाशफ़्स) फाइल सिस्टम को एक मनमानी निर्देशिका में माउंट करना होगा, फिर माउंट पॉइंट (एक निर्देशिका) और दूसरी निर्देशिका को तृतीयक निर्देशिका (ओवरलेफ़्स माउंट बिंदु) पर मर्ज करने के लिए ओवरलेफ़्स का उपयोग करना होगा (संपादित करें: "" तृतीयक "निर्देशिका वास्तव में ऊपरी = निर्देशिका हो सकता है)। तृतीयक निर्देशिका वह जगह है जहाँ आप मर्ज किए गए फ़ाइल सिस्टम (या निर्देशिका ट्री - यह लचीला है) देखेंगे।
मैं उबंटू हाइब्रिड बूट डिस्क पर काम कर रहा हूं, जहां आधार उबंटू सिस्टम filesystem.squashfs के रूप में मौजूद है और मेरे पास ubuntu.overlay kubuntu.overlay xubuntu.overlay और lubuntu.overlay नामक फाइलें हैं। .Overlay फाइलें filesystem.squashfs pruned (स्थान बचाने के लिए) की सामग्री के साथ उक्त प्रणालियों का आधार संस्थापन हैं। फिर मैंने सही डिस्ट्रो की .overlay फ़ाइल (बूट पैरामीटर से) को ओवरलेफ़्स और उपर्युक्त विकल्पों का उपयोग करने के लिए init स्क्रिप्ट को संशोधित किया और यह एक आकर्षण की तरह काम करता है!
ये वो पंक्तियाँ हैं जो मैंने अपनी init लिपियों में प्रयोग की हैं (एक बार सभी चर का अनुवाद हो जाने के बाद):
mkdir -p /overlay
mount -t squashfs /cdrom/casper/ubuntu.overlay /overlay
mount -t overlayfs -o lowerdir=/filesystem.squashfs,upperdir=/overlay overlayfs /
ध्यान दें कि ऊपर filesystem.squashfs एक फाइल द्वारा नहीं बल्कि कैस्पर द्वारा बनाई गई एक निर्देशिका है ।
ये तीन बयान एक /overlay
निर्देशिका बनाते हैं, निर्देशिका पर एक स्क्वाशफ़्स फ़ाइल सिस्टम को माउंट करते /overlay
हैं और फिर ओवरलेफ़्फ़ का उपयोग अनिवार्य रूप से /overlay
ओवर की सामग्री को मर्ज करने के लिए करते हैं /
।
प्रत्येक रिलीज़ के लिए अपने लाइव यूएसबी को फिर से बनाने की प्रक्रिया में, मैं समय का एक गुच्छा बचाने के लिए ओवरलेफ़्फ़ का उपयोग करता हूं। मैं ubuntu-base नामक एक निर्देशिका के साथ शुरू करता हूं जिसमें ubuntu-core छवि की सामग्री शामिल है जो सबसे बुनियादी स्थापित है। मैं तब ubuntu, kubuntu, lubuntu, और xubuntu नामक निर्देशिकाएं बनाऊंगा।
फिर, मैं व्यक्तिगत निर्देशिका में ubuntu- बेस शो से फाइल बनाने के लिए OverlayFS का उपयोग करता हूं। मैं कुछ इस तरह का उपयोग करेंगे:
mount -t overlayfs -o lowerdir=ubuntu-base,upperdir=kubuntu overlayfs kubuntu
यह कुबंटु फ़ोल्डर में ubuntu- बेस शो से फाइल बनाता है। तब, मैं chroot
kubuntu फ़ोल्डर में कर सकता हूं और कुछ ऐसा कर सकता हूं apt-get install kubuntu-desktop
। इस ओवरलेफ़् स माउंट में रहते हुए किए गए कोई भी बदलाव ऊपरी निर्देशिका में रहेंगे, इस मामले में कुबंटु फ़ोल्डर। फिर, एक बार जब मैं ओवरलेएफएस को अनमाउंट करता हूं, तो उन फाइलों को माउंट करता है जो वास्तव में उबंटू-बेस में मौजूद हैं, लेकिन कुबंटु फ़ोल्डर में "मिरर किए गए" हैं जब तक कि उन्हें बदल नहीं दिया गया हो। यह मुझे उबंटू-बेस में फाइलों की कई प्रतियाँ रखने से रोकता है, जबकि अभी भी उनका उपयोग करने में सक्षम है जैसे कि वे प्रत्येक स्थान पर भौतिक रूप से मौजूद हैं।
overlay
नहीं करता हैoverlayfs
से https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt :
ऊपरी और निचला
एक ओवरले फाइल सिस्टम दो फाइल सिस्टम को जोड़ती है - एक 'अपर' फाइलसिस्टम और एक 'लोअर' फाइलसिस्टम। जब कोई नाम दोनों फाइल सिस्टम में मौजूद होता है, तो 'अपर' फाइलसिस्टम में ऑब्जेक्ट दिखाई देता है, जबकि 'लोअर' फाइलसिस्टम में ऑब्जेक्ट या तो छिपा होता है या डायरेक्टरी के मामले में 'अपर' ऑब्जेक्ट में मर्ज हो जाता है।
'फाइलसिस्टम' के बजाय ऊपरी और निचले 'निर्देशिका ट्री' को संदर्भित करना अधिक सही होगा क्योंकि दोनों निर्देशिका पेड़ों का एक ही फाइल सिस्टम में होना काफी संभव है और इसके लिए कोई आवश्यकता नहीं है कि फाइलसिस्टम की जड़ दी जाए या तो ऊपरी या निचला।
निचला फाइलसिस्टम लिनक्स द्वारा समर्थित कोई भी फाइल सिस्टम हो सकता है और इसे लिखने योग्य होने की आवश्यकता नहीं है। निचला फाइलसिस्टम भी एक और ओवरलेफ़्स हो सकता है। ऊपरी फाइल सिस्टम सामान्य रूप से लेखन योग्य होगा और यदि यह विश्वसनीय है। * विस्तारित विशेषताओं के निर्माण का समर्थन करना चाहिए, और रीडिर प्रतिक्रियाओं में मान्य d_type प्रदान करना होगा, इसलिए एनएफएस उपयुक्त नहीं है।
दो-रीड-ओनली फाइल-सिस्टम का केवल पढ़ने वाला ओवरले किसी भी फाइलसिस्टम प्रकार का उपयोग कर सकता है।
निर्देशिकाएँ
ओवरलेइंग में मुख्य रूप से निर्देशिकाएं शामिल हैं। यदि एक दिया गया नाम ऊपरी और निचले दोनों फ़ाइल सिस्टम में दिखाई देता है और या तो एक गैर-निर्देशिका को संदर्भित करता है, तो निचली वस्तु छिपी हुई है - नाम केवल ऊपरी ऑब्जेक्ट को संदर्भित करता है।
जहाँ ऊपरी और निचले दोनों ऑब्जेक्ट्स डायरेक्टरी होते हैं, एक मर्ज की गई डायरेक्टरी बनती है।
माउंट समय पर, माउंट विकल्प "लोर्डिर" और "अपरडिर" के रूप में दी गई दो निर्देशिकाओं को एक विलय निर्देशिका में जोड़ा गया है:
mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,workdir=/work /merged
"वर्कडिर" को ऊपरी फाइल के समान फाइल सिस्टम पर एक खाली निर्देशिका होने की आवश्यकता है।
फिर जब भी ऐसे मर्ज किए गए डायरेक्टरी में लुकअप का अनुरोध किया जाता है, तो प्रत्येक वास्तविक डायरेक्टरी में लुकअप किया जाता है और ओवरले फाइलसिस्टम से संबंधित डेंट्री में संयुक्त परिणाम को कैश किया जाता है। यदि दोनों वास्तविक लुकअप निर्देशिका पाते हैं, तो दोनों संग्रहीत हैं और एक मर्ज की गई निर्देशिका बनाई गई है, अन्यथा केवल एक संग्रहीत है: ऊपरी अगर यह मौजूद है, तो कम है।
केवल निर्देशिकाओं से नामों की सूचियाँ विलय की जाती हैं। अन्य सामग्री जैसे मेटाडेटा और विस्तारित विशेषताएँ केवल ऊपरी निर्देशिका के लिए रिपोर्ट की जाती हैं। निचले निर्देशिका की ये विशेषताएँ छिपी हुई हैं।
मैंने इन कलाकृतियों को ओवरलेफ़्स के लिए एक स्क्रिप्ट शामिल करने के लिए बढ़ाया है जो एक रीड-ओनली रूट एफएस सेट करता है।
आशा है ये मदद करेगा।
न्यूनतम रननीय उदाहरण
# Create the filesystems.
dd if=/dev/zero of=lower.ext4 bs=1024 count=102400
mkfs -t ext4 lower.ext4
cp lower.ext4 upper.ext4
mkdir lower upper overlay
sudo mount lower.ext4 lower
sudo mount upper.ext4 upper
sudo chown "$USER:$USER" lower upper
printf lower-content > lower/lower-file
# Upper and work must be on the same filesystem.
mkdir upper/upper upper/work
printf upper-content > upper/upper/upper-file
# Work must be empty. E.g. this would be bad:
#printf work-content > upper/work/work-file
# Make the lower readonly to show that that is possible:
# writes actually end up on the upper filesystem.
sudo mount -o remount,ro lower.ext4 lower
# Create the overlay mount.
sudo mount \
-t overlay \
-o lowerdir=lower,upperdir=upper/upper,workdir=upper/work \
none \
overlay \
;
# Interact with the mount.
printf 'overlay-content' > overlay/overlay-file
ls lower upper/upper upper/work overlay
# Write to underlying directories while mounted
# gives undefined behaviour.
#printf lower-content-2 > lower/lower-file-2
#printf upper-content-2 > upper/upper-file-2
# Unmount the overlay and observe state.
sudo umount overlay
ls lower upper/upper upper/work
# Cleanup.
sudo umount upper lower
ls
माउंट के साथ पहले का आउटपुट :
lower:
lost+found lower-file
overlay:
lost+found lower-file overlay-file upper-file
upper/upper:
overlay-file upper-file
upper/work:
work
ls
माउंट के बिना दूसरे का आउटपुट :
lower:
lost+found lower-file
upper/upper:
overlay-file upper-file
upper/work:
work
व्याख्या:
work/
निर्देशिका) शामिल है जिसकी हमें परवाह नहीं करनी चाहिएउदाहरण से अनुकूलित: उदाहरण OverlayFS उपयोग
यहां कई निचली परतों के साथ एक अधिक जटिल उदाहरण दिया गया है: ओवरलेफ्स कई परतों के साथ फिर से लोड होते हैं (aufs से दूर प्रवास)
उबंटू 18.04, लिनक्स कर्नेल 4.15.0 पर परीक्षण किया गया।
mount -t overlayfs -o rw,uppderdir=x,lowerdir=y overlayfs /mount/point
:। परे कि मैं अनाड़ी हूं। मैं इसके साथ एक लाइव सिस्टम में छेड़छाड़ कर रहा हूं, लेकिन मैंने इसे अभी तक काम करने में कामयाब नहीं किया है। काश मुझे पता चल सके कि वास्तव में "ऊपरी" और "लोअरडिर" का क्या मतलब है। मुझे कुछ नहीं मिला है।