Je ne sais pas trop comment formuler cette question (d'où le mauvais titre), alors laissez-moi vous donner un exemple de ce que j'essaie de faire.
Sur mon (ancien) hôte Xen, je peux présenter des systèmes de fichiers LVM directement à chaque invité. Ces systèmes de fichiers sont en fait créés et formatés sur l'hôte, et transmis directement à travers. Par exemple, pour un de mes hôtes utilisant un tmp séparé et des partitions de swap, je définis le stockage comme ceci:
disk = [
'phy: / dev / vg1 / guest1-swap, sda1, w',
'phy: / dev / vg1 / guest1-disk, sda2, w',
'phy: / dev / vg1 / guest1-tmp, sda3 , w ',
]
Ainsi, guest1-swap est formaté comme une partition de swap, guest1-disk et guest1-tmp sont formatés avec ext4, et du point de vue de l'invité, il les considère simplement comme trois partitions formatées sous / dev / sda.
(Cela peut sembler beaucoup de travail, mais il existe des scripts d'approvisionnement, tels que les impressionnants outils xen , qui automatisent à peu près tout).
Cela fournit des capacités vraiment utiles, dont deux m'intéressent particulièrement à trouver pour KVM:
Montez les systèmes de fichiers invités à partir du système d'exploitation hôte . Je peux faire un montage en lecture seule de n'importe quel système de fichiers invité à tout moment, même lorsque l'invité est en cours d'exécution. Cela a l'avantage secondaire de permettre à my de créer des instantanés LVM de tout volume existant pendant que l'invité est en cours d'exécution. De cette façon, je suis en mesure de sauvegarder de manière centralisée tous mes invités, en cours d'exécution, à partir de l'hôte.
Redimensionnement du volume en ligne . Étant donné que les volumes contiennent des systèmes de fichiers Linux standard, je peux utiliser une combinaison de lvextend et resize2fs pour développer mes systèmes de fichiers invités, à nouveau lorsqu'ils sont en ligne.
Je configure actuellement un hôte KVM qui remplacera l'hôte Xen. Semblable à la configuration Xen, je tire parti de LVM pour fournir un accès direct au système de fichiers, mais KVM / qemu se comporte différemment en ce qu'il crée toujours un fichier image pour les invités, même sur le volume LVM. Du point de vue de l'invité, il voit cela comme un disque non partitionné, et c'est à l'invité d'appliquer une étiquette de partition, puis de créer les partitions et les systèmes de fichiers.
D'un point de vue invité, c'est bien, mais d'un point de vue serveur / gestion, il semble être beaucoup moins flexible que la configuration Xen que j'ai décrite. Je suis encore nouveau sur KVM, donc je peux (espérons-le) manquer quelque chose.
J'ai rencontré ce problème en essayant de réimplémenter mon ancienne solution de sauvegarde sur l'hôte KVM et la commande de montage s'est étouffée lorsque j'ai essayé de monter l'un des systèmes de fichiers de l'invité. Donc, répondre à cela est ma préoccupation actuelle, mais cela m'a également préoccupé par le redimensionnement, car je suis sûr que ce problème se posera à un moment donné également.
Donc, voici mes questions:
Existe-t-il un moyen pour que kvm / qemu utilise les systèmes de fichiers de volume LVM directement comme je l'ai décrit pour ma configuration Xen? J'utilise libvirt pour la gestion si cela fait une différence.
Sinon, que puis-je faire pour obtenir des fonctionnalités de montage / sauvegarde similaires sous KVM? J'ai vu des discussions sur l'utilisation de libguestfs w / FUSE pour ce faire, mais est-ce vraiment la meilleure option? Je préfère m'en tenir à un montage de système de fichiers natif si possible.
Sinon, est-il possible de redimensionner un système de fichiers en ligne sous KVM? J'ai trouvé plusieurs discussions / howtos à ce sujet, mais les réponses semblent être partout sans solutions claires et certainement pas simples.
Désolé pour le long post, je voulais juste m'assurer qu'il était clair. Veuillez me faire savoir si je peux fournir d'autres informations qui pourraient être utiles. Dans l'attente de la discussion. :-)
la source
Réponses:
virt-*
outils) peut fournir un accès aux systèmes de fichiers invités d'une manière plus propre que tout ce que vous remontez directement sur l'hôte, bien que les deux soient possibles.resize2fs
fonctionnera dans une machine virtuelle ainsi que sur du matériel physique, le seul problème étant que l'invité redétecte les changements de taille. Essayezvirt-resize
comme outil standard, maislvresize
ilqemu-img
peut également être facilement utilisé (bien qu'en mode hors ligne, nécessitant généralement un redémarrage invité).Je pense
lvresize
qu'avecresize2fs
fonctionnera sans redémarrage invité, mais je ne l'ai pas encore essayéla source
virsh
mais assez facile à traversvirt-manager
. Les systèmes les plus sérieux comme RHEV / oVirt utilisent en fait LVM tout le temps pour le stockage basé sur FC / iSCSIattach-disk
de le connecter dynamiquement, mais ce n'est pas permanent et je ne peux pas le faire fonctionner pour /. Pouvez-vous indiquer une documentation à ce sujet ou fournir des conseils spécifiques? Merci!J'utilise qemu-kvm + libvirt avec exactement la configuration que vous demandez, pour les raisons que vous avez énumérées, mais en plus parce que j'obtiens de bien meilleures performances sans la couche du système de fichiers de l'hôte KVM dans la portée. Si vous ajoutez le VG en tant que «pool de stockage» dans virt-manager, vous pouvez créer de telles machines virtuelles à l'aide de son assistant convivial. (Mais je viens d'écrire le XML à la main ces jours-ci en utilisant une machine virtuelle existante comme modèle).
Voici la sortie aseptisée de «virsh dumpxml» pour l'un de mes invités:
Une autre pensée (sans rapport avec votre question, mais cela pourrait aider): si vous le pouvez, assurez-vous que vous utilisez les pilotes réseau, paravirtualisé, par blocs, aléatoires, d'horloge, etc. - ils sont nettement plus rapides que ceux entièrement virtualisés. C'est le truc "model = virtio" ci-dessus. Vous devez charger des modules de pilote dans le noyau de l'hôte tel que virtio_net.
Voici la sortie de 'virsh pool-dumpxml vg1':
la source
virsh pool-dumpxml mypool
Je ne connais pas de moyen de reproduire exactement le comportement Xen que vous décrivez. Cependant, vous pouvez utiliser
kpartx
pour exposer les partitions dans un LV qui contient une image de disque entier en tant que périphériques de bloc sur l'hôte, que vous pouvez ensuite monter, etc.la source
Voir ma réponse à ma propre question sur ce problème lors du démarrage du noyau hors image KVM et de la partition existante . En bref, obtenir virt-install pour créer une configuration pour cela est assez simple, étant donné une légère modification de guest / etc / fstab.
la source