Comment puis-je compacter le fichier VHD avec Ubuntu?

9

J'utilise Windows Server 2008r2 avec le rôle Hyper-V. Le système invité est Ubuntu 12.04 LTC. Il est situé sur le disque dur virtuel dynamique.

Je veux compacter ce VHD (la taille réelle est de 50 Go, 360 Go sur le disque). Mais je ne peux pas faire cela, car le système de fichiers Ubuntu n'est pas NTFS. De quoi ai-je besoin (gparted, sdelete, ...) pour résoudre ce problème?

Le principal problème est que le système de fichiers n'est pas NTFS, mais ext4.

La réponse:

1) Télécharger systemrescuecd

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

2) Ajoutez ce .iso à la quête OS Ubuntu

3) Démarrez cette machine virtuelle

4) Utilisez zéro zéro

zerofree /dev/sda1

5) Éteignez cette machine virtuelle

6) Utilisez le gestionnaire Hyper-V (Édition -> défragmentation)

Ce vhd était de 360 ​​Go. Maintenant 70 Go.

AmShegar
la source
1
Si vous souhaitez répondre à votre propre question, veuillez publier une réponse , pas une modification de la question elle-même.
Massimo
envisager fstrimen 2019, en particulier pour ext4 sous LVM superuser.com/questions/1491437/…
Alec Istomin

Réponses:

6

Éteignez votre machine virtuelle, sauvegardez le disque dur virtuel et exécutez une autre machine virtuelle (j'utilise SystemRescueCD car elle est petite et rapide) qui dispose de la partition ext4, c'est-à-dire un HD pour SysRescue (mais ne le montez pas!). À partir de la machine virtuelle SysRescue, exécutez « zerofree » sur la partition ext4, mettez cette machine hors tension, puis utilisez votre site Web d'administration pour compacter le disque dur virtuel.

rickhg12hs
la source
Je commence à le faire (téléchargez SystemRescueCD, puis zerofree / dev / sda1), mais je ne sais pas si je peux compacter ce VHD dans Windows (après tout, l'espace libre sera nul)
AmShegar
1
Essayez le gestionnaire Hyper-V .
rickhg12hs
3

Je peux confirmer: zerofree travaille pour compacter les fichiers du disque virtuel

MAIS: vous n'avez pas besoin d'utiliser de CD de secours ou de monter le VHDX dans une autre machine virtuelle:

sudo apt-get install zerofree

Démarrez en mode sans échec, puis exécutez:

zerofree /dev/sda1

Après cela, nous devons démarrer l'optimisation du fichier de disque virtuel. Sur le serveur hébergeant le fichier VHDX, créez le fichier suivant 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 ""
        }

Et maintenant, exécutez le fichier et profitez de l'espace disque libéré :-)

ShrinkVhdx.ps1 .\hdd1.vhdx
Jochen
la source
Cela dépend du système de fichiers si c'est XFS, vous n'avez pas de chance d'utiliser zerofree.
Brad
1

Le processus semble être

  • Sauvegardez votre fichier VHD actuel.
  • Utilisez le gestionnaire d'instantanés pour supprimer / fusionner tous les instantanés.
  • Remplissez zéro l'espace disque inutilisé

à savoir

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

Cela crée un fichier appelé oooooooo.ooorempli de 0s. Vous devriez répéter la commande sfill sur toutes les partitions, je suppose.

Notez que ce n'est pas rapide non plus, cela prendra des heures sinon des jours pour terminer.

  • Compact
  • Profit
user9517
la source
merci, mais je n'ai pas Internet sur la machine avec hyper-v et vhd avec linux. Donc, je ne peux pas faire "sudo apt-get install secure-delete"
AmShegar
1

1) Télécharger systemrescuecd

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

2) Ajoutez ce .iso à la quête OS Ubuntu

3) Démarrez cette machine virtuelle

4) Utilisez zéro zéro

zerofree / dev / sda1

5) Éteignez cette machine virtuelle

6) Utilisez le gestionnaire Hyper-V (Édition -> défragmentation)

AmShegar
la source
Le gestionnaire Hyper-V n'a pas de (Modifier -> défragmentation)
Brad
0

J'ai essayé de démarrer Systemrescuecd sur une machine de 2e génération. Mais cela n'a pas fonctionné, j'ai donc créé une nouvelle machine de 1ère génération et y ai ajouté le VHDX. systemrescuecd a démarré. Je n'ai fait aucune opération. Suppression de la machine de 1ère génération et remise du VHDX dans la machine d'origine. Ensuite, Ubuntu n'a pas démarré du tout. Seul menu Grub.

Voir mon article ici: Hyper-V Ubuntu vhdx scsi ide

Alors soyez conscient de cela, et prenez une sauvegarde (je ne l'ai pas fait cette fois) ...

Sam
la source
0

Vous pouvez le faire en vérifiant certains paramètres dans les fichiers suivants: / sys / block // queue / discard_granularity / sys / block // queue / discard_max_bytes si l'un ou l'autre a un 0, il n'est probablement pas pris en charge par votre configuration matérielle + logicielle.

Voici un didacticiel complet sur la façon de le faire à: http://www.1337admin.org/uncategorized/compacting-virtual-disks-on-generation-2-linux-hyper-v-2012-r2-vms/

Brad
la source