[openstack-dev] Test multi backend support for cinder

Vishvananda Ishaya vishvananda at gmail.com
Wed Feb 13 17:05:20 UTC 2013


This sounds remarkably like the eventlet bug that we ran into a while ago.
Monkeypatched os doesn't block properly on wait in some cases. I would
try updating eventlet.

Vish

On Feb 13, 2013, at 2: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