Criar pool de armazenamento local do virt-manager

Criar pool de armazenamento local do virt-manager

Eu quero criar umconjunto de armazenamentopara imagens qcow2 do virt-managerno meu diretório pessoalmas recebo um erro estranho:

Error creating pool: Could not define storage pool: XML error: name /home/matthias/virtual-guests/virt-manager cannot contain '/'

Erro ao criar o pool

questões

  • É possível ter o pool de armazenamento no meu diretório inicial?
  • Preciso de permissões especiais para o virt-manager acessar o diretório?

rastreamento de erro completo

Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 89, in cb_wrapper callback(asyncjob, *args, **kwargs) File "/usr/share/virt-manager/virtManager/createpool.py", line 442, in _async_pool_create poolobj = self._pool.install(create=True, meter=meter, build=build) File "/usr/share/virt-manager/virtinst/storage.py", line 531, in install raise RuntimeError(_("Could not define storage pool: %s") % str(e)) RuntimeErError creating pool: Could not define storage poror: Could not define storage pool: XML error: name /home/matthias/virtual-guests/virt-manager cannot contain '/'

Responder1

Você pode criar pools, mas há algumas coisas a serem consideradas.

  1. O "nome" realmente não precisa de um conjunto de caracteres especiais, como '/'. Se você deseja criar um pool /tmp/test você pode nomeá-lo "teste" (no passo 1 de 2) e dê o caminho "/tmp/teste" (na etapa 2 de 2) e funcionará.

  2. o apparmor irápara-lo se você for muito incomum Existeum conjunto limitado de caminhos que são permitidos por omissão, se você sair deles em algum momentovirt-aa-ajudantenão será mais capaz de acessar os arquivos. Mas isso seria necessário para permitir o acesso ao perfil personalizado por convidado. Veja as regras existentes /etc/apparmor.d/usr.lib.libvirt.virt-aa-helpere adicione regras personalizadas em /etc/apparmor.d/local/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/local/README para obter mais informações.

  3. Alguns tipos de pool ainda não podem ser manipulados pelo apparmor. O tipo de pool padrão do virt-manager será "diretório" e tudo bem. Mas existem tipos mais avançados como "grupos lvm", para esses tipos de regras de apparmor não podem ser criadas para o convidado instantaneamente (veja bug sobre isso), nesses casos você precisará permitir os caminhos extras necessários alterando /etc/apparmor.d/abstractions/libvirt-qemu.

Responder2

Sim, você pode criar um pool para seu diretório inicial. Você provavelmente tentou criar um pool chamado "/home/matthias/virtual-guests/virt-manager" que contém os símbolos "/". No futuro, ao criar um pool, insira um nome sem o símbolo "/".

Você pode precisar criar um arquivo QCOW2 (arquivo de imagem de disco) em outra partição no futuro, veja os PASSOS desteGUIA.
Além disso, você pode achar útil issoGUIA.

Responder3

Criando um arquivo de imagem de disco qcow2 em outra partição

Este guia foi testado no Ubuntu 22.04 LTS, 22.10, 23.04, 23.10.

Vinculando automaticamente um diretório a um bloco (montagem automática de partição)

1. Crie novos diretórios

$ sudo mkdir /media/username
$ sudo mkdir /media/username/Shared
$ sudo mkdir /media/username/Shared/kvm

Importante!Nome do diretório kvm com letras minúsculas.

2. Execute o comando blkid para exibir informações sobre os dispositivos de bloco disponíveis. Você precisará de um identificador universalmente exclusivo (UUID)

$ sudo blkid

O resultado deve ser algo como:

/dev/sda1: LABEL="Ubuntu" UUID="azazazaz-azaz-azaz-azaz-azazazazazaz" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Ubuntu" PARTUUID="a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1"
/dev/sda2: LABEL="Shared" UUID="abababab-abab-abab-abab-abababababab" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Shared" PARTUUID="a2a2a2a2-a2a2-a2a2-a2a2-a2a2a2a2a2a2"

3. Edite o arquivo fstab.

$ sudo nano /etc/fstab

Adicione as duas linhas a seguir com o UUID correto no arquivo fstab:

# Shared
UUID=abababab-abab-abab-abab-abababababab       /media/username/Shared        ext4    defaults        0       2

O resultado final deve ser algo como:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p3 during installation
UUID=azazazaz-azaz-azaz-azaz-azazazazazaz /               ext4    errors=remount-ro 0       1
# Shared
UUID=abababab-abab-abab-abab-abababababab       /media/username/Shared        ext4    defaults        0       2

4. Execute mount -ao comando

$ sudo mount -a

Possíveis problemas:

  1. O emulador pode não ter permissões de pesquisa para o caminho '/media/username/Shared/kvm/Disk.qcow2'
  2. Erro ao iniciar o domínio: não é possível acessar o arquivo de armazenamento '/media/username/Shared/kvm/Disk.qcow2' (como uid:10101, gid:101): permissão negada

5. Corrija problemas de permissão

$ sudo chown root:root '/media'
$ sudo chmod 775 '/media'

$ sudo chown root:root '/media/username'
$ sudo chmod 775 '/media/username'

$ sudo chown username:username '/media/username/Shared'
$ sudo chmod 775 '/media/username/Shared'

$ sudo chown username:username '/media/username/Shared/kvm'
$ sudo chmod 777 '/media/username/Shared/kvm'

Alterando o pool de armazenamento padrão para libvirt

6. Liste os pools atuais

$ virsh pool-list

Você deve obter o seguinte texto:

Name                 State      Autostart 
-------------------------------------------
default              active     yes 

7. Destrua o pool padrão.

$ virsh pool-destroy default

Você deverá obter o seguinte texto: Pool padrão destruído

8. Indefinir o pool

$ virsh pool-undefine default

Você deverá obter o seguinte texto: O padrão do pool foi indefinido

9. Defina um novo pool chamado “default”

$ virsh pool-define-as --name default --type dir --target /media/username/Shared/kvm

Você deve obter o seguinte texto: Pool padrão definido

10. Defina o pool para iniciar quando os daemons libvirt iniciarem

$ virsh pool-autostart default

Você deverá obter o seguinte texto: Pool padrão marcado como iniciado automaticamente

11. Inicie a piscina

$ virsh pool-start default

Você deverá obter o seguinte texto: Pool padrão iniciado

12. Verifique o estado da piscina

$ virsh pool-list

Você deve obter o seguinte texto:

Name                 State      Autostart 
-------------------------------------------
default              active     yes 

Agora, ao criar máquinas virtuais, o Virtual Machine Manager salvará os arquivos qcow2 no diretório /media/username/Shared/kvm.

Criando uma nova máquina convidada ou arquivo qcow2

13. Execute o virt-manager

$ virt-manager

14. Crie uma imagem de disco para a máquina virtual ou crie uma nova máquina.

Responder4

No meu caso, foi um erro - não particularmente óbvio. Eu estava tentando criar um pool de armazenamento no diretório, entãodir:Filesystem Directory

Existem 2 etapas:

  1. Você especifica typee name, mas aquiname não é caminho. Exemplo:test
  2. Próxima etapa, Target Pathisso fornecerá o caminho sugerido /var/lib/libvirt/images/**test**. Simple **change**/var/lib/libvirt/images to whatever you want. Example:/libvirt-images-pool2/ (which will result in/libvirt-images-pool2/test```

Nota: pode ser necessário mexer na propriedade e na permissão, mas acho que a libvirt os corrige assim que você clica em Concluir.

Espero que ajude alguém.

informação relacionada