首页 » OpenStack系统架构设计实战 » OpenStack系统架构设计实战全文在线阅读

《OpenStack系统架构设计实战》3.8.3 cinder-volume服务启动流程

关灯直达底部

1)脚本bin.cinder-volume(导入相关模块,读取配置文件,获取Cinder路径,调用service.ProcessLauncher())。

2)cinder.service:ProcessLauncher.__init__(对ProcessLauncher类进行实例化)。

3)脚本bin.cinder-volume(调用service.Service.create(binary='cinder-volume'))。

4)cinder.service:Service.create(进行了一系列变量的初始化操作,然后对类进行初始化)。

5)脚本bin.cinder-volume(调用launcher.launch_server(server))。

6)cinder.service:ProcessLauncher.launch_server(调用self._start_child(wrap))。

7)cinder.service:ProcessLauncher._start_child(os.fork()会fork一个子进程,子进程创建成功后,就会调用self._child_process(wrap.server))。

8)cinder.service:ProcessLauncher._child_process(等待信号并关闭pipe,然后初始化Launcher类,再调用launcher.run_server(server))。

9)cinder.service:Launcher.run_server(先调用server.start,再调用server.wait)。

10)启动cinder-volume服务。

cinder.service:Service.start(创建RPC连接,启动消费者线程,然后等待队列消息。当轮询查询到消息到达后,创建协程处理相关消息)。

11)等待cinder-volume服务结束。

·cinder.service:Service.wait(等待服务结束;调用x.wait())。

·cinder.service:wait(调用_launcher.wait())。

·cinder.service:Launcher.wait(等待cinder-volume协程结束,然后关闭RPC协议框架)。