UbuntuでVHDファイルを圧縮するにはどうすればよいですか?


9

私はWindows Server 2008r2をHyper-Vの役割で使用しています。ゲストシステムはUbuntu 12.04 LTCです。ダイナミック仮想ハードディスク上にあります。

このVHDを圧縮したい(実際のサイズは50 GB、ディスク上の360 GB)。しかし、UbuntuファイルシステムはNTFSではないため、これを行うことはできません。 この問題を解決するには何が必要ですか(gparted、sdeleteなど)。

主な問題は、ファイルシステムがNTFSではなくext4であることです。

答え:

1)systemrescuecdをダウンロードする

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

2)この.isoをクエストOS Ubuntuに追加します

3)この仮想マシンを起動します

4)zerofreeを使用する

zerofree /dev/sda1

5)この仮想マシンをパワーオフします

6)Hyper-Vマネージャーを使用(編集->デフラグ)

このvhdは360 Gbでした。現在は70 GB。


1
自分の質問に回答したい場合は、質問自体の編集ではなく、回答を投稿してください。
Massimo

検討しfstrim、特にLVMの下ext4のために、2019年superuser.com/questions/1491437/...
アレック・イストミン

回答:


6

VMの電源をオフにして、VHDをバックアップし、ext4パーティションを使用できる別の仮想マシン(小さいのでSystemRescueCDを使用)を実行します。つまり、SysRescueのHD(ただしマウントしないでください)です。SysRescue VMから、ext4パーティションで「zerofree」を実行し、そのVMの電源をオフにして、管理Webサイトを使用してVHDを圧縮します。


私はそれを行う開始(ダウンロードSystemRescueCdなど、その後zerofreeは/ dev / sda1を)が、私は(nullになり、すべての空き領域の後)は、WindowsでこのVHDを圧縮することができます知っていない
AmShegar


3

私は確認できます:zerofreeは仮想ディスクファイルを圧縮するために機能しています

ただし、レスキューCDを使用したり、VHDXを別の仮想マシンにマウントしたりする必要はありません。

sudo apt-get install zerofree

セーフモードで起動して、次を実行:

zerofree /dev/sda1

その後、仮想ディスクファイルの最適化を開始する必要があります。VHDXファイルをホストしているサーバーで、次のファイル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 ""
        }

そして今ファイルを実行し、解放されたディスク容量を楽しんでください:-)

ShrinkVhdx.ps1 .\hdd1.vhdx

これは、XFSの場合、ファイルシステムに依存します。
ブラッド

1

プロセスは

  • 現在のVHDファイルをバックアップします。
  • スナップショットマネージャを使用して、スナップショットを削除/マージします。
  • 未使用のディスク容量をゼロで埋める

viz

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

これにより、sでoooooooo.ooo満たされたというファイルが作成されます0。私が推測するすべてのパーティションでsfillコマンドを繰り返す必要があります。

これも迅速ではないことに注意してください。完了するまでに数日ではなくても数時間かかります。

  • コンパクト
  • 利益

感謝しますが、hyper-vとvhdを搭載したマシンにはインターネットがありません。そのため、「sudo apt-get install secure-delete」を実行できません
AmShegar 2013年

1

1)systemrescuecdをダウンロードする

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

2)この.isoをクエストOS Ubuntuに追加します

3)この仮想マシンを起動します

4)zerofreeを使用する

zerofree / dev / sda1

5)この仮想マシンをパワーオフします

6)Hyper-Vマネージャーを使用(編集->デフラグ)


Hyper-Vマネージャーには(編集->デフラグ)がありません
Brad

0

Systemrescuecdを第2世代のマシンで起動しようとしました。しかし、機能しなかったため、新しい第1世代のマシンを作成し、VHDXを追加しました。systemrescuecdが起動しました。何もしませんでした。第1世代のマシンを削除し、VHDXを元のマシンに戻しました。その後、Ubuntuはまったく起動しませんでした。グラブメニューのみ。

ここに私の投稿を参照してください: Hyper-V Ubuntu vhdx scsi ide

これに注意して、バックアップを取ってください(今回はしませんでした)...


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.