[openstack-dev] Test multi backend support for cinder

Vishvananda Ishaya vishvananda at gmail.com
Wed Feb 13 18:27:22 UTC 2013


So the cinder code should be modified like this patch in oslo-incubator:

https://github.com/openstack/oslo-incubator/commit/ffeb0855085617095f19296770a1223cb5641d1c

Then it will work fine without os=False

Vish

On Feb 13, 2013, at 8:57 AM, Jérôme Gallard <jeronimo974 at gmail.com> wrote:

> Hi all,
> I think I found the issue ! :-)
> 
> It seems that it's related to green-thread.
> 
> In https://review.openstack.org/#/c/21815/3/bin/cinder-volume , l23 :
> eventlet.monkey_patch() should probably be : eventlet.monkey_patch(os=False)
> 
> Thanks again for your help,
> Jérôme
> 
> On Wed, Feb 13, 2013 at 11:01 AM, Jérôme Gallard <jeronimo974 at gmail.com> wrote:
>> Hi all,
>> 
>> John, thank you very much for your answer. However it still not solve
>> completely the issue.
>> I investigated more. I would like to explain it, perhaps it will allow
>> someone to help me :)
>> 
>> When I start "cinder-volume", the process forks 1 child per backend.
>> In my case I have 2 backends, so, 2 childs. Everything is right.
>> Then, the father checks continuously the status of its childs
>> (service.py l279 :
>> https://review.openstack.org/#/c/21815/3/cinder/service.py ).
>> Then, it continues to a loop which calls the _wait_child function.
>> In _wait_child, there is an os.wait().
>> From my understanding this function return a tuple (pid, status) of a
>> dead child. This should be a blocking function, right ?
>> This is not the case in my configuration, os.wait() returns (pid=0,
>> status=0). This is why in my configuration I stay in this infinite
>> loop which takes 100% of the CPU load.
>> So my first conclusions:
>> - os.wait() in my case has not the right behaviour (but I don't know why)
>> - os.wait() has the right behaviour and in that case it is necessary
>> to add a time.sleep() in the loop (currently, this is what I made, and
>> it's ok with that)
>> 
>> Someone have an idea ?
>> 
>> Thanks a lot,
>> Jérôme
>> 
>> On Thu, Feb 7, 2013 at 11:41 PM, John Griffith
>> <john.griffith at solidfire.com> wrote:
>>> 
>>> 
>>> On Thu, Feb 7, 2013 at 10:51 AM, Jérôme Gallard <jeronimo974 at gmail.com>
>>> wrote:
>>>> 
>>>> Just to add details to my first email, if it can help, here is a trace
>>>> + stdout : http://paste.openstack.org/show/30722/
>>>> 
>>>> Thanks,
>>>> Jérôme
>>>> 
>>>> On Thu, Feb 7, 2013 at 3:49 PM, Jérôme Gallard <jeronimo974 at gmail.com>
>>>> wrote:
>>>>> Hi all,
>>>>> 
>>>>> I am testing the cinder multi backend support:
>>>>> https://review.openstack.org/#/c/20347/ (patch 9)
>>>>> 
>>>>> When I start the cinder-volume service, it loops indefinitly with :
>>>>> WARNING cinder.service [-] pid 0 not in child list
>>>>> INFO cinder.service [-] Child 0 exited with status 0
>>>>> 
>>>>> Does someone have an idea about the issue?
>>>>> At the end of the email I detail my lab configuration.
>>>>> 
>>>>> Thanks a lot,
>>>>> Jérôme
>>>>> 
>>>>> ---
>>>>> What I did to get this issue:
>>>>> 
>>>>> I setup an new OpenStack environment with devstack: everything was
>>>>> working well (I was able to create / delete LVM volumes).
>>>>> 
>>>>> I stopped the running cinder-volume, -api, -scheduler processes.
>>>>> 
>>>>> I updated the cinder directory with:
>>>>> git fetch https://review.openstack.org/openstack/cinder
>>>>> refs/changes/47/20347/9 && git checkout FETCH_HEAD
>>>>> 
>>>>> I updated the cinder database:
>>>>> cinder-manage db sync
>>>>> 
>>>>> I updated the /etc/cinder/cinder.conf file:
>>>>> enabled_backends=backend1,backend2
>>>>> [backend1]
>>>>> volume_group = stack-volumes
>>>>> volume_driver = cinder.volume.drivers.lvm.LVMISCSIDriver
>>>>> backend_volume_type = lvm
>>>>> [backend2]
>>>>> volume_driver = cinder.volume.driver.FakeISCSIDriver
>>>>> backend_volume_type = fake
>>>>> 
>>>>> I created 2 new volume types :
>>>>> cinder type-create lvm
>>>>> cinder type-create fake
>>>>> 
>>>>> I started the cinder services :
>>>>> cinder-api and cinder-scheduler : OK
>>>>> however, cinder-volume loops indefinitly with :
>>>>> WARNING cinder.service [-] pid 0 not in child list
>>>>> INFO cinder.service [-] Child 0 exited with status 0
>>>> 
>>>> _______________________________________________
>>>> OpenStack-dev mailing list
>>>> OpenStack-dev at lists.openstack.org
>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>> 
>>> Hi Jerome,
>>> 
>>> This is still under development obviously, but your config file isn't quite
>>> right, try something like this:
>>> 
>>> multi_backend_support=True
>>> enabled_backends=lvm-1,lvm-fake
>>> 
>>> [lvm-1]
>>> backend_volume_type=lvm
>>> volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver
>>> volume_group=stack-volumes
>>> 
>>> [lvm-fake]
>>> backend_volume_type = fake
>>> volume_driver = cinder.volume.driver.FakeISCSIDriver
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> OpenStack-dev mailing list
>>> OpenStack-dev at lists.openstack.org
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>> 
> 
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




More information about the OpenStack-dev mailing list