Bagaimana saya bisa memadatkan file VHD dengan Ubuntu?

9

Saya menggunakan windows server 2008r2 dengan peran Hyper-V. Sistem tamu adalah Ubuntu 12,04 LTC. Itu terletak di hard disk virtual dinamis.

Saya ingin memadatkan VHD ini (Ukuran sebenarnya adalah 50 GB, 360 GB pada disk). Tapi saya tidak bisa melakukan ini, karena sistem file Ubuntu bukan NTFS. Apa yang saya butuhkan (gparted, sdelete, ...) untuk menyelesaikan masalah ini?

Masalah utama adalah bahwa sistem file bukan NTFS, tetapi ext4.

Jawabannya:

1) Unduh systemrescuecd

http://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/3.8.1/systemrescuecd-x86-3.8.1.iso/download

2) Tambahkan .iso ini ke OS pencarian Ubuntu

3) Mulai mesin virtual ini

4) Gunakan zerofree

zerofree /dev/sda1

5) Matikan mesin virtual ini

6) Gunakan manajer Hyper-V (Edit -> defragmentation)

VHD ini adalah 360 Gb. Sekarang 70 GB.

AmShegar
sumber
1
Jika Anda ingin menjawab pertanyaan Anda sendiri, silakan posting jawaban , bukan edit untuk pertanyaan itu sendiri.
Massimo
pertimbangkan fstrimpada tahun 2019, terutama untuk ext4 di bawah LVM superuser.com/questions/1491437/...
Alec Istomin

Jawaban:

6

Matikan VM Anda, buat cadangan VHD, dan jalankan mesin virtual lain (saya menggunakan SystemRescueCD karena kecil dan cepat) yang memiliki partisi ext4 tersedia untuknya, yaitu, HD untuk SysRescue (tapi jangan pasang itu!). Dari SysRescue VM, jalankan ' zerofree ' pada partisi ext4, matikan VM itu, dan kemudian gunakan Situs Web Administrasi Anda untuk memadatkan VHD.

rickhg12hs
sumber
Saya mulai melakukannya (unduh SystemRescueCD, lalu zerofree / dev / sda1), tetapi saya tidak tahu dapatkah saya memadatkan VHD ini di Windows (setelah semua ruang kosong akan menjadi nol)
AmShegar
1
Coba Hyper-V Manager .
rickhg12hs
3

Saya dapat mengonfirmasi: zerofree berfungsi untuk memadatkan file disk virtual

TETAPI: Anda tidak perlu menggunakan CD cadangan atau memasang VHDX di mesin virtual lain:

sudo apt-get install zerofree

Boot dalam safe mode, lalu jalankan:

zerofree /dev/sda1

Setelah itu, kita harus memulai optimasi untuk file disk virtual. Di server yang menampung file VHDX, buat file berikut ShrinkVhdx.ps1:

[CmdletBinding()]
Param(
    $VHDFiles
)

    #Find the disks
    foreach($VHD in $VHDFiles){
        Write-Verbose "Working on $VHD, please wait"
        Write-Verbose "Current size $([math]::truncate($(Get-VHD -Path $VHD).FileSize/ 1GB)) GB"
        Mount-VHD -Path $VHD -NoDriveLetter -ReadOnly
        Optimize-VHD -Path $VHD -Mode Full
        Write-Verbose "Optimize size $([math]::truncate($(Get-VHD -Path $VHD).FileSize/ 1GB)) GB"
        Dismount-VHD -Path $VHD
        Write-Verbose ""
        }

Dan sekarang jalankan file dan nikmati ruang disk yang dirilis :-)

ShrinkVhdx.ps1 .\hdd1.vhdx
Jochen
sumber
Ini tergantung pada sistem file jika XFS Anda kurang beruntung menggunakan zerofree.
Brad
1

Prosesnya tampaknya

  • Cadangkan file VHD Anda saat ini.
  • Gunakan Snapshot manager untuk menghapus / menggabungkan snapshot apa pun.
  • Nol mengisi ruang disk yang tidak digunakan

yaitu

sudo apt-get install secure-delete 
sudo sfill -llz .

Ini menciptakan file yang disebut oooooooo.ooodiisi dengan 0s. Anda harus mengulangi perintah sfill pada semua partisi yang saya kira.

Perhatikan ini juga tidak cepat, akan butuh berjam-jam jika tidak beberapa hari untuk menyelesaikannya.

  • Kompak
  • Keuntungan
user9517
sumber
terima kasih, tapi saya tidak punya internet di mesin dengan hyper-v dan vhd dengan linux. Jadi saya tidak bisa melakukan "sudo apt-get install secure-delete"
AmShegar
0

Saya memang mencoba memulai Systemrescuecd di mesin gen ke-2. Tapi itu tidak berhasil, jadi saya membuat mesin gen 1 baru dan menambahkan VHDX ke dalamnya. systemrescuecd dimulai. Saya tidak melakukan operasi apa pun. Menghapus mesin gen pertama dan mengembalikan VHDX ke mesin aslinya. Maka Ubuntu tidak memulai sama sekali. Hanya menu-Grub.

Lihat posting saya di sini: Hyper-V Ubuntu vhdx scsi ide

Jadi waspadai ini, dan lakukan backup (saya tidak melakukannya kali ini) ...

Sam
sumber