[openstack-dev] Test multi backend support for cinder

Jérôme Gallard jeronimo974 at gmail.com
Wed Feb 13 16:57:55 UTC 2013


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



More information about the OpenStack-dev mailing list