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


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.