我有一個 Virtualbox 虛擬機,其 .vdi 在主機中佔用 49GB 空間。
我可能曾經在虛擬機器內使用過這麼多空間,但現在我只使用了大約 6GB。
我為 virtualbox 嘗試了這個命令:
vboxmanage modifyhd /path/to/disk.vdi --compact
它開始工作 0%..10%.....100%。但實際上什麼也沒發生,.vdi 仍然是 49gb。
然後我在虛擬機器中運行“df -h”並發現:
root@mypc# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/mypc-root 2.0T 38G 1.9T 2% /
udev 1.3G 4.0K 1.3G 1% /dev
tmpfs 502M 784K 501M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.3G 160K 1.3G 1% /run/shm
/dev/sda1 228M 31M 185M 15% /boot
/home/someuser/.Private 2.0T 38G 1.9T 2% /home/someuser
我不知道為什麼它使用 38gb 那裡。
我清理了垃圾箱,但沒有幫助。
關於我還能做什麼的任何想法?
VM 具有 Ubuntu 12,具有加密的 LVM 和主目錄(即 .Private 目錄)。主機裝有Windows 7。
更新
我能夠為 /dev/sda1 釋放空間,但不能為 /dev/mapper/mypc-root 釋放空間。 Zerofree 啟動並且永遠不會結束,儘管我可以看出磁碟已停止寫入,因為它在一分鐘後停止發出噪音。
這是“df -ih”的輸出
root@mypc:/home/someuser# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/mypc-root 128M 208K 128M 1% /
udev 311K 495 310K 1% /dev
tmpfs 314K 428 314K 1% /run
none 314K 4 314K 1% /run/lock
none 314K 7 314K 1% /run/shm
/dev/sda1 122K 230 122K 1% /boot
/home/someuser/.Private 128M 208K 128M 1% /home/someuser
答案1
來自手動的:
為了使此操作有效,需要先使用合適的軟體工具將客戶系統中的可用空間清除。對於 Windows 用戶端,您可以使用
sdelete
Microsoft 提供的工具。sdelete -c
在壓縮虛擬磁碟映像之前,在來賓中執行以將可用磁碟空間清除。對於 Linux,請使用zerofree
支援 ext2/ext3 檔案系統的實用程式。
答案2
相對於該原來的答案有這個解決方案:
在虛擬機器中:
dd if=/dev/zero of=test.file
sync
rm test.file
在主機上:
VBoxManage modifyhd --compact your_image_path.vdi
這是我嘗試過的唯一有效的解決方案。和zerofree
(sfill
來自secure-delete
)在我的 Debian VM(Windows 10 主機)上不起作用。
答案3
我認為你問題的核心是你的根檔案系統(/
)的大小是 2TB。對於這麼大的檔案系統,相對較小的開銷(索引節點等)仍然相當大(在您的情況下> 32GB)。
如果要縮小虛擬磁碟,則需要先縮小根檔案系統。