رضا اردانه
۲۱ اسفند ۱۳۹۷

انتقال VM از یک هاست به هاست دیگر

۰ دیدگاه
مقاله آموزشی
امتیاز دهید

شاید برای شما نیز پیش آمده باشد که بخواهید یک ماشین مجازی را از یک هاست مستقل به یک هاست دیگر منتقل کنید و در این بین سرویس vCenter و یا فضای ذخیره سازی اشتراکی وجود نداشته باشد و تنها ارتباط شبکه ای مشترک برقرار است.

این شرایط با حالت های زیر در نظر بگیرید:

  • سرویس vCenter در مجموعه شما وجود ندارد، لذا از ویژگی هایی مثل vMotion نمی توانید استفاده کنید.
  • هاست های شما دارای دیسک مشترک نیستند، لذا از حالت Register نیز نمی توانید استفاده کنید.

حال شرایطی را در نظر بگیرید که مدیر شما از شما خواسته است تا این فرآیند انتقال هر چه سریعتر صورت گیرد و شما می خواهید این فرآیند را به صورتی انجام دهید که در صورت بروز خطا، فرآیند انتقال (به طور مثال OVF گرفتن از ماشین) از ابتدا انجام نگیرد. چه راهی برای اینکار وجود دارد؟ در زیر می خواهیم روشی را برای شما توضیح دهیم که می توانید بدون مشکل این انتقال را انجام دهید:

نیازمندی این روش وجود یک ماشین مجازی با سیستم عامل لینوکس برر وی یکی از هاست ها است که دسترسی شبکه ای به هر دو هاست شما داشته باشد. بدین معنا که بتواند بدون مشکل به هاست های شما ارتباط ssh برقرار کند. در نهایت بر روی این ماشین بسته های ddrescue و sshfs نصب شود. نصب این بسته ها براساس توزیع لینوکس شما متفاوت است، اما اگر از CentsOS استفاده می کنید با دستورات زیر می توانید این بسته ها را نصب کنید:

  • yum install fuse-sshfs
  • yum install ddrescue

برای توزیع Ubuntu می توانید از دستورات زیر استفاده نمایید:

  • sudo add-apt-repository universe
  • sudo apt update
  • sudo apt install gddrescue
  • sudo apt install -y sshfs

حال که این نیازمندی ها تامین شدند روند زیر را طی کنید:

به ماشین مجازی خود متصل شده و با کمک دستور sshfs به دیتااستورهای موجود بر روی هاست های خود متصل شوید. فرض ما بر این است که از هاست 1 می خواهیم ماشینی را به هاست 2 منتقل نماییم:

sshfs -o ro root@esxi1:/vmfs/volumes/DS1/ /InFolder

sshfs -o ro root@esxi2:/vmfs/volumes/DS2/ /OutFolder

در دستورات بالا یکبار دیتااستور هاست 1 و یکبار دیتااستور هاست 2 را به عنوان یک پوشه به ماشین مجازی خود Mount کردیم.

حال در قدم بعدی فایل های ریز موجود بر روی پوشه ماشین مجازی مدنظر خود را با دستور زیر جابجا کنید:

cp /InFolder/VMDir/* /OutFolder/VMDir/

در این دستور منظور از VMDir مسیر ماشین مجازی ما بر روی هاست 1 می باشد.

حال می خواهیم اقدام به جابجای فایل vmdk نماییم. برای اینکار از دستور ddrescue استفاده می کنیم. علت استفاده از این دستور وجود ویژگی ادامه کپی در صورت بروز خطا می باشد.

ddrescue /InFolder/VMDir/Disk1-flat.vmdk /OutFolder/VMDir/Disk1-flat.vmdk /OutFolder/VMDir/Disk1-flat.log

این دستور را به ازای هر دیسک می توانید مستقل اجرا نمایید.

با این روش شما می توانید ماشین مجازی خود را از هاست 1 به هاست 2 منتقل نمایید. اما باید در نظر داشته باشید:

  • پهنای باند شبکه شما به خاطر این انتقال اشغال خواهد شد
  • فرآیند زمانبر و پرکاری است اما قابلیت کنترل بروز خطا را دارد. در هر لحظه و به هر دلیلی شرایط بحران ایجاد شود (به طور مثال خاموش شدن یکی از هاست ها) این فرآیند از لحظه بروز خطا می تواند ادامه انتقال دهد ( قابلیت Resume کردن )

نکته: به جای استفاده از دستور ddrescue می توانید از دستور rsync نیز استفاده نمایید. این مقاله بیشتر به منظور معرفی روشی برای انتقال اطلاعات بین دو هاست مستقل می باشد.

امتیاز دهید

دیدگاهتان را بنویسید