qcow2 est le format de prédilection de kvm.
qcow2 est nativement auto-extensible mais parfois on en voit le bout.... Et là, c'est le drâme.
Vos amis pour vous en sortir : qemu-img, dd, losetup, gparted, fdisk, resize2fs
Contexte :
- vous avez créé un fichier qcow2 un peu petit (genre 1Go)
$ qemu-img info vm-img.qcow2
image: vm-img.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 952M
cluster_size: 65536
- vous avez installer une VM avec une seule partition pour /
# fdisk -l /dev/sda
Disque /dev/sda: 1073 Mo, 1073741824 octets
255 têtes, 63 secteurs/piste, 130 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Identifiant de disque : 0x00000000
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 * 1 8 64228+ 82 Linux swap / Solaris
/dev/sda2 9 130 979965 5 Etendue
/dev/sda5 9 130 979933+ 83 Linux
- vous avez jouer avec la VM et vous n'avez plus de place de le 1Go du fichier qcow2
- vous voulez ne pas perdre vos données et continuer de jouer avec votre VM
La solution qui marche chez moi :
- éteindre la VM
- convertir votre fichier qcow2 en fichier raw
$qemu-img convert -f qcow2 vm-img.qcow2 -O raw vm-img.raw
- agrandir le fichier qcow2 avec la commande dd :
$dd if=/dev/zero of=vm-img.raw bs=1M count=0 seek=4096
(attention à la valeur du seek. Ici j'obtiens un nouveau fichier vm-img.raw de 4Go)
$ qemu-img info vm-img.raw
image: vm-img.raw
file format: raw
virtual size: 4.0G (4294967296 bytes)
disk size: 924M
- monter le fichier raw dans un loop device
#losetup /dev/loop0 vm-img.raw
- utiliser gparted pour étendre le conteneur de partitions "étendues" :
#gparted /dev/loop0
sélectionner la partition "étendue" et cliquer sur redimensionner, appliquer la modification et quitter gparted
- on vérifie le boulot :
# fdisk -l /dev/loop0
Disque /dev/loop0: 4294 Mo, 4294967296 octets
255 têtes, 63 secteurs/piste, 522 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Identifiant de disque : 0x000bdeda
Périphérique Amorce Début Fin Blocs Id Système
/dev/loop0p1 * 1 8 64228+ 82 Linux swap / Solaris
/dev/loop0p2 9 522 4128705 5 Etendue
/dev/loop0p5 9 130 979933+ 83 Linux
- passer par fdisk pour supprimer la partition contenant / et recréé-là en utilisant le même numéro de partition
# fdisk -l /dev/loop0
Disque /dev/loop0: 4294 Mo, 4294967296 octets
255 têtes, 63 secteurs/piste, 522 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Identifiant de disque : 0x000bdeda
Périphérique Amorce Début Fin Blocs Id Système
/dev/loop0p1 * 1 8 64228+ 82 Linux swap / Solaris
/dev/loop0p2 9 522 4128705 5 Etendue
/dev/loop0p5 9 130 979933+ 83 Linux
[root@localhost VM]# fdisk /dev/loop0
Commande (m pour l'aide): p
Disque /dev/loop0: 4294 Mo, 4294967296 octets
255 têtes, 63 secteurs/piste, 522 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Identifiant de disque : 0x000bdeda
Périphérique Amorce Début Fin Blocs Id Système
/dev/loop0p1 * 1 8 64228+ 82 Linux swap / Solaris
/dev/loop0p2 9 522 4128705 5 Etendue
/dev/loop0p5 9 130 979933+ 83 Linux
Commande (m pour l'aide): d
Numéro de partition (1-5): 5
Commande (m pour l'aide): n
Commande d'action
l logique (5 ou plus)
p partition primaire (1-4)
l
Premier cylindre (9-522, par défaut 9):
Utilisation de la valeur par défaut 9
Dernier cylindre, +cylindres or +taille{K,M,G} (9-522, par défaut 522):
Utilisation de la valeur par défaut 522
Commande (m pour l'aide): w
La table de partitions a été altérée!
Appel de ioctl() pour relire la table de partitions.
ATTENTION : la table de partitions n'a pas pu être relue : erreur 22 : Argument invalide.
Le noyau continue à utiliser l'ancienne table. La nouvelle sera utilisée
lors du prochain démarrage ou après avoir exécuté partprobe(8) ou kpartx(8).
Synchronisation des disques.
- on vérifie le boulot :
# fdisk -l /dev/loop0
Disque /dev/loop0: 4294 Mo, 4294967296 octets
255 têtes, 63 secteurs/piste, 522 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Identifiant de disque : 0x000bdeda
Périphérique Amorce Début Fin Blocs Id Système
/dev/loop0p1 * 1 8 64228+ 82 Linux swap / Solaris
/dev/loop0p2 9 522 4128705 5 Etendue
/dev/loop0p5 9 522 4128673+ 83 Linux
- convertir le fichier raw en fichier qcow2
$qemu-img convert -f raw vm-img.raw -O qcow2 vm-img.new.qcow2
$ qemu-img info vm-img.new.qcow2
image: vm-img.new.qcow2
file format: qcow2
virtual size: 4.0G (4294967296 bytes)
disk size: 950M
cluster_size: 65536
- redémarrer votre VM
- redimensionner à chaud la partition /
resize2fs /dev/sda5
Et voilà, elle est belle la vie.
Vous pouvez continuer de jouer dans votre VM.
(test fait avec une Mandriva 2010.0 comme host et une Mandriva 2010.0 en guest)
--
C01N C01N
# P2V
Posté par Nÿco (site web personnel) . Évalué à 1.
Ainsi, les vrais gens peuvent virer l'installation corporate proprio par défaut, installer un OS libre, et faire tourner les outils maison dans un guest... quand le besoin^Wobligation se faire ressentir...
[^] # Re: P2V
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 6.
$ dd if=/dev/sdb of=machin.img
$ qemu machin.img
[^] # Re: P2V
Posté par steph1978 . Évalué à 2.
par contre, dans la même veine, on peut booter la vm sur un cd virtuel et faire un dd par le réseau (virtuel) entre la machine P et la machine V.
[^] # Re: P2V
Posté par Jean-Philippe Garcia Ballester (site web personnel) . Évalué à 6.
qemu-img convert -f raw /dev/sda -O qcow2 vm-img.qcow2
permettrait peut-être de n'utiliser comme place que celle effective des données, alors qu'un dd va créer un fichier de la taille du disque dur, quelle que soit l'utilisation du disque.
# gpated
Posté par Psychofox (Mastodon) . Évalué à 3.
Tu pourrais très bien resizer la partition et le fs avec parted ou utiliser une combinaison de fdisk et resize2fs.
D'ailleurs je trouve dangereux cette idée qu'ont toujours les pécéistes à vouloir confondre partition/slice et fs...
[^] # Re: gpated
Posté par franck villaume (site web personnel) . Évalué à 2.
Quand à ton problème de confusion partition / fs, personnellement tout va bien et désolé si l'explication rapide dans mon journal est confuse.
# arretes moi si je me trompes
Posté par NeoX . Évalué à 1.
La solution qui marche chez moi :
- éteindre la VM
- convertir votre fichier qcow2 en fichier raw
$qemu-img convert -f qcow2 vm-img.qcow2 -O raw vm-img.raw
- agrandir le fichier qcow2 avec la commande dd :
$dd if=/dev/zero of=vm-img.raw bs=1M count=0 seek=4096
(attention à la valeur du seek. Ici j'obtiens un nouveau fichier vm-img.raw de 4Go)
avec ton dd tu vas effacer le contenu du fichier vm-img.raw non ?
[^] # Re: arretes moi si je me trompes
Posté par franck villaume (site web personnel) . Évalué à 6.
[^] # Re: arretes moi si je me trompes
Posté par Psychofox (Mastodon) . Évalué à 2.
Quelle partie ne comprends tu pas ?
[^] # Re: arretes moi si je me trompes
Posté par a_jr . Évalué à 2.
dd if=/dev/zero of=vm-img.raw bs=1M count=3072 seek=1024
seek: sauter 1024 fois 1M (soit 1 Go) avant d'ecrire sur le fichier
count : ecrire 3072 fois 1M (soit 3 Go), ce qui nous fait un total de 4Go
Le bonjour chez vous,
Yves
[^] # Re: arretes moi si je me trompes
Posté par NeoX . Évalué à 2.
comme je n'utilisais que dd pour creer un fichier et pas pour l'etendre, j'avais pas penser qu'on pouvait "sauter" une partie du fichier et ajouter des zero à la fin pour l'agrandir
[^] # Re: arretes moi si je me trompes
Posté par Jean-Philippe Garcia Ballester (site web personnel) . Évalué à 3.
[^] # Re: arretes moi si je me trompes
Posté par Yggdras . Évalué à 2.
# qcow2
Posté par IsNotGood . Évalué à -4.
Il ne sert à rien (sauf si on a un FS pourri).
[^] # Re: qcow2
Posté par lolop (site web personnel) . Évalué à 8.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: qcow2
Posté par Antoine Mercadal (site web personnel) . Évalué à 2.
# lvm
Posté par oau . Évalué à 1.
perso j'ajoute un disk à mon lvm. Je trouve ça quand même beaucoup moins complexe. Par contre avec kvm je sais pas ajouter un disk à chaud. Si quelqu'un sait faire je suis preneur.
- arreter la vm
- ajouter un nouveau disk à la conf
- relancer la vm
- pvcreate
- vgextend
- lvextend
- resize2fs
enjoy :)
oau
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.