zoukankan      html  css  js  c++  java
  • kvm虚拟机管理

    virsh命令行下管理虚拟机

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


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

    1 virsh list             列出当前宿主机上处于运行状态的虚拟机
    2 virsh list --all      列出当前宿主机上所有的虚拟机
    3 virsh start vm1     (虚拟机name) 开启某一台虚拟机
    4 virsh shutdown vm1   (虚拟机name) 正常关闭一台虚拟机
    5 virsh destroy vm1      强制关闭某一台虚拟机
    6 virsh autostart vm1    开机自启动虚拟机vm1
    7 virsh autostart  --disable vm1 关闭开机自启动
    8 virsh edit vm1       编辑某个虚拟机的配置文件
    9 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
  • 相关阅读:
    Minimum Depth of Binary Tree leetcode java
    Maximum Depth of Binary Tree leetcode java
    Symmetric Tree leetcode java
    Same Tree leetcode java
    Binary Tree Postorder Traversal leetcode java
    Binary Tree Preorder Traversal leetcode java
    Binary Tree Inorder Traversal leetcode java
    Combinations leetcode java
    一键清除Centos iptables 防火墙所有规则
    阿里云centos7.7x64安装open,并配置ip转发和nat伪装
  • 原文地址:https://www.cnblogs.com/zzzynx/p/10938229.html
Copyright © 2011-2022 走看看