Ajouter un disque physique à la machine virtuelle KVM

12

Je configure un serveur de fichiers (nas4free) en tant que machine virtuelle KVM sur un système Ubuntu Server 12.04.

Comment ajouter des disques durs physiques directement à la machine virtuelle afin qu'ils puissent être utilisés par l'invité (nas4free), mais pas l'hôte?

Plus précisément, le disque dur que je voudrais monter est / dev / sda (qui n'est pas actuellement monté sur le serveur).

Jusqu'à présent, j'ai trouvé deux solutions, mais je n'ai pas non plus réussi à travailler.

Le premier provient de Server Fault où il est suggéré d'utiliser virt-manager. Je n'ai pas réussi à le faire parce que lorsque j'essaie de sélectionner un lecteur existant, rien n'est répertorié. Ma meilleure supposition quant à la raison en est que j'utilise virt-manager sur ssh et que je ne me connecte pas en tant que root, cela devrait-il faire une différence?

La deuxième solution que j'ai trouvée ici consiste à simplement exécuter la commande (modifiée pour mon système)

qm set nas4free -virtio /dev/sda

mais cela semble nécessiter proxmox que je n'ai pas installé et ne semble pas être dans les référentiels par défaut?

Enfin, une fois que ce qui précède est réglé et que je peux monter le lecteur directement sur la machine virtuelle, quelqu'un a-t-il une expérience pour savoir si le lecteur doit être monté sur la machine virtuelle en tant que scsi, ide ou virtio? (Je sais que virtio était recommandé dans la page liée de ServerFault, mais je n'en avais pas entendu parler depuis maintenant car j'utilise principalement VMWare).

Merci de votre aide!!!

evan
la source
1
Exécutez sudo virt-manager, pas besoin de vous connecter en tant que root. Je ne sais pas si cela virtiofonctionne pour les appareils physiques ...
ish
@izx, merci pour votre réponse! cela devrait-il faire une différence même si virt-manager est exécuté sur mon bureau et non sur le serveur?
evan

Réponses:

11

Bien que cela ait été répondu, plutôt que d'utiliser / dev / sda, vous devriez utiliser / dev / disk / by-id / d'où vous venez

    ls -l /dev/disk/by-id

De cette façon, vous êtes couvert au cas où le disque passe de / dev / sda à / dev / sdb.

smccloud
la source
2
Actuellement, c'est la seule réponse (qui ait jamais été) publiée sur cette question. Il y a des informations dans les commentaires qui pourraient aider, mais pour autant que je sache, il est loin d'être certain qu'ils vont résoudre le problème. Vous pourriez envisager de l'étendre pour fournir une solution complète. Si des parties de votre solution ont été conçues par d'autres, vous pouvez toujours les citer et les relier à elles. Je doute qu'izx me dérange ... surtout que (quand je commente maintenant) izx ne s'est pas connecté au site depuis plus d'un an.
Eliah Kagan
J'utilise virsh attach-device domain XML-file...pour attacher des disques. Pouvez-vous également utiliser disk-id dans l' <source dev='/dev/...'/>élément?
MrCalvin
8

Ayant exactement le même besoin, j'ai trouvé ce qui suit:

http://ronaldevers.nl/2012/10/14/adding-a-physical-disk-kvm-libvirt.html

(tout le texte suivant provient de la source ci-dessus)

Cela ne peut pas être fait avec virt-manager. Celui-là m'a pris du temps à comprendre. Pour autant que je sache, virt-manager travaille avec des pools de stockage. Vous pouvez transformer un disque en pool de stockage, mais vous ne pouvez pas ajouter un disque existant directement à une machine virtuelle.

Heureusement, le correctif est simple: vous ajoutez le disque au fichier de configuration xml du domaine à la main. Ouvrez donc /etc/libvirt/qemu/.xml dans votre éditeur préféré et ajoutez une section à la section:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw'/>
  <source dev='/dev/md/storage'/>
  <target dev='vdb' bus='virtio'/>
</disk>

Cela rendra le stockage / dev / md / de l'hôte disponible dans l'invité sous le nom / dev / vdb. Après avoir modifié la configuration d'un domaine à la main, vous devez recharger la configuration à la main. Connectez-vous à votre hôte et exécutez cette commande:

# virsh define /etc/libvirt/qemu/jetsetetser.xml
Domain jetser defined from /etc/libvirt/qemu/jetsetetser.xml

Voici une belle ressource avec plus d'informations sur la gestion de vms avec libvirt: https://help.ubuntu.com/community/KVM/Managing

Je vous recommande fortement de suivre les conseils donnés par smccloud. Cela fonctionne comme un charme pour moi. Méfiez-vous de ne monter aucun volume sur les disques physiques utilisés par votre invité, sinon vous endommageriez gravement son système de fichiers!

dethegeek
la source
4
Au lieu de virsh define..., la recommandation est d'utiliser virsh edit <NAME>Cela vous permet de modifier le XML dans votre éditeur de texte préféré et de mettre à jour automatiquement la machine virtuelle.
Nathan Osman