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:)