web-dev-qa-db-ja.com

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

私は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。

9
AmShegar

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

6
rickhg12hs

私は確認できます: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
3
Jochen

プロセスは

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

viz

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

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

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

  • コンパクト
  • 利益
1
user9517

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を使用する

ゼロフリー/ dev/sda1

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

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

1
AmShegar

これを行うには、次のファイルの一部のパラメーターを確認します。/ sys/block // queue/discard_granularity/sys/block // queue/discard_max_bytesが0の場合、ハードウェア+ソフトウェア構成でサポートされていない可能性があります。

これを行うための完全なチュートリアルは次のとおりです。 http://www.1337admin.org/uncategorized/compacting-virtual-disks-on-generation-2-linux-hyper-v-2012-r2-vms/

0
Brad

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

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

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

0
Sam