জিএনইউ / লিনাক্স: ওভারলে ব্লক ডিভাইস / স্ট্যাকেবল ব্লক ডিভাইস


14

জিএনইউ / লিনাক্সের ইউনিয়ন মাউন্ট রয়েছে যা ডায়ারকে ওভারল করে। সুতরাং আপনি কেবল পঠন-পাতানো ডিয়ারের উপরে একটি লিখনযোগ্য দির মাউন্ট করতে পারেন। যখন লেখার যোগ্য দির আনমাউন্ট করা হয় কেবলমাত্র পঠিত দির তা ছোঁয়া যায়।

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

device-setup /dev/newdevice /dev/read-only-device overlayfile

আমি যদি / dev / newdevice এ লিখি তবে পরিবর্তনগুলি ওভারলেফাইলে সংরক্ষণ করা উচিত। আমি যদি লিখিত সেক্টরগুলি পড়ি তবে আমার ওভারলে ফাইল থেকে ডেটা নেওয়া উচিত। যদি আমি লিখিত নেই এমন খাতগুলি পড়ি তবে আমার / dev / পঠনযোগ্য-ডিভাইস থেকে ডেটা পাওয়া উচিত।

এ জাতীয় সরঞ্জাম কি বিদ্যমান?


উত্তর:


22

আপনি এটি ডিভাইস ম্যাপার এবং এটির snapshotলক্ষ্য দিয়ে করতে পারেন ।

মূলত, আপনি যখন লিখনযোগ্য স্ন্যাপশট তৈরি করেন আপনি LVM যেমন করেন তেমনই করতে চান।

dev=/dev/read-only-device
ovl=/path/to/overlay.file
newdevname=newdevice
size=$(blockdev --getsz "$dev")

loop=$(losetup -f --show -- "$ovl")
printf '%s\n' "0 $size snapshot $dev $loop P 8" |
  dmsetup create "$newdevname"

তারপরে আপনি ওভারলেড ডিভাইস হিসাবে অ্যাক্সেস করতে পারেন /dev/mapper/newdevice

আপনার যদি একই সময়ে মূল ডিভাইসে অ্যাক্সেসের প্রয়োজন হয় তবে আপনি এটি করতে পারেন:

printf '%s\n' "0 $size snapshot-origin $dev" |
  dmsetup create originaldevice

এবং এটি অ্যাক্সেস /dev/mapper/originaldevice

আপনি সেই ডিভাইসে লিখতে পারেন, তারপরে স্ন্যাপশট ডিভাইসে লেখা অংশগুলি ছাড়াও ওভারলে ফাইলটিতে স্ন্যাপশট-উত্সটিতে লেখার সময় ওভাররাইট করা হওয়া খণ্ডগুলির একটি অনুলিপি থাকবে।

ওভারলে ফাইলটি একটি বিচ্ছিন্ন ফাইল হতে পারে। (উদাহরণস্বরূপ, এটি এটি হিসাবে তৈরি করুন truncate -s10G the-file), এবং মূল ডিভাইসের মতো বড় হতে হবে না। এটি কতটা পূর্ণ তা আপনি বলতে পারেন dmsetup status "$newdevname"

দ্রষ্টব্য: স্ন্যাপশট ডিভাইসে আকার এবং সামগ্রীর পুনঃনির্দিষ্টতা রয়েছে


1
পরবর্তী আকর্ষণীয় প্রশ্নটি হল যে সংগৃহীত পরিবর্তনগুলি পরে মূল ডিভাইসে একত্রিত হতে পারে
ইমজ - ইভান জ্যাকারিয়াশেভ

1
পরবর্তী উত্তর: হ্যাঁ। "ডিভাইস-ম্যাপার আপনাকে ... *) ব্লক ডিভাইসের স্ন্যাপশটটিকে স্ন্যাপশটের উত্স ডিভাইসে ফিরে একত্রিত করতে দেয়" " কার্নেল.আর।
ডক /

স্ন্যাপশট টার্গেটের চুনসাইজ প্যারামিটারটি (আপনার ক্ষেত্রে 8) অর্থ কী? কীভাবে এটি নির্বাচন করবেন?
ইম্জ - ইভান জ্যাকারিয়াশেভ

1
@ টম ডিএম টেবিলগুলিতে এই সংখ্যাগুলি সর্বদা 512 বাইট ইউনিটকে বোঝায়, অন্তর্নিহিত ব্লক ডিভাইসের শারীরিক ক্ষেত্রের আকার নয়। সুতরাং 4K সেক্টর সহ কোনও ডিভাইসের শীর্ষে স্ন্যাপশটের 8 টির বেশি নয় এমন কিছু ব্যবহার করা খারাপ ধারণা হবে।
স্টাফেন চেজেলাস

1
@ টম, চুনসাইজ স্ন্যাপশট করার গ্রানুলারিটি নির্ধারণ করে। এটি ওভারলে ফাইলের জন্য এফএসের ব্লককেজ সম্পর্কে নয়, তবে ব্লক ডিভাইসে বসে যা আছে তার উপর আই / ও অপারেশনগুলির গ্যানুলারিটি সম্পন্ন হয়। অতএব রোলব্যাক। গেটজ বনাম গেটসাইজের জন্য ধন্যবাদ।
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.