ブロックマイグレーションの失敗

154 views
Skip to first unread message

黒沢翔

unread,
Jun 13, 2018, 8:38:00 AM6/13/18
to 日本OpenStackユーザ会
こんにちは

大きなディスクイメージを用いたブロックマイグレーションが失敗するという問題に2週間ほど頭を悩ましており,ask.openstack.orgに質問しましたが「This post is awaiting moderation」と表示され質問が公開されないのでここで質問させていただきます.

環境は以下のとおりです.
Ocataを用いた2ノード構成
1つ目はcontroller/network/computeノード,ホスト名Controller
2つ目はcomputeノード,ホスト名Compute1

移行したことのないノード(/var/lib/nova/instances/以下にイメージのキャッシュが存在しない)に初めてサーバ移動を行う場合,
小さなサイズ(CirrosOS 12MB,CentOS7クラウドイメージ 900MB)のブロックマイグレーションは成功しますが,
大きなサイズ(CentOS 4GB,WindowsServer 12GB)のブロックマイグレーションは失敗します.

失敗後,移行先のComputeノードの/var/lib/nova/instances/_base/ フォルダに
「UUID.part」と「UUID.converted」ファイルが作成されます.
[root@Controller ~(keystone_admin)]# ls /var/lib/nova/instances/_base/
52cddf19ae473d573a167265bc2f2f2de7db7a33.converted
52cddf19ae473d573a167265bc2f2f2de7db7a33.part

失敗後,再び同じ移行先に大きなサイズのサーバをブロックマイグレーションすると成功し
「UUID.part」と「UUID.converted」ファイルが消えます.

サイズの問題だと思い,downtimeやtimeoutの時間を伸ばしましたが初回は必ず失敗しました.

原因を教えていただけますか?

以下はCompute1からControllerへサーバ移動を行った場合のエラーログの一部です.
[root@Compute1 images]# cat /var/log/nova/nova-compute.log|grep ERROR
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [req-846635f8-2181-4f87-aab3-5e884af2a351 a765110a0c7a4dbb8a8beba76461c0a6 09573553ea22442093d2ad9ec201dc09 - - -] [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a] Pre live migration failed at Controller
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a] Traceback (most recent call last):
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 5409, in _do_live_migration
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]     block_migration, disk, dest, migrate_data)
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]   File "/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py", line 723, in pre_live_migration
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]     disk=disk, migrate_data=migrate_data)
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]   File "/usr/lib/python2.7/site-packages/oslo_messaging/rpc/client.py", line 169, in call
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]     retry=self.retry)
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]   File "/usr/lib/python2.7/site-packages/oslo_messaging/transport.py", line 97, in _send
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]     timeout=timeout, retry=retry)
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]   File "/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line 566, in send
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]     retry=retry)
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]   File "/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line 555, in _send
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]     result = self._waiter.wait(msg_id, timeout)
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]   File "/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line 447, in wait
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]     message = self.waiters.get(msg_id, timeout=timeout)
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]   File "/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line 335, in get




Akira Yoshiyama

unread,
Jun 15, 2018, 10:54:21 AM6/15/18
to openstack-ja
吉山です。こんばんは。

grep ERROR した為に前後のログが分からないので、原因は分かりません。以下、推測になります。

ライブ(ブロック)マイグレーション時、

nova-api
→nova-conductor
 →nova-scheduler (VM移行先指定無しの場合)
 →nova-compute (VM移行元) の live_migration() ※1
  →nova-compute (VM移行先)の pre_live_migration() ※2

の順番で RPC コールが行われます。

2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]   File "/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py", line 723, in pre_live_migration
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-7053d1e3f56a]     disk=disk, migrate_data=migrate_data)

は※2で実行される処理をRPCで呼び出している ※1の部分です。上記のエラーログはこの通信がタイムアウトした事を示しています。

通信のタイムアウトなので、増やすべきは RPC 関連のタイムアウト時間ですが、具体的には rpc_response_timeout 辺りになると思います。

一部引用:
Depending on your environment setup, infrastructure capabilities, and a number of other environment variables at any given time, there may be on occasion a time where your live migration process times out. If this is the case, increase the value of 'rpc_response_timeout' in all cinder and nova configuration files (cinder.conf & nova.conf) across all nodes until you find a value which is best suited to your environment. When you change this value (or any other value for that matter in any OpenStack configuration file) make sure you restart all respective services for the changes to take effect.

https://docs.openstack.org/ocata/config-reference/compute/config-options.html によると、rpc_response_timeout のデフォルト値は 60 (秒) との事です。

rpc_response_timeout = 60(Integer) Seconds to wait for a response from a call.

こちらの値を充分に増やすと良いと思います。


2018年6月13日 21:38 黒沢翔 <tdm...@gmail.com>:

--
このメールは Google グループのグループ「日本OpenStackユーザ会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには openstack-ja+unsubscribe@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
吉山あきら <akirayo...@gmail.com>
Message has been deleted

黒沢翔

unread,
Jun 15, 2018, 11:15:57 AM6/15/18
to openst...@googlegroups.com
吉山さんへ こんばんは
回答,本当にありがとうございます.

設定を変更後,ライブ(ブロック)マイグレーションを試してみます!(事情により月曜日になりますが...

ところで,私は現在大学院の修士1年です.
一人でOpenStackを用いた研究をしており行き詰まる場面が多くなりました.

今回のように一人では解決できない問題が生じた際に
吉山さんのように解決法が思いつくためにはどのような取り組みをしたら良いのでしょうか?
参考書や海外サイトの参照,ログを読む(あまり理解できません)などを現在は行っています.

メインの質問と外れて申し訳ありませんが,よろしければ教えていただけれたらと思います.


2018年6月15日(金) 23:54 Akira Yoshiyama <akirayo...@gmail.com>:
このグループから退会し、グループからのメールの配信を停止するには openstack-ja...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
吉山あきら <akirayo...@gmail.com>

--
このメールは Google グループのグループ「日本OpenStackユーザ会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには openstack-ja...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

Akira Yoshiyama

unread,
Jun 15, 2018, 11:45:28 AM6/15/18
to openst...@googlegroups.com
吉山です。こんばんは。

> 吉山さんのように解決法が思いつくためにはどのような取り組みをしたら良いのでしょうか?

私は業務で Nova のライブマイグレーション関連のソースコードを調査・開発していた事があるので、今回の件もある程度当たりをつける事が出来ましたが、1からソースコードを調べるのはそれなりに大変と思います。
今であれば OpenStack 内部の処理の流れは OSProfiler を使って追ってみるのも良いでしょう。ただ、Ocata で使えるかどうかは微妙ですが…

可能ならユーザ会の勉強会や OpenStack Ops Meetup に参加されてみては如何でしょうか。有識者への質問も出来ます。

日本OpenStackユーザ会の勉強会募集サイト
次回の Ops Meetup があるイベント
また、最近ではめっきり減りましたが、このMLでも今回のような技術的な質問をして頂いて構いません。ただ、企業のサポート窓口ではないので、無回答のままになる可能性はあります。

ちなみに、最近誰でも参加可能な日本 OpenStack ユーザの slack チャネルを作ろうかという話もあります。人によってはこちらの方が使いやすいかも知れません。


2018年6月16日(土) 0:15 黒沢翔 <tdm...@gmail.com>:
このグループから退会し、グループからのメールの配信を停止するには <a href="mailto:openstack-ja+unsubscribe@googlegroups
--
吉山あきら <akirayo...@gmail.com>

黒沢翔

unread,
Jun 15, 2018, 12:15:35 PM6/15/18
to openst...@googlegroups.com
吉山さんへ

OpenStackとは少し外れた質問にも答えていただきありがとうございます.

勉強会への参加も考えていたのですが,地方在住で交通費がかかりどうしても参加できずにいます.
そのため,今回このMLを活用してみたところ返信をいただき,吉山さんへの感謝とともに自身の研究に対する大きな励みとなりました.

しかし,行き詰まったときにすぐ質問を投稿するのではなく,出来る限り自分で問題を解決できるように今後はなりたいと思っています.

また,slackチャネルが作成されたときには,ぜひ参加させていただきたいと思います.

今後とも機会があればよろしくお願い致します.

2018年6月16日(土) 0:45 Akira Yoshiyama <akirayo...@gmail.com>:
2018-05-21 12:02:23.154 23069 ERROR nova.compute.manager [instance: 2d336132-d45a-4360-b88d-<span class="m_-1685410150797412780m_4101564167845783646m_4243355097264251127m_-6170011362619179152lit" style="color:rgb

Masayuki Igawa

unread,
Jun 15, 2018, 12:46:24 PM6/15/18
to 日本OpenStackユーザ会
はじめまして、こんにちは。井川と申します。

実は、質問のテンプレートとして、以下を本MLの案内に記載しています。
-------------------------
なお、質問をML宛てに投げる際は、あらかじめ以下のサイトをご参考の上で投稿されると他のメンバーからの回答を得やすいと思います。
上記サイトにある付録:質問テンプレートはとても参考になります。
http://www.hyuki.com/writing/techask.html#template
-------------------------

参考になれば幸いです。

また、英語の読み書きがある程度できるようでしたら、本家のopenstack MLにアクセスしてみるのも良いかと思います。

黒沢翔

unread,
Jun 18, 2018, 10:16:00 PM6/18/18
to 日本OpenStackユーザ会
井川さんへ
黒沢です.

参考URLに目を通させていただきました.
以後,参考にし有効活用していきたいと思います.
ありがとうございます.

2018年6月16日土曜日 1時46分24秒 UTC+9 Masayuki Igawa:

黒沢翔

unread,
Jun 18, 2018, 10:22:33 PM6/18/18
to 日本OpenStackユーザ会
吉山さんへ
黒沢です.

以下の値をデフォルトの60から600にすることで,エラーが解消しブロックマイグレーションが行えるようになりました.
また,6000と大きな値にするとキャッシュの有無に関わらず失敗することを確認したので報告しておきます.
rpc_response_timeout

ありがとうございました!

2018年6月16日土曜日 1時15分35秒 UTC+9 黒沢翔:

Akira Yoshiyama

unread,
Jun 19, 2018, 6:58:10 PM6/19/18
to openst...@googlegroups.com
吉山です。おはようございます。

2018年6月19日(火) 11:22 黒沢翔 <tdm...@gmail.com>:
吉山さんへ
黒沢です.

以下の値をデフォルトの60から600にすることで,エラーが解消しブロックマイグレーションが行えるようになりました.

解決して何よりです。

また,6000と大きな値にするとキャッシュの有無に関わらず失敗することを確認したので報告しておきます.

なるほど。情報ありがとうございます。

--
このメールは Google グループのグループ「日本OpenStackユーザ会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには openstack-ja...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
--
吉山あきら <akirayo...@gmail.com>
Reply all
Reply to author
Forward
0 new messages