Use SSHFS no XenServer 6.1

4

No Xen Server 6.1, para fazer backup de minhas VMs, uso um script com base nas seguintes ferramentas:

  • xe vm-list para criar uma lista das VMs para backup
  • xe vm-snapshot para tirar um instantâneo das VMs
  • xe template-param-set is-a-template=false ha-always-run=false para converter o instantâneo em uma VM
  • xe vm-export vm=uuid_of_this_new_vm filename=|ssh ..... "cat > /path/backup.xva"
    - > Para enviar a exportação para o meu servidor de backup sem armazená-lo localmente
  • xe vm-uninstall

Gostaria de usar o sshfs para montar meu servidor de backup remoto no meu host Xen. Mas o sshfs não está disponível na distribuição do Xen ou no repositório padrão (atualizações do XenServer 6.1.0).

Eu tenho algumas possibilidades para instalar o sshfs no meu host Xen:

  • Eu adiciono um repositório que contém sshfs. Eu acho que isso poderia me causar problemas mais tarde. Não é suportado pelo Xen e prefiro deixar a configuração do host praticamente inalterada
  • Eu poderia pegar um tarball e instalá-lo em um diretório separado
  • ou eu pego um RPM e o instalo separadamente

OU Eu descubro uma maneira de enviar um comando ssh remoto para xe vm-import como eu faço para a exportação. Eu testei muitas coisas, mas nada que funcione

Qual seria a melhor solução na sua opinião?

    
por Icu 28.03.2013 / 13:05

3 respostas

4

Embora essa seja uma pergunta antiga, acabei de descobrir isso pessoalmente.

Primeiro .. o que NÃO FUNCIONA (Tudo testado no XenServer 6.5):

xe-import filename=/dev/stdin não funciona .. de todo. Não importa se você faz:

# simple local import on xenhost
xe vm-import filename=/dev/stdin < myexport.xva

# try it the other way, with cat, still won't work:    
cat myexport.xva | xe vm-import filename=/dev/stdin

# and no, dd instead of cat in the above does not make it better

# nor can you pull the file from elsewhere via ssh:
ssh user@backupserver "cat myexport.xva" |  xe vm-import filename=/dev/stdin

# nor the other way, pushing from elsewhere to your xenserver
ssh root@xenhost "xe vm-import filename=/dev/stdin" < myexport.xva

# named pipes don't work either, even locally:
mkfifo mypipe
cat myexport.xva > ./mypipe &
xe vm-import filename=./mypipe

Então, o que eu descobri é que não há como importar de um fluxo, ele tem que ser um sistema de arquivos real de algum tipo. Aparentemente, isso costumava funcionar, mas isso não acontece agora. Meu palpite é que xenserver quer procurar.

(Se alguém puder detectar uma falha em minhas tentativas e provar que estou errado, ficarei muito grato).

Então, sim, minha conclusão é que você deve usar um sistema de arquivos remoto, e nós sabemos que o NFS funciona para isso, porque nós o usamos .. mas decidimos pelo sshfs para simplificar. Aqui está como eu instalei o sshfs no XenServer 6.5:

# fuse-fs and fuse-libs are in existing repos, so..
yum --enablerepo=base --disablerepo=citrix install fuse-fs
# for some reason yum wanted to install i386 fuse-libs which fails
# because of a dependency on i386 glibc.. nevermind all that, tell it
# directly that we want x86_64 and it will work:
yum --enablerepo=base --disablerepo=citrix install fuse-libs.x86_64

# fuse-sshfs is in the epel repo, which we need to add
yum --disablerepo=citrix --enablerepo=extras install epel-release
# now install fuse-sshfs
yum --disablerepo=citrix --enablerepo=extras install fuse-sshfs

# The above leaves epel-release enabled, which should be no problem but
# nevertheless I disabled it since I don't need it anymore:
#   Use vim to edit /etc/yum.repos.d/epel.repo
#   Where it says 'enabled=1' change to 'enabled=0'
vim /etc/yum.repos.d/epel.repo

Ok, agora para restaurar de uma exportação em outra máquina:

# make mount point
mkdir backups

# mount location of your backups onto mount point
sshfs [email protected]:/path/to/backups backups

# import as usual
xe vm-import filename=backups/myexport.xva

# unmount the remote filesystem, if you don't need it anymore
umount backups

# IT WORKS

Ah, e devo adicionar .. Eu tentei instalar as ferramentas xenxerver no nosso servidor de backup .. ele não funciona também. Claro, você pode executar comandos e tudo parece ótimo. Mas filename=/dev/stdin ainda não funciona, nem filename=/path/to/myexport.xva . Ele apenas trava ou começa a importar e falha de maneiras estranhas.

Então, isso é importar ... mas e a exportação? Usando as ferramentas xenserver instaladas remotamente:

xe vm-export uuid = nome-do-vm-uuid = -s xenhost.my.domain -u root -pwf password_file

Isso exporta para stdout. Mas não está claro se essas exportações sempre serão importadas com sucesso. Eu experimentei alguns fracassos e alguns sucessos. SO decidiu contra o uso de ferramentas remotas em tudo .. mas fazê-lo via ssh vez:

ssh [email protected] "vm-export uuid=the-vm-uuid filename=" > myexport.xva

FUNCIONA!

O resultado disso é que, com nosso sistema de backup (Bareos), é possível fazer um backup via ssh diretamente no software de backup, sem ter que exportar primeiro um arquivo temporário. Mas, para fazer a restauração, é necessário restaurar o xva para um armazenamento temporário primeiro, depois montar no xenhost com sshfs, depois vm-import. Estou triste que não podemos transmitir os dois lados .. espero que isso seja consertado em algum momento.

Espero que isso ajude algumas pessoas ... foi preciso uma boa quantidade de tentativa e erro para testar todas as possibilidades:)

    
por 15.03.2016 / 02:09
3

Se você quiser importar seus xva-backups para o XenServer, basta instalar os utilitários xe guest em seu servidor de backup. Eles estão incluídos no xentools iso (pasta linux). então você pode usar "xe -s serverip -u root -pw senha vm-import ..." para importar seus backups (ou até mesmo exportá-los).

Btw: a conexão é protegida via SSL.

    
por 28.03.2013 / 13:32
0

Isso funciona para mim:

Tarefa: Mover a VM do antigo XS para o novo XS A partir de: XS 6.2 70446c Para: XS 7.0 125380c

No host XS 6.2, eu uso este comando no console:

xe vm-export uuid=<VM_UUID> filename= | ssh root@<XS7_IP_ADDRESS> 'xe vm-import filename=/dev/stdin sr-uuid=<XS7_LOCAL_STORAGE_UUID>'

Tudo funciona muito bem!

    
por 21.02.2017 / 22:13