Adicionar disco físico à máquina virtual KVM

12

Estou configurando um servidor de arquivos (nas4free) como uma máquina virtual KVM em um sistema Ubuntu Server 12.04.

Como adiciono discos rígidos físicos diretamente à VM para que eles possam ser usados ​​pelo convidado (nas4free), mas não pelo host?

Especificamente, o disco rígido que eu gostaria de montar é / dev / sda (que não está atualmente montado no servidor).

Até agora, encontrei duas soluções, mas também não consegui trabalhar.

O primeiro é da falha do servidor onde é sugerido o uso do virt-manager. Não consegui fazer isso funcionar porque, quando tento selecionar uma unidade existente, nada está sendo listado. Meu melhor palpite sobre o motivo é que estou usando virt-manager sobre ssh e não conectando como root, isso deve fazer a diferença?

A segunda solução que encontrei aqui é apenas executar o comando (modificado para o meu sistema)

qm set nas4free -virtio /dev/sda

mas isso parece exigir proxmox, que eu não tenho instalado e não parece estar nos repositórios padrão?

Por fim, uma vez resolvido o problema acima, e eu posso montar a unidade diretamente na VM, alguém tem uma experiência sobre se a unidade deve ser montada na VM como scsi, ide ou virtio? (Eu sei que o virtio foi recomendado na página ServerFault vinculada, mas eu não tinha ouvido falar dele até agora, porque uso principalmente o VMWare).

Obrigado pela ajuda!!!

evan
fonte
1
Execute sudo virt-manager, não há necessidade de se conectar como root. Não sei se virtiofunciona para dispositivos físicos ...
ish
@ Izx, obrigado pela sua resposta! isso deve fazer a diferença mesmo que o virt-manager esteja sendo executado na minha área de trabalho e não no servidor?
evan

Respostas:

11

Embora isso tenha sido respondido, em vez de usar / dev / sda, você deve usar / dev / disk / by-id / de onde você vem

    ls -l /dev/disk/by-id

Dessa forma, você estará coberto caso o disco mude de / dev / sda para / dev / sdb.

smccloud
fonte
2
Atualmente, esta é a única resposta (que já foi) publicada sobre esta questão. Há algumas informações nos comentários que podem ajudar, mas, até onde eu sei, está longe de ter certeza de que elas resolverão o problema. Você pode expandir isso para fornecer uma solução completa. Se partes de sua solução foram criadas por outras pessoas, você sempre pode citá-las e vincular-se a elas. Duvido que izx se importaria ..especialmente porque (quando eu comento agora) izx não está conectado ao site há mais de um ano.
Eliah Kagan
Estou usando virsh attach-device domain XML-file...para anexar discos. Você também pode usar o ID do disco no <source dev='/dev/...'/>elemento?
MrCalvin
8

Tendo exatamente a mesma necessidade, encontrei o seguinte:

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

(todo o texto a seguir vem da fonte acima)

Isso não pode ser feito com o virt-manager. Aquele me levou um tempo para descobrir. Até onde eu sei, o virt-manager trabalha com pools de armazenamento. Você pode transformar um disco em um pool de armazenamento, mas não pode adicionar um disco existente diretamente a uma VM.

Felizmente, a correção é fácil: você adiciona o disco ao arquivo de configuração xml do domínio manualmente. Então abra /etc/libvirt/qemu/.xml no seu editor favorito e adicione uma seção à seção:

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

Isso disponibilizará o / dev / md / storage do host no convidado como / dev / vdb. Depois de alterar manualmente a configuração de um domínio, é necessário recarregá-la manualmente. Efetue login no seu host e emita este comando:

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

Aqui está um bom recurso com mais informações sobre o gerenciamento de vms com libvirt: https://help.ubuntu.com/community/KVM/Managing

Eu recomendo fortemente que você siga os conselhos dados pelo smccloud. Isso funciona como um encanto para mim. Cuidado para não montar nenhum volume nas unidades físicas usadas no seu convidado, ou você danificará severamente o sistema de arquivos!

dethegeek
fonte
4
Em vez de virsh define..., a recomendação é usar virsh edit <NAME>Isso permite editar o XML no seu editor de texto favorito e fazer com que as alterações atualizem automaticamente a VM.
Nathan Osman