If I hazard a guess as to why one cinder-volume service was getting more then others, it would be becuase it has a larger capacity, as that is the defualt filter and weigher for scheduling. This could also result from one backend being the default? If you are using multiple backends and one is set to default and volumes that are not specifically assigned a type will be created from the default time.
# Default volume type to use (string value)
default_volume_type=
Within cinder.conf this would be on the server running api and scheduler.
# Which filter class names to use for filtering hosts when not
# specified in the request. (list value)
#scheduler_default_filters=AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter
# Which weigher class names to use for weighing hosts. (list
# value)
#scheduler_default_weighers=CapacityWeigher
#
# Options defined in cinder.scheduler.manager
#
# Default scheduler driver to use (string value)
#scheduler_driver=cinder.scheduler.filter_scheduler.FilterSchedule
http://docs.openstack.org/developer/c... describes how to use the filters in more detail.