মূলত, আমি বেশ কয়েকটি লজিক্যাল ভলিউম (এলভি) একটি নতুন ভলিউম গ্রুপ (ভিজি) এ সরিয়ে / অনুলিপি করতে চাই । নতুন ভলিউম গ্রুপটি শারীরিক ভলিউমের একটি নতুন সেটে থাকে। এই লজিক্যাল ভলিউমের ভিতরে থাকা ডেটার ক্ষতি না করে কেউ কীভাবে নিরাপদে তা করতে জানেন ??
মূলত, আমি বেশ কয়েকটি লজিক্যাল ভলিউম (এলভি) একটি নতুন ভলিউম গ্রুপ (ভিজি) এ সরিয়ে / অনুলিপি করতে চাই । নতুন ভলিউম গ্রুপটি শারীরিক ভলিউমের একটি নতুন সেটে থাকে। এই লজিক্যাল ভলিউমের ভিতরে থাকা ডেটার ক্ষতি না করে কেউ কীভাবে নিরাপদে তা করতে জানেন ??
উত্তর:
ভিজারজ আপনাকে দুটি ভিজিকে একত্রিত করতে দেয়। আপনি কোনও ভিজির মধ্যে ডেটা স্থানান্তর করতে pvmove ব্যবহার করতে পারেন এবং আপনি যদি একাধিক ভিজিতে ফিরে যেতে চান তবে vgsplit ব্যবহার করতে পারেন।
প্রথমে একটি .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
ঠিক আছে, আমি পরিস্থিতিটি নিজের মতো করে পরিচালনা করতে সক্ষম হয়েছি। আমি যে পদক্ষেপ নিয়েছি তা এখানে:
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
যথাক্রমে স্ন্যাপশট এবং চিত্র ব্যাকআপ মুছুন ।
এগুলি সমস্ত লোকেরা ... আশা করি এটি কারও পক্ষে সহায়তা করবে :)
দেবিয়ান প্রসারিত (9.0) এর এলভিএম হিসাবে, 2.02.168-2 , এবং vgmerge
, এর সংমিশ্রণটি ব্যবহার করে ভলিউম গ্রুপগুলিতে লজিক্যাল ভলিউমের একটি অনুলিপি করা সম্ভব । যেহেতু সরানো হ'ল একটি অনুলিপি এবং মুছার সংমিশ্রণ, এটি সরানোও কাজ করবে।lvconvert
vgsplit
বিকল্পভাবে, আপনি 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.
4 টি উত্তর এখনও পর্যন্ত সমস্ত মিস করে যে ভলিউমের সঠিক আকার প্রায়শই জানা যায় না। lvdisplay
কেবলমাত্র 2 দশমিক স্থানে গোলাকার মানগুলি দেখায় এবং man lvdisplay
উপলভ্য বিকল্পগুলির জন্য অন্যান্য কমান্ডগুলিতে কেবল পয়েন্ট করে। নিম্নলিখিতটি এমআইবি নির্বাচন করে, যা 4 টি এমআইবির ডিফল্ট এলভিএম ব্লক আকারের সাথে যথেষ্ট সঠিক:
lvdisplay --units m
MiB এছাড়াও ডিফল্ট একক --size
এর lvcreate
। যদি সন্দেহ হয়, lvdisplay
লক্ষ্য ভলিউম তৈরির পরে সঠিক আকারটি ডাবল চেক করুন । তারপরে অনুলিপি তৈরি করতে অন্যান্য উত্তরগুলির মতো এগিয়ে যান। তদুপরি, আমি কপিটি যাচাই করার জন্য সুপারিশ করব , উদাহরণস্বরূপcmp
।
এখানে কেন একটি স্ন্যাপশট ব্যবহৃত হয় এবং এটি কী সুরক্ষা দেয় এবং সুরক্ষা দেয় না:
স্ন্যাপশটটি তৈরি করা হয়েছে যাতে স্ন্যাপশট তৈরি হওয়ার সময় যেমন ছিল তেমন সমস্ত ডেটা অনুলিপি করা হয়। অনুলিপি প্রক্রিয়া চলাকালীন উত্স ভলিউমের ক্রিয়াকলাপগুলি অনুলিপিটিতে প্রতিফলিত হবে না।
স্ন্যাপশট dd
কমান্ড লাইনের মানব ত্রুটি থেকে উত্সের পরিমাণকে রক্ষা করে । আপনি যদি ঘটনাক্রমে স্ন্যাপশটে লিখেন তবে কেবল স্ন্যাপশটের ডেটা ক্ষতিগ্রস্থ হবে এবং আপনি কেবল স্ন্যাপশটটি সরিয়ে আবার শুরু করতে পারেন।
কপি প্রক্রিয়া চলাকালীন লক্ষ্য ভলিউম সুরক্ষিত হয় না। যদি অন্য কোনও অ্যাডমিন (বা একটি স্বয়ংক্রিয় প্রক্রিয়া যেমন ওস-প্রবার অফ dracut
) অসম্পূর্ণ ভলিউমটি মাউন্ট করে তবে মাউন্ট জিনিসগুলি স্ক্রু আপ করতে পারে। (এমনকি একটি পঠনযোগ্য মাউন্ট এখনও ভলিউমে জার্নাল এন্ট্রি লিখতে পারে))
আমি আমার নিজস্ব প্রস্তাব করব:
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
আপনার যদি ভিজি এ থেকে অন্য ভিজি বিতে লজিক্যাল ভলিউম অনুলিপি করতে হয় তবে আমি একটি আকর্ষণীয় রূপটি ব্যবহার করে পেয়েছি partclone
। স্ন্যাপশট এর পরে ডিডি-র সাথে অনুলিপি করা একটি ভাল পদ্ধতি তবে আপনার ফাইল-সিস্টেমগুলি পূর্ণ না হলে ধীর হতে পারে। এই সমাধানটি খুব দ্রুত কারণ এটি কেবল ব্যবহৃত ব্লকগুলি অনুলিপি করে।
lvcreate --snapshot --size 1G /dev/sourcevg/lv --name lv-backup
--size
স্ন্যাপশটটি অক্ষম হওয়ার আগে এখানে কতটা লিখন ঘটতে পারে তা এখানে
lvcreate --size <new_lv_size> /dev/destvg --name newlv
new_lv_size
অবশ্যই উত্সের কমপক্ষে আকারের আকার হতে হবে
partclone.<fs_type> --dev-to-dev --source /dev/sourcevg/lv-backup --output /dev/destvg/newlv
fs_type
হতে পারে ext4
, fat32
, btrfs
, xfs
, ... কোন ফাঃ partclone দ্বারা সমর্থিত
lvremove /dev/sourcevg/lv-backup