上海大學(xué)云計算實驗室_第1頁
上海大學(xué)云計算實驗室_第2頁
上海大學(xué)云計算實驗室_第3頁
上海大學(xué)云計算實驗室_第4頁
上海大學(xué)云計算實驗室_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Eucalyptus源代碼初步分析上海大學(xué)云計算實驗室目錄TOC\o"1-5"\h\z^、Clc 3二、 Cluster 3CCclient.c 3handlers.h/handlers.c 3cc-client-marshal.h 3cc-client-marshal-adb.c 3server-marshal.h/server-marshal.c 3三、 Node 4NCclient.c 4handlers.h/handlers.c 4handlers_kvm.c 4handlers_xen.c 4handlers_default.c 4client-marshal.h/client-marshal-local.c/client-marshal-adb.c 4server-marshal.h/server-marshal.c 4stress_NCclient.sh 4test_nc.c/test.c 4四、 Storage 5Wclient.c 5walrus.h/walrus.c 6storage.h/storage.c 6Test.c 6五、 Net 6dhcp.h/dhcp.c 6vnetwork.h/vnetwork.c 6Test.c 6六、 Tools 6eucalyptus-cloud.in 6eucalyptus-cc.in 6eucalyptus-nc.in 6httpd.conf 6eucalyptus.conf 6vtunall.conf.template 6add_key.pl 6gen_libvirt_xml 6gen_kvm_libvirt_xml 6detach.pl 6partition2disk 7get_xen_info 7get_sys_info 7euca_ipt 7euca_upgrade 7populate_arp.pl 7euca_conf.in 7euca_plete 8euca_sync_key 8connect_iscsitarget.pl 8disconnect_iscsitarget.pl 8get_iscsitarget.pl 8七、 util 8data.h/data.c 8euca_auth.h/euca_auth.c 8ipc.h/ipc.c 8misc.h/misc.c 8euca_mountwrap.c 9euca_rootwrap.c 9eucalyptus-config.h.in 9eucalyptus.h 9pwcb.c 9test.c 9八、 gatherlog 9GLclient.c 9handlers.h/handlers.c 9gl-client-marshal.h/gl-client-marshal-adb.c. 9server-marshal.h/server-marshal.c 9九、 wsdl 9一、 Clc該部分主要是些前段界面的代碼,用java編寫,沒有研究二、 ClusterCCclient.chandlers.h/handlers.ccc-client-marshal.hcc-client-marshal-adb.cserver-marshal.h/server-marshal.c文件的功能總結(jié):1、 生成動態(tài)庫libEucalyptusCC.so:功能:首先是生成CC控制節(jié)點的動態(tài)庫,libEucalyptusCC.so的功能是對節(jié)點請求運行實例,查詢實例情況,查詢資源狀況,獲取控制臺輸出,重啟實例,終止實例,啟動網(wǎng)絡(luò),終止網(wǎng)絡(luò),分配地址,取消地址分配。查詢公共地址,查詢網(wǎng)絡(luò)狀況,配置網(wǎng)絡(luò),請求連接邏輯卷,取消邏輯卷作出回應(yīng)。具體說明:CC、NC等各個部件之間是通過SOAP協(xié)議來進(jìn)行通信的,而wsdl文檔中封裝了這種消息機制,wsdl文檔是基于XML進(jìn)行表示的,我們后面有專門說明,通過wsdl2c.sh腳本可以將wsdl文件夾下面的wsdl文檔結(jié)構(gòu)轉(zhuǎn)化成c語言文件,而且每個文件包含的是wsdl提供的一個服務(wù),服務(wù)分為了服務(wù)端和客戶端,其中包含skel的是服務(wù)端文檔,而包含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節(jié)點的客戶端CCclient_full功能:這個程序的功能是提交一些請求,用來管理資源,鏡像文件等,主要有這些功能:請求運行實例,查詢實例情況,獲取終端輸出,重啟實例,終止實例,查詢資源狀況,啟動網(wǎng)絡(luò),查詢網(wǎng)絡(luò)情況,配置網(wǎng)絡(luò),終止網(wǎng)絡(luò)運行,分配地址,取消地址分配,連接邏輯卷,斷開邏輯卷,查詢公共地址,終止所以實例。說明:前面我們說到wsdl生成的服務(wù)有服務(wù)端和客戶端,這里生成的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=13、生成CC節(jié)點的客戶端euca_killall功能:這個程序的功能就一個,那就是,終止本機上所有實例的運行說明:前面我們說到wsdl生成的服務(wù)有服務(wù)端和客戶端,這里生成的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=04、euca_killall與CCclient_full其實,這兩個程序的內(nèi)容是完全一樣的,他們編譯時所用的文件也都一樣,區(qū)別在于編譯他們的時候,-DMODE選項的區(qū)別,當(dāng)DMODE選項為0,程序中就執(zhí)行euca_killall中說的功能,當(dāng)DMODE選項為1,程序就執(zhí)行CCclient_full中說的功能。三、NodeNCclient.chandlers.h/handlers.chandlers_kvm.chandlers_xen.chandlers_default.cclient-marshal.h/client-marshal-local.c/client-marshal-adb.cserver-marshal.h/server-marshal.cstress_NCclient.shtest_nc.c/test.c文件的功能總結(jié):1、生成動態(tài)庫libEucalyptusNC.so:功能:首先是生成NC節(jié)點的動態(tài)庫,libEucalyptusNC.so的功能是對節(jié)點請求運行實例,查詢實例情況,查詢資源狀況,獲取控制臺輸出,重啟實例,終止實例,啟動網(wǎng)絡(luò),停止電源,請求連接邏輯卷,取消邏輯卷作出回應(yīng)。此外,動態(tài)庫還封裝了對虛擬機進(jìn)行控制的函數(shù),如:關(guān)閉虛擬機電源,查看虛擬機實例,運行實例,終止實例,重啟實例,獲取輸出終端,啟動網(wǎng)絡(luò)連接,連接邏輯卷,斷開邏輯卷。而且,還有一些為上層提供幫助的底層代碼函數(shù)。具體說明:CC、NC等各個部件之間是通過SOAP協(xié)議來進(jìn)行通信的,而wsdl文檔中封裝了這種消息機制,wsdl文檔是基于XML進(jìn)行表示的,我們后面有專門說明,通過wsdl2c.sh腳本可以將wsdl文件夾下面的eucalyptus_nc.wsdl文檔轉(zhuǎn)化成c語言文件,而且每個文件包含的是wsdl提供的一個服務(wù),服務(wù)分為了服務(wù)端和客戶端,其中包含skel的是服務(wù)端文檔,而包含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/*.。../net/*.o../util/*.o(個別變量源代碼中說明)2、生成NC節(jié)點的客戶端NCclient功能:前面提到各功能部件之間的通信是通過SOAP進(jìn)行的,而這些都封裝在了wsdl里面,NC節(jié)點下,生成了兩個客戶端程序,一個可以跟遠(yuǎn)程各部件進(jìn)行通信,一個則是用在本地進(jìn)行虛擬機,資源的處理。這里的程序NCclient是可以用來進(jìn)行跟遠(yuǎn)程各部件進(jìn)行通信的,它的本質(zhì)功能如:運行實例,獲取輸出控制臺,終止實例,重啟實例,查看實例,查看資源,啟動網(wǎng)絡(luò),啟動虛擬機電源,連接邏輯卷,斷開邏輯卷,特別是可以從遠(yuǎn)程部件拷貝實例到本機,如下列出調(diào)用該程序的一些命令NCclient[command][options]commands:requiredoptions:runinstance[-m-k]terminatelnstance[-i]

describeInstances無describeResource無attachVolume[-i-V-R-L]detachVolume[-i-V-R-L]一些選項說明:toptions-dprintdebugoutput-hthishelpinformation-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)-FforceVolumeDetach-U[string]userdatatostorewithinstance-I[string]launchindextostorewithinstance-G[str:str:]groupnamestostorewithinstance說明:前面我們說到wsdl生成的服務(wù)有服務(wù)端和客戶端,這里生成的NCclient,我們用到的是客戶端。NCclient主要是由 client-marshal-adb.o,generated/adb_*.o,generated/axis2_stub_*.o,../util/*.o,../storage/*.。,../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節(jié)點的客戶端NCclient_local功能:前面說了,上一個程序NCclient可以用來與遠(yuǎn)程部件進(jìn)行通信的,而這里生成的生成則不用與遠(yuǎn)程部件進(jìn)行通信。本程序主要用來對虛擬機進(jìn)行初始化,運行實例,終止實例,重啟實例,查看實例,查看資源情況,關(guān)閉電源,啟動網(wǎng)絡(luò),連接邏輯卷,斷開邏輯卷。這個程序少了遠(yuǎn)程操作函數(shù)。說明:由于本程序不進(jìn)行遠(yuǎn)程通信,所以生成程序時,沒有用到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)(一些變量的定義,請看源代碼)四、StorageWclient.c說明:這是walrus管理入口文件,主要調(diào)用walrus.h/walrus.c的功能函數(shù)walrus.h/walrus.c說明:這兩個文件實現(xiàn)加密鏡像文件的管理和用戶數(shù)據(jù)對象的管理storage.h/storage.c說明:實現(xiàn)sc的功能Test.c說明:測試storage的功能五、 Netdhcp.h/dhcp.c功能:實現(xiàn)dhcp功能配置vnetwork.h/vnetwork.c功能:網(wǎng)絡(luò)模式的配置、互聯(lián)與管理文件Test.c功能:對dhcp.h和dhcp.c的功能進(jìn)行測試六、 ToolsTools文件夾里面的文件主要是些管理eucalyptus和與eucalyptus有關(guān)的文件eucalyptus-cloud.in說明:該文件經(jīng)過automake執(zhí)行后生成eucalyptus-cloud文件,安裝在$(EUCALYPTUS)/etc/init.d目錄下面,功能:啟動或者停止eucalyptus的CLC服務(wù)$EUCALYPTUS/etc/init.d/eucalyptus-cloud[start|stop|restart|status]eucalyptus-cc.in說明:該文件經(jīng)過automake執(zhí)行后生成eucalyptus-cc文件,安裝在$(EUCALYPTUS)/etc/init.d目錄下面,功能:啟動或者停止eucalyptus的clustercontroller(CC)!艮務(wù)$EUCALYPTUS/etc/init.d/eucalyptus-cc[start|cleanstart|stop|cleanstop|restart|cleanrestart|config|status]eucalyptus-nc.in說明:該文件經(jīng)過automake執(zhí)行后生成eucalyptus-nc文件,安裝在$(EUCALYPTUS)/etc/init.d目錄下面,功能:啟動或者停止eucalyptus的nodecontroller(NC)月艮務(wù)$EUCALYPTUS/etc/init.d/eucalyptus-nc[start|stop|restart|config|status]httpd.conf功能:該文件安裝在$(EUCALYPTUS)/etc/eucalyptus目錄下,這是apache用于eucalyptus的配置文件,用它來加載axis2c模塊,以便與WebServices聯(lián)系eucalyptus.conf功能:該文件安裝在$(EUCALYPTUS)/etc/eucalyptus目錄下,這個是Eucalyptus的配置文件vtunall.conf.template功能:...add_key.pl說明:該文件安裝在$(EUCALYPTUS)/user/share/eucalyptus目錄下,這是一個perl文件gen_libvirt_xml說明:這是一個perl文件,該文件適用于xen,該文件安裝在$(EUCALYPTUS)/user/share/eucalyptus目錄下功能:該文件將為libvirt的域名規(guī)范生成一個XML模板,它是針對NC節(jié)點上的一個實例gen_kvm_libvirt_xml說明:這是一個perl文件,該文件與gen_libvirt_xml文件功能一樣,只是該文件適用于kvm,該文件安裝在$(EUCALYPTUS)/user/share/eucalyptus目錄下功能:該文件將為libvirt的域名規(guī)范生成一個XML模板,它是針對NC節(jié)點上的一個實例detach.pl說明:這是一個perl文件,該文件安裝在$(EUCALYPTUS)/user/share/eucalyptus目錄下partition2disk說明:這是一個perl文件,該文件安裝在$(EUCALYPTUS)/user/share/eucalyptus目錄下功能:Eucalyptus請求該文件來將分區(qū)轉(zhuǎn)化成硬盤。如果有一個分區(qū),它將用包含該分區(qū)的硬盤來重寫,另外,也可以用交換區(qū)和暫時分區(qū)來重寫它。如果硬盤只有一個分區(qū),該文件將擴展硬盤以容納交換分區(qū)和暫時分區(qū)。如果一個硬盤不止有一個分區(qū),這個功能就不起作用。get_xen_info說明:這是一個perl文件,該文件安裝在$(EUCALYPTUS)/user/share/eucalyptus/get_xen_inf。目錄下功能:用來獲取xen的相關(guān)信息get_sys_info說明:這是一個perl文件,該文件安裝在$(EUCALYPTUS)/user/share/eucalyptus/get_sys_inf。目錄下功能:用來獲取系統(tǒng)的相關(guān)信息euca_ipt說明:這是一個perl文件,文件調(diào)用iptables命令,該文件安裝在$(EUCALYPTUS)/user/share/eucalyptus目錄下功能:用來管理與eucalyptus有關(guān)的路由信息euca_upgrade說明:這是一個shell腳本,該文件安裝在$(EUCALYPTUS)/user/share/eucalyptus目錄下功能:主要用來對eucalyptus進(jìn)行升級populate_arp.pl說明:這是一個perl腳本,該文件安裝在$(EUCALYPTUS)/user/share/eucalyptus目錄下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<dir>pointEUCALYPTUSto<dir>--no-rsyncdon'tusersync--no-scpdon'tusescp--skip-scp-hostcheckskipscpinteractivehostkeycheck--get-credentials<zipfile>downloadcredentialsto<zipfile>--register-nodes\"hosthost...\"addnewnodestoEUCALYPTUS--deregister-nodes\"hosthost...\"removenodesfromEUCALYPTUS--register-cluster<clustername><host>addnewclustertoEUCALYPTUS--deregister-cluster<clustername>removeclusterfromEUCALYPTUS--register-walrus<host>addwalrustoEUCALYPTUS--deregister-walrus<host>removewalrusfromEUCALYPTUS--register-sc<name><host>addstoragecontroller--deregister-sc<host>removestoragecontrollerfromEUCALYPTUS--list-walruseslistregisteredwalrus(es)--list-clusterslistregisteredCCs--list-nodeslistregisteredNCs-list-scslistregisteredSCs--no-syncusedonlywith--register-*toskipsyncingkeys"--cc-port<port>setCCport--nc-port<port>setNCport--instances<path>settheINSTANCEpath--cloud-port<port1><port2>setthe2cloudports--hypervisor<kvm|xen>sethypervisortouse--user<euca_user>settheusertouse-dhcpd<dhcpd>setthedhcpdbinaryto<name>--dhcp_user<user>settheusernametorundhcpdas--name<var>returnsthevalueor<name>--import-conf<file>importvariablesfrom<file>intoeucalyptus.conf--setupperforminitialsetup--enable{cloud|walrus|sc}enableserviceatnextstart--disable{cloud|walrus|sc}disableserviceatnextstart--check{nc|cc|cloud|sc|walrus}pre-flightchecks--sync{n£|M|cloud|_sc|walrus}pre-flightchecks--versioneucalyptusversioneuca_pleteeuca_sync_key說明:這是一個shell腳本,安裝在$(EUCALYPTUS)/usr/sbin目錄下,euca_sync_key實現(xiàn)euca_conf的-synckeys和-addnode功能,所以不建議使用euca_sync_key,我們可以直接使用euca_conf的上述兩種功能。connect_iscsitarget.pl說明:這是一個perl腳本,該文件安裝在$(EUCALYPTUS)/data/eucalyptus目錄下disconnect_iscsitarget.pl說明:這是一個perl腳本,該文件安裝在$(EUCALYPTUS)/data/eucalyptus目錄下get_iscsitarget.pl說明:這是一個perl腳本,該文件安裝在$(EUCALYPTUS)/data/eucalyptus目錄下七、utildata.h/data.c說明:data.h定義一些關(guān)于結(jié)構(gòu)體(元數(shù)據(jù)、網(wǎng)絡(luò)配置、邏輯卷、實例、資源、實例鏈表)和一個實例操作結(jié)果的枚舉類型;還定義了一些對實例、資源和邏輯卷的操作函數(shù)。euca_auth.h/euca_auth.c功能:定義一些Walrus客戶端的功能,主要有初始化證書和獲取證書的功能3.ipc.h/ipc.c功能:包含信號量定義與控制misc.h/misc.c說明:該文件定義了各種各樣的函數(shù),供各個功能部件調(diào)用詳情:⑴起始時間、終止時間的宏定義:TIMERSTART、TIMERSTOPenum{EUCADEBUG2,EUCADEBUG,EUCAINFO,EUCAWARN,EUCAERROR,EUCAFATAL};字符串操作函數(shù)replace_string、sscanf_lines、system_output、getConfStringintget_conf_var(constchar*path,constchar*name,char**value);在文件path中找到變量名為name的變量,并在變量后面有等號,就在等號后面加上value值;錯誤返回-1,找不到返回0,成功為1.定義一些日志記錄函數(shù)、參數(shù)檢查、目錄檢查、文件檢查函數(shù)euca_mountwrap.c功能:掛載和卸載文件系統(tǒng)euca_rootwrap.c功能:將生成euca_rootwrap,該文件的作用是當(dāng)調(diào)用該函數(shù)時,函數(shù)的第一個參數(shù)作為執(zhí)行文件,而第一個參數(shù)后的參數(shù)作為參數(shù)一這個執(zhí)行文件的參數(shù),該文件只有在執(zhí)行eucaconf-setup時起作用eucalyptus-config.h.in功能:取消系統(tǒng)的宏定義eucalyptus.h功能:該文件在eucalyptus啟動時可以設(shè)置環(huán)境變量該文件定義了eucalyptus安裝文件的路徑該文件定義了幾

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論