কীভাবে বিআরটিএফএস ফাইল সিস্টেমকে বিভিন্ন মাধ্যমের স্ন্যাপশটের ভাগ করে নেওয়ার ডেটা সংরক্ষণ করা যায়


9

আমি বিটিআরএফএস অভিযান সক্ষমতার চেষ্টা করার সিদ্ধান্ত নিয়েছি। আমি একটি বিটিআরএফ সেট আপ

sudo mkfs.btrfs -m raid10 -d raid10 /dev/sda9 /dev/sdb9 /dev/sdc9 /dev/sdd9

এখন আমি আমার বিদ্যমান বিটিআরএফস পার্টিশনটি ক্লোন করতে চাই, (যা লিনাক্স-রেডের শীর্ষে রয়েছে)। একটি সাধারণ ব্যবহার করতে পারে না cp -a, কারণ সেখানে 40 টিরও বেশি স্ন্যাপশট-ভিত্তিক ব্যাকআপ রয়েছে (যা আমি সংরক্ষণ করতে চাই), এবং আমি একাধিকবার ছাড়তে পারে এমন সমস্ত স্টোরেজ কেবলমাত্র ওভারফিল করব।

এখন পর্যন্ত আমি দুটি বিকল্প দেখতে পাচ্ছি:

partclone.btrfs -s /path/to/original/fs -o /dev/sda9 -b

এবং আমি মনে করি আমারও এটির দরকার ছিল btrfs balance start /dev/sda9

এবং

কর: বর্ধিত কপি cp -aস্টোরেজ হিসাবে যতটা ফিট করে, এবং তারপরে bedupফাইলগুলি নকল করতে এবং লুপ ব্যবহার করে।

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


প্রথম প্রশ্নটি কেবল প্রশ্নের বাইরে; তবে দুর্দান্ত সরঞ্জামটি partclone.btrfsহ'ল এটি স্পষ্টতই মাল্টি-ডিভাইস ফাইল সিস্টেমগুলিকে সমর্থন করে না। :-(

উত্তর:


7

আমি 2 বছর আগে একটি অনুরূপ প্রশ্ন জিজ্ঞাসা করেছি ।

তবে আমার ক্ষেত্রে, আমি কেবলমাত্র রেড 0-তে একটি ডিভাইস অনুলিপি করার পরিকল্পনা করছিলাম।

অবশেষে আমি একটি সমাধান খুঁজে পেয়েছি । সেই সময় আপনি raid0 থেকে raid10 তে রূপান্তর করতে পারবেন না, তবে কার্নেল ৩.৩ থেকে দেখে মনে হচ্ছে এটি এখন আপনি পারেন। যাতে সমাধানটি আপনার পক্ষে শেষ পর্যন্ত কার্যকর হতে পারে।

এই পদ্ধতির সাথে একটি সমস্যা হ'ল এটি fsuid অনুলিপি করে। যার অর্থ আপনি একই মেশিনে এফএস এবং এর অনুলিপি উভয়ই মাউন্ট করতে পারবেন না। সেই সময়ে, কোনও fsuidএফএস পরিবর্তন করার কোনও সরঞ্জাম ছিল না , তবে এটি এখন পরিবর্তিত হতে পারে।

মূল ডিভাইসের শীর্ষে একটি অনুলিপি স্তর যুক্ত করার ধারণাটি এটিতে লেখা যেতে পারে তবে কোনও পরিবর্তন অন্য কোথাও করা হয় যা আপনি পরে বাতিল করতে পারেন। এর অর্থ আপনার অতিরিক্ত সঞ্চয় স্থান প্রয়োজন (উদাহরণস্বরূপ বাহ্যিক ড্রাইভে)।

তারপরে মূলটির পরিবর্তে সেই COW'D FS টি মাউন্ট করুন, FS অনুলিপিটির জন্য ডিভাইসগুলি যুক্ত করুন এবং COW এর ডিভাইসটি সরান।

অনুলিপি অনুলিপি জন্য, আপনি ডিভাইস ম্যাপার ব্যবহার করতে পারেন।

লেখার ক্ষেত্রে ডিসপোজেবল কপির জন্য, আমি এখানে একটি লুপ ডিভাইস ব্যবহার করি।

এর আপনি আপনার ক্লোন করতে চান বলতে দাও /dev/sdaসম্মুখের /dev/sd[bcde]:

COW পিছনের দোকান তৈরি করুন:

truncate -s 100G /media/STORE/snap-store
losetup /dev/loop0 /media/STORE/snap-store

এখন মাউন্ট করা থাকলে অরিজিনাল এফএস আনমাউন্ট করুন এবং modprobe -r btrfsএটি হস্তক্ষেপ করছে না এবং এটির ডিভাইস স্ক্যানটি ভুলে যেতে পারে তা নিশ্চিত করে।

তারপরে COW'd ডিভাইসটি তৈরি করুন:

echo "echo 0 $(blockdev --getsize /dev/sda) snapshot /dev/sda /dev/loop0 N 8 | dmsetup create cowed

এখন এটির /dev/mapper/cowedমতো /dev/sdaযা এতে লিখিত কিছু শেষ হয়ে যাবে /dev/loop0এবং /dev/sdaতা অচ্ছুত হবে।

এখন, আপনি এটি মাউন্ট করতে পারেন:

mount /dev/mapper/cowed /mnt

অন্যান্য ডিভাইস যুক্ত করুন:

btrfs dev add /dev/sd[bcde] /mnt

এবং পুরানোটি সরান:

btrfs dev del /dev/mapper/cowed /mnt

এটি শেষ হয়ে গেলে, আপনি শাটডাউন এবং আনপ্লাগ করতে বা /dev/sdaপঠনযোগ্যভাবে তৈরি করতে চাইতে পারেন কারণ এটি অন্যদের মতো একই রকম ফসুইড পেয়েছে, btrfsএখনও এটির সাথে বিচলিত হতে পারে।

এখন, আমি যদি সঠিকভাবে বুঝতে পারি তবে ধরে নিই যে আপনার কাছে সাম্প্রতিক বিটিআরএফএস-প্রগতি রয়েছে, আপনি একটি করতে সক্ষম হবেন:

btrfs balance start -d convert=raid10 /mnt

RAID10 এ রূপান্তর করতে। তত্ত্ব অনুসারে, এটি নিশ্চিত হওয়া উচিত যে প্রতিটি ডেটা অংশ কমপক্ষে 2 টি ডিস্কে অনুলিপি করা হয়েছে।

আমি দৃ strongly়ভাবে সুপারিশ করব যে আপনি প্রথমে লুপ ডিভাইসে একটি ডামি বিটিআরএফ পরীক্ষা করে নিন যা মেমোরি থেকে আসে এবং আমি এটি ভুল করে ফেলতে পারি (উদাহরণস্বরূপ আমার সম্পাদনার আগে আমার প্রাথমিক উত্তর দেখুন)।

নোট করুন যে কার্নেল ৩.6 থেকে, বিটিআরএফএস প্রয়োগগুলি zfs এর মতো কিছু পাঠায় / গ্রহণ করে। এটি আপনার পক্ষে একটি বিকল্প হতে পারে।


দুর্দান্ত উত্তর, আপনাকে ধন্যবাদ। আমি এটি পরীক্ষা করব। এখন আমি প্রেরণ / গ্রহণ নিয়ে পরীক্ষা নিরীক্ষা করছি।
অ্যাডাম রাইজকোভস্কি

@ স্টাফেন চেজেলাস gmane লিঙ্কগুলি মারা গেছে (সম্ভবত চিরকালের জন্য) আপনি কি আপনার উত্তর সামঞ্জস্য করতে পারেন?
জোনাস স্টেইন

4

স্টিফেনের ধারণা বিটিআরএফএস বিল্টিন সরঞ্জামগুলির মাধ্যমে করা যেতে পারে (এ কারণেই এটি দুর্দান্ত): পুরানো বিটিআরএফসকে একটি বীজ ডিভাইস তৈরি করুন btrfstune -S 1 /dev/device, ডিভাইস যুক্ত করুন , বীজ ডিভাইসটি সরান, করুন btrfs balance start। একটি বীজ ডিভাইস একটি পঠনযোগ্য ডিভাইস যা পঠনযোগ্য লিখনযোগ্য ফাইল সিস্টেমের অংশ হতে পারে।


1

আমি @ অজিসের বীজ ব্যবহারের পরামর্শ অনুসরণ করার চেষ্টা করেছি তবে এতে সমস্যা ছিল; বীজ ডিভাইসটি সরানোর চেষ্টা করার সময় সিস্টেমটি একটি ত্রুটি ফেলেছিল এবং আমি এটি অতিক্রম করতে পারি না। তারপরে আমি দেখতে পেলাম যে (এখন - বিটিআরএফএস-প্রগেস v3.19-64-g19a806f, সম্ভবত আগে নয়) কমান্ডটি রয়েছে:

  btrfs replace start [-Bfr] <srcdev>|<devid> <targetdev> <path>

যা আমার বিদ্যমান বিটিআরএফএস ফাইল সিস্টেমকে (যেটি একটি এলভিএম লজিক্যাল ভলিউমে ছিল) একটি নতুন পার্টিশনে একটি ডডডলকে ক্লোনিং করে তোলে। মনে রাখবেন যে মে ২০১৫ তে এটি RAID5 / 6 প্রোফাইলের জন্য কাজ করে না - সম্পূর্ণ তথ্যের জন্য ম্যান পৃষ্ঠাটি দেখুন।


1
btrfs replace startব্যাকআপ-উদ্দেশ্যে কখনও ব্যবহার করবেন না !! এটি আপনার ডিভাইস ট্রিটিকে দুর্নীতিগ্রস্ত করে এবং ড্রাইভটিকে অযোগ্য করে তোলে! ত্রুটিগুলি থেকে পুনরুদ্ধার করা আমার পক্ষে অসম্ভব, তাই আমি ডিডি- টোল দিয়ে অন্য একটি ব্লক ডিভাইস থেকে একটি চিত্রের অনুলিপি পুনরুদ্ধার করেছি । শুধুমাত্র btrfs replaceচূড়ান্ত ড্রাইভ স্থানান্তরের জন্য ব্যবহার করুন ।
কর্মাস

0

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

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

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

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

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


বিকল্প 2 - btrfs-clone

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

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