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工作。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!