本節是建立 Volume 的第三部分,也是最後一部分:cinder-volume 的處理過程。
第一部分和第二部分可以參考前面兩個小節。
cinder-volume 通過 driver 建立 volume,日志為 /opt/stack/logs/c-vol.log。
與 cinder-api 和 cinder-scheduler 執行方式類似,cinder-volume 也啟動了一個 Flow 來完成 volume 建立工作,Flow 的名稱為 volume_create_manager。
volume_create_manager 首先執行 ExtractVolumeRefTask, OnFailureRescheduleTask, ExtractVolumeSpecTask, NotifyVolumeActionTask 為 volume 建立做準備。
接下來 CreateVolumeFromSpecTask 執行 volume 建立任務。
因為 volume provider 為 LVM, CreateVolumeFromSpecTask 通過 lvcreate 指令在 VG stack-volumes-lvmdriver-1 中建立了一個 1G 的 LV,cinder-volume 将這個 LV 作為volume。
新建立的 LV 命名為“volume-1e7f6bd7-ce11-4a73-b95e-aabd65a5b188”,其格式為“volume-<volume ID>”。
最後,CreateVolumeOnFinishTask 完成掃尾工作。
至此,volume 成功建立,Flow volume_create_manager 結束。
下一節我們讨論如何将建立的 volume 挂到 instance 上,即 attach 操作。
本文轉自CloudMan6 51CTO部落格,原文連結:http://blog.51cto.com/cloudman/1793116