首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 云计算 >

openstack nova 基础知识——Quota(配额治理)

2012-11-26 
openstack nova 基础知识——Quota(配额管理)很久没有写博客了,之前在学校的一段时间比较堕落,坐着火车从南

openstack nova 基础知识——Quota(配额管理)

很久没有写博客了,之前在学校的一段时间比较堕落,坐着火车从南到北,穿越长江黄河,来到了一片新的天地。在这里,不管男的女的,老的少的,在吃饭,在路上,我听到的不再是“游戏”这个永久不变的话题,更多的是在讨论“内核”、“高效”、“这段代码”、“这个算法”等等这些技术性的话题。我的想法是对的,我的选择是对的,很喜欢现在的环境,在这样的环境里,会让我成长更快。

正文:

一、什么是配额(quota)管理

简单的讲就是控制用户资源的数量。在openstack里,管理员为每一个工程(project)分配的资源都是有一定限制的,这些资源包括实例(instance)、cpu、内存、存储空间等等,不能让一个工程无限制的使用资源,所以配额管理针对的单位是工程(project)。先来个感性的认识,看一下dashboard里的一个工程的overview:

openstack nova 基础知识——Quota(配额治理)

管理员给这个工程的资源配额是最多创建10个实例,最多使用20个vcpu,最多使用5G的内存==,只要达到某一个资源的使用上限,就会出现异常,这就是配额管理。


二、如何实现

nova里配额管理是在~/nova/quota.py中实现的,首先来看一下这个模块的静态类图:

openstack nova 基础知识——Quota(配额治理)


使用时是直接调用QuotaEngine类中的方法,而真正实现功能的是DbQuotaDriver这个类,在DbQuotaDriver类中比较重要的是reserve(), commit(), rollback()这三个方法,这三个方法共同构成了配额管理一个很重要的特性:事务性,这里所说的事务性,就是当资源分配失败或者已达到配额上限等这些异常情况发生时,对已经修改过的数据库,回滚到分配之前的状态,如果不设置成这种特性,那配额管理就乱套了。

资源在配额管理中封装成了一个简单的类体系,资源被分为三类:ReservableResource, AbsoulteResource, CountableResource,至于这三种分类的区别,我现在还不是很清楚,在nova中,是这样来分类的:

$ free -m             total       used       free     shared    buffers     cachedMem:          1974       1824        150          0         20        404-/+ buffers/cache:       1400        574Swap:         2382        355       2027

这也从另外一个方面说明了配额管理只是管配额的而已。


五、问题

写blog之前本来有很多疑问的,但是在写的过程中思考,竟然把一些疑问想明白了,但是还是有一些:

1. quotas和quota_classes表为空,我想这可能是因为没有配置的原因吧,因为程序中如果没有从这两个表中得到配额(hard_limit),那么就使用默认的值,所以我的测试里这两个表为空,但是程序正常执行,是因为使用了默认的值。

2. 关于那几个资源分类的,为什么要那样分,他们之间有什么区别,我还不明白。

3. dashboard界面的问题,它的quota界面的限额值是写死了的,还是会根据配置的值来变化,这个我还没有验证过。

4. 关于expire的,我看程序中参数的传递,expire始终为空,但是不知道怎么回事,到数据库中就变成有值的了,而且这个值很奇怪,即使删除了实例,它还是有,为什么呢?

5. 关于quota_usages表中的reserved值,它究竟是干什么用的呢?它的值,在一个事务之外,始终是为0,不为0的情况只在一个事务当中,这种情况只有调试才会看到,难道它就是只起一个回滚的作用?

6. quota_classes表不知道是用来做什么的,难道用一个quotas表还不够吗?难道说这个表保存的是每个资源的整体情况?

7. 还有就是一些资源不知道是什么资源,比如injected_file


六、想法

1. 实习第一天,经理跟我说是要吃苦的,有1/4的人都没坚持下去,走了,唉,当时压力也还挺大的,甚至怀疑起自己的能力,我到底行不行啊?但是每每当我看起代码时,就会有一种莫名的自信,代码也是人写的,我能把握住它。至于吃苦,我不认为学习是一种吃苦,学习就好像吃馒头一样,不动嘴嚼两下,怎么知道它的甜呢?

2. 公司的牛人真的很多,我要好好向他们学习。

3. 云计算,这是我选择的路,这也是我的梦想,也是我实现自己价值的地方,我会坚持下去的。


七、我的不足

1. 首要的不足,效率太低,一个知识点,要弄很久才能搞清楚,要提高效率啊。

2. 还不会openstack的调试,不会调试,不能深刻理解。


===============================over====================================



热点排行