使用Perl進行虛擬化環境的自動化管理

來源:互聯網
上載者:User

概述

虛擬化作為雲端運算的基礎,是目前一個重要的趨勢。通過虛擬化可以提高 IT 資源和應用程式的效率和可用 性。基於核心的虛擬機器 KVM 在 2008 年被 RedHat 收購後,在 IBM 和 RedHat 的聯合推動下得到了全面的發展。最新發行 的 RHEL 版本中已經全面支援了 KVM 虛擬機器,並整合了一整套基於 libvirt 的管理工具 (virsh/virt-top/virt- install/virt-manager 等 )。虛擬化領域的主要廠商 VMware 的 vSphere 虛擬環境提供的 vSphere Client 讓使用者可通過 直觀的圖形化方式管理 vCenter/ESX server/datacenter/cluster/VM 等對象。但是當被管理對象數量龐大時,使用 virt -manager 或者 vSphere Client 的圖形化方式來處理一些日常事務就顯得費時費力了。為此使用者可以通過相應的 API 來編 寫程式管理這些日常事務。本文將介紹 libvirt API 和 vSphere SDK for Perl 在系統管理方面的應用。本文將對於開發 人員、系統管理員、系統測試人員有所協助。

使用 libvirt 管理 KVM 環境

libvirt 是一套實現 Linux 虛 擬化功能的開源 API,旨在提供一種單一的方式管理多種不同的虛擬化方案。目前 libvirt 支援如下的 hypervisor:

KVM/QEMU
   Xen
   LXC
   OpenVZ
   VirtualBox
   VMware ESX, workstation, player
   Microsoft Hyper-V

伴隨著 libvirt,RHEL 最新的發行版還包含了一系列基於 libvirt 的工具用於簡化虛擬機器的維護管理:

virt-install: 用於建立虛擬機器
   virsh: 互動式/批處理 shell,可以用於完成虛擬環境的日 常管理工作
   virt-manager: 一個圖形化的介面 , 用於 Hypervisor 及其虛擬機器的管理
   virt-clone: 用於虛擬機器複製
   virt-viewer: 安全連線虛擬機器的圖形控制台工具

雖然 libvirt 本身由 C 開發 , 它提供了多種主流語言的綁定。系統管理員可以自由選擇他們熟悉的語言,如 Python、Perl、 Ruby、Java、PHP 等 .

使用 virsh 管理 KVM 虛擬機器

基於 libvirt 的管理工具中最常用的是 virsh。virsh 命令的格式如下:

virsh [OPTION] COMMAND ARG

在不提供任何參數時,virsh 提供一個互動式 shell。管 理員可以通過 virsh 編寫一些簡單的 shell 指令碼完成虛擬機器/網路/儲存的配置。下面的程式碼片段顯示了 virsh 命令的使 用方法。

使用 ssh 協議串連到 KVM hypervisor:

[root@BJGSSLA]# virsh connect qemu+ssh://9.9.9.9/system
    root@9.9.9.9's password:

列舉域 (guest VM):

[root@BJGSSLA]# virsh list
    Id   Name   State
    ------------ --------------
    32   rhkvm   running
    33   rhkvm01   running
    34   xpkvm   running

列舉域的詳細資料:

[root@BJGSSLA]# virsh dominfo rhkvm
    Id:    32
    Name:    rhkvm
    UUID:    9d37e044-b134-c923-bbe6-0db40707ff9b
    OS Type:   hvm
    State:    running
    CPU(s):    1
    CPU time:   92.6s
    Max memory:   524288 kB
    Used memory:   524288 kB
    Persistent:   yes
    Autostart:   disable
    Managed save:   yes

掛起,繼續,重啟域:

[root@BJGSSLA]# virsh suspend rhkvm
    Domain rhkvm suspended
    [root@BJGSSLA]# virsh resume rhkvm
    Doamin rhkvm resumed
    [root@BJGSSLA]# virsh reboot rhkvm
    Domain rhkvm is being rebooted

快照管理:

[root@BJGSSLA]# virsh snapshot-create rhkvm
    Domain snapshot 1336311489 created
    [root@BJGSSLA]# virsh snapshot-list rhkvm
    Name    Create Time     State
    ------------------------------------------------- ----
    1336311489   2012-05-06 09:38:09 -0400   running
    [root@BJGSSLA]# virsh snapshot-revert rhkvm 1336311489

註:在 KVM 虛擬環境中物理宿主機被稱為節點 (node),每個 guest 被稱為域 (domain) 。

基於 libvirt API 編寫 Perl 指令碼

virsh 可以勝任大部分日常 的工作,更複雜的需求可以通過 libvirt API 編程實現。本節將介紹基於如何使用 libvirt for Perl 來獲得更加精細的 虛擬機器資訊。

CPAN 上的 Sys::Virt 模組即為 libvirt 的 Perl 綁定。首先根據 KVM 環境中 libvirt 的版本下載 、編譯、安裝對應的 Sys-Virt 模組。本文的實驗環境中使用 0.9.4 版 libvirt, 因此使用 Sys-Virt-0.9.4:

http://search.cpan.org/~danberr/Sys-Virt-0.9.4/

編譯安裝 Sys::Virt 模組:

[root@BJGSSLA]# perl Makefile.PL
[root@BJGSSLA]# make
[root@BJGSSLA]# make install

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.