• [ kvm ] 学习笔记 7:KVM 虚拟机创建的几种方式


    通过对 qemu-kvm、libvirt 的学习,总结三种创建虚拟机的方式:

      (1)通过 qemu-kvm 创建

      (2)通过 virt-install 创建

      (3)通过 virt-manager 创建

    在使用这三种创建虚拟机前提是 宿主机必须支持 cpu 的硬件虚拟化技术(Intel 是 vmx,AMD 是svm),通过下面方式进行查看是否支持:

    [root@192.168.118.14 ~]#lscpu | egrep Virtualization
    Virtualization:        VT-x
    Virtualization type:   full
    

    通过上面查看,宿主机支持 VT-x 虚拟化技术

    创建网桥网络:

    [root@192.168.118.14 ~]#yum install libvirt -y
    [root@192.168.118.14 ~]#mv /etc/libvirt/qemu/networks/default.xml /tmp/
    [root@192.168.118.14 ~]#systemctl stop NetworkManager ; systemctl start libvirtd
    # 创建网桥设备:br0
    [root@192.168.118.14 ~]#virsh iface-bridge eth0 br0 
    

    1. qemu-kvm 创建虚拟机

    在 qemu-kvm 创建虚拟机中,又分为:

      (1) 直接启动虚拟磁盘文件为虚拟机

      (2)通过iso镜像文件安装虚拟机

    (1)通过虚拟磁盘文件直接启动的方式

    [root@192.168.118.14 ~]#yum install qemu-kvm -y
    [root@192.168.118.14 ~]#ln -vs /usr/libexec/qemu-kvm /usr/bin/
    [root@192.168.118.14 ~]#mkdir /images
    [root@192.168.118.14 ~]#cd /images/
    [root@192.168.118.14 /images]#wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-i386-disk.img
    # 编写桥接使用的脚本
      
    [root@192.168.118.14 ~]#cat /etc/qemu-ifup
    #!/bin/bash
    #
    BRIDGE=br0
    if [ -n $1 ]; then
      ifconfig $1 up
      brctl addif $BRIDGE $1
    [ $? -eq 0 ] && exit 0 || exit 1
    else
      echo "Error: no interface specified."
    exit 1
    fi
    [root@192.168.118.14 /images]#qemu-kvm -cpu host -smp 1 -m 512m -drive file=/images/cirros-0.3.5-i386-disk.img,if=virtio,cache=writeback 
    -net nic,model=virtio,macaddr=52:54:00:bb:d2:88 -net tap,ifname=vnet0.0,script=/etc/qemu-ifup -daemonize
    说明:
    -name 虚拟机名称
    -cpu 执行虚拟机cpu类型,可通过 -cpu ? 查看支持的cpu类型
    -smp 虚拟机cpu数,支持多核心多线程设置 -smp n[,scores=scores][,threads=threads][,sockets=sockets]
    -drive 指定虚拟磁盘文件属性设置
        file: 指定具体虚拟磁盘文件目录
        if: 设置虚拟磁盘文件类型,virtio 为半虚拟化类型
        cache: 虚拟磁盘文件属性,是回写(writeback) 还是 透写(writethrough)
     
    -nographic 设置虚拟机工作方式
        不写直接在前台执行,Ctrl + C 会终止虚拟机运行
        -nographic 直接命令行显示在控制端
        -daemonize 后台执行虚拟机进程
    	
    /etc/qemu-ifup 脚本:
    #!/bin/bash
    #
    BRIDGE=br0
    if [ -n $1 ]; then
        ip link set $1 up
        sleep 1
        brctl addif $BRIDGE $1
    [ $? -eq 0 ] && exit 0 || exit 1
    else
        echo "Error: no interface specified."
    exit 1
    fi
    

    (2) 通过 iso 文件安装虚拟机

    # 自行准备 iso 镜像文件
    [root@192.168.118.14 ~]#ls /mnt/iso/
    CentOS-7-x86_64-DVD-1511.iso
    
    # 安装 vnc 客户端 和 x11 需要的插件
    [root@192.168.118.14 ~]#yum install tigervnc xorg-x11-xauth -y
    [root@192.168.118.14 ~]#qemu-img create -f qcow2 -o size=20G,preallocation=metadata /images/Centos7.qcow2
    [root@192.168.118.14 ~]#qemu-kvm -name 'centos7' -cpu host -smp 1 -m 1024m -drive file=/images/Centos7.qcow2 -cdrom /mnt/iso/CentOS-7-x86_64-DVD-1511.iso -daemonize
    # 如果这里召唤不出界面,建议重新开启一个终端执行
    [root@192.168.118.14 ~]#vncviewer :5900
    

    如图:

    2. virt-install 创建虚拟机

    在使用 virt-install 创建虚拟机的时候,首先把一些要使用的程序包安装:

    yum install virt-viewer dejavu-sans-fonts.noarch xorg-x11-xauth -y
    
    说明:
    virt-viewer 用于通过vnc直接查看虚拟机控制台
    dejavu-sans-fonts.noarch xorg-x11-xauth 用于通过 xmanager直接界面访问
    

    在 virt-install 中创建虚拟机的方式有以下几种:

    (1)直接启动虚拟磁盘文件为虚拟机

    virt-install --name test --memory 512 --disk /images/cirros-0.3.5-i386-disk.img --import --network bridge=br0 --graphics=vnc
    --name 虚拟机名
    --memory 内存(默认单位: MB)
    --disk 指定虚拟磁盘文件
    --import 导入虚拟磁盘文件
    --network 执行网络,不指定网络是无法启动的。bridge 执行网桥设备
    --graphics 通过什么方式访问界面,这里使用 vnc ,否则无法输入。
    

    (2)通过 iso 文件安装虚拟机

    首先通过 qemu-img 创建虚拟磁盘文件
    #qemu-img create -f qcow2 -o size=20G,preallocation=metadata CentOS7.qcow2
    #virt-install --name centos --vcpus 2 --memory 2048 --disk /images/CentOS7.qcow2,format=qcow2,bus=virtio,cache=writeback 
    --network bridge=br0,model=virtio --cdrom /usr/local/src/CentOS-7-x86_64-Minimal-1708.iso --graphics vnc --noautoconsole
    
    --name 虚拟机名
    --memory 内存(默认单位: MB)
    --disk 指定虚拟磁盘文件,format指定虚拟磁盘格式,bus 指定半虚拟化(virtio) cache 指定磁盘缓存(回写)
    --network 执行网络,不指定网络是无法启动的。bridge 执行网桥设备 model 指定虚拟网卡为半虚拟化,优化性能
    --graphics 通过什么方式访问界面,这里使用 vnc ,否则无法输入。 
    --noautoconsole 不用在界面直接弹出安装界面,后面可以通过 virt-view centos 唤出图形界面
    

    3. virt-manager 创建虚拟机

    virt-manager 是通过图形界面直接鼠标选择安装,这个不再演示。注意以下几个点:

      (1)通过命令 virt-manager 无法唤出界面,需要安装 xorg-x11-xauth , 然后重新开启一个会话执行 virt-manger

      (2)如果 virt-manager 出现乱码,需要安装 dejavu-sans-mono-fonts

      (3)注意防火墙和 selinux

  • 相关阅读:
    闭包
    TCL
    [Go] gin框架渲染html字符串
    [Go] 使用packr包把静态文件打包进二进制内
    [javascript] 获取正则子表达式里的内容
    [redis] Zremrangebylex命令移除元素令人困惑不能理解
    [Go] 获取文件夹下面指定模式的文件列表 , 并且获取文件创建时间删除超过30分钟的文件
    [vuejs] 聊天框在overflow:auto中填数据时滚动到底部
    [vuejs] 在vuejs中使用websocket进行实时通讯
    Egret顶级开发者—李昌平
  • 原文地址:https://www.cnblogs.com/hukey/p/11307129.html
Copyright © 2020-2023  润新知