Hyper-V: Virtual Machine Export – Import

06.07.2010 | 00:46 Dokümanlar , Hyper-V 17 Yorum

Hyper-V Virtual Machine Export – Import

Bir sanal makineyi tüm sanal donanımları ve konfigürasyonu ile çalıştığı host üzerinden başka bir host’a (depolama alanı içeriğiyle birlikte) taşımak için kullanabileceğiniz en basit ve min. konfigürasyon gerektiren yöntem Export/Import yöntemidir.

Virtualization Infrastructure’ınıza göre farklı topolojilere, farklı hardware/storage ürünlerine sahip olabilirsiniz. Örneğin cluster ortamında çalışan node’larınız yada standalone çalışan host’larınız olabilir. Ne şekilde olursa olsun, Hyper-V üzerinde çalışan bir VM’i export ederek farklı bir Hyper-V Host üzerine import etmek gerçekten çok zahmetsiz bir işlemdir.

Hyper-V Sanal Makine Export-Import Nedir?

Export/Import özelliği Hyper-V kurulumu ile gelen default bir özelliktir ve herhangi bir ek konfigürasyona ihtiyaç duymaz. Hyper-V kurulumundan sonra, örneğin Hyper-V Manager konsolu üzerinden ilgili aksiyonu rahatlıkla gerçekleştirebilirsiniz.

Eğer gerekli topoloji oluşturulmuşsa yani cluster ve shared storage yapısına sahipseniz ve host’larınız cluster olarak çalışıyorsa, VM taşıma işlemi için Live Migration veya Quick Migration yöntemlerini kullanmak daha doğru bir karar olacaktır. (Bu özelliklerde sanal makine depolama alanı içeriğinin yerinde kalacağını unutmayın.)

Sanal Makine Export/Import Özelliği Nerelerde Kullanılabilir?

Aslında Export/Import kelimelerine yabancı olmadığınızı düşünüyorum çünkü IT’de sıkça karşılaştığımız ve gerçekten de ayrılmaz iki kavramdır Export ile Import. Mesela Internet Explorer ayarlarınızı export edebilir, daha sonra oluşan dosyayı başka bir sistemde çalışan Internet Explorer’a import ederek ayarlarınızın o sisteme taşınmasını sağlayabilirsiniz. Yada bu export dosyasını hemen import etmeyip daha sonra kullanmak üzere saklayabilirsiniz. Buradaki temel amaç nedir? Temel amaç, belirli bir efor ve zaman harcanarak tanımlanmış olan bir takım ayarların, bu ayarlara sahip olmayan başka bir sistem üzerine (veya aynı sistem üzerine) yine minimum efor ile aktarılmasıdır. Eğer bu ayarları export etme şansınız olmasaydı, oturup tüm ayarları tek tek yapmak durumunda kalacaktınız. Bu senaryo Export/Import için verilebilecek en basit örneklerden biriydi. Gelin şimdi Hyper-V tarafındaki export/import aksiyonuna göz atalım.VM Export/Import özelliği temelde kopyalama (clone), taşıma (migration) ve bazı durumlarda offline yedekleme (offline backup) için kullanılmaktadır. Yani temelde 3 senaryo için kullanıyoruz:

Clone

Bir VM’in kopyasını oluşturmak için ve bu kopyayı o host yada başka bir host üzerine almak için (Kopyalama sonrasında Windows Guest OS’ler için sysprep gerekebilir çünkü var olan kopya ile SID çakışma ihtimali vardır)

Migration

Bir VM’i çalıştığı host üzerinden alıp, var olan konfigürasyonu ile birlikte başka bir host üzerine taşımak için.

Offline Backup

Bir VM’in yedeğini almak, gerektiğinde yedek alınan tarihteki kopyayı tekrar çalışır hale getirmek için.

Hyper-V Sanal Makine Export Nasıl Yapılır?

Bir VM’i import edebilmek için önce export etmiş olmanız gerekir çünkü export işlemi ile daha sonra import edilebilecek bir takım dosyalar yaratılır ve ancak bu dosyaları import edebilirsiniz. Mesela çalışan bir VM’in dosyalarını manual olarak bir yerlere kopyalayıp başka bir host üzerine taşıyabilirsiniz. Ama bu dosyaları import menüsü ile host üzerine alamazsınız çünkü bu dosyalar Hyper-V için importable değildir. Bu manual kopyalanmış/taşınmış VM dosyalarını yine manual ve daha fazla efor gerektiren bir dizi konfigürasyon ile çalışır hale getirebilirsiniz ama bir çok durumda eski VM’in bire bir kopyasını elde edemeyebilirsiniz.

Bir VM’i Hyper-V Manager konsolu kullanarak export etmek için ilgili VM seçiliyken Actions bölümündeki Export…’u yada VM’in name’inin üzerine sağ tıklayarak ulaşacağınız Export…‘u kullanabilirsiniz.

Hyper-V Sanal Makine Export

Bu noktada dikkat edilmesi gereken bir durum söz konusu. Running state yani çalışan bir VM’i seçtiğiniz zaman Export… komutunun yerinde olmadığını göreceksiniz.

Hyper-V Sanal Makine Export 2

Çünkü çalışır (running) durumda olan bir VM’i export edemezsiniz.

Bir VM’in export edilebilmesi için kapalı (turned off) yada kayıtlı (saved) durumda olması gerekir.

Turned Off State

Turned Off State

Saved State

Saved State

Şimdi Hyper-V Manager üzerinden bir VM’i export edelim.

VM’i seçip Export… komutunu verdikten sonra gelen pencerede Browse butonu ile export edilecek path’i gösteriyoruz (location). Bu path sisteme local olarak mounth edilmiş bir disk olmalı (örneğin DAS yada usb bağlantılı external bir disk).

Ek bir bilgi: Export path olarak network üzerindeki bir paylaşımı da kullanma şansınız var. Ama bunu yapabilmek için paylaşım üzerinde Hyper-V sisteminin computer account’una full kontrol verilmeli (bu durumda sistemler aynı domain altında olmalı) ve export işlemini local bir Hyper-V Manager üzerinden yapıyor olmalısınız (full kurulum bir WS08+Hyper-V gibi). Yani remote bir Hyper-V Manager ile network üzerine export ederken başarısız olma ihtimaliniz yüksek çünkü arka planda shared folder’a ulaşımda bazı özel durumlar söz konusu. Önce local diske export edip sonra manual olarak network üzerinden taşımak kesin sonuçtur.

Ben C:\ üzerinde local bir path gösterdim.

Export diyerek işlemi başlatıyoruz.

Sanal Makine Export Path

Export süresince, yine aynı konsol üzerinden, işlemin tamamlanma durumunu % olarak takip edebilirsiniz.

Sanal Makine Exporting

Bu süreye etki eden en temel faktör, export ettiğiniz VM üzerindeki virtual disklerin sayısı ve size’larıdır. VM’iniz ne kadar büyük virtual disklere sahipse, export süresi de o derece uzun olacaktır. Ama genel anlamda süre, local disk üzerindeki bir datayı aynı yada başka bir disk üzerine kopyalamak ile aynıdır çünkü aslında arka planda gerçekleşen işlem bir nevi copy/paste’tir.

Ek bir bilgi: Export edeceğiniz dizin (dolayısı ile disk) üzerinde yeteri kadar boş alan olduğundan emin olun. Aksi taktirde işlem fail eder. Gerekli boş alan (min), export edeceğiniz VM’in gerçek folder’ı ile aynı size’dır (yani üzerindeki virtual disk dosyaları, eğer vm saved durumdaysa vsv ve bin dosyaları, varsa snapshot dosyaları ve konfigürasyon dosyalarının toplam size’ı)

Export tamamlandığında ilgili VM, export öncesi durumunda beklemeye devam eder.

Sanal Makine Export Sonucu

Şimdi export ettiğimiz dizin içinde neler var bir göz atalım. Ben C:\Source\w7 altına gidiyorum.

Sanal Makine Export Dosyaları

Snapshot, Virtual Hard Disks ve Virtual Machines. Alsında dizinler pekte yabancı değil. Normal bir VM’e ait dizinler ile hemen hemen aynı. Farklı olarak config isimli bir dosya görüyorsunuz. İçinde ilgili dizinler, dosyalar ile ilgili path ve state bilgileri bulunur. Bu dosya export sırasında oluşur ve import sonrasında kullanıldıktan sonra otomatik olarak silinir.

config dosya içeriği

Virtual Machine dizininde ise EXP uzantılı bir dosya göreceksiniz.

EXP dosyası

Bu dosya içerisinde ise VM’in export edilmeden önceki virtual hardware ve diğer konfigürasyon bilgileri bulunur. Yine sistem tarafından otomatik olarak yaratılır ve import sonrasında tanıdık bildik XML file’a dönüşür. XML, Hyper-V Manager konsolunda yer alan bir VM’in konfigürasyon bilgisinin tutulduğu dosyadır.

XML Dosyası

Ek bir bilgi: Export etmediğiniz bir VM’i Import edemezsiniz. Import öncesinde gösterdiğiniz path’te import’a uygun bir içerik olup olmadığı yukarıda bahsettiğim dosyalar ile kontrol edilmektedir.

Ek bir bilgi: Bir VM üzerindeki virtual diskleri (eğer snapshot yoksa) export etmeden kopyalayıp başka bir host üzerine taşıdıktan sonra yeni bir VM create edip bu diskleri bağlayabilir, VM’i aynı içerik ile start edebilirsiniz. Ama bu işlem sırasında eski VM’in sanal donanım ve diğer konfigürasyon bilgisini kaybetmiş, bir noktada makineye yeni donanımlar eklemiş olursunuz. Bu da guest os üzerinde bazı küçük problemlere neden olabilir. Mesela sistem üzerindeki eski NIC’i remove edip yeni bir NIC eklediğinizde TCP/IP ayarlarınızı yeniden yapılandırmak zorunda kalırsınız. İşte bu gibi durumları önlemek adına taşıma işlemleri için Export/Import veya diğer yöntemini tercih edin (LM/QM).

Hyper-V Sanal Makine Import Nasıl Yapılır?

Export dosyalarını herhangi bir yöntem ile diğer host üzerine taşıyın. Taşıdığınız path’in eskisi ile aynı olma gibi bir zorunluluğu yok. Herhangi bir yere alabilirsiniz ama unutmayın, import edip start ettikten sonra VM o dosyaları kullanmaya başlayacak yani VM artık oraya yerleşmiş olacak. Bu nedenle yeri doğru seçin, aksi durumda taşımak için yeni bir operasyon gerekebilir :)

Ben yine C:\Source diye bir dizin içine taşıdım.

Import işlemini başlatmak için ilgili host’u yöneten Hyper-V Manager üzerinde Import Virtual Machine… komutunu kullanıyoruz.

Import Virtual Machine

Import Virtual Machine… dedikten sonra export edip taşıdığımız dosyaların bulunduğu dizini göstermelisiniz.

Import Location

Bu pencerede Import demeden önce settings’te neler var bir göz atalım.

Eğer VM’i export edip bir hosttan başka bir hosta taşıdıysak (eskisini ortadan kaldırark) yada VM’in başına birşey geldi ve yine eskisini ortadan kaldırark aynı host üzerine daha önceden export edilmiş kopyayı import ederken Move or restore the virtual machine (use the existing unique ID) seçeneğini kullanmak uygundur. Bu seçenek VM’e yeni bir ID atamaz, eski ID ile devam etmesni sağlar çünkü biz zaten eski VM’i kullanmayı amaçlıyoruz. Bu nedenle eski ID’si ile gelmesi doğru olandır.

Eğer VM’i copy ile çoğaltmak istiyorsak; yani aslı kopya çalışmaya devam edecek ve biz export ettiğimiz kopyayı ayrı bir VM olarak kullanmayı planlıyoruz.. Bu durumda Copy the virtual machine (create a new unique ID) seçeneği ile devam edebiliriz. Bu seçenek VM’e yeni bir unique ID atar ve onun eski kopyadan ayrılmasını, farklı bir VM olduğunun anlaşılmasını sağlar.

Senaryoya göre uygun seçmi yaptıktan sonra Import diyerek işlemi başlatıyoruz.

Import işlemi hemen gerçekleşir çünkü biz zaten gerekli datayı uygun path’e kopyaladığmız için export’ta olduğu gibi arka planda kopyalanması gereken data yoktur. Birkaç saniye içinde VM konsoldaki yerini alır ve artık start edilmek için hazırdır.

Hyper-V Sanal Makine Import Sonrası

Ek bir bilgi: Export edilmiş bir VM’i bir defa import edebilirsiniz. Ama eğer import penceresinde Duplicate all files so the same virtual machine can be imported again kutucuğunu işaretlerseniz, export edilmiş dosyalar olduğu path’te aynı şekilde kalır. Bir kopyası Hyper-V Settings bölümünde belirtilen default path’ler üzerine alınarak import işlemi gerçekleştirilir ve VM o path’ler üzerinde çalışmaya başlar. Export edilen kopya ise daha sonra yine export edilebilir halde beklemeye devam eder. Bu işlemde de arka planda gerçekleşen bir copy/paste olduğu için operasyon süresi data boyutu ile doğru orantılıdır. Özetle; birkez export ediyoruz ve o VM’i Duplicate all files so the same virtual machine can be imported again seçeneği ile birden fazla kez import edebiliyoruz (Bu senaryoda Windows SID için ayrıca sysprep gerekebilir).

Saved State Sanal Makine Export-Import

Son olarak saved durumdaki bir VM’in export/import’una bakalım.

Aslında yöntemin hiç bir farkı yok. Sadece export edilen içerikte göstermek istediğim iki dosya var.

Export process’i bire bir aynıdır.

Saved State Sanal Makine Export-Import 1

Export sonrası oluşan içerikte vsv ve bin uzantılı iki dosya yer alır.

Saved State Sanal Makine Export-Import 2

Bu iki dosya VM’i saved durumda export ettiğimiz için orda ve içlerinde VM’in saved anındaki bilgileri bulunur. Örneğin VM üzerinde bir kurulum yapıyorsunuz ve save etmek durumunda kaldınız. Bu VM’i export edip başka bir hyper-v host üzerine import ettiğinizde VM kurulumda kaldığı yerden o host üzerinde çalışmaya devam edebilir. Bunu sağlayan bu iki dosyadır.

Export/Import özelliğimiz bu kadar. Gördüğünüz gibi oldukça basit ve kullanışlı bir özellik.

Bigi:

Bu makalede refere edilen özellikler Windows Server 2008 R2 + Hyper-V v2 ile ilgilidir. Konular ve step by step işlemler %100 olmamak ile birlikte ürünün alt ve varsa üst sürmleri ile büyük oranda benzerlik gösterir. Üst sürümlerde bazı bilgiler değişikliğe uğramış olabilir.

Yazı Etiketleri: ,

Sayfa Başı ▲

Yorumlar (17)

  1. Lütfü

    Merhabalar,

    Ben eski sürüm vmware kullanmaktayım. Evde kullandığım sanal bilgisayarı çalıştığım yerde kullandığımda oradaki bilgisayarın özelliklerini alıyor. Yukarıda verdiğiniz özelliği evdeki bilgisayarın özelliklerini istediğim bilgisayarda simule edebilirmiyim.

    İyi çalışmalar.

  2. serkan

    Merhaba Hocam,
    hyperv cluster ortamı için bu işlemler hakkında bilgi almak istiyorduk. Ayrı bir makaleniz var mıydı ?

    İyi çalışmalar..

  3. Serhat AKINCI

    Lütfü: Sormak istediğini tam olarak anlamadım?

    Serkan: Hyper-V Cluster ortamı için operasyonel süreç bu makalede yer aldığı gibi. Değişebilecek tek şey, import ederken VM importable source’u CSV yani C:\ClusterStorage\ altında bir Volume klasörüne attıktan sonra import edin. Bu sayede VM’i cluster’a dahil etmek mümkün olur.

  4. Bilal Murat

    Hocam Selam
    export işlemini başarıyla gerçekleştiriyorum ama import yaparken hata vermektedir acaba exportdaki bilgisyarda cluster var importtaki makinada yok ondan olabilirmi
    saygılarıma

  5. Serhat AKINCI

    Bilal selam, Cluster ortamına da import edebilirsin, problem olmaz. Eğer import sırasında aldığın hatayı buraya yazarsan yardımcı olabilirim.

  6. Anıl ERDURAN

    Non_Cluster’dan Cluster’a Import sırasında configuration hatası verebilir. Bilginize.

    http://blogs.technet.com/b/askcore/archive/2011/05/26/how-to-export-non-clustered-vm-s-and-import-them-to-csv-shares-on-2008-r2-cluster.aspx

  7. Alper AK

    Merhaba Serhat Bey
    hyperv üzerinde kurulu bir elastix centos um var. onu export import yaparak çoğalttım. Ağ da sorun çıktı onu hallettim. Ama sanırım diğer donanımlarda da bir çakışma oluyor. Santral sistemi olduğundan ses gelip gitmiyor. Acaba ses driverının hardware idsini flnmı değiştirmem gerekir. Kopyasını aldığım sorunsuz çalışıyor.

  8. Serhat AKINCI

    Merhaba,

    Export/Import ile çoğalttığınız VM’lere ait network adapter’lerin MAC adresleri çakışıyor olabilir. Ayrıca “Legacy Network Adapter” yerine, Linux Integration Components ile “Synthetic Network Adapter” kullanmanızı öneririm.

  9. Yasin Aydın

    Merhaba Serhat Bey,

    Öncelikle Makaleniz için teşekkür ederim.

    Hyper V Enterprise sürümünden Hyper V Standart sürümüne taşıyabilir miyiz ?
    Teşekkürler,

  10. Serhat AKINCI

    Hangi sürümler arasında olduğunu belirmemişsiniz ama;

    – Export/Import
    – Import/Register
    – In-Place OS Upgrade (desteklenen alt sürümden üst sürüme doğru)
    – Shared-Nothing Live Migration (destekleniyorsa)
    – Cross-Version Shared-Nothing Live Migration (destekleniyorsa)

    gibi yöntemlerle taşımak mümkün.

  11. Özgür

    Serhat Hocam selamlar,

    Merak ettiğim bir bölüm var Server2008 adıyla export ettiğimiz bir guesti aynı host üzerinde export ettiğimizde isim yine Server2008 geliyor. Bunu import esnasında değiştirmenin bir yolu var mıdır?

  12. Serhat AKINCI

    Import sorasında değiştirilebilir veya Export edilmiş dosyalar arasında .EXP uzantılı olanı örneğin Notepad ile açıp içinde iki yerde geçen sanal makine ismini değiştirip Import yapabilirsin.

  13. sabri coşkun kazdal

    Serhat bey iyi çalışmalar,
    2008 hyper -v kullanıyorum. fakat makinamı yeniden başlattığımda sanal makinalarımdan biri kayboldu fakat tekrar bu sanal makinayı getirmeye hvd dosyasından kurdum fakat makina ilk kurulduğu gibi geldi bunu en son hali ile nasıl çalıştıra bilirim.

  14. Ziya

    selamlar,

    2008 r2 hyperv den başarılı bir şekilde export ettiğim vm yi 2012 r2 hyperv’ye import ettiğimde “Hyper-V did not find virtual machines to import from location” hatası alıyorum. 2008r2 ortamda yok. virtual hd yi bağlama yöntemi dışında nasıl çözebilirim acaba?

  15. Ziya

    merhaba,
    kendi soruma yabancı kaynaklardan araştırıp bulduğum aynı zamanda da uygulayıp başarıya ulaştığım cevabı yazayım müsade ederseniz. detay yazmayacağım …

    4 adet sanal makina ve farklı bir fiziksel hdd üzerindeler..

    – Import edeceğim server 2012 r2 makinasına bir vhd oluşturup attach edip “r2 olmayan windows server 2012” kurdum. ( mevcut 2012 r2 kulumumum etkilenmiyor)

    bu vhd den boot edip üzerine hyperv rolü kurup sanal makinaları import ettim.

    makinaları start etmeden tekrar export işlemi uyguladım.

    boot configi editleyip tekrar kurulu server 2012 r2 ‘den boot ettim.
    hyperv yi kurup sanalları tekrar import ettim.

    şu anda sıkıntısız kullanıyorum ve paylaşmak istedim
    saygılar

  16. kadir sahin

    merhaba hocam

    ben şirkette hyper v kullanıyorum fakat ben export işlemini otomatik yapmak istiyorum.

    yani kısaca örnek vereceksek her gece saat 03:00 da bütün sanal makinalarımı d diskime export et. gibi

    böyle bir şey yapmak mümkünmüdür ?

    teşekkürler.

  17. Serhat AKINCI

    Kadir Sahin – Basit bir PowerShell Script ile Export işini otomatikleştirmen mümkün. Ama bunun yerine en basitinden Windows Server Backup kullanmanı öneririm.

Yorum Ekle