上海大学云计算实验室Eucalyptus源代码初步分析C++.docx

上传人:b****8 文档编号:10964297 上传时间:2023-02-24 格式:DOCX 页数:18 大小:23.16KB
下载 相关 举报
上海大学云计算实验室Eucalyptus源代码初步分析C++.docx_第1页
第1页 / 共18页
上海大学云计算实验室Eucalyptus源代码初步分析C++.docx_第2页
第2页 / 共18页
上海大学云计算实验室Eucalyptus源代码初步分析C++.docx_第3页
第3页 / 共18页
上海大学云计算实验室Eucalyptus源代码初步分析C++.docx_第4页
第4页 / 共18页
上海大学云计算实验室Eucalyptus源代码初步分析C++.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

上海大学云计算实验室Eucalyptus源代码初步分析C++.docx

《上海大学云计算实验室Eucalyptus源代码初步分析C++.docx》由会员分享,可在线阅读,更多相关《上海大学云计算实验室Eucalyptus源代码初步分析C++.docx(18页珍藏版)》请在冰豆网上搜索。

上海大学云计算实验室Eucalyptus源代码初步分析C++.docx

上海大学云计算实验室Eucalyptus源代码初步分析C++

 

Eucalyptus源代码初步分析

 

上海大学云计算实验室

目录

一、Clc3

二、Cluster3

1.CCclient.c3

2.handlers.h/handlers.c3

3.cc-client-marshal.h3

4.cc-client-marshal-adb.c3

5.server-marshal.h/server-marshal.c3

三、Node4

1.NCclient.c4

2.handlers.h/handlers.c4

3.handlers_kvm.c4

4.handlers_xen.c4

5.handlers_default.c4

6.client-marshal.h/client-marshal-local.c/client-marshal-adb.c4

7.server-marshal.h/server-marshal.c4

8.stress_NCclient.sh4

9.test_nc.c/test.c4

四、Storage5

1.Wclient.c5

2.walrus.h/walrus.c6

3.storage.h/storage.c6

4.Test.c6

五、Net6

1.dhcp.h/dhcp.c6

2.vnetwork.h/vnetwork.c6

3.Test.c6

六、Tools6

1.eucalyptus-cloud.in6

2.eucalyptus-cc.in6

3.eucalyptus-nc.in6

4.httpd.conf6

5.eucalyptus.conf6

6.vtunall.conf.template6

7.add_key.pl6

8.gen_libvirt_xml6

9.gen_kvm_libvirt_xml6

10.detach.pl6

11.partition2disk7

12.get_xen_info7

13.get_sys_info7

14.euca_ipt7

15.euca_upgrade7

16.populate_arp.pl7

17.euca_conf.in7

18.euca_plete8

19.euca_sync_key8

20.connect_iscsitarget.pl8

21.disconnect_iscsitarget.pl8

22.get_iscsitarget.pl8

七、util8

1.data.h/data.c8

2.euca_auth.h/euca_auth.c8

3.ipc.h/ipc.c8

4.misc.h/misc.c8

5.euca_mountwrap.c9

6.euca_rootwrap.c9

7.eucalyptus-config.h.in9

8.eucalyptus.h9

9.pwcb.c9

10.test.c9

八、gatherlog9

1.GLclient.c9

2.handlers.h/handlers.c9

3.gl-client-marshal.h/gl-client-marshal-adb.c9

4.server-marshal.h/server-marshal.c9

九、wsdl9

1、Clc

该部分主要是些前段界面的代码,用java编写,没有研究

二、Cluster

1.CCclient.c

2.handlers.h/handlers.c

3.cc-client-marshal.h

4.cc-client-marshal-adb.c

5.server-marshal.h/server-marshal.c

文件的功能总结:

1、生成动态库libEucalyptusCC.so:

功能:

首先是生成CC控制节点的动态库,libEucalyptusCC.so的功能是对节点请求运行实例,查询实例情况,查询资源状况,获取控制台输出,重启实例,终止实例,启动网络,终止网络,分配地址,取消地址分配。

查询公共地址,查询网络状况,配置网络,请求连接逻辑卷,取消逻辑卷作出回应。

具体说明:

CC、NC等各个部件之间是通过SOAP协议来进行通信的,而wsdl文档中封装了这种消息机制,wsdl文档是基于XML进行表示的,我们后面有专门说明,通过wsdl2c.sh脚本可以将wsdl文件夹下面的wsdl文档结构转化成c语言文件,而且每个文件包含的是wsdl提供的一个服务,服务分为了服务端和客户端,其中包含skel的是服务端文档,而包含stub指的的客户端的文档。

在cluster文件夹下面会自动新建generated文件夹,将wsdl生成的c语言文件放于generated文件夹里面。

libEucalyptusCC.so主要是由server-marshal.o,handlers.o,generated/*.o等文件生成的,生成命令如下:

gcc-sharedgenerated/*.oserver-marshal.ohandlers.o$(SCLIBS)$(NCLIBS)$(VNLIBS)$(WSSECLIBS)$(CC_LIBS)-olibEucalyptusCC.so(个别变量源代码中说明)

2、生成CC节点的客户端CCclient_full

功能:

这个程序的功能是提交一些请求,用来管理资源,镜像文件等,主要有这些功能:

请求运行实例,查询实例情况,获取终端输出,重启实例,终止实例,查询资源状况,启动网络,查询网络情况,配置网络,终止网络运行,分配地址,取消地址分配,连接逻辑卷,断开逻辑卷,查询公共地址,终止所以实例。

说明:

前面我们说到wsdl生成的服务有服务端和客户端,这里生成的CCclient_full,我们用到的是客户端。

CCclient_full主要是由generated/adb_*.o,generated/axis2_stub_*.o,../util/misc.o,../util/euca_auth.o,cc-client-marshal-adb.c,CCclient.c这些文件组成,生成CCclient_full的命令如下:

gcc-o$(CLIENT)_full$(CFLAGS)$(INCLUDES)$(CC_LIBS)generated/adb_*.ogenerated/axis2_stub_*.o../util/misc.o../util/euca_auth.o$(CLIENT).ccc-client-marshal-adb.c-DMODE=1

3、生成CC节点的客户端euca_killall

功能:

这个程序的功能就一个,那就是,终止本机上所有实例的运行

说明:

前面我们说到wsdl生成的服务有服务端和客户端,这里生成的CCclient_full,我们用到的是客户端。

CCclient_full主要是由generated/adb_*.o,generated/axis2_stub_*.o,../util/misc.o,../util/euca_auth.o,cc-client-marshal-adb.c,CCclient.c这些文件组成,生成CCclient_full的命令如下:

gcc-o$(CLIENT)_full$(CFLAGS)$(INCLUDES)$(CC_LIBS)generated/adb_*.ogenerated/axis2_stub_*.o../util/misc.o../util/euca_auth.o$(CLIENT).ccc-client-marshal-adb.c-DMODE=0

4、euca_killall与CCclient_full

其实,这两个程序的内容是完全一样的,他们编译时所用的文件也都一样,区别在于编译他们的时候,-DMODE选项的区别,当DMODE选项为0,程序中就执行euca_killall中说的功能,当DMODE选项为1,程序就执行CCclient_full中说的功能。

三、Node

1.NCclient.c

2.handlers.h/handlers.c

3.handlers_kvm.c

4.handlers_xen.c

5.handlers_default.c

6.client-marshal.h/client-marshal-local.c/client-marshal-adb.c

7.server-marshal.h/server-marshal.c

8.stress_NCclient.sh

9.test_nc.c/test.c

文件的功能总结:

1、生成动态库libEucalyptusNC.so:

功能:

首先是生成NC节点的动态库,libEucalyptusNC.so的功能是对节点请求运行实例,查询实例情况,查询资源状况,获取控制台输出,重启实例,终止实例,启动网络,停止电源,请求连接逻辑卷,取消逻辑卷作出回应。

此外,动态库还封装了对虚拟机进行控制的函数,如:

关闭虚拟机电源,查看虚拟机实例,运行实例,终止实例,重启实例,获取输出终端,启动网络连接,连接逻辑卷,断开逻辑卷。

而且,还有一些为上层提供帮助的底层代码函数。

具体说明:

CC、NC等各个部件之间是通过SOAP协议来进行通信的,而wsdl文档中封装了这种消息机制,wsdl文档是基于XML进行表示的,我们后面有专门说明,通过wsdl2c.sh脚本可以将wsdl文件夹下面的eucalyptus_nc.wsdl文档转化成c语言文件,而且每个文件包含的是wsdl提供的一个服务,服务分为了服务端和客户端,其中包含skel的是服务端文档,而包含stub指的的客户端的文档。

在node文件夹下面会自动新建generated文件夹,将wsdl生成的c语言文件放于generated文件夹里面。

libEucalyptusNC.so主要是由server-marshal.o,handlers.o,generated/adb_*.ogenerated/axis2*_skel_*.o等文件生成的,生成命令如下:

gcc-olibEucalyptusNC.so-shared$(NC_LIBS)generated/adb_*.ogenerated/axis2*_skel_*.oserver-marshal.ohandlers.o$(NC_HANDLERS)../storage/*.o../net/*.o../util/*.o(?

?

?

?

?

?

?

?

?

?

2、生成NC节点的客户端NCclient

功能:

前面提到各功能部件之间的通信是通过SOAP进行的,而这些都封装在了wsdl里面,NC节点下,生成了两个客户端程序,一个可以跟远程各部件进行通信,一个则是用在本地进行虚拟机,资源的处理。

这里的程序NCclient是可以用来进行跟远程各部件进行通信的,它的本质功能如:

运行实例,获取输出控制台,终止实例,重启实例,查看实例,查看资源,启动网络,启动虚拟机电源,连接逻辑卷,断开逻辑卷,特别是可以从远程部件拷贝实例到本机,如下列出调用该程序的一些命令

NCclient[command][options]

commands:

requiredoptions:

runInstance

[-m-k]

terminateInstance

[-i]

describeInstances

describeResource

attachVolume

[-i-V-R-L]

detachVolume

[-i-V-R-L]

一些选项说明:

toptions

-d

printdebugoutput

-h

thishelpinformation

-w[host:

port]

Walrusendpoint

-n[host:

port]

NCendpoint

-i[str]

instanceID

-e[str]

reservationID

-m[id:

path]

idandmanifestpathofdiskimage

-k[id:

path]

idandmanifestpathofkernelimage

-r[id:

path]

idandmanifestpathoframdiskimage

-a[address]

MACaddressforinstancetouse

-c[number]

numberofinstancestostart

-V[name]

nameofthevolume(forreference)

-R[device]

remote/sourcedevice(e.g./dev/etherd/e0.0)

-L[device]

local/targetdevice(e.g.hda)

-F

forceVolumeDetach

-U[string]

userdatatostorewithinstance

-I[string]

launchindextostorewithinstance

-G[str:

str:

]

groupnamestostorewithinstance

说明:

前面我们说到wsdl生成的服务有服务端和客户端,这里生成的NCclient,我们用到的是客户端。

NCclient主要是由client-marshal-adb.o,generated/adb_*.o,generated/axis2_stub_*.o,../util/*.o,../storage/*.o,../net/*.o,NCclient.c这些文件组成,生成NCclient的命令如下:

gcc-o$(CLIENT)$(CFLAGS)$(INCLUDES)$(NC_LIBS)generated/adb_*.ogenerated/axis2_stub_*.oclient-marshal-adb.o../util/*.o../storage/*.o../net/*.oNCclient.c(一些变量请看源代码)

3、生成NC节点的客户端NCclient_local

功能:

前面说了,上一个程序NCclient可以用来与远程部件进行通信的,而这里生成的生成则不用与远程部件进行通信。

本程序主要用来对虚拟机进行初始化,运行实例,终止实例,重启实例,查看实例,查看资源情况,关闭电源,启动网络,连接逻辑卷,断开逻辑卷。

这个程序少了远程操作函数。

说明:

由于本程序不进行远程通信,所以生成程序时,没有用到wsdl生成的文件,主要用到的文件如下:

client-marshal-local.o,../util/*.o,../storage/*.o,../net/*.ohandlers.o,handlers_xen.o,handlers_kvm.o,handlers_default.o,NCclient.c,生成NCclient_local的命令如下:

gcc-oNCclient_local$(INCLUDES)$(CFLAGS)client-marshal-local.o../util/*.o../storage/*.o../net/*.ohandlers.o$(NC_HANDLERS)$(CLIENT).c$(NC_LIBS)(一些变量的定义,请看源代码)

四、Storage

1.Wclient.c

说明:

这是walrus管理入口文件,主要调用walrus.h/walrus.c的功能函数

2.walrus.h/walrus.c

说明:

这两个文件实现加密镜像文件的管理和用户数据对象的管理

3.storage.h/storage.c

说明:

实现sc的功能

4.Test.c

说明:

测试storage的功能

五、Net

1.dhcp.h/dhcp.c

功能:

实现dhcp功能配置

2.vnetwork.h/vnetwork.c

功能:

网络模式的配置、互联与管理文件

3.Test.c

功能:

对dhcp.h和dhcp.c的功能进行测试

六、Tools

Tools文件夹里面的文件主要是些管理eucalyptus和与eucalyptus有关的文件

1.eucalyptus-cloud.in

说明:

该文件经过automake执行后生成eucalyptus-cloud文件,安装在$(EUCALYPTUS)/etc/init.d目录下面,

功能:

启动或者停止eucalyptus的CLC服务

$EUCALYPTUS/etc/init.d/eucalyptus-cloud[start|stop|restart|status]

2.eucalyptus-cc.in

说明:

该文件经过automake执行后生成eucalyptus-cc文件,安装在$(EUCALYPTUS)/etc/init.d目录下面,

功能:

启动或者停止eucalyptus的clustercontroller(CC)服务

$EUCALYPTUS/etc/init.d/eucalyptus-cc[start|cleanstart|stop|cleanstop|restart|cleanrestart|config|status]

3.eucalyptus-nc.in

说明:

该文件经过automake执行后生成eucalyptus-nc文件,安装在$(EUCALYPTUS)/etc/init.d目录下面,

功能:

启动或者停止eucalyptus的nodecontroller(NC)服务

$EUCALYPTUS/etc/init.d/eucalyptus-nc[start|stop|restart|config|status]

4.httpd.conf

功能:

该文件安装在$(EUCALYPTUS)/etc/eucalyptus目录下,这是apache用于eucalyptus的配置文件,用它来加载axis2c模块,以便与WebServices联系

5.eucalyptus.conf

功能:

该文件安装在$(EUCALYPTUS)/etc/eucalyptus目录下,这个是Eucalyptus的配置文件

6.vtunall.conf.template

功能:

...

7.add_key.pl

说明:

该文件安装在$(EUCALYPTUS)/user/share/eucalyptus目录下,这是一个perl文件

8.gen_libvirt_xml

说明:

这是一个perl文件,该文件适用于xen,该文件安装在$(EUCALYPTUS)/user/share/eucalyptus目录下

功能:

该文件将为libvirt的域名规范生成一个XML模板,它是针对NC节点上的一个实例

9.gen_kvm_libvirt_xml

说明:

这是一个perl文件,该文件与gen_libvirt_xml文件功能一样,只是该文件适用于kvm,该文件安装在$(EUCALYPTUS)/user/share/eucalyptus目录下

功能:

该文件将为libvirt的域名规范生成一个XML模板,它是针对NC节点上的一个实例

10.detach.pl

说明:

这是一个perl文件,该文件安装在$(EUCALYPTUS)/user/share/eucalyptus目录下

11.partition2disk

说明:

这是一个perl文件,该文件安装在$(EUCALYPTUS)/user/share/eucalyptus目录下

功能:

Eucalyptus请求该文件来将分区转化成硬盘。

如果有一个分区,它将用包含该分区的硬盘来重写,另外,也可以用交换区和暂时分区来重写它。

如果硬盘只有一个分区,该文件将扩展硬盘以容纳交换分区和暂时分区。

如果一个硬盘不止有一个分区,这个功能就不起作用。

12.get_xen_info

说明:

这是一个perl文件,该文件安装在$(EUCALYPTUS)/user/share/eucalyptus/get_xen_info目录下

功能:

用来获取xen的相关信息

13.get_sys_info

说明:

这是一个perl文件,该文件安装在$(EUCALYPTUS)/user/share/eucalyptus/get_sys_info目录下

功能:

用来获取系统的相关信息

14.euca_ipt

说明:

这是一个perl文件,文件调用iptables命令,该文件安装在$(EUCALYPTUS)/user/share/eucalyptus目录下

功能:

用来管理与eucalyptus有关的路由信息

15.euca_upgrade

说明:

这是一个shell脚本,该文件安装在$(EUCALYPTUS)/user/share/eucalyptus目录下

功能:

主要用来对eucalyptus进行升级

16.populate_arp.pl

说明:

这是一个perl脚本,该文件安装在$(EUCALYPTUS)/user/share/eucalyptus目录下

17.euca_conf.in

说明:

这是一个shell脚本,该文件通过automake生成euca_conf文件,将euca_conf安装在$(EUCALYPTUS)/usr/sbin目录下

功能:

该文件主要是用于配置Eucalyptus部件

例子:

$EUCALYPTUS/usr/sbin/euca_conf-d$EUCALYPTUS--hypervisorkvm--instances/usr/local/eucalyptus--usereucalyptus--setup

功能列表:

选项

功能说明

-d

pointEUCALYPTUSto

--no-rsync

don'tusersync

--no-scp

don'tusescp

--skip-scp-hostcheck

skipscpinteractivehostkeycheck

--get-credentials

downloadcredentialsto

--register-nodes\"hosthost...\"

addnewnodestoEUCALYPTUS

--deregister-nodes\"hosthost...\"

removenodesfromEUCALYPTUS

--register-cluster

addnewclustertoEUCALYPTUS

--deregister-cluster

removeclusterfromEUCALYPTUS

--register-walrus

addwalrustoEUCALYPTUS

--deregister-walrus

removewalr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1