二、kvm虛擬機管理


一、virt-manager創建虛機

(1)首先通過命令 virt-manager 啟動圖形界面:

 

 

點下面的圖標創建虛機

 

 

(2)給虛機命名為 kvm1,這里選擇從哪里啟動虛機。如果是安裝新的 OS,可以選擇第一項。如果已經有安裝好的鏡像文件,選最后一項(如下圖)。

 

 

 

 (3)接下來需要告訴 virt-manager 鏡像的位置,點擊 “Browser”

 

 

 

 

 

(4)需要在系統中上傳一個鏡像文件到屬主機上,放到 /var/lib/libvirt/images/ 目錄下,這是 KVM 默認查找鏡像文件的地方。

 

 

 

 

 

(5)為虛擬機分配 CPU、內存和磁盤

 

 

       

 

(6)為虛擬機命名,並在安裝前配置硬件參數,點擊“Finish”。網絡選擇三節課創建的br0網橋,點擊綠色“對勾”開始安裝

 

 

 

 

 

 

 

 

 

 

(7)控制台彈出如下圖,安裝linux安裝步驟安裝即可:

 

 

virt-manager 可以對虛機進行各種管理操作,界面直觀友好,很容易上手。 同時我們也可以用命令 virsh 管理虛機,比如查看宿主機上的虛機:

 

 

 

 

二、遠程管理kvm虛機

 

(1)上一節我們通過 virt-manager 在本地主機上創建並管理 KVM 虛機。其實 virt-manager 也可以管理其他宿主機上的虛機。只需要簡單的將宿主機添加進來,如下圖:

 

 

 

 

接下來,我們就可以像管理本地虛機一樣去管理遠程宿主機上的虛機了

 

 

(2)有些情況下,有一個要配置的地方。 因為 KVM(准確說是 Libvirt)默認不接受遠程管理,需要按下面的內容配置被管理宿主機中的兩個文件:

vim /etc/default/libvirt-bin

start_libvirtd="yes"

libvirtd_opts="-d -l"

 

vim /etc/libvirt/libvirtd.conf

listen_tls = 0

listen_tcp = 1

unix_sock_group = "libvirtd"

unix_sock_ro_perms = "0777"

unix_sock_rw_perms = "0770"

auth_unix_ro = "none"

auth_unix_rw = "none"

auth_tcp = "none"

然后重啟 Libvirtd 服務就可以遠程管理了。

systemctl restart libvirt-bin

 

 

 

 

三、virsh命令行下管理虛擬機

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

 

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

語法結構:

virsh <command> <domain-id> [OPTIONS]

help            列出命令下的所有參數

help list      列出 list 命令下的參數

幫助菜單

 

 

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   編輯某個虛擬機的配置文件 (有cpu、內存、網卡、磁盤)

virsh pool-list   列出存儲池

 

qemu-img create -f qcow2 -o size=9G /var/lib/libvirt/images/test.qcow2

創建一個大小為 50G 的,格式為 qcow2 的磁盤鏡像

qemu:(管理io設備(io設備:輸入、輸出))

create : 創建

-f : 指定硬盤格式

-o:指定大小

路徑

 

查看磁盤信息:

qemu-img info test.qcow2

 

精簡置備:向磁盤宣告一個你要的空間,不是要多少給多少,隨着使用慢慢增長

后置備:要多少給你多少

 

 

命令行下創建 && 管理虛擬機

Virt-install:命令行下創建虛擬機的命令,不過在它后面需要跟上很多的參數

    --name: 虛擬機的名字。

    --disk Location: 磁盤映像的位置。

    --graphics : 怎樣連接 VM ,通常是 SPICE

    --vcpu : 虛擬 CPU 的數量。

    --ram : 以兆字節計算的已分配內存大小。

    --location : 指定安裝源路徑

    --network : 指定虛擬網絡,通常是 virbr0 或者自己設定的 br0

 

例如:

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

注:以此安裝操作之后,會在桌面顯示一個 virtviewer ,進入到安裝步驟

 

 

 

(2)除了這些簡單命令,實際在 virsh 形式下還有更多的命令:

virsh help     打印幫助

virsh attach-device      從一個 XML 文件附加裝置

virsh attach-disk          附加磁盤設備

virsh attach-interface   獲得網絡界面

virsh destroy                刪除一個域

virsh detach-device      從一個 XML 文件分離設備

virsh detach-disk         分離磁盤設備

virsh detach-interface  分離網絡界面

virsh define                 從一個 XML 文件定義(但不開始)一個域

virsh undefine             刪除一個虛機域sh

虛擬機配置文件保存在 /etc/libvirt/qemu

如果刪除虛擬機就刪除配置文件,先改名備份一份

恢復時候換位置、改名

 

 

 

 

克隆一個虛機:

yum install virt* -y

virt-clone -o vm2 -n vm4 -f /var/lib/libvirt/images/vm4.qcow2

-o : 克隆的虛擬機的名字

-n:新克隆的虛擬機名字

-f : 克隆之后虛擬機的磁盤路徑

 

查看內核系統版本:uname -a

 

 

 四、KVM 通過virsh console連入虛擬機

virsh console  centos7.0-test 通過宿主機進入虛擬機

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

1、centos7以下,及其他情況

(1)添加ttyS0的許可,允許root登陸

         [root@localhost ~]# echo "ttyS0" >> /etc/securetty

(2)編輯/etc/grub.conf中加入console=ttyS0

 

 

(3)編輯/etc/inittab,在最后一行加入內容:S0:12345:respawn:/sbin/agetty ttyS0 115200

   

 

 

(4)重啟服務器

 reboot

(5)宿主機上測試

 virsh console vm-name

(6)退出console連接的虛擬機li

 按 ctrl+] 組合鍵退出virsh console

2、對於centos7

(1)在虛機里運行

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

(2)重啟虛機

[root@localhost ~]# reboot

即可

3、VNC Viewer 遠程管理kvm主機

(1)在window中安裝VNC Viewer 軟件,一直下一步完成

 

 

(2)打開vnc viewer 軟件連接kvm主機

 

 

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

 

 

 

 

 

 

五、KVM虛擬化透傳

 

 

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

 

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

 

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

 

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

#virsh console vm1

#grep vmx /proc/cpuinfo

查詢未果,證明一層 KVM 的虛擬機,並未將宿主機處理器的 VT 功能成功透傳。所以,沒有對 VT功能的支持,我們不能實現在該層虛擬機中嵌套KVM 虛擬機。

 

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

1# vim /etc/modprobe.d/kvm-nested.conf

# 在文件中添加下面語句(由於截圖問題,實際不需要加空行)

options kvm_intel nested=1

# 在宿主機啟用 kvm_intel 模塊的嵌套虛擬化功能,並且使透傳永久有效

(2)重新加載 kvm 模塊

虛擬機需要關閉狀態

# modprobe -r kvm_intel          -r參數:remove掉kvm_intel模塊

# modprobe kvm_intel              加載kvm_intel模塊

(3)驗證是否加載成功

#cat /sys/module/kvm_intel/parameters/nested

Y ---“Y” 表示 cpu 虛擬化透傳功能開啟

 

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

#virsh edit centos7  Virtual Machine Name

<cpu mode='host-passthrough' />

 

 

host-passthrough 直接將物理 CPU 暴露給虛擬機使用,在虛擬機上完全可以看到的就是物理 CPU的型號

 virsh start centos7.0-test

 virsh console centos7.0-test

grep vmx /proc/cpuinfo

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

 

 

在一層虛擬機中查看cpu是否支持虛擬化

 

 

 

 

 

虛擬機的冷遷移

冷遷移:機器關機狀態下進行遷移

熱遷移:機器開機狀態下進行遷移

 

原宿主機:

cd /etc/libvirt/qemu/     (xml)

scp centos7.0-test.xml root@192.168.5.6:/root/

cd /var/lib/libvirt/images

scp centos7.0-test.qcow2 root@192.168.5.6:/var/lib/libvirt/images

 

新宿主機:

cd /root/

virsh define centos7.0-test.xml

virsh list --all

 

 

 

 

 


免責聲明!

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



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