使用 libvirt創建和管理KVM虛擬機


 

 

1. libvirt介紹
    Libvirt是一個軟件集合,便於使用者管理虛擬機和其他虛擬化功能,比如存儲和網絡接口管理等等。Libvirt概括
起來包括一個API庫、一個 daemon(libvirtd)和一個命令行工具(virsh)。
    Libvirt的主要目標是:提供一種單一的方式管理多種不同的虛擬化提供方式和 hypervisor。
    Libvirt的主要功能如下:
    (1)虛擬機管理
             包括不同的領域生命周期操作,比如:啟動、停止、暫停、保存、恢復和遷移。
             支持多種設備類型的熱插拔操作,包括:磁盤、網卡、內存和CPU。
    (2)遠程機器支持
             只要機器上運行了libvirt daemon,包括遠程機器,所有的libvirt功能就都可以訪問和使用。
             支持多種網絡遠程傳輸,使用最簡單的SSH,不需要額外配置工作。比如:example.com運行了libvirt,
             而且允許SSH訪問,下面的命令行就可以在遠程的主機上使用virsh命令行。

                             virsh --connect qemu+ssh://root@example.com/system
    (3)存儲管理
            任何運行了libvirt daemon的主機都可以用來管理不同類型的存儲:創建不同格式的文件映像(qcow2、vmdk、raw等)、掛接NFS共享、列出現有的LVM卷組、創建新的LVM卷組和邏輯卷、對未處理過的磁盤設備分區、掛接iSCSI共享,等等等等。因為libvirt可以遠程工作,所有這些都可以通過遠程主機使用。
     (4)網絡接口管理
           任何運行了libvirt daemon的主機都可以用來管理物理和邏輯的網絡接口。可以列出現有的接口卡,配置、創建接口,以及橋接、vlan和關聯設備等,通過netcf都可以支持。
     (5)虛擬NAT和基於路由的網絡
             任何運行了libvirt daemon的主機都可以用來管理和創建虛擬網絡。Libvirt虛擬網絡使用防火牆規則作為路由器,讓虛擬機可以透明訪問主機的網絡

2. 使用libvirt創建kvm虛擬機
(1)制作虛擬機鏡像

  1. qemu-img create -f qcow2 test.qcow2 10G
(2)下載並復制iso鏡像到指定目錄,本文將所有鏡像及配置文件放到/var/lib/libvirt/images/目錄下,注意:有些系統因為SELinux的原因,限定了qemu的訪問,所以,可以根據自己需求調整,默認放在/var/lib/libvirt/images/下。
(3)創建安裝配置文件,demo.xml如下,可以根據自己需求更改。

  1. <domain type='kvm'>
  2.         <name>test_Ubuntu</name> //虛擬機名稱
  3.         <memory>1048576</memory> //最大內存,單位k
  4.         <currentMemory>1048576</currentMemory> //可用內存,單位k
  5.         <vcpu>8</vcpu> //虛擬cpu個數
  6.         <os>
  7.           <type arch='x86_64' machine='pc'>hvm</type>
  8.           <boot dev='cdrom'/> //光盤啟動
  9.        </os>
  10.        <features>
  11.          <acpi/>
  12.          <apic/>
  13.          <pae/>
  14.        </features>
  15.        <clock offset='localtime'/>
  16.        <on_poweroff>destroy</on_poweroff>
  17.        <on_reboot>restart</on_reboot>
  18.        <on_crash>destroy</on_crash>
  19.        <devices>
  20.          <emulator>/usr/libexec/qemu-kvm</emulator>
  21.          <disk type='file' device='disk'>
  22.           <driver name='qemu' type='qcow2'/>
  23.            <source file='/var/lib/libvirt/images/test.qcow2'/> //目的鏡像路徑
  24.            <target dev='hda' bus='ide'/>
  25.          </disk>
  26.          <disk type='file' device='cdrom'>
  27.            <source file='/var/lib/libvirt/images/ubuntu.iso'/> //光盤鏡像路徑
  28.            <target dev='hdb' bus='ide'/>
  29.          </disk>
  30.         <interface type='bridge'> //虛擬機網絡連接方式
  31.           <source bridge='kvmbr0'/> //當前主機網橋的名稱
  32.           <mac address="00:16:3e:5d:aa:a8"/> //為虛擬機分配mac地址,務必唯一,否則dhcp獲得同樣ip,引起沖突
  33.         </interface>
  34.         <input type='mouse' bus='ps2'/>
  35.          <graphics type='vnc' port='-1' autoport='yes' listen = '0.0.0.0' keymap='en-us'/>//vnc方式登錄,端口號自動分配,自動加1,可以通過virsh vncdisplay來查詢
  36.        </devices>
  37.      </domain>

  1. virsh define demo.xml //創建虛擬機
  1. virsh start test_ubuntu //啟動虛擬機
  1. virsh vncdisplay test_ubuntu //查看虛擬機的vnc端口, 然后就可以通過vnc登錄來完成虛擬機的安裝
3. 使用剛才創建好的鏡像來啟動一個新的虛擬機
(1)創建啟動配置文件,demo.xml如下。

  1. <domain type='kvm'>
  2. <name>myvm</name>  //創建名為myvm的虛擬機
  3. <memory>1048576</memory>
  4. <currentMemory>1048576</currentMemory>
  5. <vcpu>8</vcpu>
  6. <os>
  7. <type arch='x86_64' machine='pc'>hvm</type>
  8. <boot dev='hd'/> //即harddisk,從磁盤啟動 
  9. </os>
  10. <features>
  11. <acpi/>
  12. <apic/>
  13. <pae/>
  14. </features>
  15. <clock offset='localtime'/>
  16. <on_poweroff>destroy</on_poweroff>
  17. <on_reboot>restart</on_reboot>
  18. <on_crash>destroy</on_crash>
  19. <devices>
  20. <emulator>/usr/libexec/qemu-kvm</emulator>
  21. <disk type='file' device='disk'>
  22. <driver name='qemu' type='qcow2'/>
  23. <source file='/var/lib/libvirt/images/test.qcow2'/> //目的鏡像路徑
  24. <target dev='hda' bus='ide'/>
  25. </disk>
  26. <disk type='file' device='cdrom'>
  27. <source file='/var/lib/libvirt/images/ubuntu.iso'/> //光盤鏡像路徑
  28. <target dev='hdb' bus='ide'/>
  29. </disk>
  30. <interface type='bridge'>
  31. <source bridge='kvmbr0'/>
  32. <mac address="00:16:3e:5d:aa:a8"/>
  33. </interface>
  34. <input type='mouse' bus='ps2'/>
  35. <graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/>
  36. </devices>
  37. </domain>
  1. virsh define demo.xml
  2. virsh start myvm
4, 虛擬機管理
    虛擬機的管理即通過virsh命令來完成,具體命令的使用參見: http://libvirt.org/sources/virshcmdref/html-single/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM