kvm libvirt的使用 建立虛擬機器與快照

2021-05-27 19:33:23 字數 2737 閱讀 3263

1.建立域(虛擬機器):包括volume和描述硬體配置的xml

//前端與節點建立連線

connect conn=new connect("qemu+ssh:",false);

//根據xml描述建立新虛擬機器並啟動

saxreader reader = new saxreader();

document docu =reader.read(new file("/domain.xml"));

string xmldesc=docu.asxml();

domain domain=conn.domaincreatexml(xmldesc, 0);

domain.resume();

補:新建域可以直接載入映象(.img),但這樣映象只能被乙個使用者使用。為可以讓映象能被多個使用者使用,可使用storagevol來關聯映象,虛擬機器載入該備份即可。

connect con=new connect("");

//根據儲存池的名字獲得storagepool

storagepool pool=con.storagepoollookupbyname("default");

saxreader reader=new saxreader();

document docu=reader.read(new file("/volume.xml"));

storagevol vol=pool.storagevolcreatexml(docu.asxml(), 0);

記錄下vol的儲存位址,賦值到域的配置檔案中即可。

刪除vol

storagevol vol=pool.storagevollookupbyname(volname);

vol.delete(0);

補:storagevol可以作為映象的快照,大小很小,只記錄了對映象的修改。

2.遷移/銷毀域

//前端與節點建立連線

connect conn1=new connect("qemu+ssh:",false);

//根據域的uuid-unique id(在生成域時,libvirt自動分配唯一的uuid),返回域。

string uuid="";

domain domain=conn1.domainlookupbyuuidstring(uuid);

connect conn2=new connect("qemu+ssh:",false);

/* * 把域從當前主機遷移到目的主機

* domain migrate(connect dconn, long flags, string dname, string uri, long bandwidth)

* dconn:目的主機

* dname:可選,重新命名域在目的機的名字

* uri:可選,目的機ip

* bandwidth:遷移頻寬,mbps

*/domain.migrate(conn2, 1, null, null, 5);

//銷毀域

domain.destroy();

補:域的名字、id等資訊都在xml配置描述裡定義。對於xml檔案的操作使用dom4j。

標準domain.xml

<?xml version="1.0" encoding="utf-8"?>

test

524288

524288

1hvm

destroy

restart

restart

/usr/bin/qemu-kvm

標準volume.xml

<?xml version="1.0" encoding="utf-8"?>

/var/lib/libvirt/images/temp.ss

8589934592

139264

/var/lib/libvirt/images/temp.ss

060000

/var/lib/libvirt/images/winxp.img

0600

107107

補:dom4j使用示例

saxreader reader = new saxreader();

document docu = reader.read(new file("/domain.xml"));

//更改元素的屬性值

element graphics=docu.getrootelement().element("devices").element("graphics");

attribute attrport=graphics.attribute("port");

attrport.settext(getport());

//更改元素值

element nameele=docu.getrootelement().element("name");

nameele.settext("new name");

//以字串形式返回xml

string docxmltext=docu.asxml();

kvm libvirt的使用 建立虛擬機器與快照

1.建立域 虛擬機器 包括volume和描述硬體配置的xml 前端與節點建立連線 connect conn new connect qemu ssh false 根據xml描述建立新虛擬機器並啟動 saxreader reader new saxreader document docu reader...

cocoapods的建立使用

第一步 安裝 cocoapods是跑在ruby的軟體,安裝可能需要幾分鐘,開啟你的終端輸入 sudo gem install cocoapods 如果成功 會有乙個 successfully installed cocoapods的提示 然後輸入 pod setup 如果顯示ruby環境不夠新,你的...

DLL的建立和使用

我們將建立的第一種型別的庫是動態鏈結庫 dll 使用 dll 是一種重用 的絕佳方式。您不必在自己建立的每個程式中重新實現同一例程,而只需對這些例程編寫一次,然後從需要該功能的應用程式引用它們即可。本演練涵蓋以下內容 建立新的動態鏈結庫 dll 專案。向動態鏈結庫新增類。建立引用動態鏈結庫的應用程式...