লজিক্যাল ভলিউম (lv) কে অন্য ভলিউম গ্রুপ (vg) এ কীভাবে স্থানান্তর / অনুলিপি করবেন?


17

মূলত, আমি বেশ কয়েকটি লজিক্যাল ভলিউম (এলভি) একটি নতুন ভলিউম গ্রুপ (ভিজি) এ সরিয়ে / অনুলিপি করতে চাই । নতুন ভলিউম গ্রুপটি শারীরিক ভলিউমের একটি নতুন সেটে থাকে। এই লজিক্যাল ভলিউমের ভিতরে থাকা ডেটার ক্ষতি না করে কেউ কীভাবে নিরাপদে তা করতে জানেন ??


আপনি আরো বিবরণ প্রদান করতে পারেন ? আপনি কীভাবে নতুন ভিজি এবং এলভি করবেন তা জানেন? আপনি কি ডেটা পার্টিশন বা আপনার রুট পার্টিশনটি সরাচ্ছেন?
প্যান্থার

@ বোধি জাজেন: আসলে আমি এক ধরণের ডেটা পার্টিশন সরিয়ে নেওয়ার চেষ্টা করছিলাম। আমি "ধরণের" দ্বারা যা বোঝাতে চেয়েছি তা হ'ল লজিক্যাল ভলিউমগুলি ভার্চুয়াল মেশিন। (অর্থাৎ সেই লজিক্যাল ভলিউমগুলি ভার্চুয়াল মেশিনগুলিতে ব্লক ডিভাইস হিসাবে উপস্থিত হবে) যাইহোক, আমি পরিস্থিতি নিজের মতো করে পরিচালনা করতে সক্ষম হয়েছি। পদক্ষেপগুলি আমার উত্তরে দেওয়া আছে। তবে, আপনি এবং আপনারা সবাই আমার পদ্ধতি সম্পর্কে মন্তব্য করতে স্বাগত। যদি এই ধরণের জিনিস করার আরও ভাল উপায় (গুলি) থাকে তবে দয়া করে এটিকে ভাগ করে নেওয়ার যথেষ্ট দয়া করুন। :)
কেউ

আমি প্রথমে নতুন পিভি / এলভি তৈরি করতাম, ভিএম বন্ধ করে দিতাম, তারপর ডিডি দিয়ে ডেটা অনুলিপি করতাম, নতুন ভিএম বুট করতাম এবং নিশ্চিত যে এটি কাজ করেছে।
প্যান্থার

উত্তর:


12

ভিজারজ আপনাকে দুটি ভিজিকে একত্রিত করতে দেয়। আপনি কোনও ভিজির মধ্যে ডেটা স্থানান্তর করতে pvmove ব্যবহার করতে পারেন এবং আপনি যদি একাধিক ভিজিতে ফিরে যেতে চান তবে vgsplit ব্যবহার করতে পারেন।


এক নোট. এটি করার জন্য, আপনার অবশ্যই অনলাইন এলভিটিকে অন্য ভিজিতে স্থানান্তর করার জন্য অস্থায়ী ডিভাইস ব্যবহার করা উচিত। অবশ্যই স্থানান্তর করার পরে আপনার / etc / fstab এবং অন্যান্য প্রভাবিত কনফিগারেশন আপডেট করা উচিত এবং পুনরায় বুট করার জন্য কিছু অফলাইন সময় পরিকল্পনা করা উচিত এবং শেষ পর্যন্ত কিছু কনফিগার আপডেট করা উচিত। আপনি যদি rootfs বা বুটফেস দিয়ে কিছু ক্রিয়া করেন তবে আপনার পুনরুদ্ধারের মূল সিস্টেমের জন্য কিছু লিনাক্স লাইভ ডিস্ট্রো পাওয়া উচিত ছিল।
Znik

10

প্রথমে একটি .img ফাইলটিতে এটি অনুলিপি করার কোনও কারণ নেই, প্রথমে প্রথমে lvcreate করুন, তারপরে সরাসরি এটি অনুলিপি করুন:

lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume
lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name
dd if=/dev/volume-group/snapshot-name of=/dev/new-volume-group/new-logical-volume

2
এটি সামান্য খুব সংক্ষিপ্ত। উল্লিখিত আকারগুলি হুবহু কী তা তা বলে না - উদাহরণস্বরূপ <আকার> খুব ছোট হতে পারে, কারণ এটি কেবল স্ন্যাপশট ভিন্নতার জন্য।
জন্মগ্রহণ করুন

1
@ একটি বৈধ পয়েন্ট জেনেছেন, তবে তিনি নীচে কারও জবাবের জবাব দিচ্ছিলেন না, যা এই সময়ে প্রথম ছিল। অতিরিক্ত প্রসঙ্গে এটি পড়ুন।
টোবিয়াস জে

7

ঠিক আছে, আমি পরিস্থিতিটি নিজের মতো করে পরিচালনা করতে সক্ষম হয়েছি। আমি যে পদক্ষেপ নিয়েছি তা এখানে:

1) লক্ষ্যযুক্ত লজিকাল ভলিউমের একটি স্ন্যাপশট নিন।

lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume

দ্রষ্টব্য: স্ন্যাপশটের আকার আপনার ইচ্ছামতো বড় বা ছোট হতে পারে। কি স্ন্যাপশটের সময়কালে পরিবর্তনগুলি ক্যাপচার করার জন্য পর্যাপ্ত জায়গা রয়েছে তা গুরুত্বপূর্ণ।

2) স্ন্যাপশট সামগ্রী ব্যবহার করে একটি চিত্র অনুলিপি তৈরি করুন dd

dd if=/dev/volume-group/snapshot-name of=/tmp/backup.img

3) লক্ষ্যমাত্রা (নতুন) ভলিউম গ্রুপে পর্যাপ্ত আকারের একটি নতুন লজিক্যাল ভলিউম তৈরি করুন।

lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name

4) ব্যবহার করে ইমেজ ব্যাকআপ থেকে নতুন লজিক্যাল ভলিউমে ডেটা লিখুন dd

dd if=/tmp/backup.img of=/dev/new-volume-group/new-logical-volume

5) lvremoveএবং rmযথাক্রমে স্ন্যাপশট এবং চিত্র ব্যাকআপ মুছুন ।

এগুলি সমস্ত লোকেরা ... আশা করি এটি কারও পক্ষে সহায়তা করবে :)


কারও কাছে যদি আরও ভাল বিকল্প / পদ্ধতি থাকে তবে আমাকে তাও
কেউ

অস্থায়ীভাবে স্টোর ব্যাকআপের জন্য আইসিং ব্যাকআপ.আইএমজি সম্পূর্ণ বিনাবিহীন is আপনি সোর্স স্ন্যাপশট থেকে সরাসরি মাউন্ট না হয়ে অবস্থিত গন্তব্য এলভিতে ডিডি করতে পারেন।
Znik

3

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

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

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

সংক্ষিপ্তসার: আমরা লজিকাল ভলিউম lv1 সহ ভলিউম গ্রুপ vg1 এবং lv2 সহ vg2 তৈরি করি এবং ভিজি 2-তে এলভি 1 এর একটি অনুলিপি তৈরি করি।

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

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

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

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

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

pvcreate /dev/loop1 /dev/loop2

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

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

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

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

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

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

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

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) এই কমান্ডগুলির বেশিরভাগটি রুট হিসাবে চালানো দরকার।

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

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

Logical volumes in `vg1` must be inactive

এবং বিভক্ত:

Logical volume `vg2/lv1` must be inactive.

1
এটা ঠিক অর্থহীন। আপনাকে ফাইল-সিস্টেমগুলি আনমাউন্ট করতে হবে, ভলিউমগুলি নিষ্ক্রিয় করতে হবে ইত্যাদি You
ব্যবহারকারী 189142

প্রথমত, ব্যবহারকারী 189142 যেমন বলেছে, এটি অর্থহীন। দ্বিতীয়ত, এটি কেবল তখনই প্রয়োগ করা হয় যখন আমরা সরানো ভলিউম ব্যবহার করে পরিষেবাগুলি বন্ধ করতে পারি। 24/7 চলমান পরিষেবাগুলির ক্ষেত্রে এটি সমস্যা এবং টেরাবাইটের সাথে গণনা করা ডেটাগুলির সাথে ভলিউম খুব বড়। এই কারণে, এই পদ্ধতির জন্য খুব দীর্ঘ পরিষেবা সময় প্রয়োজন। এই কারণটি হ'ল সহজেই নতুন ভলিউম তৈরি করা, অনলাইনে আরএসআইএনসি তৈরি করা, তারপরে স্বল্প সময়ের সাথে অনলাইনে আপডেট, রিমাউন্ট এবং ব্যাক সিস্টেমের জন্য অফলাইনে সিএসইএনসি দেওয়া হয়। অবশ্যই খুব ভাল ধারণাটি উত্সের ভলিউম থেকে অপ্রয়োজনীয় ডেটা মুছে ফেলা হয়। হতে পারে সাময়িকভাবে এটিকে কিছু অস্থায়ী জায়গায় নিয়ে যেতে।
Znik

3

4 টি উত্তর এখনও পর্যন্ত সমস্ত মিস করে যে ভলিউমের সঠিক আকার প্রায়শই জানা যায় না। lvdisplayকেবলমাত্র 2 দশমিক স্থানে গোলাকার মানগুলি দেখায় এবং man lvdisplayউপলভ্য বিকল্পগুলির জন্য অন্যান্য কমান্ডগুলিতে কেবল পয়েন্ট করে। নিম্নলিখিতটি এমআইবি নির্বাচন করে, যা 4 টি এমআইবির ডিফল্ট এলভিএম ব্লক আকারের সাথে যথেষ্ট সঠিক:

lvdisplay --units m

MiB এছাড়াও ডিফল্ট একক --sizeএর lvcreate। যদি সন্দেহ হয়, lvdisplayলক্ষ্য ভলিউম তৈরির পরে সঠিক আকারটি ডাবল চেক করুন । তারপরে অনুলিপি তৈরি করতে অন্যান্য উত্তরগুলির মতো এগিয়ে যান। তদুপরি, আমি কপিটি যাচাই করার জন্য সুপারিশ করব , উদাহরণস্বরূপcmp

এখানে কেন একটি স্ন্যাপশট ব্যবহৃত হয় এবং এটি কী সুরক্ষা দেয় এবং সুরক্ষা দেয় না:

  • স্ন্যাপশটটি তৈরি করা হয়েছে যাতে স্ন্যাপশট তৈরি হওয়ার সময় যেমন ছিল তেমন সমস্ত ডেটা অনুলিপি করা হয়। অনুলিপি প্রক্রিয়া চলাকালীন উত্স ভলিউমের ক্রিয়াকলাপগুলি অনুলিপিটিতে প্রতিফলিত হবে না।

  • স্ন্যাপশট ddকমান্ড লাইনের মানব ত্রুটি থেকে উত্সের পরিমাণকে রক্ষা করে । আপনি যদি ঘটনাক্রমে স্ন্যাপশটে লিখেন তবে কেবল স্ন্যাপশটের ডেটা ক্ষতিগ্রস্থ হবে এবং আপনি কেবল স্ন্যাপশটটি সরিয়ে আবার শুরু করতে পারেন।

  • কপি প্রক্রিয়া চলাকালীন লক্ষ্য ভলিউম সুরক্ষিত হয় না। যদি অন্য কোনও অ্যাডমিন (বা একটি স্বয়ংক্রিয় প্রক্রিয়া যেমন ওস-প্রবার অফ dracut) অসম্পূর্ণ ভলিউমটি মাউন্ট করে তবে মাউন্ট জিনিসগুলি স্ক্রু আপ করতে পারে। (এমনকি একটি পঠনযোগ্য মাউন্ট এখনও ভলিউমে জার্নাল এন্ট্রি লিখতে পারে))


2

আমি আমার নিজস্ব প্রস্তাব করব:

umount /somedir/

lvdisplay /dev/vgsource/lv0 --units b

lvcreate -L 12345b -n lv0 vgtarget

dd if=/dev/vgsource/lv0 of=/dev/vgtarget/lv0 bs=1024K conv=noerror,sync status=progress

mount /dev/vgtarget/lv0 /somedir/

যদি সবকিছু ভাল হয় তবে উত্সটি সরান

lvremove vgsource/lv0

যদি উত্সের পরিমাণ খুব বড় হয় এবং পরিষেবা বা সিস্টেম বন্ধ না করা যায় তবে কী হবে?
Znik

0

আপনার যদি ভিজি এ থেকে অন্য ভিজি বিতে লজিক্যাল ভলিউম অনুলিপি করতে হয় তবে আমি একটি আকর্ষণীয় রূপটি ব্যবহার করে পেয়েছি partclone। স্ন্যাপশট এর পরে ডিডি-র সাথে অনুলিপি করা একটি ভাল পদ্ধতি তবে আপনার ফাইল-সিস্টেমগুলি পূর্ণ না হলে ধীর হতে পারে। এই সমাধানটি খুব দ্রুত কারণ এটি কেবল ব্যবহৃত ব্লকগুলি অনুলিপি করে।

  1. প্রথমে উত্সের একটি স্ন্যাপশট তৈরি করুন এলভি
lvcreate --snapshot --size 1G /dev/sourcevg/lv --name lv-backup

--sizeস্ন্যাপশটটি অক্ষম হওয়ার আগে এখানে কতটা লিখন ঘটতে পারে তা এখানে

  1. গন্তব্য ভিজি তে গন্তব্য এলভি তৈরি করুন
lvcreate --size <new_lv_size> /dev/destvg --name newlv

new_lv_size অবশ্যই উত্সের কমপক্ষে আকারের আকার হতে হবে

  1. উত্স lv ব্যাকআপ থেকে গন্তব্য এলভিতে ফাইল-সিস্টেম অনুলিপি করুন
partclone.<fs_type> --dev-to-dev --source /dev/sourcevg/lv-backup --output /dev/destvg/newlv

fs_typeহতে পারে ext4, fat32, btrfs, xfs, ... কোন ফাঃ partclone দ্বারা সমর্থিত

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