একটি লজিকাল ভলিউমকে একটি ভলিউম গ্রুপ থেকে অন্যটিতে স্থানান্তর / অনুলিপি করার কোনও সহজ উপায় আছে? (LVM2)


15

আমি বাড়িতে আমার সার্ভারে একগুচ্ছ ডিস্কগুলি পুনর্বিন্যস্ত করছি এবং আমি নিজেকে একগুচ্ছ এলভিএম লজিক্যাল ভলিউমকে অন্য একটি ভলিউম গ্রুপে স্থানান্তরিত করার ইচ্ছার অবস্থানে দেখতে পেলাম। এটি করার কোন সহজ পথ আছে কি? আমি একটি cplvকমান্ডের উল্লেখ দেখেছি তবে এটি পুরানো বা লিনাক্সের জন্য উপলভ্য এমন কিছু নয় বলে মনে হয়।

উত্তর:


20

আপনি লজিক্যাল ভলিউমের জন্য ব্যবস্থা করতে পারেন উৎস ভলিউম গ্রুপ (বাকি থেকে প্রকৃত ভলিউম একটি পৃথক উপসেট উপর হতে lvconvert sourcevg/sourcelv /dev/pv1 ...মে সাহায্যের), আপনি ব্যবহার করতে পারেন vgsplitএকটি নতুন VG মধ্যে LV বন্ধ বিভক্ত করতে এবং vgmergeনতুন VG একত্রীকরণ লক্ষ্য ভিজি।

যদিও এলভিএমের একটি মিররিং বৈশিষ্ট্য রয়েছে, আপনি ভলিউম গ্রুপগুলির মধ্যে একটি অনুলিপি তৈরি করতে (বুদ্ধিমানভাবে) এটি ব্যবহার করতে পারবেন না, কারণ আয়নাটির উভয় পা অবশ্যই একই ভিজিতে বেঁচে থাকতে পারে এবং সমিতিটি ভাঙ্গা যায় না

আপনি কোনও এলভিএম ভলিউমকে অন্য যেভাবে কোনও ভলিউম অনুলিপি করতে চান সেভাবে অনুলিপি করতে পারেন: উপযুক্ত আকারের একটি লক্ষ্য lv তৈরি করুন, তারপরে সামগ্রীগুলি অনুলিপি করুন dd if=/dev/sourcevg/sourcelv of=/dev/targetvg/targetlv bs=4M। যদি উত্সের ভলিউম সক্রিয় থাকে, আপনি একটি সামঞ্জস্যপূর্ণ অনুলিপি তৈরি করতে LVM উপকার করতে পারেন: প্রথমে উত্স lv এর একটি স্ন্যাপশট নিন lvcreate -s, তারপরে স্ন্যাপশটটি অনুলিপি করুন।


1
ব্রিলিয়ান্ট গিলস .... ভিজিপিএসপ্লিট / ভিজিম্রিজ সম্ভবত ঠিক থাকবে: আমি শারীরিক এক্সটেন্টসগুলিকে নতুন ডিস্কে স্থানান্তর করতে এবং তারপরে ভিজি থেকে পুরানো ভলিউম সরিয়ে ফেলার জন্য আমি পিভিএমভ ব্যবহার করতে পারি।
jkp

লজ্জাজনক, ভিন্ন ভিন্ন আকারের কারণে এটি শেষ পর্যন্ত আমার পক্ষে কাজ করে না। যদি এটি আপনার পক্ষে সমস্যা না হয় তবে আমি প্রস্তাব করি যে এই পদ্ধতিটি সবচেয়ে সহজ হবে।
jkp

এর পরে dd(আপনি যদি পুরানো খণ্ডগুলি ছুঁড়ে ফেলার জন্য তাড়াতাড়ি না করেন), নতুন ফাইল সিস্টেমের ইউআইডি পরিবর্তন করতে ভুলবেন না: tune2fs -U এলোমেলো / দেব / টার্গেটভিগ / টার্গেটলভ
মিডেনোক

2
pvmove -n lvol1 /dev/sdb1 /dev/sdc1

pvmove শারীরিক ভলিউমের মধ্যে ডেটা সরাতে পারে: LVM প্রশাসকের গাইড


10
তবে ভলিউম গ্রুপগুলির মধ্যে নয়।
ম্যাটবিয়ানকো

আমি পুনরাবৃত্তি করছি: এটি দুটি পৃথক ভলিউম গোষ্ঠীর জন্য কাজ করে না
কিসজিরজি

প্রথমে vgextendনতুন পিভি সহ ভিজি 1, তারপরে নতুন পিভিতে pvmoveআপনার এলভি, vgsplitএকটি অস্থায়ী vgmergeভিজি যা আপনি ভিজি 2 তে চলেছেন। তারপরে pvmoveআবার vgreduceমধ্যবর্তী পিভি পড়তে lv থেকে ভিজি 2 মূল পিভি, ভিজি 2 করুন। বা মধ্যবর্তী অনুলিপি এড়াতে, আপনি প্রথমে vg1, lv1 pvmoveএবং vgsplitআবার vg2 থেকে vg1 এ মার্জ করতে পারেন । এটি @ ম্যাটবিয়ানকো এবং @ কিসিগিওরজির আপত্তিগুলির জবাব দেবে এবং এটি @ গিলিসের সমাধানের সমতুল্য তবে স্ন্যাপশট এবং লো-লেভেলের পরিবর্তে ddএকটিpvmove
মার্জ

1

দেবিয়ান প্রসারিত (9.0) এর এলভিএম হিসাবে, 2.02.168-2 , এবং vgmerge, এর সংমিশ্রণটি ব্যবহার করে ভলিউম গ্রুপগুলিতে লজিক্যাল ভলিউমের একটি অনুলিপি করা সম্ভব । যেহেতু সরানো হ'ল একটি অনুলিপি এবং মুছার সংমিশ্রণ, তাই এটি সরানোও কাজ করবে।lvconvertvgsplit

বিকল্পভাবে, আপনি pvmoveকেবল ভলিউম স্থানান্তর করতে ব্যবহার করতে পারেন ।

লুপ ডিভাইস এবং lvconvertঅনুসরণ ব্যবহার করে একটি সম্পূর্ণ স্ব-অন্তর্ভুক্ত উদাহরণ সেশন ।

সারাংশ: আমরা ভলিউম গ্রুপ তৈরি করুন vg1লজিক্যাল ভলিউমের সাথে lv1, এবং vg2সঙ্গে lv2, এবং একটি অনুলিপি তৈরি lv1মধ্যে vg2

ফাইল তৈরি করুন।

truncate pv1 --size 100MB
truncate pv2 --size 100MB

ফাইলগুলিতে লুপ ডিভাইস সেট আপ করুন।

losetup /dev/loop1 pv1
losetup /dev/loop2 pv2

লুপ ডিভাইসে শারীরিক ভলিউম তৈরি করুন (এলভিএম ব্যবহারের জন্য লুপ ডিভাইসগুলি আরম্ভ করুন)।

pvcreate /dev/loop1 /dev/loop2

ভলিউম গ্রুপ তৈরি করুন vg1এবং vg2উপর /dev/loop1এবং /dev/loop2 যথাক্রমে।

vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2

লজিক্যাল ভলিউম তৈরি করুন lv1এবং lv2উপর vg1এবং vg2যথাক্রমে।

lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2

lv1এবং এ Ext4 ফাইল সিস্টেম তৈরি করুন lv2

mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2

Allyচ্ছিকভাবে, কিছু লিখুন lv1যাতে আপনি পরে অনুলিপিটি সঠিকভাবে তৈরি করাতে পারেন can vg1নিষ্ক্রিয় করুন ।

vgchange -a n vg1

পরীক্ষা মোডে মার্জ কমান্ড চালান। এটিতে একীভূত lv1হয় lv2

vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1

এবং তারপর বাস্তব জন্য।

vgmerge -A y -l -v vg2 vg1

তারপরে lv1ব্যবহার করা থেকে একটি RAID 1 মিরর জুড়ি তৈরি করুন lvconvert। <> যুক্তি বলে lvconvertআয়না প্রতিলিপি করে lv1_copyউপর /dev/loop2

lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2

তারপরে আয়না বিভক্ত করুন। নতুন এলভি এখন lv1_copy

lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1

vg2নিষ্ক্রিয় করুন ।

vgchange -a n vg2

তারপরে (পরীক্ষার মোড)

vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1

সত্যি

vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1

ফলাফল আউটপুট:

lvs
[...]
lv1        vg1       -wi-a-----  12.00m
lv1_copy   vg2       -wi-a-----  12.00m
lv2        vg2       -wi-a-----  12.00m

মন্তব্য:

1) এই কমান্ডগুলির বেশিরভাগটি রুট হিসাবে চালানো দরকার।

2) দুটি ভলিউম গ্রুপে লজিক্যাল ভলিউমের নামের কোনও নকল থাকলে, vgmergeঅগ্রসর হতে অস্বীকার করবে।

3) সংযুক্তিতে:

Logical volumes in `vg1` must be inactive

এবং বিভক্ত:

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