Quel est le meilleur format d'image, brut ou qcow2, à utiliser comme image de base pour d'autres machines virtuelles?

25

J'utilise une image de base et sur cette base, je crée de nombreuses machines virtuelles. Et maintenant, je veux savoir ce qui est mieux, qcow2 ou raw à utiliser pour une image de base. De plus, pouvez-vous me dire s'il y a un avantage à utiliser cette chose d'image de base, au lieu de cloner tout le disque. La vitesse peut être un facteur, mais en termes d'efficacité, y a-t-il un problème à utiliser une image de base, puis à créer des machines virtuelles à l'aide de cette image de base?

Modifier 1:

J'ai effectué quelques expériences et obtenu entrez la description de l'image icientrez la description de l'image icientrez la description de l'image ici

Le premier est lorsque l'image de base et la superposition sont toutes deux qcow2. Deuxième Lorsque l'image de base est brute mais que la superposition est qcow2 et dans le troisième cas, je donne une image de disque brute individuelle à chaque machine virtuelle. Étonnamment, le dernier cas est beaucoup plus efficace que les deux autres.

Montage expérimental: 
Système d'exploitation dans l'image de base: Ubuntu Server 14.04 64 bits.
Système d'exploitation hôte: Ubuntu 12.04 64 bits
RAM: 8 Go
Processeur: CPU Intel® Core ™ i5-4440 à 3,10 GHz × 4 
Disque: 500 Go 

Sur l'axe des x: nombre de VM démarrées simultanément. À partir de 1 et incrémenté jusqu'à 15.

Sur l'axe des y: temps total pour démarrer "x" nombre de machines.

D'après les graphiques, il semble que donner une image disque complète à VM est beaucoup plus efficace que les 2 autres méthodes.

Modifier 2: entrez la description de l'image ici

C'est le cas lorsque nous donnons une image brute individuelle à chaque machine virtuelle. Après avoir effectué le vidage du cache, voici le graphique. Il est presque similaire à la superposition raw baseimage + qcow.

Merci.

UN B
la source
1
J'utiliserais une image de base brute et une superposition QED au lieu de qcow2. QED est plus rapide que qcow2 et moins susceptible d'être corrompu par conception.
Matt
@Matt, veuillez commenter la question modifiée.
AB
Les différences de performances sont intéressantes. Pouvez-vous l'essayer avec qed? pourrait être un problème de contention / verrouillage dans l'implémentation de qcow2. Je crois qu'il a quelques problèmes, c'est pourquoi ils ont inventé le qed.
Matt
1
@Matt J'ai vérifié avec la superposition brute de baseimage-qed et la superposition brute de baseimage-qcow2. Mais qed est beaucoup plus lent que qcow2 dans ce paramètre.
AB

Réponses:

18

Pour votre cas d'utilisation spécifique (image de base + superposition qcow2), le format RAW doit être préféré:

  1. C'est plus rapide: comme il n'y a pas de métadonnées associées, c'est aussi rapide que possible. D'autre part, Qcow2 a deux couches d'indirection qui doivent être croisées avant d'atteindre les données réelles
  2. Comme la couche de superposition doit être un fichier Qcow2, vous ne perdez pas la capacité de capture instantanée toujours utile (les images RAW ne prennent pas en charge les captures instantanées par elles-mêmes)

Le choix entre l'image de base + la superposition qcow2 vs plusieurs copies complètes dépend de votre priorité:

  1. Pour des performances absolues, utilisez des images RAW fallocalisées. Cela a l'inconvénient de ne pas prendre en charge les instantanés, car dans la plupart des environnements, le prix à payer est trop élevé
  2. Pour plus de flexibilité et d'économie d'espace, utilisez des images de base RAW + des superpositions Qcow2.

Quoi qu'il en soit, j'ai trouvé les fichiers Qcow2 quelque peu fragiles.

Pour mes hyperviseurs KVM de production, j'utilise essentiellement deux configurations différentes:

  1. où les performances sont n ° 1 J'utilise des volumes LVM directement attachés aux machines virtuelles et j'utilise la fonction de capture instantanée LVM pour effectuer des sauvegardes cohérentes
  2. où je peux sacrifier certaines performances pour une flexibilité accrue, j'utilise une seule grande image LVM Thin Provisioned Volume + XFS + RAW

Une autre possibilité consiste à utiliser un volume LVM normal + des images XFS + RAW. Le seul inconvénient est que les instantanés LVM normaux (non minces) sont très lents et que l'instantané d'un volume LVM normal occupé réduira les performances (pendant la durée de vie de l'instantané). Quoi qu'il en soit, si vous prévoyez d'utiliser uniquement une utilisation sporadique de clichés, cela peut être le pari le plus simple et le plus sûr.

Quelques références:
lenteur des E / S
KVM sur les performances de stockage KVM RHEL 6 et prellocation Qcow2 sur RHEL 6.1 et Fedora 16
performances de stockage KVM et paramètres de cache sur Red Hat Enterprise Linux 6.2
LVM volume léger expliqué

shodanshok
la source
Comme indiqué ci-dessus: les images RAW individuelles seront plus rapides en raison de l'absence de couches d'indirection. N'oubliez pas cependant que vous abandonnez les instantanés (au niveau de l'image) et l'efficacité de l'espace. De plus, j'ai l'impression que votre troisième résultat a été faussé par le cache de l'hôte. Pour être sûr, refaire tous vos tests en émettant "sync; echo 3> / proc / sys / vm / drop_caches" entre chaque exécution.
shodanshok
En fait, je pensais la même chose. Mais alors j'ai pensé qu'en cas d'utilisation réelle, il suivrait le même flux.
AB
Pas vraiment: dans cet environnement de test, vous démarrez simplement vos machines virtuelles, sans les utiliser. Dans un cas réel, après le démarrage, les machines virtuelles seront utilisées, polluant le cache. En général, il est préférable de comparer avec un cas d'utilisation raisonnable.
shodanshok
Avez-vous une idée pourquoi la mise en cache ne joue pas autant de rôle dans le graphique 1 et le graphique 2, c'est-à-dire l'image de base Qcow2 + la superposition Qcow2 et l'image de base brute + la superposition Qcow2.
AB
6

S'il vous plaît être avisé .... si vous utilisez linux, vous pouvez utiliser rawet obtenir les mêmes avantages qcow2en ce qui concerne la taille.

... Si votre système de fichiers prend en charge les trous (par exemple en ext2 ou ext3 sous Linux ou NTFS sous Windows), alors seuls les secteurs écrits réserveront de l'espace.

https://docs.fedoraproject.org/en-US/Fedora/18/html/Virtualization_Administration_Guide/sect-Virtualization-Tips_and_tricks-Using_qemu_img.html

raw Format d'image de disque brut (par défaut). Il peut s'agir du format de fichier le plus rapide. Si votre système de fichiers prend en charge les trous (par exemple en ext2 ou ext3 sous Linux ou NTFS sous Windows), seuls les secteurs écrits réserveront de l'espace. Utilisez les informations qemu-img pour obtenir la taille réelle utilisée par l'image ou ls -ls sous Unix / Linux.

d hee
la source
Bon point! Mais il semble qu'en sauvegarde / copie / compression, toute la taille du fichier image brut soit utilisée. Un fichier brut de 20 Go allouant uniquement 4 Mo sur le disque a été
compressé
C'était complètement nouveau pour moi. J'ai une machine virtuelle dans Proxmox VE avec un disque virtuel de 30 Go ... et je peux voir que le disque a la taille dans le système de fichiers hôte. Mais le système de fichiers hôte a une utilisation globale de << 10 Go. C'est la raison pour laquelle je cherchais.
cljk