VMware Workstation: .mdmd maksimum boyutunun nasıl düşürüleceği


27

Sanal makinemin depolandığı 150 GB disk dosyam (.vmdk, önceden tahsis edilmemiş) var.

Dosya şu anda 20 GB’dir, ancak konuk dosya sisteminde yeni bir şey depolamamama rağmen her gün büyüyor.

Bu diskin maksimum boyutunu düşürmenin bir yolunu aradım , bu yüzden asla 150 GB'a ulaşmaz (Sınırı 30 GB'a ayarlamak ve VM bu boyuta ulaştığında ne olacağını görmek istiyorum) .

Ne denedim:

  • Disk görüntüsünü VMware Converter ile dönüştürme → bu çalışmaz, araç yalnızca tam bir kopya veya 'bağlantılı bir klon' oluşturmaya izin verir.
  • 20GB verisini yeni .vmdk'ye kopyalamak için istenen boyutta yeni bir boş sanal makine oluşturma → Kopyalamayı gerçekleştirmenin ya da yeni diski mevcut VM'ime bağlamanın bir yolunu bulamıyorum (kullanarak kopyayı gerçekleştirebiliyorum) misafir işletim sistemi).
  • Maksimum boyutun düz metin olarak ayarlanmamış olup olmadığını kontrol etmek için .vmx dosyasına bakın.

Her ne kadar bu görev teknik olarak oldukça basit görünse de (hileli bir küçülme söz konusu değil, sadece basit bir boyut limiti değişikliği var), gerçekten burada fikirlerden mahrum kaldım ...

Bir çözüm var mı?


1
Sanal diskteki bölümler, reklamı yapılan alanı doldurmak için büyük olasılıkla oluşturulduğundan, “zorlu daralma” gerçekten de söz konusudur.
Daniel B

Yanıtlar:


25

Bir .vmdk diskin boyutunu küçültmek için genel prosedür şudur:

  1. Diskin sonunda boş alanı birleştiren bir birleştirme modu seçerek diski konuk aracılığıyla birleştirin. Bir Windows konuğu için, Geri Dönüşüm Kutusu'nu boşaltmalı ve birleştirme işlemi tamamlandıktan sonra iade ederek hazırda bekletme modunu ve çağrıyı kapatmalısınız.

  2. Diskteki tüm kullanılmayan alanı sıfırlayın.
    , Windows kullanım için SDelete : sdelete -c.
    Linux için: dd if=/dev/zero of=/mytempfile && rm -f /mytempfile.

  3. Diski küçültün (bu işlemin tamamlanması uzun zaman alabilir).
    VMware Workstation: Menü VM / Manage / Clean diskleri.
    Ya kullanın: vmware-vdiskmanager.exe -k [VMDK PATH].
    ESX: vmkfstools --punchzero [VMDK PATH].

Diski büyütülebilirden ön dağıtıma dönüştürmek, büyümesini durdurabilir. Bu -t, değerleri olan parametre ile vmware-vdiskmanager kullanılarak yapılabilir :

0 : single growable virtual disk
1 : growable virtual disk split in 2Gb files
2 : single preallocated virtual disk
3 : preallocated virtual disk split in 2Gb files

Aşağıdaki komut, .vmdk dosyasını yetiştirilebilir durumundan önceden ayrılana dönüştürür:

vmware-vdiskmanager -r current_disk_name.vmdk -t 3 new_disk_name.vmdk

Diskin boyutunu değiştirmek isterseniz, disk hala büyütülebilir formattayken bu yapılmalıdır ( buradaki örnekler ).

Daha fazla bilgi için Sanal Disk Yöneticisi Kullanım Kılavuzu'na bakınız .


2
Ancak bu dahili olarak reklamı yapılan sürücü boyutunu azaltmaz.
Daniel B

@DanielB: Hayır, sadece fiziksel boyutu, maksimum boyutunu azaltmaz. Bazı işletim sistemleri sistem diskinde boş alan olmadan ön yükleme yapamadığından, maksimum boyutu azaltmak tehlikeli olabilir.
harrymc

3
Bu, VMDK tarafından kullanılan alanı azaltmak için kullandığım faydalı bir tekniktir. Bununla birlikte, bu sorunumu tam olarak çözmüyor, sanki VMDK'yı her zaman altında tutmak istiyorsam, 30GB diyelim, işlemi düzenli aralıklarla tekrarlamak zorunda kalacağım (bu gerçekten uzun zaman alıyor).
Sébastien

Disk her zaman istenen boyuta getirilebiliyorsa, yukarıdaki prosedür her zaman boy ölçüsünü düşürür, yani diski sabit boyuta dönüştürerek gelecekte boy sınırlaması yapabilirsiniz.
harrymc

1
@harrymc Diski sabit boyuta dönüştürmek ihtiyaçlarıma uyacaktı. Bunu VMWare Workstation veya Converter ile yapmanın bir yolunu bulamadım.
Sébastien

6

Dosya şu anda 20 GB’dir, ancak konuk dosya sisteminde yeni bir şey saklamadığım halde her gün büyüyor.

Çünkü işletim sistemi ve uygulama programları geçici olarak geçici dosyalar, sayfa dosyaları, hazırda bekletme dosyaları ve yapılandırma dosyaları için çok fazla disk alanı kullanıyor. İşletim sistemi politikasına bağlı olarak silindikten sonra, diskteki yeni sektörler bir sonraki anda kullanılır. Sanal diskte yeni bir sektör kullanıldığında, VM sanal disk için depolamayı gerçek diskten ayırır. Sanal diskteki sektör her zaman konuk işletim sistemi tarafından yeniden kullanılmadığı için VM, disk kullanımını düşünüyor ve gerçek diskten yer veriyor ve bu da sanal disk görüntüsünün artmasına neden olacak.

Görüntünün denetlenmeden böyle bir aracın kullanılması tamamen felakete yol açabileceğinden soru başlığınızın çözülme olasılığı daha düşüktür. Ancak, görüntünün 30GB'tan daha fazla büyümesini önleyebilirsiniz. Hedefe ulaşmak için birçok yol var.

A. Sadece 30GB'lık bölüm kullanın ve boş alan bırakın. Zaten daha fazla alan ayırdıysanız, onu küçültmeniz / silmeniz gerekir, yeni bir bölüm oluşturun, sonra sıfırlarla doldurun ve @harrymc tarafından açıklandığı şekilde yumruklayın. Bölümlenmemiş alandaki alan hiç kullanılmadığı için sanal disk asla 30GB'tan fazla büyümez.

B. Bir anlık görüntü oluşturun ve kullandıktan sonra geri yükleyin. Anlık görüntü oluşturulduktan sonra VM, yeni bir görüntü dosyasına veri depolar. Buna geri yüklerseniz, yeni anlık görüntüler kaydetmeden veya yapmadan, değiştirilen tüm veriler silinir ve bu nedenle alan boşaltılır.

C. Maksimum 30GB'lık yeni bir sanal disk oluşturun, mevcut sanal makinenize yeni bir disk olarak ekleyin, tüm verileri bir yedekleme aracı kullanarak yeni sanal diske taşıyın. Klonlama için canlı bir Linux kullanabilirsiniz.

Önerilen seçenek: A


2

Neden sadece 150GB'tan 30GB'a kadar olan diskin boyutunu ayarlamıyorsunuz.

Tüm bölümlerin toplamını 30 GB'den az olacak şekilde ayarlamanız gerekir. Gittikçe bölümlerin boyutlarını küçültmek zorunda kalacaksınız. Bu sitede, bölümleri nasıl daraltacağınıza dair bir sürü belge var, bu yüzden burada tekrar etmeyeceğim.

Maksimum boyutta destekleyecek yeriniz yoksa neden 150GB (ince bölüm) oluşturdunuz? Görünüşe göre bu sadece sorun istiyor.


5
Sanal Makineyi şahsen oluşturmadım, bu yüzden.
Sébastien

Diski nasıl küçültebilirim? Disk içindeki bölümler küçülüyor ancak vdiskmanager.exe -k [VMDK PATH]başka bir yanıtta önerildiği gibi sürücüyü küçültmüyorum.
Aaron Franke

Açıkça belgelenmeyen sorun, bir vmdk cihazının nasıl yeniden boyutlandırılacağıdır (Tabii bölüm yeniden boyutlandırıldıktan sonra). Ayrıca @mdpc, cevabınızın yapıcı olmadığını düşünüyorum. Varolan bir vm'deki verileri yeniden boyutlandırmanız gereken birçok durum vardır, bu nedenle parmağınızı VM'nin doğru bir şekilde oluşturulması gerektiğine işaret etmenin bir anlamı yoktur.
basos

2

Yeni bir VM ve daha küçük VMDK boyutu oluşturmak için VMWare Converter'ı kullanmanın , ardından orijinal VMDK'yi yeni oluşturulan küçük VMDK'ya dönüştürmenin bir yoludur .

Küçültmek VMDK

Burada ayrıntılı adımlar .

VMDK boyutunda yapılan herhangi bir değişikliğin ayrıca , bölüm tablosunda ilgili bir güncellemeye ihtiyacı olacağını unutmayın .


Bu bir VMWare Workstation VM'dir ve bu gelişmiş kopya seçenekleri, bu VM türü için Dönüştürücü tarafından sunulmaz. Bu sadece diskin boyutunu değiştirmeme izin vermiyor.
Sébastien

2

Bu sadece seyrek VMDK için çalışır (Önceden tahsis edilmemiş) Kullanılan alanın bitişik olduğundan emin olmak için küçültmeden önce bir birleştirme gerekir

Windows İçinde Birleştirme

Windows sanal makinesinde, önce Windows içinden bir disk birleştirmeyi çalıştırmanız gerekir. Windows içinde birleştirmek, kullanılan tüm alanların bitişik olmasını sağlar. Daha sonra sanal diskin boyutunu küçültebilirsiniz.

Sanal diski küçültme

Sanal diski daraltmak için:

VMware Tools Kontrol Paneli / Araç Kutusu'nu açın:

Windows'ta:

Sistem tepsisindeki VMware Tools simgesini çift tıklayın veya Başlat> Denetim Masası> VMware Tools seçeneğini tıklayın.

Linux'ta:

Terminali açın ve şu komutu çalıştırın:

vmware-araç kutusu

Not: Workstation 9.x'te (Windows) ve üstü, diski temizlerken küçültme otomatik olarak yapılır. Bu nedenle, bu seçenek VMware Tools Panel'den kaldırılmıştır. VM> Yönet> Diskleri Temizle'ye gidin. Bu, VMware Workstation 9.x ve sonraki sürümlerinin Linux sürümünde mevcut değildir.

Küçült sekmesini tıklayın. Küçültmek istediğiniz sürücüyü seçin. Küçültmek için Hazırla'yı tıklayın ve ardından ekrandaki talimatları izleyin. Dikkat: Disk küçülürken sanal makinenizi veya ana makinenizi kapatmayın. Ayrıca, işlemi iptal etmeye çalışmayın. Bu işlemin kesilmesi, sanal diskinizde onarılamaz bir hasara neden olabilir ve sanal makinenizi tekrar çalıştıramayabilirsiniz.

Gönderen VMWare Bilgi Bankası'ndaki


Mevcut cevapları okumak ilk önce tekrarlanan cevaplardan kaçınır.
harrymc

1
Üzgünüm, yine de, tam prosedür ve kaynakla tekrar gönderdim. Bu ona daha fazla yardımcı olabilir
Jalal Mostafa

Op'a da cevap vermiyor. OP, mevcut boyutu değil, maksimum sınırı küçültmek istiyor.
Ryuu

2

@Harrym'in cevabı oldukça iyi, ama aslında soruyu cevaplamıyor. OP, maksimum boyutu azaltmak istiyor . Buradaki sorun, hipervizörün sunulan boyutun (aka maksimum boyut) gerçekte ne kadar OS tarafından kullanıldığını bilmemesidir. Sıkıştırma (vmware-vdiskmakager -k) yetiştirilebilir bir vmdk için geçerlidir. Önceden tahsis edilen birinin hiçbir şey yapmaz.

Yani diski küçültmek için adımlar şunlardır:

  1. Diskteki bölümü işletim sistemi aracılığıyla veya uygun bir canlı CD aracılığıyla yeniden boyutlandırın
  2. Vmdk cihazını yeniden boyutlandırın, kullanılabilir herhangi bir bölümleme alanını kesmemeye dikkat edin. Görüntüde her zaman gerçekte gerekenden daha fazla yer bırakabilirsiniz.

İlk adım, VM içinden bir prosedür içerir ve konuk işletim sistemine göre değişir. İkinci adım vmware komutları tarafından desteklenebilir, ancak bunu yapmanın derin bir yolunu bulamadım. Böylece hacky yaklaşımı.

İşte o kadar hızlı değil (büyük veri taşıma nedeniyle) ve hile yapan kirli bir çözüm. Maksimum cihaz boyutuna eşit miktarda boş alana ihtiyacımız olacak .

UYARI: Herhangi bir işlemden önce önemli verileri yedeklemeyi unutmayın !!

  1. Konuk bölümünü yeniden boyutlandırmanın ve cihazın sonunda ayrılmamış alan bırakmanın bir yolunu bulun. İki örnek:

    Misafir işletim sisteminden: windows 7

    1. Çevrimiçi yeniden boyutlandırma özelliğini kullanabilirsiniz. Öncelikle diski işletim sistemi görevinden birleştirmek iyi bir fikirdir.
    2. Diskmgmt.msc'yi çalıştırın, yeniden boyutlandırmak istediğiniz diskteki bölümü (birim) seçin, sağ tıklayıp-> Birimi küçültün. Görünen iletişim kutusunda, gereksinimlerinize göre boyutu azaltın. Bölüm kullanımda olduğundan (sistem diski ise veya çok fazla parçalanmışsa) boş alanınızın çoğunu geri kazanamayabileceğinizi unutmayın. Ekstra boş alan bırakma şartı.
    3. Şimdi disk sektörünü (veya bayt) biten bölümleri bilmek istiyoruz. Cihazdaki tek bölümün bu olduğunu farz edersek, bilgisayarımda görüntülenen ses büyüklüğünü alırız -> disk seç-> sağ tık-> özellikleri-> Kapasite: Bayt cinsinden sayıya dikkat edin. (örneğin 99,9GB için örneğime 107371032576). Güvenlik için (100200000) bazı yüz megs ekleyin (örneğin 107371237376). Eksik bir şey eklememiz gerekmediğinden emin olmak için, bölümün ofsetini cihazın başlangıcından itibaren bulmak için diskpart cmd satırı yardımcı programını kullanabiliriz. diskpart'ı çalıştırın sonra: diski listele, disk kimliğini seç , parça listele, parça kimliğini seç , detay. Örnek:

    DISKPART> detay bölümü

    Bölüm 1

    Bayt cinsinden uzaklık : 1048576

    En az bu sayıyı disk boyutuna eklediğinizden emin olun. Şimdi, baytları 512'ye bölen ve yukarı yuvarlama (tavan) sektörlerine dönüştürmemiz gerekiyor. 209709448. Adım 3 için bu sayıyı not edin.

    Canlı bir cd ile: SystemResqueCD

    1. Alternatif olarak bir yeniden kullanma CD'si kullanabilirsiniz, ( SystemResqueCD benim önerimdir), önyüklenebilir ISO'yu indirin, sanal makineye sanal bir rom aygıtı olarak monte edin, CD'den önyükleyin (VMWare önyükleme ekranında Esc tuşuna basarak denemeniz gerekebilir) bazı zamanlar çok kısa göründüğü gibi). Komut istemi türüne ulaştığınızda: startx, bu umarım sizi grafik arayüze getirir.
    2. Sistemin masaüstünde bir kez gparted başlayın (örneğin bir terminalden). Yeniden boyutlandırılacak bölümü bulun (konuk işletim sisteminden bir şüphe varsa, bu kesinlikle sökülmemiş olmalıdır). Alan ihtiyaçlarınızı dikkatlice planlayarak yeniden boyutlandırın.
    3. Yine, bitiş ofsetini bölümün sektörlerinde (veya baytlarında) bulmamız gerekir. Terminali açın ve parçalı [ cihaz ] yazın, ardından birim s, yazdırın. Örneğin

Sayı Başlangıç ​​Bitiş Boyutu Tip Dosya sistemi Bayraklar

1 2048'ler 113455103'ler 113453056s birincil ntfs önyüklemesi

Son sektöre dikkat edin ve 1 ekleyin. Örneğin 113455104. Adım 3 için bu sayıyı not edin.

  1. Hack, önceden dağıtılmış tek bir dosya üzerinde çalıştığı için (tip 2) vmdks (birden fazla dosya türünde denemedim), ilk önce yetiştirilebilir olanı önceden dağıtılana dönüştürürüz. Cihazın maksimum boyutu olarak geçici olarak fiziksel alana sahip bir bölüme ihtiyacımız olacak. (örneğin 150GB).

    vmware-vdiskmanager.exe -r sourcevmdk -t 2 destvmdk

  2. Şimdi zor kısmı, önceden tahsis edilen disk için 2 vmdk olmalıdır.

    disk.vmdk disk-flat.vmdk

    İlki yalnızca KB uzunluğundadır ve ikincisi verileri tutan uzar. VMWare iş istasyonu kapalıyken bir metin düzenleyicisiyle (Notepad ++ benim önerim) ilkini (disk.vmdk) açın . Çizgiyi bul

    RW 113455104 DÜZ "Windows 7_x64-fl-flat.vmdk" 0

    Evet, noktayı anladınız, ikinci alan cihaza ayrılan sektörlerin sayısı. Bir onaylama işlemi 512 ile çarpılarak boyutu bayt olarak bulur, sonra GB cinsinden boyutu bulmak için 1073741824 (1024 ** 3) 'e bölün. Bu, önceki cihazın boyutu olmalıdır.

    Şimdi bu numarayı adım 1'den itibaren belirtilen numara ile değiştirin ve dosyayı kaydedin. UYARI : Burada bir hata oluştu ve dosya sisteminde kullanılan gerçek verileri kırparak sonlandırabilirsiniz. (Ancak cihazın başlangıcındaki fs'yi yeniden boyutlandırdık ve doğru ve güvenli hesaplamaları doğru yaptık?)

  3. Şimdiye dek henüz hiçbir veriye dokunulmadı. Uzatmaları gerçekten düzeltmek için bu son adımı uygulayın. Şimdi kesilmiş olan vmdk'yi yeniden oluşturmak için vmware-vdiskmanager'ın yeniden adlandırma işlevini kullanacağız.

    vmware-vdiskmanager.exe - n destvmdk kaynak kodu


0

Bir vmware linux konuk işletim sistemi için aşağıdakileri çalıştırın:

sudo vmware-toolbox-cmd disk shrinkonly

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.