Saya memiliki file disk 150 GB (.vmdk, non-dialokasikan) di mana mesin virtual saya disimpan.
File saat ini 20 GB, tetapi bertambah setiap hari, meskipun saya tidak menyimpan sesuatu yang baru di sistem file tamu.
Saya telah mencari berjam-jam cara untuk mengurangi ukuran maksimum disk ini , sehingga tidak pernah mencapai 150 GB (Saya ingin menetapkan batas hingga 30 GB, dan melihat apa yang terjadi ketika VM mencapai ukuran ini) .
Apa yang saya coba:
- Mengubah gambar disk dengan VMware Converter → ini tidak berfungsi, alat ini hanya memungkinkan membuat salinan lengkap atau 'klon terkait'.
- Membuat mesin virtual kosong baru dengan ukuran yang diinginkan untuk menyalin data 20GB ke .vmdk → baru. Saya tidak dapat menemukan cara untuk melakukan salinan atau bahkan menghubungkan disk baru ke VM saya yang ada (sehingga saya melakukan salinan menggunakan OS tamu).
- Mencari di file .vmx untuk memeriksa apakah ukuran maksimum tidak diatur dalam teks biasa (bukan).
Meskipun tugas ini tampaknya secara teknis sangat sederhana (tidak ada penyusutan rumit yang terlibat, hanya perubahan batas ukuran yang sederhana), saya benar-benar kehabisan ide di sini ...
Apakah ada solusinya?
virtual-machine
vmware-workstation
Sébastien
sumber
sumber
Jawaban:
Prosedur biasa untuk mengurangi ukuran disk .vmdk adalah dengan:
Defragmentasi disk melalui tamu, pilih mode defragmentasi yang mengkonsolidasikan ruang kosong di akhir disk. Untuk tamu Windows, Anda harus mengosongkan Recycle Bin dan mematikan hibernasi dan paging, mengembalikannya setelah defragmentasi selesai.
Kosongkan semua ruang yang tidak digunakan pada disk.
Untuk Windows penggunaan sdelete :
sdelete -c
.Untuk Linux:
dd if=/dev/zero of=/mytempfile && rm -f /mytempfile
.Kecilkan disk (yang mungkin perlu waktu cukup lama untuk selesai).
VMware Workstation: Menu VM / Kelola / Bersihkan disk.
Atau gunakan:
vmware-vdiskmanager.exe -k [VMDK PATH]
.untuk ESX:
vmkfstools --punchzero [VMDK PATH]
.Mengubah disk dari growable menjadi preallocated dapat menghentikan pertumbuhannya. Ini dapat dilakukan dengan menggunakan vmware-vdiskmanager dengan
-t
parameter yang nilainya adalah:Perintah berikut akan mengubah .vmdk dari growable menjadi preallocated:
Jika Anda ingin mengubah ukuran disk, ini harus dilakukan saat disk masih dalam format yang dapat ditanami (contoh di sini ).
Untuk informasi lebih lanjut, lihat Panduan Pengguna Virtual Disk Manager .
sumber
Karena OS dan program aplikasinya untuk sementara menggunakan banyak ruang disk untuk file sementara, file halaman, file hibernasi, dan file konfigurasi. Setelah dihapus, tergantung pada kebijakan OS, sektor baru pada disk digunakan di waktu berikutnya. VM mengalokasikan penyimpanan untuk disk virtual dari disk nyata setiap kali sektor baru digunakan dalam disk virtual. Karena sektor pada disk virtual selalu tidak digunakan kembali oleh guest OS, VM berpikir itu adalah penggunaan disk dan memberikan ruang dari disk nyata dan ini akan menyebabkan tumbuhnya citra disk virtual.
Judul pertanyaan Anda kecil kemungkinannya untuk diselesaikan karena menggunakan alat seperti itu tanpa inspeksi gambar dapat menyebabkan bencana total. Tetapi Anda dapat mencegah tumbuhnya gambar di atas 30GB. Ada banyak cara untuk mencapai tujuan.
A. Gunakan hanya 30GB yang dipartisi dan biarkan tersisa sebagai ruang kosong. Jika Anda sudah mempartisi lebih banyak ruang maka Anda perlu mengecilkan / menghapusnya, buat partisi baru lalu buang dengan nol dan pukul seperti yang dijelaskan oleh @harrymc. Karena ruang di area tanpa partisi tidak pernah digunakan, disk virtual tidak akan pernah tumbuh melebihi 30GB.
B. Buat snapshot dan pulihkan setelah penggunaan Setelah membuat snapshot, VM menyimpan data ke dalam file gambar baru. Jika Anda mengembalikannya, tanpa menyimpan atau membuat snapshot baru, semua data yang diubah dihapus dan dengan demikian ruang dibebaskan.
C. Buat disk virtual baru maksimum 30GB, tambahkan sebagai disk baru ke mesin virtual Anda saat ini, pindahkan semua data ke disk virtual baru menggunakan alat cadangan. Anda dapat menggunakan Linux langsung untuk kloning.
Opsi yang disarankan adalah A
sumber
Mengapa tidak mengatur ukuran disk yang terlibat menjadi 30GB dari 150GB.
Anda harus mengatur jumlah semua partisi menjadi kurang dari 30GB. Anda harus mengecilkan ukuran partisi saat Anda pergi. Ada BANYAK dokumentasi di situs ini tentang cara mengecilkan partisi jadi saya tidak akan mengulanginya lagi di sini.
Mengapa Anda membuat 150GB (partisi tipis) jika Anda tidak memiliki ruang untuk mendukungnya pada ukuran maksimum? Sepertinya ini hanya meminta masalah.
sumber
vdiskmanager.exe -k [VMDK PATH]
seperti yang disarankan dalam balasan lain tidak menyusut drive.Ada cara memutar menggunakan VMWare Converter untuk membuat VM baru dan ukuran VMDK yang lebih kecil, kemudian mengonversi VMDK asli ke VMDK kecil yang baru dibuat.
Langkah-langkah terperinci di sini .
Perhatikan bahwa setiap perubahan pada ukuran VMDK juga akan membutuhkan pembaruan yang sesuai dengan tabel partisi .
sumber
Ini hanya berfungsi untuk VMDK yang jarang (tidak dialokasikan sebelumnya) Defragmentasi diperlukan sebelum menyusut untuk memastikan bahwa ruang yang digunakan bersebelahan
Dari Basis Pengetahuan VMWare
sumber
Jawaban @harrym cukup bagus, tetapi sebenarnya tidak menjawab pertanyaan. OP ingin mengurangi ukuran maksimum . Masalahnya adalah hypervisor tidak tahu berapa ukuran yang disajikan (alias ukuran maksimum) yang memang digunakan oleh OS. Kompaksi (vmware-vdiskmakager -k) berlaku untuk vmdk yang dapat ditumbuhkan. Itu tidak melakukan apa pun pada preallocated seseorang.
Jadi langkah-langkah untuk mengecilkan disk adalah:
Langkah pertama melibatkan prosedur dari dalam VM dan bervariasi dengan OS tamu. Langkah kedua bisa didukung oleh perintah vmware tapi saya belum menemukan cara yang mendalam untuk melakukannya. Demikian pendekatan hacky.
Ini adalah solusi yang tidak terlalu cepat (karena melibatkan banyak data) dan kotor yang berhasil. Kami harus memiliki ruang yang tersedia sama dengan ukuran perangkat maksimum .
PERINGATAN: Ingatlah untuk membuat cadangan data penting sebelum operasi apa pun !!
Temukan cara untuk mengubah ukuran partisi tamu dan meninggalkan ruang yang tidak terisi di akhir perangkat. Dua contoh:
Dari OS tamu: windows 7
Pastikan Anda menambahkan setidaknya nomor ini ke ukuran disk. Sekarang kita perlu mengkonversi byte ke sektor yang membagi dengan 512 dan pembulatan ke atas (langit-langit). Misalnya 209709448. Catat nomor ini untuk langkah 3.
Melalui live cd: SystemResqueCD
Perhatikan sektor akhir dan tambahkan 1. Misalnya 113455104. Perhatikan nomor ini untuk langkah 3.
Saat peretasan bekerja pada file tunggal yang telah dialokasikan sebelumnya (tipe 2) vmdks (belum pernah mencoba beberapa jenis file), pertama-tama kita mengkonversi growable menjadi preallocated. Untuk sementara kami membutuhkan partisi dengan ruang fisik sebagai ukuran maksimum perangkat. (mis. 150GB).
vmware-vdiskmanager.exe -r sourcevmdk -t 2 destvmdk
Sekarang bagian yang sulit, untuk disk yang dialokasikan sebelumnya harus ada 2 vmdks
disk.vmdk disk-flat.vmdk
yang pertama hanya panjang KB, dan yang terakhir memegang data diperluas. Buka yang pertama (disk.vmdk) saat workstation VMWare mati , dengan editor teks (Notepad ++ menjadi saran saya). Temukan garis
RW 113455104 FLAT "Windows 7_x64-fl-flat.vmdk" 0
Ya, Anda mendapatkan intinya, bidang kedua adalah jumlah sektor yang dialokasikan untuk perangkat. Sebagai validasi, kalikan dengan 512 dan temukan ukuran dalam byte, kemudian bagi dengan 1073741824 (1024 ** 3) untuk menemukan ukuran dalam GB. Ini harus menjadi ukuran perangkat sebelumnya.
Sekarang ganti nomor itu dengan nomor yang dicatat dari langkah pertama dan simpan file. PERINGATAN : Kesalahan di sini dan Anda bisa memangkas data aktual yang digunakan pada sistem file. (Tapi kami mengubah ukuran fs di awal perangkat dan membuat perhitungan yang benar dan aman, kan?)
Sampai sekarang belum ada data yang disentuh. Lakukan langkah terakhir ini untuk benar-benar memangkas ekstensi. Kami akan menggunakan fungsionalitas rename vmware-vdiskmanager untuk membuat ulang vmdk dengan ukurannya sekarang dipangkas.
vmware-vdiskmanager.exe -n destvmdk sourcevmdk
sumber
Untuk OS tamu linux vmware, jalankan:
sudo vmware-toolbox-cmd disk shrinkonly
sumber