openstack虚拟机模版(flavor)是一个非常奇怪的设计。讲讲我測试时遇到的问题,尽管说在project应用中虚拟机模版在開始时就定制好。后期可能做改动,可是改动时一定要注意,有以下几种情况:
1.使用m1.small模版启动个虚拟机,改动模版m1.small,虚拟机重新启动后还是使用原有模版。
2.使用m1.small模版启动个虚拟机。给模版m1.small加入extra_specs,比方限定带宽key为quota:vif_inbound_average, value为1024(k为单位)。虚拟机重新启动后。带宽设定生效。
删除m1.small后。重新启动虚拟机带宽限制失效。
3.先给模版m1.small加入extra_specs,使用m1.small模版启动个虚拟机。改动模版m1.small,删除m1.small后,重新启动虚拟机带宽限制失效。
情况1原因:改动模版后。会在数据库表instance_types中修增加一条,名为m1.small的记录。原来的把字段deleted设为非零(为模版的id),在openstack这样的操作叫做软删除。每一启动虚拟机都在instances表中插入一条记录。instances表中有个instance_type_id字段记录使用的是那个模版,所以虚拟机重新启动后还是使用原有模版
情况2原因:给模版新加一个extra_specs。在instance_type_extra_specs表中记录一条,也有个字段为deleted,虚拟机重新启动后新建extra_specs生效,删除模版也同一时候也会删除extra_specs,都是软删除。
删除模版后启动虚拟机,程序中会依据instance_type_id获取模版信息,能获取到被软删除的模版信息,可是获取不到被软删除的extra_specs信息,所以重新启动后新加的extra_specs设置失效。
情况3仅仅是想举个样例说明下操作模版和模版的extra_specs时,nova对数据库对应的操作:
1)先给模版m1.small加入extra_specs:instance_type_extra_specs表中添加记录一条。
2)改动模版m1.small,instance_types:instance_type_extra_specs都会添加一条记录。
3)删除m1.small后:上两操作中instance_type_extra_specs新添加的记录都会删除。
说的有点乱,最好亲自试试,主要看instance_types,instance_type_extra_specs表的变化。