কিভাবে একটি বিটিআরএফএস ফাইল সিস্টেম কপি করবেন


17

কীভাবে একটি বিটিআরএফএস ফাইল সিস্টেমের সামগ্রীর সম্পূর্ণ অনুলিপি তৈরি করতে পারেন ? দ্বারা পূর্ণ অনুলিপি আমি না শুধুমাত্র মানে বর্তমান ডাটা , কিন্তু বিভিন্ন সাবভলিউমগুলি দেখুন তাদের সঙ্গে স্ন্যাপশট একই বিষয়বস্তুর ব্লক অনুরূপ না: আদর্শভাবে তাদের গাভী স্ট্রাকচার (অর্থাত সংরক্ষণের।

দেখে মনে হচ্ছে এটি একটি ব্লক-স্তরের অনুলিপি (যেমন সহ dd) ভাল ধারণা নয়, যেহেতু এটি ইউইউডিটিকে নকল করে, এবং সহজেই এটি পরিবর্তন করার কোনও উপায় নেই , দৃশ্যত।

উত্তর:


4

বিকল্প 1 - বোবা ডেটা কপি তারপরে ইউআইডি পরিবর্তন করুন

নিশ্চিত করুন যে উত্সের পার্টিশনটি আনমাউন্ট হয়েছে এবং স্বয়ংক্রিয়ভাবে চলবে না।

ব্যবহারের পারেন dd(ধীর, বোবা) অথবাpartclone.btrfs -b -s /dev/src -o /dev/target

btrfstune -uঅনুলিপি করার পরে এবং মাউন্টিংয়ের আগে ইউআইডি পরিবর্তন করতে ব্যবহার করুন ।

ডাটা সাবধানবাণী : কি না করার জন্য (স্বয়ংক্রিয়) চেষ্টা মাউন্ট পারেন মূল বা কপি পর্যন্ত UUID পরিবর্তিত হয়েছে


বিকল্প 2 - btrfs-clone

আমি ব্যক্তিগতভাবে চেষ্টা করে দেখিনি btrfs-clone, তবে এটি বিদ্যমান বিটিআরএফএস ফাইল সিস্টেমকে একটি নতুন করে ক্লোন করার পরিকল্পনা করে, প্রতিটি সাবভলিউমকে ক্রমানুসারে ক্লোন করে।


1
সম্পূর্ণতার জন্য, এটি বিটিআরএফএস-প্রগস-এর বিকল্প হিসাবে 2015 সালে যুক্ত করা হয়েছিল: github.com/kdave/btrfs-progs/commit/…
goncalopp

16

আমি আজ (2016-05-06) এর মতো কোনও তৈরি সমাধান খুঁজে পাইনি, তবে কপিরাইট-অন-রাইটিং হ্যান্ডলিং সহ আমার উদ্দেশ্যে সমস্যাটি সমাধান করেছি। "ক্লোন" /sourceকরার পদক্ষেপগুলি হ'ল /target:

  1. সাবভলিউমগুলি দেখুন দ্বারা আদেশ একটি তালিকা পাওয়া ogen: btrfs subvolume list -qu --sort ogen /source। পূর্ববর্তী উপর নির্ভর করে স্ন্যাপশট বা সাবভলিউমগুলি প্রথমে পরিচালনা করা হয় তা গ্যারান্টির জন্য বাছাই করা সম্ভবত যথেষ্ট। অনুলিপি-অনুলিপি মোকাবেলার জন্য এটি গুরুত্বপূর্ণ, কারণ আমাদের প্রথমে বেস ভলিউম স্থানান্তর করা দরকার।

  2. সমস্ত সাবভলিউমকে কেবলমাত্র পঠন করে ব্যবহার করে তৈরি করুন btrfs property set -ts /source/some-volume ro true

  3. এখন, উপরের তালিকা থেকে প্রতিটি উপভলিউমের জন্য, শীর্ষে শুরু করে, নিম্নলিখিতটি করুন:

    1. যদি ভলিউমের কোনও প্যারেন্ট ইউআইউডি না থাকে (যেমন প্রদর্শিত হয় -) বা প্যারেন্ট ইউআইউডি তালিকায় আর উপস্থিত না থাকে, চালান:btrfs send /source/some/volume | btrfs receive /target/some/

    2. যদি ভলিউমের কোনও প্যারেন্ট ইউআইডি থাকে যা এখনও বিদ্যমান রয়েছে, আমাদের এটি ইতিমধ্যে হস্তান্তর করা উচিত ছিল --sort ogenএবং ডেটা অনুলিপি এড়ানোর জন্য আমরা সেইটিকে বেস হিসাবে ব্যবহার করতে পারি। অতএব, তালিকায় প্যারেন্ট ইউআইডির পথটি সন্ধান করুন এবং চালান: btrfs send -p /source/parent/volume/ -c /source/parent/volume/ /source/some/volume/ | btrfs receive /target/some/(বিটিআরএফএস সম্ভবত -pযুক্তিটি স্বয়ংক্রিয়ভাবে অনুমান করতে পারে তবে আমি স্পষ্ট হওয়া পছন্দ করি)।

    3. উপরে কমান্ড এক চালানোর পর লক্ষ্য এবং সোর্স আবার read-write করুন: btrfs property set -ts /source/some/volume ro false; btrfs property set -ts /target/some/volume ro false। উত্সটি পূর্বে কেবল পঠনযোগ্য হলে এই পদক্ষেপটি এড়ানো যায়।

এটি অনেক ক্ষেত্রে পরিচালনা করা উচিত। আদেশ সহকারে:

  1. সাবভলিউমগুলি / স্ন্যাপশটগুলি নেস্ট করার সময় অর্ডার দেওয়ার ক্ষেত্রে কিছু জটিলতা থাকতে পারে।

  2. সম্পূর্ণ প্রক্রিয়াটি স্ক্রিপ্ট করার সময় অবশ্যই আরও মজাদার।

  3. btrfs sendএকাধিক ক্লোন উত্স ( -c) যুক্তি গ্রহণ করে । পিতামাতার ভলিউম পাথটি কেবল নির্দিষ্ট করা নয়, যে কোনও পূর্বপুরুষের বা কেবল পূর্বে পাঠানো কোনও ভলিউম নির্দিষ্ট করা সুবিধাজনক হতে পারে। এটি এখানে কোনও পার্থক্য করেনি, তবে এটি হতে পারে - কেবলমাত্র অনুমান - কিছু ক্ষেত্রে ডেটা নকল এড়াতে সহায়তা করে help

  4. আমি স্ন্যাপশট বা সাবভলিউমের কোনও মেটা তথ্য যদি হারিয়ে যায় তবে আমি অনিশ্চিত, তবে বেশিরভাগ ব্যবহারের ক্ষেত্রে আকর্ষণীয় অন্য সব কিছু সংরক্ষণ করা উচিত।

পুরো প্রক্রিয়াটি আমাকে ৩৮.৮ গিগাবাইট ব্যবহৃত (according.৮ গিগাবাইট df) ব্যবহৃত একটি জিবি ব্যবহৃত 10 জিবি চিত্রের সাথে 3.8 জিবি ব্যবহার করে একটি 800 গিগাবাইটের ফাইল সিস্টেমটি স্থানান্তরিত করতে সহায়তা করেছিল । ছাড়াই স্থানান্তর করা -pএবং -cপ্রায় 190 জিবি ব্যবহার করা হত, সুতরাং ডেটা ডুপ্লিকেশনটি প্রকৃতপক্ষে এড়ানো হয়েছিল।


ভাল উত্তর, ধন্যবাদ। আপনি কি ব্যাখ্যা করতে পারবেন ogen?
ড্রামফায়ার

@ ড্রামফায়ার ogenহল সাবভলিউমের "উত্স প্রজন্ম"। আমাকে স্বীকার করতে হবে যে আমি পার্থক্যগুলি সম্পূর্ণরূপে বুঝতে পারি না বা (অ-উত্স) প্রজন্মটি সঠিকভাবে ব্যবহার করা হবে কিনা, তবে কিছু পরীক্ষা ধরে ধরেছি যে এটি আরও ভাল কাজ করেছে (অনুলিপি এড়ানো)। একটি সাবভলিউমের উপর ভিত্তি করে স্ন্যাপশট তৈরি করার সময় প্রজন্মটি আপডেট হবে বলে মনে হয়, ওজেন তা করে না। আমি কিছু অনুসন্ধান সম্পর্কে শুনতে আগ্রহী হবে। আইআরসি বা বিটিআরএফএস মেইলিং লিস্টে পরীক্ষা করা সম্ভবত সেরা।
থমাস লুজাত

2
আমি কেবল @ থমাসলুজাতের অ্যালগরিদম নিয়েছি, এর আশেপাশে কিছু ফ্লাফ যুক্ত করেছি (ত্রুটি পরীক্ষা করা ইত্যাদি) এবং এটি এখানে রেখেছি : github.com/jernst/btrfs-copy-filesystem/blob/master/… । এটি আমার সমস্যাটিকে দূষিত ডিস্কটি বন্ধ করার জন্য কাজ করেছে এবং এটি অন্য কারও জন্য কাজ করবে এমন কোনও গ্যারান্টি নেই। তবে আমি যাইহোক এখানে পোস্ট করছি এই ক্ষেত্রে কোডটি স্ক্র্যাচ বাদে অন্য কোথাও থেকে শুরু করতে চায়। বর্তমানে একটি নতুন ইউবিওএস পদ্ধতির উপর নির্ভর করে তবে পোর্ট করা সহজ হওয়া উচিত।
জোহানেস আর্নস্ট

6

আমি পাইথন টুল তৈরি করেছি যা এটি করতে পারে। আমি এটি করেছি কারণ আমি আমার নিজের এবং @ জোহানেস আর্নস্টের উভয় ক্ষেত্রেই থমাস লুজাটের পদ্ধতির চেষ্টা করেছি এবং ক্লোনিং পদ্ধতিতে ব্যবহৃত স্থানটি 20 গিগাবাইট থেকে 40 গিগাবাইটে বেড়েছে। আমি ভেবেছিলাম আরও দক্ষতার কিছু দরকার ছিল।

এই সাধারণ ফাইল সিস্টেমের ইতিহাস বিবেচনা করুন:

current ---------------------------------\
             |       |        |          |
           snap4   snap3    snap2      snap1

থমাসের অ্যালগরিদম দিয়ে, "কারেন্ট" প্রথমে ক্লোন করা হবে এবং সমস্ত স্ন্যাপশট ("বর্তমান" এর পূর্বের রাজ্যের স্ন্যাপশট) ক্লোন উত্স / পিতামাতার হিসাবে "কারেন্ট" ব্যবহার করবে। স্পষ্টতই, স্ন্যাপ 4-এ স্ন্যাপ 3, স্ন্যাপ 3-এ ইত্যাদির ভিত্তি করা ভাল to

এবং এই হিমশৈল এর টিপ; জটিল ইতিহাস সহ একটি বিটিআরএফএস ফাইল সিস্টেমে "সেরা" ক্লোন উত্সগুলি (স্থান সাশ্রয়ের শর্তাবলী) সন্ধান করা একটি অ-তুচ্ছ সমস্যা। আমি এই সমস্যাটি সমাধান করার জন্য 3 টি কৌশল নিয়ে এসেছি, যা মনে হয় স্থানটি আরও দক্ষতার সাথে ব্যবহার করা হচ্ছে। এক আসলে উত্সের চেয়ে সামান্য নীচে ক্লোনগুলির আকারের ফলস্বরূপ।

আপনি যদি আগ্রহী হন তবে আপনি গিথুব পৃষ্ঠায় বিশদটি পড়তে পারেন ।



2

এর সাথে btrfs-send, যা আমি সর্বশেষে দেখেছি, এখনও পরীক্ষামূলক প্যাচগুলি বিটিআরএফএস মেলিং তালিকার চারপাশে ভাসছিল।


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