本發(fā)明涉及一種光盤的動(dòng)態(tài)插入方法,更具體地說是涉及一種在openstack中,不需要重啟虛擬機(jī)就能實(shí)現(xiàn)光盤的動(dòng)態(tài)插入方法。
背景技術(shù):
目前在openstack中,給虛擬機(jī)插入光盤,需要重啟虛擬機(jī)才能發(fā)現(xiàn)光盤,使用光盤,在實(shí)際工作中,操作不方便,工作效率低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的問題是提供一種給虛擬機(jī)插入光盤時(shí),不需要重啟虛擬機(jī)就能發(fā)現(xiàn)光盤,使用光盤的方法,該方法簡(jiǎn)單實(shí)用,操作方便,提高了工作效率。
為解決上述技術(shù)問題,本發(fā)明的技術(shù)方案為:
一種基于openstack的虛擬機(jī)免重啟的光盤動(dòng)態(tài)插入方法,包括如下步驟:
1、預(yù)先在虛擬機(jī)掛載一個(gè)空光盤,
2.修改openstack代碼使用virshattach-disk的linux命令來動(dòng)態(tài)更新光盤,
3.為計(jì)算服務(wù)增加執(zhí)行virsh命令的權(quán)限。
本發(fā)明的有益效果是在openstack中,給虛擬機(jī)插入光盤時(shí),不需要重啟虛擬機(jī)就能發(fā)現(xiàn)光盤,使用光盤,操作方便,提高了工作效率。
具體實(shí)施方式
為了使本發(fā)明解決的技術(shù)問題、采用的技術(shù)方案、取得的技術(shù)效果易于理解,下面,對(duì)本發(fā)明的具體實(shí)施方式做進(jìn)一步說明。
計(jì)算服務(wù)的架構(gòu)比較復(fù)雜,包含很多組件,這些組件以子服務(wù)(后臺(tái)守護(hù)進(jìn)程)的形式運(yùn)行,可以分為以下幾類:
1.應(yīng)用程序接口,
nova-api接收和相應(yīng)客戶的應(yīng)用程序接口調(diào)用。
2.計(jì)算核心,
nova-scheduler虛機(jī)調(diào)度服務(wù),負(fù)責(zé)決定在哪個(gè)計(jì)算節(jié)點(diǎn)上運(yùn)行虛機(jī);
nova-compute管理虛機(jī)的核心服務(wù),通過調(diào)用hypervisor應(yīng)用程序接口實(shí)現(xiàn)虛機(jī)生命周期管理;
hypervisor計(jì)算節(jié)點(diǎn)上跑的虛擬化管理程序,虛機(jī)管理最底層的程序;
nova-conductor經(jīng)常需要更新數(shù)據(jù)庫,比如更新虛機(jī)的狀態(tài)。
3.控制臺(tái)接口,
a)nova-console用戶可以通過多種方式訪問虛機(jī)的控制臺(tái);
b)nova-consoleauth負(fù)責(zé)對(duì)訪問虛機(jī)控制臺(tái)請(qǐng)求提供token認(rèn)證;
c)nova-cert提供x509證書支持。
4.數(shù)據(jù)庫,
計(jì)算服務(wù)會(huì)有一些數(shù)據(jù)需要存放到數(shù)據(jù)庫中,一般使用mysql。
5.消息隊(duì)列,
計(jì)算服務(wù)包含眾多的子服務(wù),這些子服務(wù)之間需要相互協(xié)調(diào)和通信;為解耦各個(gè)子服務(wù),計(jì)算服務(wù)通過消息隊(duì)列作為子服務(wù)的信息中轉(zhuǎn)站。
本發(fā)明為了實(shí)現(xiàn)基于openstack的虛擬機(jī)免重啟光盤動(dòng)態(tài)插入,為了讓用戶體驗(yàn)更好,操作更方便,特詳細(xì)描述其具體操作步驟如下:
1、預(yù)先在虛擬機(jī)掛載一個(gè)空光盤,
掛載一個(gè)空光盤之前,使用命令virshedit查看虛擬機(jī)配置文件,掛載一個(gè)空光盤之后,虛擬機(jī)配置多了一個(gè)cdrom設(shè)備。
2、修改openstack代碼使用virshattach-disk的linux命令來動(dòng)態(tài)更新光盤,具體命令如下:
1)novacliet/v2/shell.py增加shell命令行的操作函數(shù);
2)novacliet/v2/servers.py客戶端增加一個(gè)post的請(qǐng)求函數(shù),函數(shù)包含兩種action:insert(插入)和eject(彈出);
3)nova/api/openstack/compute/servers.py相應(yīng)的,服務(wù)也要有針對(duì)客戶端請(qǐng)求處理的函數(shù);
4)nova/compute/api.py接著,計(jì)算服務(wù)的應(yīng)用程序接口會(huì)把請(qǐng)求轉(zhuǎn)交給compute的api;
5)nova/compute/rpcapi.py計(jì)算服務(wù)compute應(yīng)用程序接口的請(qǐng)求都會(huì)通過rpcapi來發(fā)送rpc請(qǐng)求至相應(yīng)的計(jì)算節(jié)點(diǎn);
6)nova/compute/manager.py計(jì)算節(jié)點(diǎn)接受到相應(yīng)的rpc請(qǐng)求后就會(huì)調(diào)用相應(yīng)的manager中實(shí)現(xiàn)函數(shù),而manager已經(jīng)預(yù)先設(shè)置了driver(默認(rèn)是libvirt);
7)nova/virt/libvirt/driver.py整個(gè)請(qǐng)求的最后環(huán)節(jié)就到driver了,driver是負(fù)責(zé)真正的實(shí)現(xiàn)。插入光盤之后,配置里面增加了掛載的光盤文件。
注意:這里有一個(gè)地方需要注意:我們實(shí)現(xiàn)動(dòng)態(tài)更新光盤的原理是預(yù)先在虛擬機(jī)里掛好一個(gè)空白的光盤,然后使用virshattach-disk的linux命令來動(dòng)態(tài)更新。
3、為計(jì)算服務(wù)增加執(zhí)行virsh命令的權(quán)限,
nova默認(rèn)是沒有執(zhí)行virsh命令的權(quán)限的,所以我們需要在每個(gè)計(jì)算節(jié)點(diǎn)的/usr/share/nova/rootwrap/目錄下面增加相應(yīng)的權(quán)限,而在項(xiàng)目部署的階段,就需要將這個(gè)文件釋放到對(duì)應(yīng)的路徑下面,路徑如下:
#vi/usr/share/nova/rootwrap/virsh.filters;
[filters];
virsh:commandfilter,virsh,root。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。