Назад | Перейти на главную страницу

Используйте SSHFS на XenServer 6.1

На Xen Server 6.1 для резервного копирования моих виртуальных машин я использую сценарий, основанный на следующих инструментах:

Я хотел бы использовать 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>'

Все отлично работает!