• 虚拟机管理


    1.virt-manager创建虚机

    (1)首先通过命令 virt-manager 启动图形界面:

    进入虚拟系统管理器

    clip_image001

    点下面的图标创建虚机

    clip_image002

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

    clip_image003

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

    clip_image004

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

    clip_image005

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

    clip_image006

    clip_image007

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

    clip_image008

    clip_image009

    clip_image010

    clip_image011

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

    clip_image012

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

    [root@localhost 下载]# virsh list --all #列 出所有虚拟机 virsh list 列出所有运行的虚拟机

    clip_image013

    [root@localhost ~]# cd /var/lib/libvirt/images/

    [root@localhost images]# ls

    clip_image014

    2.远程管理kvm虚机

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

    clip_image015

    输入要来连接的目标ip

    clip_image016

    在本机下载安装openssh-askpass插件,否则不能够连接别的主机:yum install openssh-askpass -y

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

    clip_image017

    (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

    3.virsh命令行下管理虚拟机

    virsh 既有命令行模式,也有交互模式,在命令行直接输入 virsh 就进入交互模式, virsh 后面跟命令参数,则是命令行模式;

    (1)基础操作 --- 命令行下管理虚拟机

      语法结构:

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

      help 列出命令下的所有参数

      help list 列出 list 命令下的参数

    clip_image018

    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 列出存储池

    创建一个大小为 50G 的,格式为 qcow2 的磁盘镜像:

    qemu-img create -f qcow2 -o size=9G /export/kvm/test.qcow2 #这样创建出来的硬盘是精简置备创建磁盘时,占用磁盘的空间大小根据实际使用量计算,即用多少分多少,提前不分配空间,对磁盘保留数据不置零,且最大不超过设定的值,对应的叫做厚置备。

    查看磁盘信息:qemu-img info /export/kvm/test.qcow2

    (2)命令行下创建 && 管理虚拟机

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

    clip_image019

    (3)其他

    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

    cd /etc/libvirt/qemu/ #虚拟机配置文件保存位置

    /var/lib/libvirt/images/ #虚拟机磁盘配置文件保存位置

    4.KVM 通过virsh console连入虚拟机

    我们在一台虚拟机中新安装一台虚拟机后,是无法通过virsh console 命令连入虚拟机中的,这时我们需要开启虚拟机(vm1,vm2)的console功能。

    [root@localhost ~]# virsh console VM1

    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)在宿主机console连接vm

    [root@localhost ~]# virsh console vm2

    clip_image020

    连接成功

    按 ctrl+] 组合键退出virsh console

    3、VNC Viewer 远程管理kvm主机

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

    5.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

    clip_image021

    (2)重新加载 kvm 模块

    [root@localhost yum.repos.d]# modprobe -r kvm_intel # 需要将所有的虚拟机关闭

    [root@localhost yum.repos.d]# modprobe kvm_intel

    (3)验证是否加载成功

    [root@localhost yum.repos.d]# cat /sys/module/kvm_intel/parameters/nested

    Y # Y表示开启虚拟化透视成功

    3、编辑需要做虚拟化透传的虚拟机的配置文件

    [root@localhost yum.repos.d]# virsh edit vm2

    修改为<cpu mode='host-passthrough'>

    clip_image022

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

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

    clip_image023

    [root@localhost ~]# lsmod |grep kvm

    clip_image024

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

    clip_image025

    由此看出透视成功。

    6.虚拟机的分享(冷迁移)

    192.168.88.20端

    第一步:复制配置文件(不可以直接放在配置文件的目录里)

    [root@localhost qemu]# cd /etc/libvirt/qemu/

    [root@localhost qemu]# ls

    networks VM1.xml vm2.xml

    [root@localhost qemu]# scp vm2.xml root@192.168.88.21:/root/

    第二步:复制磁盘信息(磁盘文件必须直接复制到/var/lib/libvirt/images/下)

    [root@localhost qemu]# cd /var/lib/libvirt/images/

    [root@localhost images]# ls

    CentOS-7-x86_64-DVD-1810.iso test.qcow2 VM1.qcow2 vm2.qcow2

    [root@localhost images]# scp vm2.qcow2 root@192.168.88.21:/var/lib/libvirt/images/

    192.168.88.21端

    创建虚拟机

    [root@localhost ~]# virsh define vm2.xml

    clip_image026

    [root@localhost ~]# virsh list --all

    clip_image027

    虚拟机分享成功。

  • 相关阅读:
    jdbc和DBeaver客户端连接oracle很慢,初始化连接成功后速度正常
    centos7中vncserver连接失败
    postgres数据库建库、修改owner
    nested exception is org.apache.ibatis.binding.BindingException:
    postgresql导出表insert方式数据
    解决ecllipse注释模板不生效问题
    postgresql 修改表属性,包括新增、修改、删除列
    ssh本机可登陆远端服务器,但远端服务器无法登陆本机
    linux源码安装后,设置动态库路径和环境变量
    valgrind跟踪调试动态库*.so
  • 原文地址:https://www.cnblogs.com/liangzb310/p/11075385.html
Copyright © 2020-2023  润新知