আমি কীভাবে ওভারলেএফএস ব্যবহার করব?


53

এই উত্তর এবং ইমেল বার্তাটি বোঝায় যে "ওভারলেএফএস" নামক কিছুটি উবুন্টু ১১.১০ এ উপলব্ধ এবং উবুন্টু ১২.০৪-এ জোর করে আউফগুলি প্রতিস্থাপন করবে।

আমি কিভাবে এটা ব্যবহার করব? এর ডকুমেন্টেশন কোথায়?


1
আপনি এবং আমি দুজন, ভাই। আমি এই জুড়ে করেছি এতদূর: mount -t overlayfs -o rw,uppderdir=x,lowerdir=y overlayfs /mount/point। এর বাইরে আমি নিখুঁত। আমি এটি একটি লাইভ সিস্টেমে টিঙ্কারিং করছি, তবে আমি এটি এখনও কাজ করতে সক্ষম হইনি। আমি আশা করি আমি "আপারডির" এবং "লোয়ারডির" এর অর্থ কী তা জানতে পারি। আমি কিছুই পাইনি।
চক আর

উত্তর:


63

সম্পাদনা: এই উত্তর লেখার পর থেকে, কিছু কিছু বিষয় overlayfs বদলে গেছে, যথা একটি প্রয়োজনীয় পরামিতি যোগে workdirদেখুন Totti এর উত্তর নিচের এই নতুন পরামিতি একটি বিস্তারিত বিবরণ জন্য।

আমি অবশেষে এটি খুঁজে পেতে পরিচালিত। আমি এটির কার্নেল উত্সে রেফারেন্স পেয়েছি, তবে কিছু কারণে এটি কার্নেল.org এ গিট ট্রিতে উপস্থিত হয় নি। কিন্ত! আপনি যদি উবুন্টু কার্নেল উত্সটি টানেন: apt-get source linux-image-3.0.0-16-genericআপনি এটি সন্ধান করতে পারেন linux-3.0.0/Documentation/overlayfs.txt। এটি লিনাক্স-ডক প্যাকেজে পাওয়া যায় /usr/share/doc/linux-doc/filesystems/overlayfs.txt.gz

প্রকৃত সহায়তার ডকুমেন্টেশন যেমন "এটি কীভাবে মাউন্ট করবেন তার" পরিবর্তে "এটি কীভাবে কাজ করে" তার অনেক বেশি, এখানে একটি সংক্ষিপ্ত রুনডাউন রয়েছে (কার্নেলের ডকুমেন্টেশনের একটি উদাহরণ রয়েছে):

mount -t overlayfs -o [mount options] overlayfs [mountpoint for merged system]

[মাউন্ট বিকল্পগুলি] যেখানে থাকতে পারে:

  • লোয়ারডির = সামিডির: লোয়ারডির হ'ল ডিরেক্টরিটি যা আপনি আপনার নতুন ফাইল সিস্টেমের উপরে রেখে যাচ্ছেন, যদি সেখানে নকলগুলি থাকে তবে এগুলি ওভারডির সংস্করণের দ্বারা ওভাররাইট করা হয় (প্রকৃতপক্ষে, পক্ষে আবদ্ধ)
  • উপরেরডির = সামিডির: উপরেরডিরটি হ'ল ডিরেক্টরিটি যা দিয়ে আপনি নিম্নতরকে ওভারলে করতে চান। যদি নকল ফাইলের নামগুলি নিম্নতর এবং আপারডিরের মধ্যে উপস্থিত থাকে তবে আপারডির সংস্করণটি প্রাধান্য পায়।
  • মানক মাউন্ট অপশন। কোড থেকে কেবলমাত্র আমি দেখেছি রো / আরডাব্লু, তবে আপনি পরীক্ষা করতে পারেন।

একটি জিনিস যা প্রথমে আমাকে বিভ্রান্ত করেছিল, তাই আমার সম্ভবত স্পষ্ট করা উচিত, ওভারলেফগুলি মাউন্ট করা আসলে কোনও ফাইল সিস্টেমকে মাউন্ট করে না। আমি একটি ওভারলেফ্স মাউন্ট ব্যবহার করে স্কোয়াশফেস ফাইল সিস্টেমটি মাউন্ট করার চেষ্টা করছিলাম, তবে এটি কীভাবে কাজ করে তা নয়। আপনাকে প্রথমে (আমার ক্ষেত্রে স্কোয়াশফ) ফাইল সিস্টেমটি একটি স্বেচ্ছাসেবী ডিরেক্টরিতে মাউন্ট করতে হবে, তারপরে মাউন্ট পয়েন্ট (একটি ডিরেক্টরি) এবং অন্য ডিরেক্টরিটি তৃতীয় ডিরেক্টরিতে (ওভারলেফ মাউন্ট পয়েন্ট) মার্জ করতে ওভারলেফগুলি ব্যবহার করুন (সম্পাদনা করুন: এই "তৃতীয়" ডিরেক্টরিটি প্রকৃতপক্ষে উচ্চতর = ডিরেক্টরি হতে পারে)। তৃতীয় ডিরেক্টরিটি যেখানে আপনি একীভূত ফাইল সিস্টেমগুলি দেখতে পাবেন (বা ডিরেক্টরি গাছ - এটি নমনীয়)।

উদাহরণ 1, রুট ফাইল সিস্টেমটি ওভারলে করা

আমি একটি উবুন্টু হাইব্রিড বুট ডিস্কে কাজ করছি যেখানে বেস উবুন্টু সিস্টেমটি ফাইল-সিস্টেম.সকোয়াফস হিসাবে উপস্থিত রয়েছে এবং আমার কাছে উবুন্টু.ওরে্লে কুবুন্টু.ওরোয় xubuntu.overlay এবং lubuntu.overlay নামে ফাইল রয়েছে। .Overlay ফাইলগুলি হ'ল সিস্টেম সিস্টেমের বেস ইনস্টলস যা ফাইল সিস্টেমস.সকোয়াশফগুলি ছাঁটাই করে থাকে (স্থান বাঁচাতে)। তারপরে আমি ওভারলেফগুলি এবং উপরের বিকল্পগুলি ব্যবহার করে সঠিক ডিস্ট্রোর .overlay ফাইলটি (বুট প্যারামিটার থেকে) ওভারলে করতে আমি স্ক্রিপ্টগুলি সংশোধন করেছি এবং এটি একটি কবজির মতো কাজ করে!

এই আমি আমার আরআর স্ক্রিপ্টগুলিতে ব্যবহৃত লাইনগুলি (একবারে সমস্ত ভেরিয়েবলগুলি অনুবাদ করা হয়):

mkdir -p /overlay
mount -t squashfs /cdrom/casper/ubuntu.overlay /overlay
mount -t overlayfs -o lowerdir=/filesystem.squashfs,upperdir=/overlay overlayfs /

নোট করুন যে উপরের ফাইলসিস্টেম.সকোয়াশফগুলি একটি ফাইল নয় ক্যাস্পার দ্বারা নির্মিত একটি ডিরেক্টরি

এই তিনটি বিবৃতি একটি তৈরি /overlayডিরেক্টরি, একটি স্কোয়াশএফএস ফাইলসিস্টেম মাউন্ট /overlayডিরেক্টরি এবং তারপর OverlayFS ব্যবহার মূলত বিষয়বস্তু মার্জ করতে /overlayবেশি /

উদাহরণ 2, দুটি ডিরেক্টরিতে স্বচ্ছ মার্জ করা

প্রতিটি প্রকাশের জন্য আমার লাইভ ইউএসবি পুনর্নির্মাণের প্রক্রিয়ায়, আমি বেশ কিছু সময় বাঁচাতে ওভারলেএফএস ব্যবহার করি FS আমি উবুন্টু-বেস নামের একটি ডিরেক্টরি দিয়ে শুরু করি যা উবুন্টু-কোর ইমেজের বিষয়বস্তু রয়েছে যা সবচেয়ে বেসিক ইনস্টল। এরপরে আমি উবুন্টু, কুবুন্টু, লুবুন্টু এবং এক্সুবন্টু নামে ডিরেক্টরিগুলি তৈরি করব।

তারপরে, আমি উবুন্টু-বেস থেকে ফাইলগুলি পৃথক ডিরেক্টরিতে প্রদর্শিত করতে ওভারলেএফএস ব্যবহার করি। আমি এই জাতীয় কিছু ব্যবহার করব:

mount -t overlayfs -o lowerdir=ubuntu-base,upperdir=kubuntu overlayfs kubuntu

এটি উবুন্টু-বেস থেকে ফাইলগুলি কুবুন্টু ফোল্ডারে প্রদর্শিত হবে। তারপরে আমি chrootকুবুন্টু ফোল্ডারে গিয়ে এমন কিছু করতে পারি apt-get install kubuntu-desktop। এই ওভারলেএফএস মাউন্ট চলাকালীন যে কোনও পরিবর্তনগুলি উচ্চ ডিরেক্টরিতে থাকবে, এক্ষেত্রে কুবুন্টু ফোল্ডার। তারপরে, একবার আমি ওভারলে এফএসএফ মাউন্ট ফাইলগুলিকে সত্যিই উবুন্টু-বেসে উপস্থিত থাকি তবে সেগুলি পরিবর্তিত না হলে কুবুন্টু ফোল্ডারে "মিরর" হয়ে যায়। এটি আমাকে উবুন্টু-বেসে একাধিক অনুলিপি থাকা থেকে বিরত রেখেছে যখন এখনও সেগুলি ব্যবহার করতে সক্ষম হচ্ছিল যেন তারা প্রতিটি স্থানে শারীরিকভাবে বিদ্যমান exist


3
"তবে কোনও কারণে এটি কার্নেল.অর্গের গিট ট্রিতে উপস্থিত হয় না" - কারণ কারণ ওভারলেফগুলি উজানের কার্নেলে নেই ঠিক যেমন আউফস নেই (এবং কখনও হবে না)। এই জাতীয় ইউনিয়ন ফাইল সিস্টেমগুলি উবুন্টু কার্নেল টিম দ্বারা সংহত করা হয়েছে।
MestreLion

2
ওভারলেএফএস স্পষ্টতই কার্নেল 3.10 এ চলেছে।
ডেভিড সি বিশপ

8
শেষ অবধি
617099

4
@ রুমানো: আমার মেশিনে এটি কেবল সাথেই কাজ করে overlayনাoverlayfs
জানুস ট্রয়লসন

1
আপনাকে ধন্যবাদ অস্টিনমার্টন, আমি এটির কিছুক্ষণ আগে পেয়েছি এবং আমার উত্তরটি আপডেট করার আগে টটিটি এটি নীচে coveredেকে রেখেছিল, তাই আমি আমার উত্তরে তার উত্তরটিকে কৃতিত্ব দিয়েছিলাম।
চক আর

20

Https://www.kernel.org/doc/Docamentation/filesystems/overlayfs.txt থেকে :

উচ্চ এবং নিম্ন

একটি ওভারলে ফাইল সিস্টেম দুটি ফাইল সিস্টেমের সংমিশ্রণ করে - একটি 'উচ্চ' ফাইল সিস্টেম এবং একটি 'লোয়ার' ফাইল সিস্টেম yste যখন উভয় ফাইল সিস্টেমে একটি নাম বিদ্যমান থাকে, তখন 'নিম্ন' ফাইল সিস্টেমের অবজেক্টটি দৃশ্যমান হয় যখন 'নিম্ন' ফাইল সিস্টেমের অবজেক্টটি হয় লুকানো থাকে বা ডিরেক্টরিগুলির ক্ষেত্রে, 'উপরের' অবজেক্টের সাথে মিশে যায়।

'ফাইল সিস্টেম' এর চেয়ে উপরের এবং নীচের 'ডিরেক্টরি ট্রি' উল্লেখ করা আরও সঠিক হবে কারণ উভয় ডিরেক্টরি ট্রি একই ফাইল সিস্টেমে থাকতে পারে এবং ফাইল সিস্টেমের মূল দেওয়ার প্রয়োজন নেই উপরের বা নীচের হয়।

নিম্ন ফাইল সিস্টেম লিনাক্স দ্বারা সমর্থিত যে কোনও ফাইল সিস্টেম হতে পারে এবং এটি লেখার প্রয়োজন হয় না। নিম্ন ফাইল সিস্টেম এমনকি অন্য ওভারলেফ হতে পারে। উপরের ফাইল সিস্টেমটি সাধারণত লিখনযোগ্য হবে এবং যদি এটি হয় তবে এটি অবশ্যই বিশ্বাসযোগ্য তৈরির পক্ষে সহায়তা করে * * বর্ধিত বৈশিষ্ট্যগুলি এবং অবশ্যই রিডডির প্রতিক্রিয়াগুলিতে বৈধ d_type সরবরাহ করতে হবে, সুতরাং এনএফএস উপযুক্ত নয়।

কেবল দুটি পঠনযোগ্য ফাইল সিস্টেমের পঠনযোগ্য ওভারলে কোনও ফাইল সিস্টেম প্রকার ব্যবহার করতে পারে।

ডিরেক্টরি

ওভারলেলিংয়ে মূলত ডিরেক্টরিগুলি অন্তর্ভুক্ত থাকে। যদি কোনও প্রদত্ত নাম উচ্চ এবং নিম্ন উভয় ফাইল সিস্টেমে প্রদর্শিত হয় এবং উভয়ই একটি নন-ডিরেক্টরিকে উল্লেখ করে তবে নীচের বস্তুটি গোপন থাকে - নামটি কেবল উপরের অবজেক্টকে বোঝায়।

উপরের এবং নিম্ন উভয় বস্তু যেখানে ডিরেক্টরি হয় সেখানে একত্রিত ডিরেক্টরি তৈরি হয়।

মাউন্ট সময়ে, মাউন্ট অপশন "লোয়ারডির" এবং "আপারডির" হিসাবে প্রদত্ত দুটি ডিরেক্টরি একত্রিত ডিরেক্টরিতে একত্রিত হয়েছে:

mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,workdir=/work /merged

"Workdir" এর জন্য ওপেনডিরের মতো একই ফাইল সিস্টেমের একটি খালি ডিরেক্টরি হওয়া দরকার।

তারপরে যখনই এই জাতীয় মার্জড ডিরেক্টরিতে কোনও অনুসন্ধানের অনুরোধ করা হয়, প্রতিটি প্রকৃত ডিরেক্টরিতে অনুসন্ধানটি সম্পাদন করা হয় এবং সংযুক্ত ফলাফলটি ওভারলে ফাইল সিস্টেমের সাথে সম্পর্কিত ডেন্ট্রিতে ক্যাশে হয়। যদি উভয় প্রকৃত চেহারাতে ডিরেক্টরিগুলি পাওয়া যায়, উভয় সঞ্চিত থাকে এবং একটি মার্জড ডিরেক্টরি তৈরি করা হয়, অন্যথায় কেবল একটি সংরক্ষণ করা হয়: এটি উপস্থিত থাকলে উপরেরটি, অন্যথায় নীচের দিকে।

কেবল ডিরেক্টরি থেকে নামের তালিকাগুলি মার্জ করা হয়। অন্যান্য সামগ্রী যেমন মেটাডেটা এবং বর্ধিত বৈশিষ্ট্যগুলি কেবলমাত্র উপরের ডিরেক্টরিতে রিপোর্ট করা হয়। নিম্ন ডিরেক্টরিটির এই বৈশিষ্ট্যগুলি লুকানো আছে।


4
ওয়ার্কডিরের স্পষ্টতার জন্য ধন্যবাদ। এটি ছিল একটি সাম্প্রতিক পরিবর্তন এবং যে কারণেই আমি কখনই 'ওয়ার্কডির' আসলে কী করেছিল সে সম্পর্কে কোনও দলিল খুঁজে পাইনি। গতবার আমি যখন দেখলাম তখন এটি কার্নেলের সাহায্যে ছিল না। আইএমওকে ওভারলেফায় বিভ্রান্তির একটি স্তর যুক্ত করে, আশা করি এটিগুলি ছাড়াই নতুন সংস্করণগুলি ব্যবহার করা যেতে পারে - এটি আমার ওয়ার্কফ্লোকে একরকম গণ্ডগোল করে।
চক আর

7

আমি এই আর্টিকেলগুলিকে ওভারলেফের জন্য একটি স্ক্রিপ্ট অন্তর্ভুক্ত করতে প্রসারিত করেছি যা কেবল পঠনযোগ্য রুট fs সেট করে।

আশা করি এটা সাহায্য করবে.


1
অন্যরা যে কাজ করেছে তার জন্য ধন্যবাদ, ডাস্টিন এবং আমি 'ওভারলেরুট' নামে একটি ব্যানারি প্যাকেজকে কোয়ান্টাল যুক্ত করেছি, যা ক্লাউড-ইনিরামফেস-টুলস সোর্স প্যাকেজের অংশ। /Etc/overlayroot.conf
স্মোকার

2

ন্যূনতম চলমান উদাহরণ

# 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/ডিরেক্টরি) রয়েছে যা আমাদের উচিত নয় care

উদাহরণ থেকে অভিযোজিত: উদাহরণ ওভারলেএফএস ব্যবহার

একাধিক নিম্ন স্তর সহ আরও জটিল উদাহরণ এখানে রয়েছে: একাধিক স্তর সহ ওভারলেফগুলি পুনরায় লোড করুন (আফস থেকে দূরে স্থানান্তর)

উবুন্টু 18.04, লিনাক্স কার্নেল 4.15.0 এ পরীক্ষিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.