Disk menyusut tidak berfungsi pada tamu ESXi

11

EHLO semuanya! Posting pertama saya di jaringan StackOverflow :)

Kami menjalankan beberapa infrastruktur ESXi 5.0 / vCenter untuk menampung terutama sistem tamu Debian 6 / amd64 dengan partisi ext3 dan open-vm-toolsdikompilasi dari sumber per bug debian 471784 .

Punya masalah yang terlihat diangkat di internet, tetapi tanpa jawaban konklusif yang diberikan di mana pun.

Ketika mencoba mengecilkan disk yang disediakan tipis dalam mode independen-persisten, tanpa snapshot, orang tua, klon apa pun, saya secara konsisten mendapatkan kesalahan berikut:

root@linux64:~# vmware-toolbox-cmd disk list
Shrink disk is disabled for this virtual machine.

Shrinking is disabled for linked clones, parents of linked clones,
pre-allocated disks, snapshots, or due to other factors.
See the User's manual for more information.

(Ngomong-ngomong, apa "faktor-faktor lain", dan yang mana dari sekian banyak buku putih dan manual teknis yang merupakan manual Pengguna? :)

Saya tahu bahwa saya dapat mengisi partisi dengan nol (pada kenyataannya, saya menggunakan shred -fuzn0ketika menghapus file besar) kemudian mematikan tamu tersebut dan menggunakan berbagai metode seperti vmkfstools, kloning atau vMotioning disk sekitar dalam mode penyediaan tipis, dll, tetapi semua dari mereka entah dikenakan penalti downtime untuk tamu yang di-shirnked, atau mengakibatkan perpindahan data yang tidak beralasan antara datastore dan / atau host.


Dan jawabannya adalah: Tidak menyusut di bawah ESX / ESXi (pada versi 5).

The dokumentasi berbunyi:

PENTING Shrinking disk tidak diperbolehkan dalam kondisi berikut:

  1. Mesin virtual dihosting di server ESX / ESXi. ESX / ESXi Server dapat mengecilkan ukuran disk virtual hanya ketika mesin virtual diekspor. Ruang yang ditempati oleh disk virtual pada server ESX / ESXi, bagaimanapun, tidak berubah.

  2. Mesin virtual memiliki sistem operasi tamu Mac .

  3. Anda mengalokasikan ulang semua ruang disk ke disk virtual saat Anda membuatnya.

  4. Mesin virtual berisi snapshot .

  5. Mesin virtual adalah klon terkait atau induk dari klon terkait.

  6. Disk virtual adalah disk independen dalam mode nonpersistent .

  7. Sistem file adalah sistem file penjurnalan , seperti sistem file ext4, xfs, atau jfs .

Tidak heran ada adalah pilihan untuk mengecilkan di VMWare Workstation tapi tidak di vSphere client terhubung ke ESXi atau vCenter misalnya.

NekojiruSou
sumber
2
dapatkah Anda menunjukkan nilai kunci isolation.tools.diskShrink.disable yang dapat ditemukan pada file vmx?
cikuraku
1
Itu tidak ada di sana. Menambahkan isolation.tools.diskShrink.disable = "false" tidak mengubah apa pun.
NekojiruSou

Jawaban:

3

http://www.vmware.com/pdf/vmware-tools-cli.pdf Halaman 13:

Disk menyusut tidak diizinkan dalam kondisi berikut:

Mesin virtual dihosting di server ESX / ESXi. ESX / ESXi Server dapat mengecilkan ukuran disk virtual hanya ketika mesin virtual diekspor. Ruang yang ditempati oleh disk virtual pada server ESX / ESXi, bagaimanapun, tidak berubah.

Li Ni
sumber
Sedih tapi benar ...
NekojiruSou
18

Sebenarnya, ada cara untuk mengecilkan VM di ESXi, meskipun Anda harus mematikan VM untuk itu. Begini caranya:

  1. Kosongkan semua ruang yang tidak digunakan di dalam VM:

    dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero

  2. Lakukan hal yang sama dengan poin mount lainnya, swap partisi, dll.

  3. Matikan VM.

  4. SSH ke ESXi, dan berikan perintah ini:

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

Ini akan memakan waktu ... vmkfstools "punch hole" di dalam VMDK Anda, misal, alokasikan semua blok yang diisi dengan nol, yang secara efektif menyusutkan VMDK Anda.

haim
sumber
6
Untuk Windows, Anda dapat mengambil salinan Virtual Server 2005 , ekstrak file Precompact.iso darinya, itu berisi program Procompact.exe yang akan nol semua kecepatan disk yang tidak digunakan di Windows.
Chris S
vmkfstools tidak berfungsi saat VM ada di penyimpanan NFS.
Sven 31415
0

Satu-satunya cara untuk mengecilkan VMDK di vSphere ESXi adalah dengan mengekspor atau bermigrasi / Penyimpanan vMotion ke datastore lain. Saya sering melakukan ini dengan server langsung yang dapat menangani migrasi (bukan SQL atau Exchange). Admin server sebelumnya membuat semua VM dengan disk yang disediakan Tebal. Saya memigrasikan VM dari satu datastore ke yang lain dan mengubah VMDK menjadi thin-provisioned.

Anda juga dapat melakukan vmkfstools jika server sedang offline.

Jarrod LJ Gibson
sumber
-1

Disk yang menyusut dimungkinkan pada ESXi.

  1. Temukan file besar dan hapus.

    find / -type f -size +50M

  2. Defragment (tidak perlu melepas / me-remount apapun). Abaikan kesalahan apa pun. Beberapa file seperti symlink dan file perangkat tidak dapat didefragmentasi.

    sudo e4defrag /

  3. Isi nol semua ruang yang tidak digunakan sehingga VMware tahu itu memang tidak digunakan:

    dd if=/dev/zero of=wipefile bs=1M; sync; rm wipefile

  4. Jalankan operasi menyusut: Jika 4 gagal, lanjutkan ke 5.

    sudo vmware-toolbox-cmd disk shrinkonly

  5. Reboot sistem linux dengan opsi coba dan edit tabel partisi dengan gparted. Kecilkan sistem file root dan hapus & pindahkan partisi swap ke dekat partisi root.

  6. SSH ke ESXi, dan berikan perintah ini:

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

  7. Kita perlu mengedit file * .vmdk. Setelah huruf RW, tentukan ukuran disk virtual VMware (VMDK)

    * 40 GB = 40 * 1024 * 1024 * 1024/512 = 83886080 *

  8. Bermigrasi ke datastore lain untuk mencerminkan ukuran baru.

Kondapaneni
sumber