CloudStack SSVM启动条件源码阅读与问题解决方法
CloudStackSSVM启动条件源码阅读与问题解决方法:
 在CloudStack建立zone的时候,经常遇到SSVM不启动,或者根本就没有SSVM的情况,分析CloudStack日志,会发现有“Zone1isnotreadytolaunchsecondarystorageVMyet”打印,意思是zone还未准备好启动SSVM。
通过查询CloudStack源代码,发现启动SSVM前有如下检查:
       获取Zone里的template。
       selecta.*fromvm_templatea,hosthwhereh.type='Routing'andh.data_center_id=1anda.type='System'anda.hypervisor_type=h.hypervisor_typelimit1;   
       如果没有获取到,会打印如下警告:
       Warn:Zonehostisready,butsecondarystoragevmtemplate 3isnotreadyonsecondarystorage:1
解决办法:检查systemtemplate是否已经下载完成(注意,要下载自己环境的hypervisor的systemtemplate)。
       获取zone的二级存储。
       select*fromhostwheretype='SecondaryStorage'anddata_center_id=1; #hostidis3
       如果没有获取到,会打印如下警告:
       Warn:Nosecondarystorageavailableinzone1,waituntilitisreadytolaunchsecondarystoragevm
解决办法:为zone1建立secondarystoragepool。
       获取template和host的关联。
       select*fromtemplate_host_refwherehost_id=3andtemplate_id=1anddownload_state='DOWNLOADED';#hostidandtemplateidisquerybybefore.
       如果没有获取到,会打印如下警告:
       Warn:Zonehostisready,butsecondarystoragevmtemplate 3isnotreadyonsecondarystorage:1
如果secondarystorage是NFS,可以通过mount来检查secondarystorage是否能够正常工作,如果secondarystorage没有问题,则只能等待CloudStack自动关联上。
       获得host的主存储。
       SELECTp.data_center_id, count(ph.host_id)count FROMstorage_poolp,storage_pool_host_refphWHEREp.id=ph.pool_idANDp.data_center_id=1GROUPbyp.data_center_id;
       主存储数量需要大于0,如果等于0,会打印如下警告:
Warn:Primarystorageisnotready,waituntilitisreadytolaunchsecondarystoragevm
没有问题后,CS会打印:Zone 1isreadytolaunchsecondarystorageVM。CS将会启动startsecondarystorageVM工作。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!