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_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 編輯某個虛擬機的配置文件
virsh pool-list 列出存儲池
qemu-img create -f qcow2 -o size=9G /export/kvm/test.qcow2
創建一個大小為 50G 的,格式為 qcow2 的磁盤鏡像
查看磁盤信息:
qemu-img info /export/kvm/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 刪除一個虛機域
克隆一個虛機:
virt-clone -o vm2 -n vm4 -f /var/lib/libvirt/images/vm4.qcow2
四、KVM 通過virsh console連入虛擬機
新安裝一臺虛擬機後,是無法通過virsh console 命令連入虛擬機中的,這時我們需要開啟虛擬機的console功能。
1、centos7以下,及其他情況
(1)添加ttyS0的許可,允許root登陸
[[email protected] ~]# 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)在虛機裏運行
[[email protected] ~]# grubby --update-kernel=ALL --args="console=ttyS0"
(2)重啟虛機
[[email protected] ~]# reboot
即可
五、KVM虛擬化透傳
KVM 虛擬化需要處理器對虛擬化技術的支持,當我們需要進行虛擬機嵌套虛擬機時,我們需要讓虛擬機中處理器對 VT 功能的支持達到透傳的效果。
nested 虛擬機嵌套( kvm on kvm ):nested 技術,簡單的說,就是在虛擬機上跑虛擬機。
KVM 虛擬機嵌套和 VMWare 原理不同, VMWare第一層是用的硬件虛擬化技術,第二層就是完全軟件模擬出來的,所以 VMWare 只能做兩層嵌套。 KVM 是將物理 CPU 的特性全部傳給虛擬機,所有理論上可以嵌套 N 多層。
1、查看一層客戶端是否支持 VT
#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的型號
4、進入虛擬機中查看cpu是否透傳成功
在一層虛擬機中查看cpu是否支持虛擬化
kvm虛擬機管理