[openstack-ko] live migration 관련 질문

김정석(Cloud운영기술팀) ironman.kim at kt.com
Fri Mar 6 07:08:03 UTC 2015


페이스북에 질문 하면 답변 안해준다고 하니 메일링으로 쏩니다 ^^

NFS 볼륨으로 구축한 Openstack Juno 버전에서 Live Migration 을 실행해보니 Shared 볼륨이 아니라서 마이그레이션을 할 수 없다는
에러가 발생 하여 관련 소스를 좀 열어 봤습니다.

혹시나 해서 Grizzly, Icehouse, Juno 를 모두 비교 해보고 있는데 Juno 는 소스가 많이 바뀌었네요

/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py"

# Grizzly

2885         # Checking shared storage connectivity
2886         # if block migration, instances_paths should not be on shared storage.
2887         source = CONF.host
2888         filename = dest_check_data["filename"]
2889         block_migration = dest_check_data["block_migration"]
2890         is_volume_backed = dest_check_data.get('is_volume_backed', False)
2891
2892         shared = self._check_shared_storage_test_file(filename)
2893
2894         if block_migration:
2895             if shared:
2896                 reason = _("Block migration can not be used "
2897                            "with shared storage.")
2898                 raise exception.InvalidLocalStorage(reason=reason, path=source)
2899             self._assert_dest_node_has_enough_disk(ctxt, instance_ref,
2900                                     dest_check_data['disk_available_mb'],
2901                                     dest_check_data['disk_over_commit'])
2902
2903         elif not shared and not is_volume_backed:
2904             reason = _("Live migration can not be used "
2905                        "without shared storage.")
2906             raise exception.InvalidSharedStorage(reason=reason, path=source)
2907         dest_check_data.update({"is_shared_storage": shared})
2908         return dest_check_data
2909


# Icehouse

4279         # Checking shared storage connectivity
4280         # if block migration, instances_paths should not be on shared storage.
4281         source = CONF.host
4282         filename = dest_check_data["filename"]
4283         block_migration = dest_check_data["block_migration"]
4284         is_volume_backed = dest_check_data.get('is_volume_backed', False)

4285         has_local_disks = bool(
4286                 jsonutils.loads(self.get_instance_disk_info(instance['name'])))
4287
4288         shared = self._check_shared_storage_test_file(filename)
4289
4290         if block_migration:
4291             if shared:
4292                 reason = _("Block migration can not be used "
4293                            "with shared storage.")
4294                 raise exception.InvalidLocalStorage(reason=reason, path=source)
4295             self._assert_dest_node_has_enough_disk(context, instance,
4296                                     dest_check_data['disk_available_mb'],
4297                                     dest_check_data['disk_over_commit'])
4298
4299         elif not shared and (not is_volume_backed or has_local_disks):
4300             reason = _("Live migration can not be used "
4301                        "without shared storage.")
4302             raise exception.InvalidSharedStorage(reason=reason, path=source)
4303         dest_check_data.update({"is_shared_storage": shared})



# Juno

5031         # Checking shared storage connectivity
5032         # if block migration, instances_paths should not be on shared storage.
5033         source = CONF.host
5034
5035         dest_check_data.update({'is_shared_instance_path':
5036                 self._check_shared_storage_test_file(
5037                     dest_check_data['filename'])})
5038
5039         dest_check_data.update({'is_shared_block_storage':
5040                 self._is_shared_block_storage(instance, dest_check_data)})
5041
5042         if dest_check_data['block_migration']:
5043             if (dest_check_data['is_shared_block_storage'] or
5044                     dest_check_data['is_shared_instance_path']):
5045                 reason = _("Block migration can not be used "
5046                            "with shared storage.")
5047                 raise exception.InvalidLocalStorage(reason=reason, path=source)
5048             self._assert_dest_node_has_enough_disk(context, instance,
5049                                     dest_check_data['disk_available_mb'],
5050                                     dest_check_data['disk_over_commit'])
5051
5052         elif not (dest_check_data['is_shared_block_storage'] or
5053                   dest_check_data['is_shared_instance_path']):
5054             reason = _("Live migration can not be used "
5055                        "without shared storage.")
5056             raise exception.InvalidSharedStorage(reason=reason, path=source)

현재 Juno 버전에서 Exception 이 발생하는곳이 마지막 줄에서 걸린 것으로 확인 됩니다.
혹시 dest_check_data['is_shared_block_storage'] 의 값을 어디서 가져와서 if 구문을 처리하는지 아시는분 계시나요 ?



[1등]


[http://massmail.group.kt.com/NameCardImage/MailNameCard/NameCardTemplate/contentImage/emailsign_final_02.png]

김정석

[http://massmail.group.kt.com/NameCardImage/MailNameCard/NameCardTemplate/contentImage/logo_ktds.gif]


과장Cloud운영기술팀

Cloud담당 기술서비스본부

[http://massmail.group.kt.com/NameCardImage/MailNameCard/NameCardTemplate/contentImage/email_sign_4x_07-08.png]

[http://massmail.group.kt.com/NameCardImage/MailNameCard/NameCardTemplate/contentImage/emailsign330_08.png]



010-2864-2631 / ironman.kim at kt.com<mailto:ironman.kim at kt.com>











이 메일은 지정된 수취인만을 위해 작성되었으며, 중요한 정보나 저작권을 포함하고 있을 수 있습니다. 어떠한 권한 없이, 본 문서에 포함된 정보의 전부 또는 일부를 무단으로 제3자에게 공개, 배포, 복사 또는 사용하는 것을 엄격히 금지합니다. 만약, 본 메일이 잘못 전송된 경우, 발신인 또는 당사에 알려주시고, 본 메일을 즉시 삭제하여 주시기 바랍니다.
This E-mail may contain confidential information and/or copyright material. This email is intended for the use of the addressee only. If you receive this email by mistake, please either delete it without reproducing, distributing or retaining copies thereof or notify the sender immediately.
-------------- next part --------------
HTML 첨부를 없애버렸습니다...
URL: <http://lists.openstack.org/pipermail/openstack-ko/attachments/20150306/8563f311/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 5174 bytes
Desc: image001.png
URL: <http://lists.openstack.org/pipermail/openstack-ko/attachments/20150306/8563f311/attachment-0007.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image002.png
Type: image/png
Size: 142 bytes
Desc: image002.png
URL: <http://lists.openstack.org/pipermail/openstack-ko/attachments/20150306/8563f311/attachment-0008.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image003.png
Type: image/png
Size: 131 bytes
Desc: image003.png
URL: <http://lists.openstack.org/pipermail/openstack-ko/attachments/20150306/8563f311/attachment-0009.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image004.gif
Type: image/gif
Size: 2535 bytes
Desc: image004.gif
URL: <http://lists.openstack.org/pipermail/openstack-ko/attachments/20150306/8563f311/attachment-0001.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image005.png
Type: image/png
Size: 139 bytes
Desc: image005.png
URL: <http://lists.openstack.org/pipermail/openstack-ko/attachments/20150306/8563f311/attachment-0010.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image006.png
Type: image/png
Size: 195 bytes
Desc: image006.png
URL: <http://lists.openstack.org/pipermail/openstack-ko/attachments/20150306/8563f311/attachment-0011.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image007.png
Type: image/png
Size: 120 bytes
Desc: image007.png
URL: <http://lists.openstack.org/pipermail/openstack-ko/attachments/20150306/8563f311/attachment-0012.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image008.png
Type: image/png
Size: 171 bytes
Desc: image008.png
URL: <http://lists.openstack.org/pipermail/openstack-ko/attachments/20150306/8563f311/attachment-0013.png>


More information about the openstack-ko mailing list