web-dev-qa-db-ja.com

XenServer6.1でSSHFSを使用する

Xen Server 6.1では、VMをバックアップするために、次のツールに基づくスクリプトを使用します。

  • xe vm-listバックアップするVMのリストを作成します
  • xe vm-snapshotVMのスナップショットを作成します
  • xe template-param-set is-a-template=false ha-always-run=falseスナップショットをVMに変換します
  • 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アップデート)では使用できません。

Xenホストにsshfsをインストールする可能性がいくつかあります。

  • Sshfsを含むリポジトリを追加します。後でトラブルを起こす可能性があると思います。 Xenではサポートされていないので、ホスト構成をほとんど変更しないほうがいいです
  • Tarballを取り出して、別のディレクトリにインストールできます
  • または私はRPMを取り、それを分解してインストールします

または、エクスポートの場合と同じように、リモートsshコマンドをxe vm-importにパイプする方法を見つけました。私はたくさんのことをテストしましたが、うまくいくものは何もありません

あなたの意見では、最善の解決策は何でしょうか?

4
Icu

これは古い質問ですが、私はこれを自分で理解したところです。

まず..機能しないもの(すべて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

つまり、ストリームからインポートする方法がないことがわかりました。何らかの実際のファイルシステムである必要があります。これは以前は機能していたようですが、現在は機能していません。 My xenserverがシークしたいと思っていると思います。

(誰かが私の試みの欠陥を見つけて、私が間違っていることを証明できれば、私は非常に感謝します)。

したがって、はい、私の結論は、リモートファイルシステムを使用する必要があるということです。NFSはこれを使用しているため、これで機能することがわかっています。ただし、簡単にするためにsshfsを決定しました。 XenServer6.5にsshfsをインストールした方法は次のとおりです。

# 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 [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

ああ、追加する必要があります。バックアップサーバーにxenxerverツールをインストールしてみました。どちらも機能しません。確かに、コマンドを実行することができ、それはすべて素晴らしく見えます。だが filename=/dev/stdinはまだ機能しません、NOR DOES filename=/path/to/myexport.xva。ハングするか、インポートを開始してから、奇妙な方法で失敗します。

つまり、インポートです。しかし、エクスポートについてはどうでしょうか。リモートでインストールされたxenserverツールの使用:

xe vm-export uuid = the-vm-uuid filename = -s xenhost.my.domain -u root -pwf password_file

これはstdoutにエクスポートされます。しかし、それらのエクスポートが常に正常にインポートされるかどうかについては少し不明確です。私はいくつかの失敗といくつかの成功を経験しました。 SOリモートツールを使用しないことに決めました。ただし、代わりにsshを使用してください。

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

できます!

その結果、バックアップシステム(Bareos)を使用すると、最初に一時ファイルにエクスポートしなくても、sshを介してバックアップソフトウェアに直接バックアップを実行できます。ただし、復元を行うには、最初にxvaを一時ストレージに復元してから、sshfsを使用してxenhostにマウントし、次にvm-importを実行する必要があります。両方の方法でストリーミングできないのは悲しいことです。うまくいけば、これはxeでいつか修正されるでしょう。

これが一部の人々に役立つことを願っています..すべての可能性をテストするのにかなりの試行錯誤が必要でした:)

4
little_birdie

Xva-backupsをXenServerにインポートする方法が必要な場合は、xeゲストユーティリティをバックアップサーバーにインストールするだけです。それらはxentoolsiso(linuxフォルダー)に含まれています。次に、「xe -s serverip -u root -pw password vm-import ...」を使用して、バックアップをインポート(またはエクスポート)できます。

ところで:接続はSSL経由で保護されています。

3
Striker_84

これは私のために働きます:

タスク:移動VM古い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>'

すべてうまくいきます!

0
TheLumberJack