设为首页 收藏本站
查看: 1271|回复: 0

[Cloudstack] 通过修改DB给cloudstack添加模板

[复制链接]

尚未签到

发表于 2015-10-13 12:59:55 | 显示全部楼层 |阅读模式
  转载地址:http://www.07net01.com/linux/tongguoxiugaiDBgeiCloudStackzhongtianjiamoban_559644_1376291742.html

  CloudStack的模板上传有只能通过http server,但经常会遇到httpserver搭建异常、上传发生timeout或者上传一半的时候无法继续上传等等各种问题,而项目实施的时候,按进度又要求必须尽快使用该模板,这个时候就会有是否能够直接将模板scp到SecondaryStorage中的需求。

在SS中,模板存放在template目录中,此目录的结构为:template/tmpl/[account_id]/[template_id]/account_id为此模板所属用户的id例如:登陆admin用户,上传一个centos.ova作为vmware模板,该模板id为202,则此模板在SS中存放路径为template/tmpl/2/202/。该目录中一共有4个文件:509f8d99-d81f-3104-95c9-9cfd23026f83.ova,CentOS_5.6-disk1.vmdk,CentOS5.6.mf,CentOS5.6.ovf,template.properties。".ova"文件是上传的原始ova文件,".vmdk",".mf",".ovf"是由ova解压之后产生的模板文件。".vmdk"是虚拟机的磁盘镜像文件".ovf"是虚拟机在导出为ovf格式的时候所产生的描述文件,包含了虚拟机磁盘文件vmdk,资源文件iso和domain之间的正确对应".mf"是相关文件的SHA的集合,主要作用是防止模板文件被修改此例中,mf文件内容如下:[root@localhost202]# catCentOS\ 5.6.mf SHA1(CentOS 5.6.ovf)=867999689b9a2f4591dc3c930d4033f7872264b0SHA1(CentOS_5.6-disk1.vmdk)=f8a0fdbbafafcc2dc1535c1bf53f500180a5cf75以上3个文件是vmware模板相关文件,另外一个template.properties则是CloudStack在installtemplate完成之后,产生的模板描述文件,内容如下:[iyunv@localhost202]# cattemplate.properties ##Mon Jul 29 06:42:11 UTC 2013ova.virtualsize=10737418240 //模板的额定值filename=509f8d99-d81f-3104-95c9-9cfd23026f83.ova //ova文件名ova.filename=509f8d99-d81f-3104-95c9-9cfd23026f83.ova  //ova文件名id=202  //db中vm_template.idpublic=true//db 中vm_template.public,控制模板的访问权限uniquename=202-2-fc9f565a-9e17-3de2-b81a-f91b2b69894f//db中vm_template.uniquenamevirtualsize=10737418240 //模板的额定值checksum=847b01e45b6ad09519f4c3fabeb5b823//校验码,检查文件是否完整或被改变hvm=true//db中vm_template.hvm,是否需要主机支持hvmova=true//是否ova文件description=test//db中vm_template.display_textova.size=1011362816 //ova模板文件大小size=1011362816 //ova模板文件大小
==============================================================================CloudStack中对模板的信息,会分别存放在5个表中:vm_template,template_host_ref,template_zone_ref,template_spool_ref,template_swift_ref。vm_template主要存放模板的详细信息,包含名称,访问权限,下载地址,格式,类型等。表结构如下:+--------------------+---------------------+------+-----+---------+----------------+|Field            | Type             | Null | Key | Default | Extra        |+--------------------+---------------------+------+-----+---------+----------------+|id               | bigint(20) unsigned | NO  | PRI | NULL   | auto_increment || unique_name       | varchar(255)      | NO   |    | NULL    |            || name             | varchar(255)      | NO   |    | NULL    |             || uuid            | varchar(40)       | YES  | UNI | NULL   |             || public           | int(1) unsigned    | NO  |    | NULL    |             |访问权限| featured          | int(1)unsigned     | NO  |     | NULL   |            |访问权限| type             | varchar(32)       | YES  |    | NULL    |             | | hvm             | int(1) unsigned    | NO   |    | NULL   |              || bits             | int(6) unsigned    | NO  |    | NULL   |             |32/64| url              | varchar(255)      | YES  |    | NULL    |            |模板上传地址| format           | varchar(32)        | NO  |     | NULL   |             | OVA/VHD/QCOW2/ISO| created          |datetime          | NO   |    | NULL    |             || removed          | datetime          | YES  |MUL | NULL   |             || account_id        | bigint(20) unsigned | NO  |     | NULL   |             || checksum         |varchar(255)       | YES  |    | NULL   |              || display_text      | varchar(4096)      | YES  |   | NULL   |              || enable_password    |int(1) unsigned     | NO  |     | 1      |             || enable_sshkey    | int(1) unsigned    | NO   |    | 0      |              || guest_os_id       | bigint(20) unsigned | NO  |     | NULL  |             |操作系统类型| bootable          | int(1)unsigned     | NO  |     | 1      |             || prepopulate      | int(1) unsigned    | NO   |    | 0      |             || cross_zones       | int(1) unsigned    | NO   |   | 0      |             |跨资源域| extractable       | int(1) unsigned    | NO   |    | 0      |             |可下载|hypervisor_type    |varchar(32)        | YES  |    | NULL   |              || source_template_id | bigint(20) unsigned | YES |     | NULL   |            || template_tag      | varchar(255)       | YES |     | NULL   |             || sort_key         | int(32)           | NO  |     | 0      |             |+--------------------+---------------------+------+-----+---------+----------------+type有4种类型,分别为USER/SYSTEM/BUILTIN/PERHOST,即用户模板,系统虚拟机模板,内建模板,PERHOST。CloudStack默认提供的模板,除了系统虚拟机模板之外,还对每种类型的hyperviser提供一个CentOS5.3(64-bit)no GUI(XenServer)的内建模板(BUILTIN),以供测试或小型应用。PERHOST为hyperviser中自带的vmtools.iso。SYSTEM,BUILTIN和PERHOST属于system用户,所以account_id=1,这3类模板的信息,在db的vm_template中,是在初始化db的时候就写入其中的,所以,SS中template/tmpl/1中的目录和文件可以在部署CloudStack之前提前放入其中,如果使用其他CloudStack环境中使用过的SS的来部署CloudStack的时候,SS中的template/tmpl/1目录中的所有模板,都可以保持不变,这样能够省去不少传输模板的时间USER为用户上传模板,上传用户为其所属用户,account_id为用户的id。cross_zones为模板的跨资源域属性,上传模板的时候,如果选AllZone,则此项为1,此时模板标记为跨资源域,在多个Zone的情况下,如果删除某一Zone里的该模板,则其他资源域中相应模板也会一并删除。例:mysql>select *from vm_template where id=202 \G;*************************** 1.row ***************************             id: 202 //template.properties中的id     unique_name:202-2-fc9f565a-9e17-3de2-b81a-f91b2b69894f//template.properties中的unique_name           name:test            uuid:9838688c-4845-4d2f-827a-8035aee76f8b          public: 1         featured: 1           type:USER            hvm: 1            bits:64            url:http://192.168.204.199/CentOS5.6.ova         format: OVA         created: 2013-07-2906:23:43         removed: NULL      account_id: 2        checksum:847b01e45b6ad09519f4c3fabeb5b823    display_text:test  enable_password: 0    enable_sshkey: 0     guest_os_id: 103        bootable: 1     prepopulate: 0     cross_zones: 0    extractable: 1  hypervisor_type: VMwaresource_template_id:NULL     template_tag:NULL        sort_key: 0
template_zone_ref主要用于存放模板对应的zone的信息,表结构如下:mysql> desc template_zone_ref;+--------------+---------------------+------+-----+---------+----------------+| Field       | Type             | Null | Key |Default | Extra        |+--------------+---------------------+------+-----+---------+----------------+| id          | bigint(20) unsigned | NO  | PRI | NULL   | auto_increment || zone_id    | bigint(20) unsigned | NO   |MUL | NULL    |             || template_id  | bigint(20) unsigned | NO  | MUL | NULL   |              ||created     | datetime          | NO   |    | NULL    |             || last_updated | datetime          | YES  |   | NULL   |              || removed     | datetime          | YES  | MUL | NULL   |             |+--------------+---------------------+------+-----+---------+----------------+若该模板注册到某资源域(Zone),则会在此表中写入一项例:mysql>select *from template_zone_ref where template_id=202 \G;*************************** 1.row ***************************        id: 13    zone_id: 1 template_id:202    created: 2013-07-2906:23:43last_updated:2013-07-2906:23:43    removed: NULL
template_host_ref主要存放模板和二级存储的对应关系,上传进度,上传地址等信息,表结构如下:mysql> desc template_host_ref;+----------------+---------------------+------+-----+---------+----------------+| Field         | Type            | Null | Key | Default | Extra        |+----------------+---------------------+------+-----+---------+----------------+| id            |bigint(20) unsigned | NO   | PRI | NULL   |auto_increment || host_id       | bigint(20) unsigned | NO  | MUL | NULL   |              || template_id    |bigint(20) unsigned | NO   | MUL | NULL   |            || created       | datetime          | NO   |    | NULL   |              || last_updated   | datetime         | YES |     | NULL   |             || job_id        | varchar(255)      | YES  |    | NULL    |            |上传模板任务id| download_pct   | int(10) unsigned   | YES  |    | NULL   |              |上传进度| size          |bigint(20)unsigned | YES  |    | NULL    |             |模板额定大小| physical_size  | bigint(20) unsigned | YES |     | 0      |            |模板物理大小| download_state | varchar(255)       | YES |     | NULL   |             || error_str     | varchar(255)       | YES |    | NULL   |             || local_path     |varchar(255)       | YES  |    | NULL   |             |SSVM中的下载地址|install_path   | varchar(255)      | YES  |    | NULL    |             |SS中的存放路径| url           |varchar(255)       |YES  |    | NULL   |              |上传地址| destroyed     | tinyint(1)        | YES  |    | NULL    |            || is_copy       | tinyint(1)        | NO   |    | 0      |             |+----------------+---------------------+------+-----+---------+----------------+模板注册到CloudStack之后,由management-server调度任务,发送到SSVM执行,将模板从给定的url下载到二级存储中。local_path为SSVM中下载模板的实际路径,下载完成后,此项则不在起任何作用,同时会获取模板在SS中的实际路径并写入表的install_path中。例:mysql>select *from template_host_ref where template_id=202 \G;*************************** 1.row ***************************          id: 12      host_id:3  template_id: 202      created:2013-07-2906:23:43 last_updated: 2013-07-29 14:39:50       job_id:8aab877e-b6a2-4952-920e-d631102da361 download_pct: 100        size: 10737418240 physical_size:1011362816download_state:DOWNLOADED   error_str: Install completedsuccessfully at 7/29/13 6:42 AM   local_path:/mnt/SecStorage/d8c72098-9608-3917-90a4-ac88d47a30f4/template/tmpl/2/202/dnld912053474216253760tmp_ install_path:template/tmpl/2/202//509f8d99-d81f-3104-95c9-9cfd23026f83.ova        url:http://192.168.204.199/CentOS5.6.ova    destroyed: 0      is_copy:0
template_spool_ref存放的是模板由二级存储传入主存储之后的对应信息,template_swift_ref是在启用swift之后,模板和swift的对应信息。由此可以看出,实际模板相关的信息,分别存放在db的vm_template,template_host_re,template_zone_ref和SS中的template.properties中。所以,如果上传模板失败而暂时无法解决或由于网络速度受限而需要长时间传输模板的情况下,实际可以通过手动复制模板文件到相关目录,按模板编辑template.properties文件,然后插入db的方式,来解决此问题。可以省去不少传输模板的时间。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-126303-1-1.html 上篇帖子: 云管理平台CloudStack介绍 下篇帖子: CloudStack 学习资料
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表