web-dev-qa-db-fra.com

Le disque en ligne est-il possible avec KVM?

Nous évaluons KVM pour la virtualisation de Linux sur quelques projets. Tout va bien jusqu'à présent. Mais une de nos exigences est la possibilité d'ajouter de l'espace disque à un invité en cours d'exécution sans le redémarrer ou le prendre. Hors ligne. Est-ce possible avec kvm?

La seule chose que j'ai trouvée jusqu'à présent (mais elle n'a pas encore été testée) est la possibilité de faire appel à des disques à la machine. Si je passe à cet itinéraire, je pourrais toujours ajouter le nouveau disque à un groupe de volumes LVM sur l'invité, puis prolonger le volume logique choisi. Le plus gros inconvénient de cette approche est que, avec le temps, nous pourrions vous retrouver avec des personnes variables de disques virtuels. L'espace disque "réel" serait fourni à l'hôte sur un SAN. Nous pouvons donc toujours ajouter plus d'espace à l'hôte à chaque fois.

15
Eil

Je pense que vous êtes coincé de faire ce que vous avez mentionné si vous voulez le faire sans prendre la machine.

Pourquoi ne pas simplement donner les lunes de machines virtuelles directement sur le SAN et gérer l'espace là-bas? Cela fonctionne mieux si vous souhaitez utiliser des fonctionnalités telles que la migration en direct.

KVM est basé sur QEMU de sorte que tout le support de format image provient de ce projet. Voici un bon comment redimensionnez les différents formats que le support QEMU/KVM. Mais le forum QEMU serait un bon endroit pour poser cette question si vous n'obtenez aucune réponse solide ici.

Une autre option qui peut ne pas être idéale est d'utiliser un très grand format d'image Qcow2 ou autre pour les entraînements. Vous pouvez donc donner à chaque machine un petit lecteur pour le système d'exploitation et une grande image rare pour les données sous LVM. Cela garderait au moins le nombre de lecteurs virtuels/d'images que vous devez gérer. Mais ce mince provisioning pourrait être un problème si vous faites ceci à 1 000 machines et tout le monde vous emmène sur l'espace libre qu'ils voient.

Xen je crois avoir les mêmes limitations actuellement.

4
3dinfluence

Je sais que c'est une vieille question mais je l'ai trouvée en googling pour la solution et j'espère que cela pourrait aider quelqu'un d'autre.

Comme pour aujourd'hui, il est possible de redimensionner le disque dur de la machine. J'ai trouvé un chemin de travail ici:

https://bugzilla.redhat.com/show_bug.cgi?id=648594

Les étapes suivantes doivent être effectuées:

  1. Découvrez un nom de fichier et KVM Nom du périphérique du disque dur que vous souhaitez redimensionner:

    root@vhstage02:/data# virsh dumpxml test | xpath -e /domain/devices/disk
    Found 2 nodes in stdin:
    -- NODE --
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2" />
      <source file="/data/test.img" />
      <backingStore />
      <target dev="vda" bus="virtio" />
      <alias name="virtio-disk0" />
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" />
    </disk>
    -- NODE --
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw" />
      <source file="/data/images/debian-8.2.0-AMD64-netinst.iso" />
      <backingStore />
      <target dev="hda" bus="ide" />
      <readonly />
      <alias name="ide0-1-1" />
      <address type="drive" controller="0" bus="1" target="0" unit="1" />
    </disk>
    

Celui intéressant pour nous est le disque. Vous devriez rechercher source et alias blocs. Pour moi le nom de fichier est test.img et nom d'alias est virtio-disk0. À ce nom, vous devez préparer drive- Pour obtenir le nom du lecteur QEMU.

  1. Maintenant, nous redimensionnons réellement le lecteur à l'aide du moniteur QEMU:

    virsh qemu-monitor-command test block_resize  drive-virtio-disk0  100G --hmp
    

Notez que le nom de fichier a été utilisé sans extension et lecteur .IMG - a été ajouté à l'alias de disque. Le 100g est la taille résultante du lecteur que nous voulons avoir

  1. Connectez-vous à la machine et vérifiez que la taille réelle a été modifiée:

    root@test:~# fdisk -l
    
    Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x7e6e7f71
    
    Device     Boot  Start       End   Sectors  Size Id Type
    /dev/vda1  *      2048    499711    497664  243M 83 Linux
    /dev/vda2       501758 167770111 167268354 79.8G  5 Extended
    /dev/vda5       501760 167770111 167268352 79.8G 8e Linux LVM
    

C'est ça! Vous pouvez maintenant créer de nouvelles partitions ou redimensionnez-vous.

15
alexK

Afaik, ce n'est pas possible - vous pouvez ajouter de nouvelles images de disque et vous pouvez également indiquer que vous pouvez également ajouter de nouvelles images à un volume LVM, mais afin de redimensionner une image de disque active et amorçable, vous devez pouvoir la fermer. bas et éditez les partitions.

Voici une bonne explication pour développer une image. Bien que cela nécessite une fermeture, vous pouvez probablement vous échapper à quelques minutes de temps d'arrêt, surtout si vous évitez l'option d'image --Nonsparse et DD le disque GParted à un fichier ISO et montrez-vous dans votre invité KVM. en avance. J'espère que cela t'aides.

4
nedm

Il est possible de déplacer un système Linux entre les disques lorsqu'il est en cours d'exécution. La limitation est que vous ne pouvez pas modifier partitions sur un disque qui a partitions en cours d'utilisation.

Pour ce faire, votre système de fichiers racines doit être sur un LVM, cela signifie souvent que vous devez avoir un système de fichiers de démarrage distinct (ce n'est pas cependant essentiel, cela facilite simplement les choses)

Après avoir branché le nouveau disque, vous l'ajoutez à la LVM avec VGEXTEND, utilisez PVMove pour déplacer le rootfs sur le nouveau disque, utilisez LvexTend et ReSize2FS pour développer respectivement le volume logique et le système de fichiers, puis utilisez VGRece pour supprimer l'ancien disque du volume. grouper. Une fois supprimé, l'ancien volume peut être débranché.

Pour le cas simple, vous avez un disque minuscule pour le système de fichiers de démarrage que vous n'avez jamais à toucher. Mais si c'est sur c'est propre, c'est facile de démonter le débrancher, branchez-le un nouveau et reconstruisez le disque de démarrage sans arrêter le système. (Juste ne pas écraser pendant que vous le faites)

Remarque: Resize2fs peut également réduire les systèmes de fichiers.

3
Robert