На Xen Server 6.1 для резервного копирования моих виртуальных машин я использую сценарий, основанный на следующих инструментах:
xe vm-list
для создания списка виртуальных машин для резервного копированияxe vm-snapshot
сделать снимок виртуальных машинxe template-param-set is-a-template=false ha-always-run=false
преобразовать снимок в виртуальную машинуxe vm-export vm=uuid_of_this_new_vm filename=|ssh ..... "cat > /path/backup.xva"
xe vm-uninstall
Я хотел бы использовать sshfs для монтирования моего удаленного сервера резервного копирования на моем хосте Xen. Но sshfs недоступен в дистрибутиве Xen или репозитории по умолчанию (обновления XenServer 6.1.0).
У меня есть несколько возможностей установить sshfs на моем хосте Xen:
ИЛИ Я нахожу способ передать удаленную команду ssh в xe vm-import
как я делаю для экспорта. Я много чего тестировал, но ничего не работает
Какое решение, на ваш взгляд, было бы лучшим?
Хотя это старый вопрос, я только что понял его сам.
Первое .. что НЕ РАБОТАЕТ (Все проверено на XenServer 6.5):
xe-import filename=/dev/stdin
не работает .. совсем. Неважно, делаете ли вы:
# 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
Итак, я обнаружил, что нет возможности импортировать из потока, это должна быть какая-то реальная файловая система. По-видимому, раньше это работало, но сейчас не работает. Я предполагаю, что xenserver хочет искать.
(Если кто-нибудь сможет обнаружить ошибку в моих попытках и доказать, что я ошибаюсь, я был бы очень признателен).
Итак, да, я пришел к выводу, что вы должны использовать удаленную файловую систему, и мы знаем, что NFS подходит для этого, потому что мы ее использовали ... но для простоты выбрали sshfs. Вот как я установил sshfs на 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
Хорошо, теперь для восстановления из экспорта на другой компьютер:
# make mount point
mkdir backups
# mount location of your backups onto mount point
sshfs user@backupserver.mydomain.com:/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
Да, и я должен добавить .. Я попытался установить инструменты xenxerver на наш сервер резервного копирования .. он тоже не работает. Конечно, вы можете выполнять команды, и все выглядит отлично. Но filename=/dev/stdin
по-прежнему не работает, НИ ДЕЛАЕТ filename=/path/to/myexport.xva
. Он просто зависает или начинает импорт, а затем странным образом терпит неудачу.
Итак, это импорт ... а как насчет экспорта? Используя удаленно установленные инструменты xenserver:
xe vm-export uuid = the-vm-uuid filename = -s xenhost.my.domain -u root -pwf файл_паролей
Экспорт в стандартный вывод. Но немного неясно, всегда ли этот экспорт будет успешно импортироваться. У меня было несколько неудач и некоторые успехи. SO решил вообще не использовать удаленные инструменты ... но вместо этого сделайте это через ssh:
ssh root@xenhost.my.domain "vm-export uuid=the-vm-uuid filename=" > myexport.xva
ОНО РАБОТАЕТ!
Результатом этого является то, что с нашей системой резервного копирования (Bareos) можно выполнять резервное копирование через ssh непосредственно в программное обеспечение резервного копирования, без необходимости сначала выполнять экспорт во временный файл. Но чтобы выполнить восстановление, необходимо сначала восстановить xva во временное хранилище, затем смонтировать на xenhost с помощью sshfs, а затем vm-import. Мне грустно, что мы не можем вести потоковую передачу в обоих направлениях ... надеюсь, это будет исправлено в xe когда-нибудь.
Надеюсь, это поможет некоторым людям ... потребовалось много проб и ошибок, чтобы проверить все возможности :)
Если вы хотите иметь возможность импортировать свои xva-резервные копии в XenServer, вы можете просто установить гостевые утилиты xe на свой сервер резервного копирования. Они включены в iso xentools (папка linux). тогда вы можете использовать «xe -s serverip -u root -pw password vm-import ...» для импорта резервных копий (или даже их экспорта).
Кстати: соединение защищено через SSL.
Это работает для меня:
Задача: переместить виртуальную машину из старого XS в новый XS От: XS 6.2 70446c Кому: XS 7.0 125380c
На хосте XS 6.2 я использую эту команду в консоли:
xe vm-export uuid=<VM_UUID> filename= | ssh root@<XS7_IP_ADDRESS> 'xe vm-import filename=/dev/stdin sr-uuid=<XS7_LOCAL_STORAGE_UUID>'
Все отлично работает!