web-dev-qa-db-fra.com

Comment redimensionner le disque de la machine virtuelle?

Est-il possible de redimensionner le disque d'une machine virtuelle? Dites augmenter la taille du disque de 32 Go à 64 Go. J'exécute KVM/Qemu sur le serveur Ubuntu 11.10 64 bits. Merci.

23
Tong Wang

Sur une distribution basée sur Debian, vous devriez plutôt utiliser virt-resize. Cette poignée à peu près tout sous le capot maintenant. Supposons que votre image s'appelle Win7 (pourquoi pas?). Tout d’abord, assurez-vous que votre VM est arrêté:

Installez l'outil:

# apt-get install libguestfs-tools

Obtenez l'emplacement de votre disque VM:

# virsh dumpxml Win7 | xpath -e /domain/devices/disk/source
Found 2 nodes in stdin:
-- NODE --
<source file="/var/lib/libvirt/images/Win7.img" />
-- NODE --
<source file="/var/lib/libvirt/images/Win7.iso" />

Vous devrez peut-être adapter /var/lib/libvirt/images/Win7.img dans les cas suivants:

# virt-filesystems --long --parts --blkdevs -h -a /var/lib/libvirt/images/Win7.img
Name       Type       MBR  Size  Parent
/dev/sda1  partition  07   100M  /dev/sda
/dev/sda2  partition  07   32G   /dev/sda
/dev/sda   device     -    32G   -

Créez votre disque 64G:

# truncate -s 64G /var/lib/libvirt/images/outdisk

Vous devrez développer/dev/sda2 (pas la partition de démarrage):

# virt-resize --expand /dev/sda2 /var/lib/libvirt/images/Win7.img /var/lib/libvirt/images/outdisk
Examining /var/lib/libvirt/images/Win7.img ...
 100% [progress bar] --:--
**********

Summary of changes:

/dev/sda1: This partition will be left alone.

/dev/sda2: This partition will be resized from 32G to 64G.  The 
    filesystem ntfs on /dev/sda2 will be expanded using the 
    'ntfsresize' method.

**********
Setting up initial partition table on outdisk ...
Copying /dev/sda1 ...
Copying /dev/sda2 ...
 100% [progress bar] 00:00
 100% [progress bar] 00:00
Expanding /dev/sda2 using the 'ntfsresize' method ...

Resize operation completed with no errors.  Before deleting the old 
disk, carefully check that the resized disk boots and works correctly.

Faites une sauvegarde au cas où (ou utilisez mv si vous ne voulez pas la sauvegarde):

# cp /var/lib/libvirt/images/Win7.img /var/lib/libvirt/images/Win7.img.old
# mv /var/lib/libvirt/images/outdisk /var/lib/libvirt/images/Win7.img

Maintenant, démarrez!

Pour plus d'informations: man virt-resize

27
malat

Je vous recommande de prendre une copie complète de l'image disque telle qu'elle est avant de commencer, puis de la copier pour tout recommencer à zéro.

Il y a 3 choses que vous devez faire:

1) Agrandir l’image disque. Dans votre hôte:

qemu-img resize foo.qcow2 +32G

Maintenant, votre invité peut voir un disque plus gros, mais a toujours d'anciennes partitions et systèmes de fichiers.

2) Agrandir la partition à l'intérieur de l'image disque. Pour cela, vous devez démarrer un LiveCD dans votre invité, car vous ne pourrez pas jouer avec une partition montée. C'est assez compliqué et probablement la partie la plus dangereuse. C'est pas mal de copier ici, donc je vais juste mettre un lien à la place pour le moment. Vous voulez faire quelque chose comme ça:

http://www.howtoforge.com/linux_resizing_ext3_partitions_p2

OU 2b) créer une nouvelle partition serait plus simple (et plus sûr) si vous voulez juste plus d’espace de stockage. Utilisez fdisk ou cfdisk, ou tout ce avec quoi vous vous sentez à l'aise - vous devriez maintenant voir tout un tas d'espace non alloué sur votre disque invité.

3) Enfin, si vous avez redimensionné votre partition existante, agrandissez le système de fichiers de la nouvelle partition plus grande (c'est en fait dans le guide lié ci-dessus). Dans votre invité:

resize2fs /dev/sda1
18
Caesium

Je pense que la réponse de Caesium est correcte, je voudrais juste écrire quelques commandes pour obtenir la même chose.

Supposons que vous avez un fichier disk.img avec une image disque, c’est-à-dire qu’il contient une table de partitions et une ou plusieurs partitions, et que vous voulez agrandir la dernière partition. Ce que vous devez faire est de

1) agrandissez l’ensemble du fichier, par exemple 4GiB. Un moyen rapide de le faire est d'utiliser ddname__

dd if=/dev/zero of=disk.img bs=1c seek=4G count=0

2) agrandissez la partition avec fdisk (j'aimerais pouvoir le faire en parted ou en un outil plus agréable ... Quelqu'un??)

fdisk disk.img

Tapez ppour imprimer la table de partition et rechercher le secteur de démarrage de votre partition, par exemple la partition 2 démarre au secteur 106496.

Ce que vous allez faire est de supprimer cette partition de la table de partition et de créer une nouvelle partition qui commence exactement dans le même secteur mais se termine ultérieurement. Ensuite, la partition contiendra un système de fichiers valide.

Tapez det donnez le numéro de la partition à supprimer. (Gorgée!)

Tapez net indiquez le numéro de la partition souhaitée, puis le secteur de démarrage. Vous DEVEZ utiliser le même secteur de démarrage que précédemment. Enfin, indiquez le secteur final ou laissez simplement fdisk choisir le secteur le plus élevé que vous pouvez utiliser.

Tapez wpour écrire les modifications dans le fichier image du disque et quitter fdisk.

3) Vous devez maintenant redimensionner le système de fichiers. Pour cela, vous avez besoin du décalage par rapport à (= la position du système de fichiers) dans l’image disque. Vous pouvez calculer cela à partir du numéro de secteur si vous connaissez la taille du secteur (généralement 512), ou vous pouvez utiliser partedname__

parted disk.img u b p

(partedpeut prendre des commandes en tant qu'arguments de ligne de commande. Cela signifie donc 'octets unitaires' et 'print', de sorte qu'il affiche la table des partitions et utilise des octets comme taille uint.)

Ceci affiche le début et la fin de la partition. Supposons que votre partition commence à 54525952, puis vous créez un périphérique de bloc de bouclage avec losetupname__.

losetup -f --show -o 54525952 disk.img 

losetupvous indique quel dev l'a choisi, par exemple /dev/loop0. Maintenant vous pouvez utiliser resize2fs:

resize2fs /dev/loop0

et enfin retirer le dispositif de boucle

losetup -d /dev/loop0
4
larsr

La meilleure solution trouvée est ici:

http://www.linux-kvm.com/content/how-resize-your-kvm-virtual-disk

Je pense que ce que @Caesium a dit provient du lien officiel ci-dessus

J'espère que cela aidera.

3 étapes:

1.qemu-img resize windows.qcow2 +5GB

2.GParted live cd to resize

3.reboot and use os tools to resize
2
kamil