Wie kann ich die VHD-Datei mit Ubuntu komprimieren?

9

Ich verwende Windows Server 2008r2 mit der Rolle Hyper-V. Das Gastsystem ist Ubuntu 12.04 LTC. Es befindet sich auf der dynamischen virtuellen Festplatte.

Ich möchte diese VHD komprimieren (Die tatsächliche Größe beträgt 50 GB, 360 GB auf der Festplatte). Das kann ich aber nicht, da das Ubuntu-Dateisystem kein NTFS ist. Was brauche ich (gparted, sdelete, ...), um dieses Problem zu lösen?

Das Hauptproblem ist, dass das Dateisystem nicht NTFS ist, sondern ext4.

Die Antwort:

1) Laden Sie systemrescuecd herunter

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

2) Füge diese .iso zur Quest OS Ubuntu hinzu

3) Starten Sie diese virtuelle Maschine

4) Verwenden Sie nullfrei

zerofree /dev/sda1

5) Schalten Sie diese virtuelle Maschine aus

6) Verwenden Sie den Hyper-V-Manager (Bearbeiten -> Defragmentierung).

Dieser VHD war 360 GB. Jetzt 70 GB.

AmShegar
quelle
1
Wenn Sie Ihre eigene Frage beantworten möchten, geben Sie bitte eine Antwort und keine Bearbeitung der Frage selbst ein.
Massimo
Betrachten Sie fstrimim Jahr 2019, insbesondere für ext4 unter LVM superuser.com/questions/1491437/…
Alec Istomin

Antworten:

6

Schalten Sie Ihre VM aus, sichern Sie die virtuelle Festplatte und führen Sie eine andere virtuelle Maschine aus (ich verwende SystemRescueCD, da diese klein und schnell ist), für die die ext4-Partition verfügbar ist, dh eine Festplatte für SysRescue (aber mounten Sie sie nicht!). Führen Sie auf der SysRescue-VM " zerofree " auf der ext4-Partition aus, schalten Sie diese VM aus und verwenden Sie dann Ihre Administrationswebsite, um die VHD zu komprimieren.

rickhg12hs
quelle
Ich beginne damit (lade SystemRescueCD herunter, dann zerofree / dev / sda1), aber ich weiß nicht, ob ich diese VHD unter Windows
komprimieren
1
Probieren Sie den Hyper-V-Manager aus .
Rickhg12hs
3

Ich kann bestätigen: zerofree arbeitet daran, virtuelle Festplattendateien zu komprimieren

ABER: Sie müssen keine Rettungs-CDs verwenden oder die VHDX in einer anderen virtuellen Maschine mounten:

sudo apt-get install zerofree

Booten Sie im abgesicherten Modus und führen Sie dann Folgendes aus:

zerofree /dev/sda1

Danach müssen wir die Optimierung für die virtuelle Festplattendatei starten. Erstellen Sie auf dem Server, auf dem sich die VHDX-Datei befindet, die folgende Datei 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 ""
        }

Und jetzt starte die Datei und genieße den freigegebenen Speicherplatz :-)

ShrinkVhdx.ps1 .\hdd1.vhdx
Jochen
quelle
Dies hängt vom Dateisystem ab, wenn es sich um XFS handelt, bei dem Sie mit zerofree kein Glück haben.
Brad
1

Der Prozess scheint zu sein

  • Sichern Sie Ihre aktuelle VHD-Datei.
  • Verwenden Sie den Snapshot-Manager, um Snapshots zu löschen / zusammenzuführen.
  • Nullen Sie den nicht verwendeten Speicherplatz aus

nämlich

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

Dies erzeugt eine Datei mit dem Namen oooooooo.ooogefüllt mit 0s. Sie sollten den Befehl sfill auf allen Partitionen wiederholen, denke ich.

Beachten Sie, dass dies auch nicht schnell geht. Es dauert Stunden, wenn nicht Tage.

  • Kompakt
  • Profitieren
user9517
quelle
danke, aber ich habe kein internet auf dem maschinen mit hyper-v und vhd mit linux. Also kann ich nicht "sudo apt-get install sicher-löschen"
AmShegar
1

1) Laden Sie systemrescuecd herunter

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

2) Füge diese .iso zur Quest OS Ubuntu hinzu

3) Starten Sie diese virtuelle Maschine

4) Verwenden Sie nullfrei

nullfrei / dev / sda1

5) Schalten Sie diese virtuelle Maschine aus

6) Verwenden Sie den Hyper-V-Manager (Bearbeiten -> Defragmentierung).

AmShegar
quelle
Hyper-V-Manager hat keine (Bearbeiten -> Defragmentierung)
Brad
0

Ich habe versucht, Systemrescuecd auf einem Computer der 2. Generation zu starten. Aber es hat nicht funktioniert, also habe ich eine neue Maschine der 1. Generation erstellt und die VHDX hinzugefügt. systemrescuecd gestartet. Ich habe keine Operationen durchgeführt. Entfernen Sie die Maschine der 1. Generation und setzen Sie die VHDX wieder in die ursprüngliche Maschine ein. Dann startete Ubuntu überhaupt nicht. Nur Grub-Menü.

Siehe meinen Beitrag hier: Hyper-V Ubuntu vhdx scsi ide

Also sei dir dessen bewusst und mache ein Backup (diesmal habe ich es nicht gemacht) ...

Sam
quelle
0

Sie können dies tun, indem Sie einige Parameter in den folgenden Dateien überprüfen: / sys / block // queue / discard_granularity / sys / block // queue / discard_max_bytes Wenn beide eine 0 haben, wird dies wahrscheinlich von Ihrer Hardware- + Softwarekonfiguration nicht unterstützt.

Ein vollständiges Tutorial dazu finden Sie unter: http://www.1337admin.org/uncategorized/compacting-virtual-disks-on-generation-2-linux-hyper-v-2012-r2-vms/

Brad
quelle