Hyper-V Üzerinde ki Sanal Makinenin Disk Boyutunun Küçültülmesi (Shrink Volume)
Sanal makinelerimizin disklerini ihtiyaç durumunda rahatlıkla büyütebiliyoruz. Peki baştan ayarladığımız boyutun aslında o makine için gereksiz büyük bir disk boyutu olduğunu farkettiğimizde ne yapabiliriz. Bu makalemde sizlere sanal makinelerimizin disk boyutunu nasıl küçültebileceğimizi anlatmaya çalışacağım. Öncelikle sanal makinelerde kullanılabilinen disk tiplerinden bahsetmek istiyorum. Sanal makinelerin diskleri fixed disk, dynamic disk ve differencing disk olmak üzere üç tip diskten oluşur. Disk tiplerine aşağıda kısaca değinmek istiyorum.
- Fixed Disk: Sanal makinemizi diski daha sonra ekle diyerek oluşturduktan sonra özelliklerinden yeni disk ekle seçeneği ile sanal makinemize ekleyebiliriz. Bu disk tipinde başta belirlediğimiz disk boyutunun tamamı oluşturulur. Bu tip diskler dinamik disklere oranla çok daha performanslıdırlar. Eğer başta atanan boyut büyük gelirse Dynamic Disk e çevrilip çeşitli araçlar kullanılarak diskin ilk boyutu küçültülebilir.
- Dynamic Disk: Sanal makinemizi oluştururken disk de oluşturduysak otomatik olarak Dynamic Disc formatında olacaktır. Sanal makinenin diski için kullanılmak istenen alandan çok daha az bir alan kaplar ve belirlenen boyuta ulaşana kadar büyür. Dilenirse daha sonra fixed disk şekline çevrilebilir. Performansı fixed disk türüne göre daha düşüktür. Ayrıca disk dosyası veri yazıldıkça büyüyeceğinden fiziksel diskin fragmante olmasına sebep olur ve bu da performansı olumsuz etkiler. Dinamik disk kullanımında ki başka bir problem de yetersiz disk alanı sorunudur. Bu tarz bir sorun ile karşılaşmamak için sanal makinelerin disklerinin barındırıldığı bölüm üzerinde boş disk alanı mutlaka kontrol edilmelidir. Aslında Microsoft bunu da düşünmüş ve belli aralıklarla disk üzerinde ki boş alan taranır. Eğer boş alan 2 Gb ın altına düşmüş ise Event Log a Warning mesajları düşmeye başlar. Eğer boş alan 200 Mb nin altına düştüyse o disk alanını kullanan sanal makineleriniz veri kaybı yaşamamanız için sistem tarafından otomatik olarak durdurulur ve “Paused Critical” olarak etiketlenirler. Dinamik diskler dilendiğinde fixed disk e çevrilebilir.
- Differencing Disk: Bu disk tipini örnek ile açıklamak en doğrusu olacak. Örneğin kendinize içerisinde işletim sistemi ve uygulamaların hazır olduğu bir sanal disk oluşturdunuz. Ardından bu sanal disk üzerinden yeni makineler oluşturmak istiyorsunuz. Burada devreye Differencing Disk giriyor. Yeni sanal makinenizi oluşturuyorsunuz ve disk olarak Differencing Disk ekliyorsunuz ve bu diskin sahibi olarak da önceden hazırlamış olduğumuz diski gösteriyoruz (Bu işlemden önce esas diskimizin başına bir aksilik gelmemesi için diskimizi Read-Only konumuna getirmemiz faydalı olacaktır). İstediğimiz kurulumları yaptıktan sonra dilersek Differencing diski sahibi olan disk ile birşelştirebileceğimiz gibi (Merge) bu diskten yeni bir vhd dosyası da üretebiliriz. Differencing diskler de dynamic diskler gibi diskte az alan kaplarlar ve veri yazıldıkça büyürler ki bu depolama alanında ki boş yer miktarının kontrol edilmesini gerektirmektedir.
NOT: Yapılan işlemler sanalmakinenizin diski üzerinde işlem yapılmasını gerektirdiğinden ve oluşabilecek bir sorun sonucu sanal makineniz geri döndürülemez duruma gelebilir. Bu nedenle herhangi bir işlem yapmadan önce sanal makinenizin yedeğini almanızı şiddetle tavsiye ederim.
NOT: İşlemlerin yapılabilmesi için disk üzerinde snapshot bulunmamalıdır.
NOT: İşlemlerin yapılabilmesi için disk üzerinde snapshot bulunmamalıdır.
Küçültme işlemini yapacağımız sistem Windows Server 2008 R2 işletim sistemi çalıştıran ve sistem diski boyutu 15 Gb olan sanal makine kullanacağız. Windows Server 2008 R2 disk büyütme yanında disk shrink özelliğini de sistem içerisinden desteklemektedir (Bu destek ilk olarak Windows Vista lar ile sunulmaya başlandı). Ancak bu işlemi desteklemeyen işletim sistemlerinde (Windows Server 2003 gibi) aynı işlemin nasıl yapılacağını makalemin ilerleyen bölümlerinde anlatmaya çalışacağım. Burada unutulmaması gerek ise sanal makinemizin disk boyutunu küçültebilmemiz için kullanacağımız Vhd Resizer programına disk üzerinde silebileceği fazla alanı sağlayabilir durumda olmamızdır. Shrink işlemini de bu nedenle yapıyoruz. İşletim sistemi ihtiyacı olan alan dışında ki alanı Unallocated olarak sınıflandıracağız ve böylece biz de bu alanı silerek diskimizin boyutunu küçültmüş olacağız.
Windows Server 2008 R2 işletim sistemini 15 Gb lık C sürücüsüne kurdum. Ardından bu sunucuya başka rol eklemeyeceğim için disk boyutunu küçültmeye karar verdim. Sanal makinemizin disk durumunun ekran görüntüsü aşağıda ki gibidir.
Makalemin başında belirttiğim gibi Windows Server 2008 R2 işletim sistemi shrink volume özelliğini desteklemektedir. Bunu da hehangi başka bir araca ihtiyaç duymadan Disk Management konsolu üzerinde yapılmasına olanak tanır. Ancak bu işlemde Windows’ un belirlediği en düşük değerin altında bir küçültme işlemi yapamamaktayız. İşlemi gerçekleştirmek için diskimize sağ tıkladıktan sonra Shrink Volume seçeneğine tıklayalım. Ekran görüntüsü aşağıda ki gibidir.
Bu seçenek bize disk üzerinde en fazla ne kadarlık bir alanı boşa çıkarabileceğimizi gösterecektir. Bu değerden daha az bir alanı ayırabiliriz ancak daha fazla alanı ayırmamız mümkün değildir. Ekran görüntüsü aşağıda ki gibidir.
Burada ki boyuta dokunmadan Shrink komutunu verdiğimizde işlem başlatılacaktır. İşlemin sonucunda Disk Management konsolunda ki görüntü aşağıda ki gibi olacaktır.
Disk üzerinde kullanılmayan boş bir alan oluşturduğumuza göre artık Vhd Resizer yazılımı ile sanal makinemizin disk boyutunu küçültebiliriz. Vhd Resizer programını http://vmtoolkit.com/files/default.aspx adresinden indirip kurmamız yeterli olacaktır. Kurulumun ardından Start–>All Programs–> vmToolkit yolunu takip ederek Vhd Resizer programını çalıştıralım. Programı çalıştırdığımızda karşımıza program arabiriminden önce bizden üzerinde işlem yapacağımız vhd diskin yerini soran bir iletişim kutusu çıkacaktır. Ekran görüntüsü aşağıda ki gibidir.
İletişim kutusunda VFORCEADDC sanal makinemizin sistem diski olan VFORCEADDC.vhd disk dosyasını seçip Open butonuna tıklayalım. Karşımıza aşağıda ki ekran görüntüsü gelecektir.
Yukarıda ki ekran görüntüsü üzerinde konuşmak gerekirse, Source Vhd to Resize bölümünde disk boyutunu küçültmek istediğimiz sanal makinemizin diskini görüyoruz. Hemen altında da Type bölümünde diskin türü olarak Fixed görülmekte. Dilersek işlem sırasında disk tipinide değiştirebiliriz. Size(mb) bölümünde ise seçtiğimiz diskin şu anki boyutunu görmekteyiz. Destination Vhd bölümüne de aynı diskin boyutu küçültüldüğünde hangi isimle ve nereye kayıt edileceğini belirleyeceğiz. Diski aynı sunucu da kullanacağımız için yeni diskin yerini de aynı klasör olarak seçiyoruz. Ancak orijinal diskten farklı isimli olması amacıyla disk dosyasının adını VFORCEADDC_C.vhd şeklinde belirleyelim. Yeni diskimizin tipini de Fixed seçtikten sonra New Size bölümünde diskin boyutunu Min:8 gb değerinden büyük olarak 9 gb olarak belirleyelim. İşlemi başlatmadan önceki son durumun ekran görüntüsü aşağıda ki gibi olacaktır.
Resize butonuna tıkladığımızda program sector sector işlemi gerçekleştirecek ve işlem tamamlandığında yeni diskimizin boyutu 9 Gb olarak belirlenecektir. Ekran görüntüsü aşağıda ki gibi olacaktır.
Diskimizin boyutunu küçülttüğümüze göre bunu sanal makinemiz de eski diskin yerine eklememiz gerekiyor. Bunun için sanal makinemizi kapatık Settings bölümünden özelliklerini açıyoruz. Karşımıza aşağıda ki gibi bir görüntü gelecektir.
Burada Remove diyerek eski diski sanal makinemizden ayırıyoruz. Ardından karşımıza gelen ekranda Add diyerek disk ekleme işlemine başlayalım. Disk eklemek için Browse butonuna tıklayıp VFORCEADDC_C.vhd diskimizi gösterelim ve OK diyerek işlemi tamamlayalım. Ardından Start butonu ile sanal makinemizi çalıştıralım. Sanal makinemiz açıldığında Disk Management konsolunda aşağıda ki ekran görüntüsü ile karşılaşacağız.
Burada sistem diskimizin 8.08 gb olduğunu ve boş alan olarak da 841 Mb bulunduğunu görüyoruz. Hatırlarsak Vhd Resizer programında diskimizin boyutunun en az 8 Gb olabileceği belirtiliyordu ve biz de 9 Gb olacak şekilde işlemi gerçekleştirmiştik. Boş alan bundan kaynaklanmaktadır. Yine Disk Management konsolumuzu kullanarak ilgili boş alanı sistem diskimize katabiliriz. Bunun için C diskimize sağ tıkladıktan sonra Extend Volume seçeneği
ne tıklamamız yeterli olacaktır. Ekran görüntüsü aşağıda ki gibidir.
ne tıklamamız yeterli olacaktır. Ekran görüntüsü aşağıda ki gibidir.
Karşımıza Extend Volume işlemini gerçekleştireceğimiz sihirbaz gelecektir. Hazırgelen değerlerde herhangi bir değişiklik yapmadan Next diyerek ilerlediğimizde işlemimiz gerçekleştirilecek ve boş alan C sürücümüze katılacaktır. Disklerimizin son durumunun ekran görüntüsü aşağıda ki gibi olacaktır.
Shrink Volume destekleyen bir işletim sistemi ile yukarıda ki adımları takip ederek sanal makinemizin sistem diskinin boyutunu küçültebildik. Peki işletim sistemimiz Shrink Volume özelliğini desteklemiyorsa bu işlemi yapabilir miyiz? Yapabilirsek nasıl? Sorularının cevabını makalemin bundan sonraki bölümünde cevaplamaya çalışacağım.
Bu sefer kullandığımız işletim sistemi Windows Server 2003 R2 ve kendisi Exchange Server olarak çalışıyor. Sistem diski Dynamic disk olarak yapılandırılmış durumda ve şu an ki boyutu da 3 Gb ancak diskin orijinal boyutu 10 Gb. Aşağıda ki ekran görüntüsünde durumu görebiliriz.
Bu sefer kullandığımız işletim sistemi Windows Server 2003 R2 ve kendisi Exchange Server olarak çalışıyor. Sistem diski Dynamic disk olarak yapılandırılmış durumda ve şu an ki boyutu da 3 Gb ancak diskin orijinal boyutu 10 Gb. Aşağıda ki ekran görüntüsünde durumu görebiliriz.
Windows Server 2003 Volume Shrink özelliğini desteklemiyor. Ancak bu yapacağımız iş için engel teşkil etmiyor. WinPE içerisinde bulunan diskpart uygulaması disk shrink özelliğini destekliyor. Eğer elinizde WinPE cd si yok ise hazırlamak için http://www.cozumpark.com/blogs/windows_server/archive/2010/01/17/windows-preboot-pe-environment-cd-si-haz-rlamak.aspx adresinde ki makaleden faydalanabilirsiniz.
Düzenleme yapılmadan önce Disk Management konsolunda diskin görünümü aşağıda ki gibidir.
Düzenleme yapılmadan önce Disk Management konsolunda diskin görünümü aşağıda ki gibidir.
Sanal makinemize WinPE cd imajını bağlayalım ve sistemimizi cd den açalım. Sistem açıldığında karşımıza gelen ekranda diskpart komutunu vererek diskpart uygulamasını başlatalım. Ekran görüntüsü aşağıda ki gibi olacaktır.
Komut satırında list volume komutunu vererek sanal makinemizde ki diskleri listeleyelim. Ardından boyutunu küçülteceğimiz C diskini select volume 1 komutunu vererek seçelim. Ekran görüntüsü aşağıda ki gibidir.
Ardından diskimizde en fazla ne kadarlık bir küçültme yapabileceğimizi bulabilmek için shrink querymax komutunu kullanalım. Çıktısı aşağıda ki gibi olacaktır.
Diskimizin boyutu 10 Gb idi ve yaklaşık 5 Gb i boş durumda bulunuyordu. Buradan itibaren eğer direk shrink komutunu kullanırsak diskimiz en fazla 4396 Mb kadar küçülecektir. Ancak istersek shrink desired= komutu ile diskimizi (N değeri 4396 Mb dan küçük olmak kaydı ile) belirlediğimiz bir boyut kadar da küçültebiliriz.
Bu işlemlerin ardından shrink komutunu verdiğimizde “DiskPart encountered an error: The parameter is incorrect.” hatasını al