標籤:方便 實現 情境 強制 相互 虛擬機器啟動 軟體集 邏輯 實施
1.什麼是libvirt
虛擬雲實現的三部曲:虛擬化技術實現-->虛擬機器管理-->叢集資源管理(雲管理)。各種不同的虛擬化技術都提供了基本的管理工具。比如,啟動,停用,配置,串連控制台等。**這樣在構建雲管理的時候就存在兩個問題:*** 1) 如果採用混合虛擬技術,上層就需要對不同的虛擬化技術調用不同管理工具,很是麻煩。* 2) 虛擬化技術發展很迅速,系統虛擬化和容器虛擬化均在發展和演化中。可能有新的虛擬化技術更加符合現在的應用情境,需要遷移過去。這樣管理平台就需要大幅改動。為了適應變化,我們慣用的手段是分層,使之相互透明,在虛擬機器和雲管理中設定一個抽象管理層。libvirt就是扮演的這個角色。有了它,上面兩個問題就迎刃而解。libvirt提供各種API,供上層來管理不同的虛擬機器。Libvirt是管理虛擬機器和其他虛擬化功能,比如儲存管理,網路管理的軟體集合。它包括一個API庫,一個精靈(libvirtd)和一個命令列工具(virsh);libvirt本身構建於一種抽象的概念之上。libvirt的主要目標是為各種虛擬化工具提供一套方便、可靠的編程介面,用一種單一的方式管理多種不同的虛擬化提供方式。
2.Libvirt主要支援的功能
虛擬機器管理: 包括不同的領域生命週期操作,比如:啟動、停止、暫停、儲存、恢複和遷移。支援多種裝置類型的熱插拔操作,包括:磁碟、網卡、記憶體和CPU。
遠程機器支援: 只要機器上運行了libvirt
daemon,包括遠程機器,所有的libvirt功能就都可以訪問和使用。支援多種網路遠程傳輸,使用最簡單的SSH,不需要額外配置工作。
儲存管理: 任何運行了libvirt daemon的主機都可以用來管理不同類型的儲存:建立不同格式的檔案鏡像(qcow2、vmdk、raw等)、掛接NFS共用、列出現有的LVM卷組、建立新的LVM卷組和邏輯卷、對未處理過的磁碟裝置分區、掛接iSCSI共用,等等等等。因為libvirt可以遠程工作,所有這些都可以通過遠程主機使用。
網路介面管理: 任何運行了libvirt daemon的主機都可以用來管理物理和邏輯的網路介面。虛擬NAT和基於路由的網路:任何運行了libvirt daemon的主機都可以用來管理和建立虛擬網路。
3.libvirt的工具virsh的使用:
下面是virsh的常用命令方法:
(instancename 為虛擬機器執行個體名)
virsh list #顯示本地活動虛擬機器virsh list –all #顯示本地所有的虛擬機器(活動的+不活動的)virsh define ubuntu.xml #通過設定檔定義一個虛擬機器(這個虛擬機器還不是活動的)virsh start instancename #啟動名字為ubuntu的非活動虛擬機器virsh create ubuntu.xml # 建立虛擬機器(建立後,虛擬機器立即執行,成為活動主機)virsh suspend instancename # 暫停虛擬機器virsh resume instancename # 啟動暫停虛擬機器virsh shutdown instancename # 正常關閉虛擬機器virsh destroy instancename # 強制關閉虛擬機器virsh dominfo instancename #顯示虛擬機器的基本資料virsh domname 2 # 顯示id號為2的虛擬機器名virsh domid instancename # 顯示虛擬機器id號virsh domuuid instancename # 顯示虛擬機器的uuidvirsh domstate instancename # 顯示虛擬機器的目前狀態virsh dumpxml instancename # 顯示虛擬機器的當前設定檔(可能和定義虛擬機器時的配置不同,因為當虛擬機器啟動時,需要給虛擬機器分配id號、uuid、vnc連接埠號碼等等)virsh setmem instancename 512000 #給不活動虛擬機器設定記憶體大小virsh setvcpus instancename 4 # 給不活動虛擬機器設定cpu個數virsh edit instancename # 編輯設定檔(一般是在剛定義完虛擬機器之後
4.libvirt 支援的虛擬技術:
目前支援的虛擬化技術包括:xen,qemu,kvm,lxc,openvz,virtualbox,test,storage,user mod linux ,主流的虛擬化技術基本都支援了。
5..Libvirt語言綁定
libvirt庫用C(支援 C++)實現,且包含對Python的直接支援。不過它還支援大量語言綁定。目前已經對Ruby、Java語言,Perl和 OCaml實施了綁定。libvirt支援最流行的系統程式設計語言(C和C++)、多種指令碼語言。因此,不管您側重何種語言,都可以方便的應用Libvirt。
虛擬機器值libvirt解析