![]() |
Iconshock - http://www.iconshock.com |
トラブルは最短・最速で終わらせたい! @snicker_jp です。
もくじ
きっかけ
トラブルが起きて、 2TB 弱ほどの vmdk ファイルを転送する事になったので、その顛末です。
トラブルの経緯を簡潔に説明すると
容量拡張⇒残ディスクすくな⇒起動⇒あがんね・・・どうしよ・・・(´・ω・`)
デカイとこ転送だ!⇒12MB/s ⇒終わるの二日後かよ・・・(T^T)
↑担当者談
イメージ図:
※参考までに
12MB/s ⇒ 96Mbps
「JAWS DAYS」は役に立つ!
そこで、「JAWS DAYS 2013」のセッションで知った、「Obama for America」の リージョン間転送 にも使われた「Tsunami UDP Protocol」を検証がてら使ってみたら、すごいことになったのでご紹介します。
大事なこと
今回は「VMware ESXi」の「データストア」を使って起きたことですが、
大事なことなので前もって書いておきます。
データストアは総容量の最低20%は空けておくべし!(`・ω・́)ゝ
前提条件
- VMware ESXi 4.1 or 5.1
- Tsunami UDP Protocol
- Linux x86_64 (CentOS想定) ← tsunami-udpコンパイル用
作業の流れ
- Tsunami UDP Protocolのダウンロードとコンパイル
- ESXi へ バイナリを転送
- ESXi 5 の FireWall をいったんunload
- Tsunami UDP サーバーの起動
- Clientから受信
イメージ図:
Tsunami UDP Protocolのダウンロードとコンパイル
コンパイル用のLinux(x86_64)で
- Tsunami UDP Protocol 本家のリンクから、ソースのダウンロード
今回使ったソース:
tsunami-v1.1-cvsbuild42.tar.gz
suz-labさんの記事を参考にコンパイルです。
- suz-lab - blog: "Tsunami UDP"をインストールしてみた
http://blog.suz-lab.com/2011/06/tsunami-udp.html
- "aclocal/autoconf/automake" が必要なので、無ければ以下のコマンドでインストール
12sudo
yum
install
autoconf
sudo
yum
install
automake
(aclocalはautomakeの中に)
- ソースの解凍とmake
123tar
zxvf tsunami-v1.1-cvsbuild42.
tar
.gz
cd
tsunami-udp-v11-b42
make
- make中のメッセージ
123456789101112131415161718192021222324252627282930313233343536373839404142434445[snicker_jp@devdev tsunami-udp-v11-b42]$
make
sh .
/recompile
.sh
Running aclocal...
Running automake...
Running autoconf...
Configuring Tsunami version 9.2
checking
for
a BSD-compatible
install
...
/usr/bin/install
-c
checking whether build environment is sane...
yes
checking
for
gawk
...
gawk
checking whether
make
sets $(MAKE)...
yes
checking build system
type
... x86_64-unknown-linux-gnu
checking host system
type
... x86_64-unknown-linux-gnu
checking
for
gcc
...
gcc
checking
for
C compiler default output
file
name... a.out
checking whether the C compiler works...
yes
checking whether we are cross compiling... no
checking
for
suffix of executables...
checking
for
suffix of object files... o
checking whether we are using the GNU C compiler...
yes
checking whether
gcc
accepts -g...
yes
checking
for
gcc
option to accept ANSI C... none needed
checking
for
style of include used by
make
... GNU
checking dependency style of
gcc
... gcc3
checking
for
ranlib... ranlib
checking
for
main
in
-lpthread...
yes
configure: creating .
/config
.status
config.status: creating Makefile
config.status: creating client
/Makefile
config.status: creating rtclient
/Makefile
config.status: creating common
/Makefile
config.status: creating include
/Makefile
config.status: creating server
/Makefile
config.status: creating rtserver
/Makefile
config.status: creating util
/Makefile
config.status: executing depfiles commands
make
[1]: ディレクトリ `
/home/snicker_jp/tsunami-udp-v11-b42
' に入ります
Making clean
in
rtclient
~ 略 ~
make
[2]: `all-am' に対して行うべき事はありません.
make
[2]: ディレクトリ `
/home/snicker_jp/tsunami-udp-v11-b42
' から出ます
make
[1]: ディレクトリ `
/home/snicker_jp/tsunami-udp-v11-b42
' から出ます
You can
do
a
'sudo make install'
to
install
binaries into
/usr/bin
[snicker_jp@devdev tsunami-udp-v11-b42]$
↑こんなメッセージなら成功のはずw
ESXi へ バイナリを転送
コンパイル用のLinux(x86_64)で
- tar で固める
1tar
zcvf tsunami-udp-v11-b42.
tar
.gz tsunami-udp-v11-b42
- 2台に転送
1scp
tsunami-udp-v11-b42.
tar
.gz [ESXiのIP]:.
ESXi で
- 解凍
1tar
zxvf tsunami-udp-v11-b42.
tar
.gz
- 確認
12cd
/
ls
-d tsunami-udp-v11-b42
存在確認出来ればとりあえずOK
ESXi 5 のFWをいったんunload
- ESXi 5 で
1 | esxcli network firewall unload |
これで、解放されます
(コラム)ちなみに、個別にFWにポートを開けるには
- ESXi 5 の F/W に穴を開ける
http://blog.cles.jp/item/4586
↑ここを参考に
/etc/vmware/firewall
にxmlを保存して「esxcli network firewall refresh」すれば出来るはずなんですが、なぜかうまくいかなかったので・・・。
いったん、「unload」しました。
Tsunami UDP サーバーの起動
- 送信元 ESXi で
1234cd
/vmfs/volumes/
[データストア名]/
cd
[移行フォルダ]
※ Tsunamiのデーモン起動
/tsunami-udp-v11-b42/server/tsunamid
*
Clientから受信
- 送信先 ESXi で
123cd
/vmfs/volumes/
[データストア名]/
mkdir
[保存フォルダ]
cd
[保存フォルダ]
- TsunamiのClient起動
1234567891011/tsunami-udp-v11-b42/client/tsunami
Tsunami Client
for
protocol rev 20061025
Revision: v1.1 devel cvsbuild 42
Compiled: Apr 24 2013 15:50:41
tsunami> connect [tsunamidを起動したサーバーIPなど]
Connected.
tsunami> get *
Requesting all available files
Server is sharing 14 files
↑うまくいけばこんな感じで、転送が始まります。 - 実際の転送状況
600Mbps越え!(」・ω・)」うー!(/・ω・)/にゃー!
※参考までに
600Mbps ⇒ 75MB/s
USB2.0規格最大速度
480Mbps ⇒ 60MB/s
USB2.0の規格最大速度より早いので、USB2.0の外付HDDに転送するより速いです!
忘れていたんで追加!
これって、どうやらServerの方は「Ctrl-C」やらしても切れないので・・・ps なりして、プロセスを直接切ります。
例:
kill -9 [tsunamid のプロセス番号]
これで、大丈夫だと思います!(^^;; ヒヤアセ
まとめ
- Tsunami UDP Protocol すげー SUGEEEEEE(゚Д゚)EEEEEEEEE!!
- ESXi 5 から FW有効になってるから気をつけよう!
- データストアの残容量に気を付ける
参考リンク
- suz-lab - blog: "Tsunami UDP"をインストールしてみた
http://blog.suz-lab.com/2011/06/tsunami-udp.html - suz-lab - blog: "Tsunami UDP"を使ってみた
http://blog.suz-lab.com/2011/06/tsunami-udp_02.html - 短期決戦プロジェクトの立ち上げ方:期間限定の巨大プロジェクト・米国大統領選の裏側をAWSの中の人に聞いた (2/2) - @IT
http://www.atmarkit.co.jp/ait/articles/1304/01/news068.html - Amazon RDS Data Import Guide for Oracle : Articles & Tutorials : Amazon Web Services
http://aws.amazon.com/articles/4173109646282306 - CDP:Write Proxyパターン - AWS-CloudDesignPattern