ممکن است برای شما هم پیش آمده باشد که بخواهید یک ماشین مجازی را از روی یک datastore به datastore دیگری روی یک SAN یا SAN دیگری انتقال دهید ولی در هنگام عملیات SvMotion با خطا مواجه شوید. یکی از خطاهایی که ممکن است رخ دهد عدم توانایی برای اختصاص حافظه یا خطای Cannot allocate memory(200026) می باشد که در vSphere client می توانید خطای مربوطه را مشاهده کنید.
Failed to create destination disk /vmfs/volumes/datastore/vm/vm1.vmdk (Cannot allocate memory).
همچنین اگر به لاگ فایل ماشین مجازی بنام vmware.log سری بزنید میتوانید پیام خطاهای زیر را مشاهده کنید:
Worker#0| SVMotionMirroredModeThread: Failed to create destination disks
Worker#0| Msg_Post: Error
Worker#0| [msg.svmotion.destdisk.createfail] Storage vMotion failed to create the destination disk /vmfs/volumes/UUID/Folder/vmdkname.vmdk (Cannot allocate memory).
Worker#0| [msg.svmotion.disk.createphase.fail] Failed to create one or more destination disks. Canceling Storage vMotion.
علاوه بر این میتوانید فایل /var/log/hostd.log روی هاست فیزیکی را ویرایش و محتوایی مشابه ذیل را ببینید:
[۲۶۱۸۱B90 warning ‘vm:/vmfs/volumes/UUID/VMname.vmx’ opID=698D82DE-00028DFC-bd-da] CannotRetrieveCorefiles: VM disk access is turned off
[۲۶۱۸۱B90 warning ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’ opID=698D82DE-00028DFC-bd-da] PopulateCache failed: _diskAccess : false, _storageAccessible : true
[۲۶۱۸۱B90 info ‘Libs’ opID=698D82DE-00028DFC-bd-da] Vix: [9114 foundryPollWorker.c:624]: FoundryPollWorker_AssignVMToWorker: Assign VM:/vmfs/volumes/UUID/Folder/VMname.vmx to worker 26757B90.
[۲۶A14B90 verbose ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] Close Handle called
[۲۶۵۸۱B90 info ‘GuestFileTransferImpl’] VmOperationListener succeeded
[۲۶۵۸۱B90 info ‘Hbrsvc’] Replicator: UnregisterListener triggered for config VM 27
[۲۶A14B90 verbose ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] Shutting down VMDB service…
[۲۶A14B90 verbose ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] Unregistering callback…
[۲۶۵۸۱B90 verbose ‘Statssvc’] EntityRemovedListener: Deleting stats for entity 27
[۲۶A14B90 verbose ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] …done
[۲۶A14B90 verbose ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] Unsubscribed from events.
[۲۶A14B90 verbose ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] Canceled outstanding Foundry operations.
[۲۶A14B90 verbose ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] Released VM handle.
[۲۶A14B90 verbose ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] Closed VM handle.
[۲۶A14B90 warning ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] Failed to find activation record, event user unknown.
[۲۶A14B90 info ‘ha-eventmgr’] Event 732 : Removed VMname on Hostname.domainname.com from ha-datacenter
[۲۶A14B90 info ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] State Transition (VM_STATE_UNREGISTERING -> VM_STATE_GONE)
[۲۶A14B90 verbose ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] Unregister completed
[۲۶A14B90 info ‘vm:/vmfs/volumes/UUID/Folder/VMname.vmx’] VMotion cleanup and unregistration completed
[۲۶A14B90 verbose ‘VMotionDst (1339428524937345)’] Migration changed state from UNREGISTERING to DONE
اما راهکار حل مشکل فوق چیست؟
برای درک بهتر ابتدا لازم است بدانیم این مشکل میتواند بعلت مشکل آدرس دهی و اختصاص حافظه memory به هاست فیزیکی که اقدام به انتقال و SvMotion نموده است رخ داده باشد. برای رفع مشکل میتوانید از هاست دیگری در محیط برای پروسه جابجایی استفاده کنید. اما مراحل کار را به صورت زیر تغییر دهید:
ابتدا یک انتقال vMotion برای جابجا کردن ماشین مجازی به یک هاست سازگار دیگر در محیط اقدام کنید. این کار برای حرکت وضعیت ماشین در حال اجرا می باشد.
یکبار پس از از اینکه هاست جابجا گردید، SvMotion به دیتااستور موردنظرتان را مجددا انجام دهید.
اما در پروسه های فوق نیز ممکن است در حین vMotion با خطا ماجه شده و قادر به انتقال ماشین مجازی به هاست فیزیکی دیگری نباشید. برای رفع مشکل vMotion هم بهتر است عملیات زیر را دنبال کنید:
می توانید ماشین مجازی را یکبار خاموش و سپس روشن کنید. حال اقدام به Storage vMotion کنید.
گاهی مجبور هستید ماشین مجازی را خاموش و سپس انرا از لیست inventory مجازی تان بصورت دستی حذف کنید. در ادامه ماشین مجازی حذف شده را بر روی هاست فیزیکی دیگری Add inventory کنید و سپس اقدام به Storage vMotion کنید.
در بعضی اوقات ممکن است ترفندهای فوق اثر گذار نباشد و شما مجبور به راه اندازی مجدد هاستی هستید که ماشین مجازی مشکل دار روی آن قرار دارد.
چگونه قابلیت vMotion را به کمک Open-E در VMware پیاده سازی کنیم