কেভিএম ভিএম সরানোর সঠিক উপায়


34

আমি ভাবছি যে কোনও ধরনের ভাগ করা স্টোরেজ ব্যবহার না করে দুটি কেভিএম হোস্টের মধ্যে ভিএম সরানোর সঠিক উপায়টি কী

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

ওএস হ'ল ডোম0 এবং ডোমু উভয় ক্ষেত্রেই উবুন্টু।

আগাম ধন্যবাদ

উত্তর:


41
  1. /var/lib/libvirt/imagessrc হোস্ট থেকে ভিএম এর ডিস্কগুলি গন্তব্য হোস্টের একই ডিয়ারে অনুলিপি করুন
  2. উত্স হোস্ট চালানোর virsh dumpxml VMNAME > domxml.xmlজন্য এবং গন্তব্য হোস্টে এই এক্সএমএল অনুলিপি করুন
  3. গন্তব্য হোস্ট রান virsh define domxml.xml

ভিএম শুরু করুন।

  • যদি ডিস্কের অবস্থানটি পৃথক হয় তবে আপনাকে গন্তব্য হোস্টের চিত্রটি নির্দেশ করতে xML- র ডিভাইস / ডিস্ক নোড সম্পাদনা করতে হবে
  • যদি ভিএম কাস্টম সংজ্ঞায়িত নেটওয়ার্কগুলির সাথে সংযুক্ত থাকে, আপনাকে গন্তব্য হোস্টের XML থেকে এগুলি সম্পাদনা করতে হবে বা তাদেরও পুনরায় সংজ্ঞা দিতে হবে ( virsh net-dumpxml > netxml.xmlএবং virsh net-define netxml.xml && virsh net-start NETNAME & virsh net-autostart NETNAME)

এবং যদি স্টোরেজ হিসাবে ফাইলের পরিবর্তে লজিকাল ভলিউম ব্যবহার করা হয় ... তবে আমার মনে হয়
ইউুইড

2
আপনি এক্সএমএল থেকে ডিভাইস ইউআইডিগুলিকে সরিয়ে ফেলতে পারেন, কেবল /dev/mapper/vgname-lvnameসেখানে পথ ছেড়ে দিন
ডায়াসনি

10

যেহেতু আমি এখনও কোনও মন্তব্য করতে পারি না, তাই আমাকে ডায়াসনির উত্তর দেওয়ার জন্য এই সংযোজনটি পোস্ট করতে হবে।

ভিএম-এর যদি স্ন্যাপশট থাকে যা আপনি সংরক্ষণ করতে চান, আপনার স্ন্যাপশট এক্সএমএল-ফাইলগুলি virsh snapshot-dumpxml $dom $name > file.xmlভিএম এর স্ন্যাপশটের তালিকায় প্রতিটি স্ন্যাপশটের জন্য উত্সে ফেলে দিতে হবে virsh snapshot-list --name $dom

তারপরে গন্তব্যটিতে virsh snapshot-create --redefine $dom file.xmlস্ন্যাপশটগুলি স্থানান্তরিত করতে শেষ করুন।

আপনি যদি কোন স্ন্যাপশটটি বর্তমান কোনটি সম্পর্কে যত্নবান হন তবে উত্স:
virsh snapshot-current --name $dom
এবং গন্তব্যস্থলে অতিরিক্তভাবে করুন:
virsh snapshot-current $dom $name

তারপরে আপনি virsh snapshot-delete --metadata $dom $nameউত্সের এক্সএমএল ফাইলগুলি মুছতে প্রতিটি স্ন্যাপশটের জন্য ব্যবহার করতে পারেন , বা আপনি এগুলি কেবল মুছতে পারেন/var/lib/libvirt/qemu/snapshots/$guestname


সূত্র:

  1. libvirt- ব্যবহারকারীদের মেলিং তালিকা

  2. http://kashyapc.com/2012/09/14/externaland-live-snapshots-with-libvirt/


যাইহোক, কোনও মন্তব্য করার জন্য এটি অনেক দীর্ঘ ries আপনার অবদানের জন্য ধন্যবাদ
HBruijn

উত্সাহিত হয়েছে কারণ আপনি মন্তব্য করার অধিকারের জন্য প্রাপ্য :-)
অননাম

3

হ্যাঁ, কেবলমাত্র এক্সএমএল ফাইল এবং ভার্চুয়াল ডিস্ক চিত্রগুলি অনুলিপি করা যথেষ্ট, তবে এটি অবশ্যই "লাইভ" স্থানান্তরকে অন্তর্ভুক্ত করে। এই প্রক্রিয়া চলাকালীন অবশ্যই ভিএম বন্ধ রাখতে হবে।

একবার গন্তব্যে অনুলিপি করা হয়েছে, libvirtdনতুন এক্সএমএল ফাইলটি সনাক্ত করতে অবশ্যই পুনরায় লোড করা বা পুনরায় চালু করতে হবে।


Help.ubuntu.com/commune/KVM/Virh এর মতে এবং একটি উত্তর সম্পূর্ণ করার জন্য আমি বিশ্বাস করি আদেশের ক্রমটি হবে: উত্সে Dom0: - বীরশ শাটডাউন foo - ভাইর্শ ডাম্পসএমএল foo> /tmp/foo.xml তারপরে গন্তব্য ডোম0: - ডিস্ক ফাইলগুলিকে অনুলিপি করুন এবং উত্স হিসাবে একই ডিরেক্টরিতে রাখুন ডোম0 - এক্সএমএল ডাম্পের উপর অনুলিপি করুন - virsh /tmp/foo.xML তৈরি করুন - virsh start foo
Onitlikesonic

আপনি যদি ব্যবহার করেন তবে যথেষ্ট যুক্তিযুক্ত virsh। আমি কেবল ফাইলগুলি সরাসরি অনুলিপি করে পুনরায় লোড করব libvirtd
মাইকেল হ্যাম্পটন

2

Blockync.py ব্যবহার করে ভিএমএস অনুলিপি করার বিষয়ে বিস্তারিত নির্দেশাবলী

এই নির্দেশাবলী একটি ভিভিতে এলভিএম সরবরাহিত ডিস্ক ব্যবহার করে প্রযোজ্য এবং ধরে নেওয়া হয় যে প্রতিটি হোস্টে পাইথন রয়েছে

Https://gist.github.com/rcoup/1338263 থেকে blockync.py স্ক্রিপ্টটি ডাউনলোড করুন এবং আপনার / হোম / ব্যবহারকারী ফোল্ডারে উত্স এবং গন্তব্য হোস্ট উভয়ই রাখুন।

অগ্রদূত

  • আপনার ব্যবহারকারীর জন্য আপনার উভয় মেশিনে (উত্স এবং লক্ষ্য) 'ssh' অ্যাক্সেস থাকা দরকার।
  • আপনার উভয় মেশিনে 'রুট' এ 'সুডো' অ্যাক্সেস থাকা দরকার।

  • বিকল্প হিসাবে, আপনি রুট হিসাবে সবকিছু করতে পারতেন, তবে কেবলমাত্র যদি আপনার ssh কী আপনাকে অন্তত লক্ষ্য মেশিনে রুট অ্যাক্সেস দেয়। ** এই ক্ষেত্রে, কমান্ড লাইনগুলি থেকে ব্যবহারকারীর নামটি সরিয়ে দিন।

উদাহরণ সেটিংস

  • ভার্চুয়াল মেশিনটি চিউই নামে পরিচিত ডোম0 হোস্টে রয়েছে
  • গন্তব্যটি ডোম0 হোস্টে ডার্ট হিসাবে পরিচিত এবং এখানে একটি অভ্যন্তরীণ আইপি ছিল 10.10.10.38 (আমাদের উদাহরণের জন্য)
  • আমাদের আসল ক্ষেত্রে আমরা উভয় মেশিনে ডোম0 অপারেটিং সিস্টেম হিসাবে সেন্টোস 7 ব্যবহার করি
  • এই পরিস্থিতিতে আমরা যে ভার্চুয়াল মেশিনটি চলছি তাকে LARRY বলা হয়
  • এই ক্রিয়াটি করা ব্যবহারকারী হলেন ব্যবহারকারী (যা আপনার নাম হবে)
  • DOM0 এর অর্থ আসল শারীরিক সার্ভার

কার্যপ্রণালী

উত্স হোস্টের প্রাথমিক পদক্ষেপ

  • বর্তমানে ডোম0 হোস্টটিতে লগইন করুন যার বর্তমানে মেশিন রয়েছে ("উত্স" হোস্ট), যেমন:
    ssh user@chewie.domainname.com.au
  • আপনার ব্যবহারকারী হিসাবে থাকুন, তাই sudo ব্যবহারকারী হয়ে না * তালিকা মেশিনের সাথে
    sudo virh - all
  • মেশিনের সংজ্ঞাটি ব্যবহার করে ডাম্প করুন, যেমন:
    sudo virsh dumpxML larry> larry.xML
  • নতুন মেশিনে ("টার্গেট" হোস্ট) ডাম্পড সংজ্ঞাটি অনুলিপি করুন, যেমন:

    scp -p larry.xML 10.10.10.38:larry.xml
    আপনি অভ্যন্তরীণ আইপিটি আপনার গন্তব্য ডোম0 সার্ভারের নামটিতে পরিবর্তন করতে পারেন ** দ্রষ্টব্য: লক্ষ্যটির জন্য আইপি ঠিকানাটি ব্যবহার করা ভাল, যেমন:
    scp -p larry.xML user@10.10.10.38: larry.xml

    আপনি যদি চাবিগুলির কারণে বিড়াল larry.xML কে অনুলিপি করতে এবং এটি অনুলিপি করতে না পারেন তবে আপনি অন্য মেশিনে ssh করতে পারেন এবং ফাইল তৈরি করতে এবং এটি আটকে দিতে পারেন।

  • ব্যবহার করে ভিএম এর ডিস্কের আকার এবং নামটি সন্ধান করুন

    sudo lvs --units বি

    ** উপরের কমান্ডটি ঠিক বাইটে আকার প্রদর্শন করবে। ** মেশিনের ডিস্কের নাম তালিকার প্রথম কলামে, দ্বিতীয়টিতে এর ভলিউম গ্রুপ এবং শেষের আকারে রয়েছে। ** ডিভাইসটির নাম / dev হিসাবে নির্ধারণ করুন // ** এটি 'll' কমান্ড দিয়ে পরীক্ষা করুন উদাহরণস্বরূপ, এই আউটপুটে: vm_larry vg1 -wi-ao ---- 69793218560B

এলভি ভিজি অ্যাটার এলসি আকারের পুলের উত্স ডেটা% মেটা% সরানো লগ সিপিআই% সিঙ্ক রূপান্তর
  lv_root ভিজি 1 -উইও-এও ---- 53687091200B
  lv_swap ভিজি 1 -উইও এও ---- 17179869184 বি
  vm_vsrv1 ভিজি 1 -উইও এও ---- 193273528320 বি
  vm_vsrv10 ভিজি 1 -উইও এও ---- 64424509440 বি
  vm_vsrv11 ভিজি 1 -উইও এও ---- 161061273600 বি
  vm_vsrv12 ভিজি 1 -উইও এও ---- 204010946560 বি
  vm_vsrv2 ভিজি 1 -উইও এও ---- 140110725120 বি
  vm_vsrv3 ভিজি 1 -উইও এও ---- 128849018880 বি
  vm_larry ভিজি 1 -উইও-এও ---- 69793218560 বি
  vm_vsrv5 ভিজি 1 -উইও এও ---- 257698037760 বি
  vm_vsrv6 ভিজি 1 -উইও এও ---- 64424509440 বি
  vm_vsrv7 ভিজি 1 -উইও এও ---- 161061273600 বি
  vm_vsrv8 ভিজি 1 -উইও এও ---- 64424509440 বি
  vm_vsrv9 ভিজি 1 -উইও এও ---- 214748364800B

  • ডিস্কের নাম 'vm_larry', ভলিউম গ্রুপটি 'vg1'।
  • ডিভাইসের নাম / dev / vg1 / vm_larry
  • যেমন আউটপুট:
    ls -l / dev / vg1 / vm_larry
    হল: lrwxrwxrwx। 1 টি মূল মূল 8 জানুয়ারী 13:57 / dev / vg1 / vm_larry -> ../dm-11

লক্ষ্য হোস্টের প্রাথমিক পদক্ষেপ

  • লক্ষ্য হোস্টে লগইন করুন, যেমন
    ssh user@darth.domainname.com.au
  • আপনার নিজের ব্যবহারকারী হিসাবে থাকুন। অর্থাত্ রুট হয়ে উঠবেন না।
  • একটি ভলিউম সংজ্ঞা ফাইল তৈরি করুন, যেমন:

    vi larry.domainname.com.au-vol.xml
    অথবা
    ন্যানো larry.domainname.com.au-vol.xml
    নিম্নলিখিত লাইনগুলির সাথে: দ্রষ্টব্য - আপনাকে মূল ভিএম থেকে বাইট আকার নিতে হবে এবং নীচের স্ক্রিপ্টে রাখতে হবে। আকারের উত্স মেশিনে কমান্ডটি ছিল sudo lvs --units বি

    <volume type='block'>
       <name>larry.domainname.com.au</name>
       <capacity unit='bytes'>69793218560</capacity>
       <allocation unit='bytes'>69793218560</allocation>
      <target>
       <path>/dev/centos/larry.domainname.com.au</path>
       <permissions>
         <mode>0600</mode>
         <owner>0</owner>
         <group>6</group>
       <label>system_u:object_r:fixed_disk_device_t:s0</label>
      </permissions>
     </target>
    </volume>
    

দ্রষ্টব্য: এই সংজ্ঞাটি ভিএম ল্যারির জন্য 69793218560 বাইট ডিস্কের জন্য, আসল ভিএমের জন্য প্রয়োজনীয় হিসাবে পরিবর্তন করুন।

দ্রষ্টব্য: পথের নাম এবং শেষ অংশটি মিলবে এবং নতুন ডিস্কের নাম হিসাবে ব্যবহৃত হবে।

ব্যবহার করে সংজ্ঞা থেকে নতুন ডিস্ক তৈরি করুন

   sudo virsh vol-create --pool centos larry.domainname.com.au-vol.xml

এটি larry.domainname.com.au-vol.xML থেকে তৈরি ভোল larry.domainname.com.au বলবে

ডিস্ক ডিভাইস ফাইলটিকে অ্যাক্সেসযোগ্য করুন:

sudo chgrp Wheel /dev/mapper/centos-larry.domainname.com.au
sudo chmod g + rw /dev/mapper/centos-larry.domainname.com.au

অনুলিপি করা এক্সএমএল সংজ্ঞাটি সম্পাদনা করুন, যেমন:

vi larry.xML

ফাইলটিতে ডিস্ক সংজ্ঞাটি সন্ধান করুন ("উত্স দেব =" এর জন্য অনুসন্ধান করুন) এবং সদ্য তৈরি করা ডিভাইসটি প্রতিস্থাপন করুন (আপনি ls / dev / Centos / ভিএম দেখতে পারেন), যেমন: / dev / drbd4 -> / dev / CentOS / larry.domainname.com.au

এই সেতুর পরিবর্তনটি আমাদের পরিস্থিতির জন্য অনন্য ছিল।

** ইন্টারফেস স্টাঞ্জগুলিতে "বিআর 1" এর কোনও রেফারেন্স সন্ধান করুন এবং এটিকে "বিআর0" তে পরিবর্তন করুন যেমন আপনি উত্স সেতু পরিবর্তন করছেন তাই লাইনটি এর মত

উত্স হোস্টের চূড়ান্ত পদক্ষেপ

  • উত্স হোস্টে লগইন করুন, যেমন

    ssh user@chewie.domainname.com.au

  • চূড়ান্ত সিঙ্ক করার আগে উত্স হোস্টের ভিএম বন্ধ করে দেওয়া সবচেয়ে ভাল অনুশীলন হবে তবে তা করার দরকার নেই। (বীরশ শাটডাউন নেম অফম্যাচাইন)

  • যদি ইতিমধ্যে উত্স হোস্টে না থাকে তবে https://gist.github.com/rcoup/1338263 থেকে blockync.py স্ক্রিপ্টটি ডাউনলোড করুন

  • যদি আপনার ব্যবহারকারীর নাম ব্যবহারকারীর হয় (উদাহরণস্বরূপ) তবে blockync.py স্ক্রিপ্টটি উভয় মেশিনে / হোম / ব্যবহারকারী এবং কপ ব্যবহারকারী: ব্যবহারকারী এবং chmod 755 স্ক্রিপ্টে অনুলিপি করুন।

  • যদি ইতিমধ্যে লক্ষ্য হোস্টে না থাকে তবে এটি এখানে অনুলিপি করুন, যেমন:
scp -p blockync.py user@10.10.10.38: blockync.py
  • লক্ষ্য ডিস্কে উত্স ডিস্কটি অনুলিপি করতে এটি ব্যবহার করুন, যেমন eg

কমান্ড যা অনুলিপি করে

sudo -E পাইথন blockync.py / dev / vg1 / vm_larry user@10.10.10.38 /dev /mapper/centos-larry.domainname.com.au -b 4194304

দ্রষ্টব্য: প্রথম ডিভাইসের নাম উত্স হোস্টের জন্য, যেমন 'lvs' কমান্ড থেকে নির্ধারিত; এটি একজন [[চ্যুই]] উত্স হোস্টের।

দ্রষ্টব্য: এটি লক্ষ্যবস্তু ডিস্কের সামগ্রী নষ্ট করে দেবে, /dev/mapper/centos-larry.domainname.com.au সঠিক কিনা তা নিশ্চিত করুন!

দ্রষ্টব্য: সিঙ্কটি একটি দীর্ঘ সময় নিতে পারে - গিগা বাইট প্রতি প্রায় 100 সেকেন্ড, যেমন: 60 গিগাবাইট ডিস্কের জন্য 90 মিনিট।

তবে, ভিএম ব্যবহারের সময় আপনি একটি সিঙ্ক করতে পারেন; পরবর্তী সিঙ্কগুলি 25 শতাংশ পর্যন্ত দ্রুত হতে পারে

স্ক্রিপ্টটি যে পরামিতিগুলি ব্যবহার করছে তা মুদ্রণ করবে (অবহেলিত মডিউল সম্পর্কে কোনও বার্তা থাকতে পারে, এটি ঠিক আছে)। এরপরে, এটি ssh কমান্ড প্রদর্শন করে যা এটি ব্যবহার করছে এবং এটি চালায় (আপনি অনুমোদিত কর্মীদের কেবল বার্তাটি দেখতে পাবেন যখন এটি এটি করবে)। এটির সিঙ্কের সময় এটি অনুলিপি করা মোট ব্লক এবং তার গড় গতি প্রদর্শন করবে। অবশেষে, এটি যত সেকেন্ড সময় নিয়েছে তার সমাপ্তির বার্তা প্রিন্ট করে।

জানার বিষয়

আপনি সিটিআরএল সি এর সাথে সিঙ্কটি বাতিল করতে পারেন এবং আবার কমান্ডটি চালিয়ে আবার এটি পুনরায় চালু করতে পারেন

লক্ষ্য হোস্টের চূড়ান্ত পদক্ষেপ

  • লক্ষ্য হোস্টে লগইন করুন, যেমন
     ssh user@darth.domainname.com.au
  • ভার্চুয়াল মেশিন তৈরি করুন, যেমন:
    virsh larry.xML সংজ্ঞায়িত করুন
  • নতুন সংজ্ঞায়িত মেশিন শুরু করুন, যেমন:
    সুডো বীরশ লরি শুরু করুন
  • হোস্ট বুট শুরু করার জন্য এটি চিহ্নিত করুন, যেমন:
    সুডো বীরশ অটোস্টার্ট ল্যারি

দ্রষ্টব্য: নতুন পরিবেশের সাথে মানিয়ে নিতে ভিএম এর বিশদ পরিবর্তন করা প্রয়োজন হতে পারে।


আমি এটি চেষ্টা করি নি, তবে সরবরাহিত বিশদ নির্দেশাবলীর জন্য আপনি আমার উত্সাহ পেয়েছিলেন। যখন এটি করার সময় আসে তখন আমি সম্ভবত এটি চেষ্টা করব।
জি ট্র্যাও

1

আমি আমার বেশ কয়েকটি পুরানো কেভিএম সার্ভার নিয়ে এই সমস্যায় পড়েছি, তবে এটি ঘটলে সত্যই বিরক্ত হয় এবং ইনস্টলড ভিএম এর যে কোনও একটির সাথে সমস্যা সৃষ্টি করতে পারে। আমার ক্ষেত্রে এটি নিয়মিতভাবে আমার একটি ভিএমকে রিসেটের স্থানে ঠেলে দেয়, কারণ ডিস্কের স্থানটি ধীরে ধীরে ক্লান্ত হয়ে পড়েছিল। নীচের নির্দেশাবলী কেভিএম / ডিস্ট্রো সংস্করণে কিছুটা সংবেদনশীল। আমার ক্ষেত্রে, আমার CentOS 7.5 রয়েছে

CentOS Linux release 7.5.1804 (Core) and Qemu-KVM version 1.5.3

ডিফল্টরূপে কেভিএম চিত্রগুলি / var / lib / libvirt / চিত্র / অবস্থান অবস্থিত

এই ব্যবহারের জন্য বর্শ তালিকার জন্য আপনাকে ভিএম এর নামটি সন্ধান করতে হবে

virsh list
 Id    Name                           State
----------------------------------------------------
 12    VM-Name                        paused

ভিএম বিরশ স্টপ ভিএম-নাম থামান

আমার জন্য আমি ফাইলটি সরানোর চেয়ে প্রথমে অনুলিপি করি। নতুন স্থানে কিউকিও ফাইলটি অনুলিপি করুন

cp /var/lib/libvirt/images/VM-Name.qcow2 /home/VMImages/

ভিএম এক্সএমএল ফাইলটি সম্পাদনা করুন, নতুন "উত্স ফাইল" অবস্থানের উল্লেখ করতে ভিড়-ভিএম সম্পাদনা করুন

আপনি এই ফাইলটি "উত্স ফাইল" পরিবর্তন করতে চান

Libvirtd পরিষেবাটি পুনরায় চালু করুন

service libvirtd restart

তারপরে ভিএম পুনরায় চালু করুন এবং আপনার ভাল হওয়া উচিত।

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