kvm--virsh命令行下管理虛擬機


virsh 既有命令行模式,也有交互模式,在命令行直接輸入 virsh 就進入交互模式, virsh 后面跟命令參數,則是命令行模式;


(1)基礎操作 --- 命令行下管理虛擬機

virsh list             列出當前宿主機上處於運行狀態的虛擬機
virsh list --all      列出當前宿主機上所有的虛擬機
virsh start vm1     (虛擬機name) 開啟某一台虛擬機
virsh shutdown vm1   (虛擬機name) 正常關閉一台虛擬機
virsh destroy vm1      強制關閉某一台虛擬機
virsh autostart vm1    開機自啟動虛擬機vm1
virsh autostart  --disable vm1 關閉開機自啟動
virsh edit vm1       編輯某個虛擬機的配置文件
virsh pool-list       列出存儲池

2)創建新磁盤 

qemu-img create -f qcow2(指定磁盤格式) -o size=9G(指定大小) /var/lib/libvirt/images/haha.qcow2(路徑和名稱)

/var/lib/libvirt/image/為磁盤鏡像的默認路徑。

注意注定磁盤大小的時候不能有空格,否則報錯

[root@localhost images]# qemu-img create -f qcow2 -o size =9G /var/lib/libvirt/images/haha.qcow2 qemu-img: Invalid image size specified! You may use k, M, G, T, P or E suffixes for qemu-img: kilobytes, megabytes, gigabytes, terabytes, petabytes and exabytes. [root@localhost images]# qemu-img create -f qcow2 -o size=9G /var/lib/libvirt/images/haha.qcow2 Formatting '/var/lib/libvirt/images/haha.qcow2', fmt=qcow2 size=9663676416 encryption=off cluster_size=65536 lazy_refcounts=off [root@localhost images]# qemu-img info haha.qcow2

 

3)查看磁盤情況

qemu-img info 磁盤名

[root@localhost images]# qemu-img info /var/lib/libvirt/images/haha.qcow2 image: haha.qcow2 file format: qcow2 virtual size: 9.0G (9663676416 bytes) disk size: 196K    #實際占用磁盤196k,最高可用9G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false

4)命令行下創建 && 管理虛擬機
Virt-install:      命令行下創建虛擬機的命令,不過在它后面需要跟上很多的參數
    --name:       虛擬機的名字。
    --disk Location:   磁盤映像的位置。
    --graphics :     怎樣連接 VM ,通常是 SPICE 。
    --vcpu :       虛擬 CPU 的數量。
    --ram :       以兆字節計算的已分配內存大小。
    --location :     指定安裝源路徑
    --network :     指定虛擬網絡,通常是 virbr0 或者自己設定的 br0

 

例如:創建一個磁盤

路徑為/var/lib/libvirt/image/ 

指定cpu內存為1g

cpu數量為1

以spice方式連接vm

執行虛擬網絡為自設網橋br0

virt-install --name=test --disk path=/var/lib/libvirt/image/test.qcow2 --ram=1024 --vcpus=1 --graphics spice --location=/export/download/software/iso/CentOS-7.3-x86_64-DVD.iso --network bridge=br0

注意磁盤路徑與磁盤安裝源路徑的區別。

由於使用virsh命令創建虛擬機同樣還需要在圖形化界面操作,所以用的不多,了解就行。

 

5)其余重要的一些virsh命令


virsh define   xx.xml                從一個 XML 文件定義、恢復(但不開始)一個域
virsh undefine  xx           刪除一個虛機域

 

KVM 通過virsh console連入虛擬機

 

定義:在宿主機上直接能夠連通創建的虛擬機並執行操作,功能類似於ssh。

 前提:新安裝一台虛擬機后,是無法通過virsh console 命令連入虛擬機中的,這時我們需要開啟虛擬機的console功能。

我們這里以centos7以上的版本做說明:

 

(1)在被連接的虛機里執行

[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0"

 

(2)重啟此機

[root@localhost ~]# reboot

 

3)在宿主機上執行

[root@localhost ~]# virsh console vm5 連接到域 vm5 換碼符為 ^]            #ctrl ] 退出 1、一直hang在這個狀態無法連接上虛擬機,這是因為宿主機通過ttyss0連接虛擬機,但被連接主機沒有設置或者沒有設置成功。 2、或者grubby命令沒有下載,yum安裝后再次嘗試

3、VNC Viewer 遠程管理kvm主機

前提是宿主機內的虛擬機狀態為開啟

(1)在window中安裝VNC Viewer 軟件,一直點下一步就行。

 

 

 2 )輸入宿主機的ip地址。

點擊Continue,即可連接里面的虛機

 

 

五、KVM虛擬化透傳

 

KVM 虛擬化需要處理器對虛擬化技術的支持,當我們需要進行虛擬機嵌套虛擬機時,我們需要讓虛擬機中處理器對 VT 功能的支持達到透傳的效果

nested 虛擬機嵌套( kvm on kvm ):nested 技術,簡單的說,就是在虛擬機上跑虛擬機。

KVM 虛擬機嵌套和 VMWare 原理不同, VMWare第一層是用的硬件虛擬化技術,第二層就是完全軟件模擬出來的,所以 VMWare 只能做兩層嵌套。 KVM 是將物理 CPU 的特性全部傳給虛擬機,所有理論上可以嵌套 N 多層。

1、查看一層客戶端是否支持 VT


grep vmx(svm) /proc/cpuinfo

如果查詢未果,證明一層 KVM 的虛擬機,並未將宿主機處理器的 VT 功能成功透傳。

因此我們需要透傳。

 

2、在物理服務器上(宿主機)為嵌套虛擬機做准備 --- CPU 虛擬化透傳

注意查看你的虛擬機架構支持的是amd還是intel

[root@localhost ~]# cat /etc/modprobe.d/kvm-nested.conf 
options kvm_amd nested=1

 

3、在宿主機啟用 kvm_amd 模塊的嵌套虛擬化功能,並且使透傳永久有效
(2)重新加載 kvm 模塊
# modprobe -r kvm_amd      -r參數:remove掉kvm_amd模塊
# modprobe kvm_amd            加載kvm_amd模塊

 

4、驗證是否加載成功
#cat /sys/module/kvm_intel/parameters/nested

1或者y證明加載成功。

0和N或者沒有返回值證明沒加載成功。

重新加載modprobe模塊或者查看架構是支持intel還是amd來稍微更改下模塊和目錄。

[root@localhost ~]# cat /sys/module/kvm_amd/parameters/nested 
1

 

5、編輯需要做虛擬化透傳的虛擬機的配置文件

更改下面綠綠的一行即可。

host-passthrough 直接將物理 CPU 暴露給虛擬機使用,在虛擬機上完全可以看到的就是物理 CPU的型號(我們前面介紹過kvm透傳就是將宿主機的cpu特性全部傳給被透主機)

root@localhost ~]# virsh edit vm4 <domain type='kvm'>
  <name>vm4</name>
  <uuid>98c5d257-6b75-493b-91db-66589b582733</uuid>
  <memory unit='KiB'>1048576</memory>
  <currentMemory unit='KiB'>1048576</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='host-passthrough'/>        #刪除下面兩行 <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>

6、進入透傳虛擬機中查看cpu是否透傳成功

[root@localhost ~]# lsmod | grep kvm kvm_amd 69849  0 kvm 566340  1 kvm_amd irqbypass 13503  1 kvm

 

7、在被透傳虛擬機中查看cpu是否支持虛擬化

次數大於0證明透傳成功,可以開始虛擬機嵌套了。

svm是支持amd架構

vmx支持intel架構

[root@localhost ~]# egrep svm /proc/cpuinfo | wc -l 1

 


免責聲明!

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



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