1. 程式人生 > >centos7上使用virt-install命令建立kvm虛擬機器

centos7上使用virt-install命令建立kvm虛擬機器

  一、使用virt-install命令建立虛擬機器

      virt-install命令既可以互動執行,也可以以自動的方式建立與部署虛擬機器系統,配合kickstart技術可以實現無人值守安裝虛擬機器作業系統。該命令提供了很多選項,使用virt-install --help可以檢視選選項和幫助

image.png

命令格式:

virt-install [選項]

-h                                             檢視幫助

--connect=CONNECT              連線非預設的hypervisor,預設為qemu:///system

-n name                                   新的虛擬機器主機例項名稱

-r MEMORT                              虛擬機器記憶體設定

--arch=ARCH                            cpu架構

--machine=MACHINE              虛擬機器模擬機型別,Xen或者KVM等。

--vcpus=VCPUS                        虛擬主機CPU個數

-c CDROM                                設定光碟映象或光碟裝置路徑

-l LOCATION                             指定安裝源路徑

--pxe                                         使用pxe協議啟動

--import                                    匯入現有的虛擬機器

-x EXTRA                                    附加的核心引數,如-x "ks=http://server/server.ks"

--os-type=Type                         作業系統型別,如linux、windwos等

--disk=DISKOPTS                       設定虛擬機器磁碟,如--disk /dev/storage/path

-w   NETWORK                           設定虛擬機器網路,如-w bridge=br0

--noneworks                               虛擬機器不設定任何網路介面

-m MAC                                  vi   設定虛擬機器MAC地址

--vnc                                           設定通過vnc檢視虛擬機器

--hvm                                           使用全虛擬化技術

--paravirt                                    使用半虛擬化技術

--soundhw MODEL                    設定音效卡裝置

--autostart                                  設定虛擬機器為開機啟動

官方幫助文件案例如下:


1)安裝fedora 13,使用virtio 驅動的磁碟與網絡卡裝置,建立8GB的儲存檔案,使用CDROM安裝作業系統,使用VNC檢視虛擬機器介面

virt-install --connect qemu:///system --virt-type kvm --name demo --ram 500 --disk path=/var/lib/libvirt/images/demo.img,size=8 -graphics vnc --cdrom /dev/cdrom --os-variant fedora13


2)安裝Fedora9 ,使用LVM分割槽,虛擬機器網路設定為從PXE啟動,使用vnc連線虛擬機器介面:

virt-install --connect qemu:///system --name demo --ram 500 --disk path=/dev/HostVG/DemoVM --virt-type qemu --graphics vnc --os-variant fedora9

3)在真實的磁碟中安裝虛擬機器,使用預設QEMU hypervisor,使用SDL連線虛擬機器介面通過遠端初始化及安裝

virt-install --connect qemu:///system --name demo --disk path=/dev/hdc --network brige=eno1 --arch ppc64 --graphics sdl --location  /linux/core/6/x86_64/os/

以下為在本地安裝一臺ubuntu虛擬機器示意,

virt-install \
\--connect qemu:///system                                     #連線預設本機hypervisor
\--virt-type kvm                                              #虛擬化型別為kvm        
\--vcpus=1                                                    #vcpu為1
\--name unbuntu16                                             #
\--ram 512  
\--cdrom /var/lib/libvirt/images/ubuntu-16.04.5-server-amd64.iso 
\--disk path=/var/lib/libvirt/images/ubuuntu16.img,size=50,format=qcow2,bus=virtio 
\--network bridge=br0
\--os-type=linux

image.png

然後跳出安裝介面

image.png

然後使用virt-manger檢視虛擬機器硬體選項,與命令列配置一致

image.png


二、 virsh命令

    virsh是非常優秀的hypervisor和虛擬主機的命令列管理工具,它是由libvirt-client軟體提供的命令,可以使用該命令列工具替代圖形介面的virt-manager工具

語法 virsh[選項] 命令 [引數]

cd                             更改當前目錄

connect                        連線(重新連線)到 hypervisor

echo                           echo 引數

exit                           退出這個非互動式終端

help                           列印幫助

pwd                            輸出當前目錄

 quit                           退出這個非互動式終端

常用命令:

list      列出正在執行的虛擬機器列表

以下域其實就是domain,kvm中指虛擬機器

image.png

autostart -自動開始一個域,配置虛擬機器自啟,--disable表示禁用自啟動

connect - 連線(重新連線)到 hypervisor

dumpxml - XML 中的域資訊,輸出特定虛擬機器XML格式的配置檔案

 create - 從一個 XML 檔案建立一個域,新虛擬機器

define - 從一個 XML 檔案定義(但不開始)一個域

destroy - 銷燬(停止)域

 dominfo - 域資訊

domid - 把一個域名或 UUID 轉換為域 id

domstate - 域狀態

edit - 編輯某個域的 XML 配置

reboot - 重新啟動一個域

shutdown - 關閉一個域

destroy - 銷燬(停止)域

start - 開始一個(以前定義的)非活躍的域

save - 把一個域的狀態儲存到一個檔案

restore - 從一個存在一個檔案中的狀態恢復一個域

screenshot - 提取當前域控制檯截圖並儲存到檔案中

suspend - 掛起一個域

resume - 重新恢復一個域

setmem - 改變記憶體的分配

setmaxmem - 改變最大記憶體限制值

setvcpus - 改變虛擬 CPU 個數

vcpuinfo - 詳細的域 vcpu 資訊

attach-device - 從一個XML檔案新增裝置

net-create - 從一個 XML 檔案建立一個網路

net-dumpxml - 輸出XML格式的網路資訊

net-list - 列出網路

net-start - 開始一個(以前定義的)不活躍的網路

iface-define-使用XML檔案定義主機網路介面

iface-list - 物理主機介面列表

snapshot-create - 使用 XML 生成快照

snapshot-delete - 刪除域快照

snapshot-dumpxml - 為域快照備份xml

snapshot-list - 為域列出快照


1)檢視當前正在執行的虛擬機器列表,檢視所有的虛擬機器列表

image.png

2)設定虛擬機器為開機自啟

image.png


3)備份虛擬機器配置檔案,將配置檔案儲存為ubuntu.xml

virsh dumpxml ubuntu16 > ubntu16.xml

image.png


4)檢視虛擬機器的基本資訊

virsh dominfo 6

image.png


5)設定虛擬記憶體大小,最大記憶體以及vcpu個數,下次重啟生效

virsh setmaxmem ubuntu16 1048576 --config                #單位為kB --config為下次啟動生效
virsh setmem ubuntu16 1048576 --config
virsh setvcpus unbuntu16 2 --config


三、虛擬儲存

 kvm儲存池是被libvirt所管理的檔案、目錄或儲存裝置,儲存池可以位於本地,也可以通過網路共享,儲存池最終可以被虛擬機器所使用。預設libvirt使用基於目錄的儲存池設計,/var/lib/libvirt/images目錄就是預設的儲存池。本地儲存池可以是本地的一個目錄、磁碟裝置、物理分割槽或LVM卷,但是本地儲存池不適合於大規模產品部署,也不支援虛擬機器遷移功能。網路共享儲存池使用標準的網路協議進行儲存裝置的共享,它支援SAN,IP-SAN,NFS,GFS2等協議。在kvm虛擬化技術中,儲存池可以包含多個儲存卷,對虛擬機器而言,這些儲存卷都被是被為物理硬體儲存裝置。

3.1 建立基於目錄的虛擬儲存池與儲存卷

建立目錄

mkdir /var/lib/libvirt/test

修改檔案安全相關屬性

chown root.root /var/lib/libvirt/test/
chmod 700 /var/lib/libvirt/test/

使用virsh命令建立儲存池,

virsh pool-define-as test --type dir --target /var/lib/libvirt/test/        #建立為目錄型別的儲存池
virsh pool-build test                                                    #構建池
virsh pool-start test                                 #啟用
virsh pool-autostart test                           #自動啟用
virsh pool-list

image.png

還有可以使用xml定義的方式建立儲存池,首先建立一個名為test的xml文件

# cat test   
<pool type='dir'>                     #定義型別為目錄
  <name>test</name>                  #定義名稱為test
  <source>  
  </source>  
  <target>  
    <path>/var/lib/libvirt/test</path>   #定義目錄       
    <permissions>  
      <mode>0700</mode>  
      <owner>-1</owner>  
      <group>-1</group>  
    </permissions>  
  </target>  
</pool>

然後呼叫pool-create命令,載入xml檔案

virsh pool-create test
virsh pool-list

image.png


然後再建立儲存卷,格式為qcow2,大小為10G

virsh vol-create-as test vol-test.qcow2 10G --format qcow2            
virsh vol-list test            #檢視池下的卷

image.png

然後為虛擬機器新增硬碟,將test儲存池中的vol-test.qcow2卷作為硬碟新增到虛擬機器ubuntu中

 virsh attach-disk
\--domain ubuntu16                     #指定虛擬機器
\--source /var/lib/libvirt/test/vol-test.qcow2     #指定卷的路徑
\--target vdb                 #指定將硬碟識別為虛擬機器的vdb
\--targetbus virtio           #匯流排協議
\--driver qemu                #驅動型別
\--subdriver qcow2            #磁碟源的驅動型別
\--sourcetype block           #磁碟源方式 file即檔案裝置,block為塊裝置
\--cache none                 #不用快取
\--persistent                 #會讓此操作同時對執行的虛擬機器以及虛擬機器的xml檔案都會生效
\--config                     #下次重啟生效

image.png


此時登陸虛擬機器,可以看到硬碟已經新增

image.png