轉載:http://blog.sina.com.cn/s/blog_3fe961ae0100yqzd.html    Nova是OpenStack的云计算控制器,是Iaas系统的主要部分。  Nova中的调度模块scheduler文件夹下,其主要任务就是运用某种调度算法,选择出一个运算结点去执行VM instance。在nova版本2011.2中,scheduler模块下有以下几个文件:   __init__.py:  介绍nova.scheduler模块,没有实质性功能。   api.py:  模块对外提供的接口,负责处理所有关于调度的请求。   driver.py:  定义了Scheduler类,这是所有调度类的父类。子类必须实现Scheduler的schedule(self, context, topic, *_args, **_kwargs)函数("Must override at least this method for scheduler to work."),然后才能实现自己的调度算法。   chance.py:  定义了ChanceScheduler类,是随机调度算法实现。下面是chance.py的部分源代码:    class ChanceScheduler(driver.Scheduler):     """Implements Scheduler as a random node selector."""       def schedule(self, context, topic, *_args, **_kwargs):         """Picks a host that is up at random."""         #首先得到所有开启的主机的一个列表         hosts = self.hosts_up(context, topic)         if not hosts:             raise driver.NoValidHost(_("Scheduler was unable to locate a host"             ...