Anasayfa » Hyper-V: Virtual Machine Export Import

Makaleyi Paylaş

Virtualization

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 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 aksiyondur.

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.

Ek bir bilgi: 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.

Peki Export/Import özelliğini tam olarak hangi senaryolarda kullanıyoruz?

Sponsor

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.

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 biryerlere 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.

image001

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.

image002

Çü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: 

image003

 Saved State: 

image004

Ş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’i 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.

image005

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

image006

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 konfigurasyon dosyalarının toplam size’ı)

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

image007 

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

image008

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.

image009

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

image010

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.

image011

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).

Şimdi Export ettiğimiz VM’i başka bir hyper-V Host üzerinde Import edelim.

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 hostu yöneten Hyper-V Manager üzerinde Import Virtual Machine… komutunu kullanıyoruz.

image012

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

image013

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.

image014

 

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).

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.

image015

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

image016

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.

İyi çalışmalar.

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ürümleri ile büyük oranda benzerlik gösterir.

Makaleyi Paylaş

Cevap bırakın