通过修改DB给CloudStack中添加模板

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,CentOS 5.6.ovf,template.properties。

".ova"文件是上传的原始ova文件,".vmdk",".mf",".ovf"是由ova解压之后产生的模板文件。

".vmdk"是虚拟机的磁盘镜像文件

".ovf"是虚拟机在导出为ovf格式的时候所产生的描述文件,包含了虚拟机磁盘文件vmdk,资源文件iso和domain之间的正确对应

".mf"是相关文件的SHA的集合,主要作用是防止模板文件被修改

此例中,mf文件内容如下:

[root@localhost 202]# catCentOS\ 5.6.mf

SHA1(CentOS 5.6.ovf)=867999689b9a2f4591dc3c930d4033f7872264b0

SHA1(CentOS_5.6-disk1.vmdk)=f8a0fdbbafafcc2dc1535c1bf53f500180a5cf75

以上3个文件是vmware模板相关文件,另外一个template.properties则是CloudStack在installtemplate完成之后,产生的模板描述文件,内容如下:

[root@localhost 202]# cattemplate.properties

#

#Mon Jul 29 06:42:11 UTC 2013

ova.virtualsize=10737418240 //模板的额定值

filename=509f8d99-d81f-3104-95c9-9cfd23026f83.ova //ova文件名

ova.filename=509f8d99-d81f-3104-95c9-9cfd23026f83.ova //ova文件名

id=202 //db中vm_template.id

public=true //db 中vm_template.public,控制模板的访问权限

uniquename=202-2-fc9f565a-9e17-3de2-b81a-f91b2b69894f//db中vm_template.uniquename

virtualsize=10737418240 //模板的额定值

checksum=847b01e45b6ad09519f4c3fabeb5b823//校验码,检查文件是否完整或被改变

hvm=true//db中vm_template.hvm,是否需要主机支持hvm

ova=true //是否ova文件

description=test//db中vm_template.display_text

ova.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。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1dec188d98033b425ff55f326cb5728b.html