Saya sudah VM VirtualBox yang mengkonfigurasi ukuran hard disk yang sangat besar (lebih besar dari host). Dengan kesalahan saya, sebuah program di VM menghasilkan banyak file log dan ukuran file VDI terus bertambah hingga tidak ada ruang di host.
Sekarang saya telah menghapus file log tetapi ukuran file VDI tidak semakin kecil setelah menggunakan VBoxManage.exe modifyhd "C:\Virts\mybox-i386.vdi" compact
Apakah ada cara untuk benar-benar memadatkan ukuran file VDI? Terima kasih!
sumber
dd ...; rm /bigfile
ini:, ini akan meminimalkan waktu dengan disk penuh jika Anda tidak menunggu untukdd
menyelesaikannya.Saya berada di host Windows 7 dengan tamu Windows, Ini adalah file batch yang saya tulis ke Compact semua VDI di pohon folder
Saya meninggalkan tautan di komentar sehingga Anda dapat (mengetahui) cara kerjanya.
sunting
Yah, setelah semua itu, saya mencoba alat CloneVDI dan itu melakukan pekerjaan dengan baik dalam waktu yang jauh lebih sedikit dan dalam satu klik.
sumber
Tamu Debian pada host Windows menggunakan discard / TRIM.
Ini bukan jawaban langsung, karena saya sedang mengatasi masalah, bukan pertanyaan. Alih-alih memadatkan gambar secara berkala, solusi ini menggunakan discard untuk secara otomatis menghapus blok yang tidak digunakan dalam image disk VM host.
Solusi ini memerlukan sistem file tamu yang mendukung TRIM berkelanjutan. Wiki Arch Linux memiliki daftar sistem file yang mendukung operasi TRIM .
FDE dan cryptoroot tidak dicakup secara khusus, karena ada masalah keamanan dan tidak ada solusi lain untuk pertanyaan ini yang akan memungkinkan pemadatan juga. Wiki Arch Linux memiliki informasi tentang TRIM dan perangkat dm-crypt .
Secara teori, ini akan bekerja untuk semua tamu Linux di host VBox menggunakan penyimpanan VDI.
Konfigurasi host
Dengan keluarnya VBox dan tidak ada VM yang berjalan, tambahkan dukungan discard ke disk Anda dengan mengatur keduanya
discard
dannonrotational
untuk setiap disk dalam file konfigurasi untuk VM. Saat inidiscard
tidak ada dalam GUI, tetapinonrotational
diekspos sebagai kotak centang "Solid-state Drive". (ref: forum vbox, buang dukungan )Boot VM ke atas, dan verifikasi bahwa dukungan TRIM diaktifkan:
Konfigurasi Tamu
Jika LVM sedang digunakan, ubah pengaturan buang di
/etc/lvm/lvm.conf
. (ref: wiki debian, contoh lvm.conf )Di fstab, tambahkan
discard
opsi ke sistem file yang ingin Anda buang otomatis (ref: debian wiki, contoh fstab )Remount filesystem agar mereka mengambil opsi baru.
Potong blok gratis secara manual sekarang dengan
fstrim
.fstrim
menggunakan sistem file yang dipasang, bukan perangkat blok yang mendukungnya. Alih-alih mengatur buang berkelanjutanfstab
, ini bisa dilakukan pada cron mingguan. (Cron mingguan direkomendasikan untuk SSD fisik yang mungkin memiliki dukungan yang dipertanyakan untuk TRIM, tetapi ini tidak relevan di sini karena SSD yang mendasarinya ditangani oleh OS host. Lihat: peringatan trim ssd ).Pada titik ini, ukuran filesystem di dalam VM dan ukuran gambar VM harus cukup dekat nilainya.
Diuji dengan:
sumber
Untuk MacOS Guest, lakukan ini:
Hapus ruang kosong di sistem tamu:
(ganti / Volume / Macintosh HD dengan nama drive Anda)
Matikan VM tamu
Jalankan perintah ini untuk mengurangi ukuran gambar disk VDI
ATAU
sumber
Saya menggunakan ini untuk gambar VDI saya yang dipasang ke Debian virtual di Windows VirtualBox. Ini bukan solusi umum, tetapi setidaknya harus memberi Anda inti dari apa yang saya lakukan.
Perintah dalam Debian:
Perintah di Windows:
Semoga bermanfaat :)
sumber
Saya tidak ingin mengaktifkan dukungan TRIM di OS, karena setiap penghapusan data akan memaksa pemadatan data dalam file VDI, membuat sistem tamu tidak dapat digunakan ketika file VDI ada pada disc rotasi klasik. Bagi saya yang lebih baik adalah melakukan pemadatan dengan tangan misalnya sebulan sekali.
Selama pemadatan normal, konten file VDI disalin ke file baru. Ini membutuhkan ruang kosong (terkadang besar) pada disk host.
Saya sudah solusi yang mirip dengan yang ditunjukkan oleh Andrew Domaszek. Ini bekerja sangat baik bahkan dengan NTFS (Windows10).
Untuk melakukan ini:
Ubah disk berbasis VDI agar terlihat sebagai SSD dengan dukungan TRIM:
mulai mesin
mount /dev/sda2 /mnt
dd if=/dev/zero of=/mnt/bigfile
rm /mnt/bigfile
fstrim -v /mnt
sumber
Trik yang sangat rapi untuk melengkapi jawaban yang diterima adalah bahwa Anda dapat pergi tanpa melakukan pemadatan sama sekali setelah memusatkan ruang tamu, dengan menggunakan sistem file terkompresi pada host (misalnya memilih untuk mengkompres folder drive virtual pada properti NTFS pada properti Tuan rumah Windows). Ini sebenarnya memiliki manfaat untuk menghemat lebih banyak ruang karena sistem operasi cenderung menyimpan banyak teks berulang atau file biner (misalnya drive 30GB tamu yang memiliki ruang 15GB yang memusatkan perhatian dapat berubah menjadi 4GB pada drive host).
Peringatan termasuk bahwa akses drive pada perangkat keras nyata dapat meningkat dan ada sedikit peningkatan dalam penggunaan CPU.
sumber
CATATAN PENTING UNTUK LEGACY (~ 1997-2007) SISTEM OPERASI
Secara umum, teknik dalam jawaban yang diberikan sebelumnya valid; NAMUN, ada kasus khusus yang sangat penting.
Untuk periode beberapa tahun - mungkin 1997-2007 atau lebih - sistem operasi 32-bit masih menjadi norma, tetapi hard disk yang lebih besar dari 2GB sudah digunakan. Akibatnya, ketika mencoba menggunakan semua ruang kosong dengan menulis file nol (yang harus selalu dilakukan sebagai root, untuk memasukkan ruang bebas root, yang tidak dapat disentuh orang lain), Anda mungkin melihat:
File terlalu besar
alih-alih apa yang Anda harapkan:
Tidak ada ruang yang tersisa di perangkat.
Jika ini terjadi, Anda kemungkinan besar mencapai batasan ukuran file 2GB. Ini umum pada saat itu karena banyak operasi file mengembalikan hasil dalam bilangan bulat 32-bit yang ditandatangani, sehingga nilai negatif dapat melaporkan kode kesalahan. Ini secara efektif berarti bahwa hasil offset dibatasi hingga 2 ^ 31 byte tanpa tindakan khusus.
Solusinya sangat mudah: tetap membuat file zeroing yang terpisah dan diberi nama berbeda sampai disk benar-benar kehabisan ruang.
Jika Anda seorang instruktur yang ingin mendemonstrasikan situasi ini untuk sebuah kelas, gambar disk 4GB dengan salinan lama Red Hat Linux 7.0 sudah cukup.
sumber