KVM虚拟机管理(2) 二、远程管理kvm虚机 三、virsh命令行下管理虚拟机 四、KVM 通过virsh console连入虚拟机 五、KVM虚拟化透传

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

 

 

一、virt-manager创建虚机

命令行需要下载下面的组件:

CentOS7: 命令行界面升级为图形化界面

yum groupinstall "X Window System"  -y
yum groupinstall "GNOME Desktop" "Graphical Administration Tools" -y

这时,我们可以通过命令 startx 进入图形界面,第一次进入会比较慢,请耐心等待。(可能需要重启,命令为reboot)

(1)首先通过命令 virt-manager 启动图形界面:
点下面的图标创建虚机

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(2)给虚机命名为 kvm1,这里选择从哪里启动虚机。如果是安装新的 OS,可以选择第一项。如果已经有安装好的镜像文件,选最后一项(如下图)。

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(3)接下来需要告诉 virt-manager 镜像的位置,点击 “Browser”

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(4)需要在系统中上传一个镜像文件到属主机上,放到 /var/lib/libvirt/images/ 目录下,这是 KVM 默认查找镜像文件的地方。(这步可以在前期做好)

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(5)为虚拟机分配 CPU、内存和磁盘

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(6)为虚拟机命名,并在安装前配置硬件参数,点击“Finish”。网络选择三节课创建的br0网桥,点击绿色“对勾”开始安装

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

 (7)控制台弹出如下图,安装linux安装步骤安装即可:

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

virt-manager 可以对虚机进行各种管理操作,界面直观友好,很容易上手。 同时我们也可以用命令 virsh 管理虚机,比如查看宿主机上的虚机:

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(1)上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机。其实 virt-manager 也可以管理其他宿主机上的虚机。只需要简单的将宿主机添加进来,如下图:

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

接下来,我们就可以像管理本地虚机一样去管理远程宿主机上的虚机了

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(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 命令下的参数

帮助菜单

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

 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 ,进入到安装步骤

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(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登陆
         [root@localhost ~]# echo "ttyS0" >> /etc/securetty
(2)编辑/etc/grub.conf中加入console=ttyS

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(3)编辑/etc/inittab,在最后一行加入内容:S0:12345:respawn:/sbin/agetty ttyS0 115200

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(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 软件,一直下一步完成

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(2)打开vnc viewer 软件连接kvm主机

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

(3)点击Continue,即可连接里面的虚机

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

五、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虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

# 在宿主机启用 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

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

Y ---“Y” 表示 cpu 虚拟化透传功能开启

3、编辑需要做虚拟化透传的虚拟机的配置文件
#virsh edit centos7 ( Virtual Machine Name )
<cpu mode='host-passthrough'>

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

host-passthrough 直接将物理 CPU 暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理 CPU的型号

4、进入虚拟机中查看cpu是否透传成功

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传

在一层虚拟机中查看cpu是否支持虚拟化

KVM虚拟机管理(2)
二、远程管理kvm虚机
三、virsh命令行下管理虚拟机
四、KVM 通过virsh console连入虚拟机
五、KVM虚拟化透传