JDKHOME JDKHOME
  • Web

    • 权限框架Twiggy
    • 脚手架BLZO
  • 杂货
技术思考
  • Kubernetes
  • 文档
  • jdkhome
  • 友链
  • 版权声明
  • 分类
  • 标签
  • 归档
  • Web

    • 权限框架Twiggy
    • 脚手架BLZO
  • 杂货
技术思考
  • Kubernetes
  • 文档
  • jdkhome
  • 友链
  • 版权声明
  • 分类
  • 标签
  • 归档
  • kvm简单使用

    • 首先是宿主机安装kvm
      • 检查cpu是否支持虚拟化
      • 安装
      • 配置桥接
      • 防火墙配置
    • 启动虚拟机
      • 克隆虚拟机
    • 连接到虚拟机
      • 安装windows10虚拟机
        • 虚拟机管理
          • 查看虚拟机
          • 虚拟机关机(拔电源)
          • 删除虚拟机
        • 参考资料
        linkji
        2020-06-14
        随笔

        kvm简单使用

        # KVM简单使用

        需求:在一台配置不错的机器上安装kvm,然后开小虚拟机,小虚拟机拥有局域网ip地址

        # 首先是宿主机安装kvm

        下面操作均是切换至root用户进行的。

        # 检查cpu是否支持虚拟化

        egrep -c '(svm|vmx)' /proc/cpuinfo
        
        1

        上面命令执行结果如果返回0,表示CPU不支持虚拟化技术。当然主板BIOS中的虚拟化技术也可能不是默认开启的,如果没有开启需要手动开启一下。

        # 安装

        apt update
        apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager
        
        1
        2

        将libvirtd添加自启动

        systemctl start libvirtd.service
        systemctl enable libvirtd.service
        
        1
        2

        # 配置桥接

        kvm支持多种网络模式,比如NAT、桥接。

        NAT是默认的网络模式,KVM会创建一个名为virbr0的虚拟网桥,然后在这个网桥上给虚拟机分配自己的内网ip。(相当于内部组了一个局域网) NAT模式,外网是无法访问虚拟机的。

        桥接模式,用一个新网桥来接管宿主机网卡对应的外部网络,然后让宿主机和虚拟机都通过这个网桥来访问外部网络,大家都能拿到外部网络的ip。

        首先查看宿主机的网卡

        ip addr
        
        1

        找到绑定了局域网ip的那个网卡,我的是enp12s0

        然后修改netplan配置

        cat /etc/netplan/50-cloud-init.yaml 
        
        1
        network:
            ethernets:
                enp12s0:
                    dhcp4: no
                    optional: true
                    nameservers:
                        addresses: [192.168.1.1,114.114.114.114,8.8.8.8]
            bridges:
                br0:
                    interfaces: [enp12s0]
                    dhcp4: no
                    addresses: [192.168.1.54/24]
                    gateway4: 192.168.1.1
                    nameservers:
                        addresses: [192.168.1.1,114.114.114.114,8.8.8.8]
            version: 2
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16

        这里我的宿主机局域网ip是 192.168.1.54 然后网关(路由器)的ip是 192.168.1.1

        # 防火墙配置

        vim /etc/default/ufw
        
        # ... 省略
        DEFAULT_FORWARD_POLICY="ACCEPT"
        # ... 省略
        
        1
        2
        3
        4
        5

        重启ufw服务让设置生效

        systemctl restart ufw.service
        
        1

        iptable设一下

        iptables -A FORWARD -j ACCEPT
        
        1

        至此kvm的宿主机设置就完成了

        # 启动虚拟机

        virt-install \
        -n ubuntu18.04-template \
        --description "ubuntu18.04-template" \
        --accelerate \
        --ram=8192 --vcpus=2 \
        --network bridge:br0 \
        --graphics vnc,listen=0.0.0.0,keymap=en-us \
        --os-type=linux --os-variant=ubuntu18.04 \
        --disk path=/hdd-data/img/ubuntu18.04-template.img,bus=virtio,size=40 \
        --cdrom /ssd-data/iso/ubuntu-18.04.4-live-server-amd64.iso
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10

        这个os-variant参数可以参考http://www.linuxcoming.com/blog/2019/09/03/linux_basic_tools_virt_install_os_variant.html

        启动之后,需要通过vnc连接虚拟机以完成安装。这个地方建议多开一个终端,因为安装完成之前这个终端的命令输入是阻塞的。

        查看vnc端口:

        virsh vncdisplay 虚拟机名称
        
        1

        vnc的端口是从5900开始的 所以这个命令返回的数字+5900就是具体的端口号

        # 克隆虚拟机

        virt-clone \
        -o ubuntu18.04-template \
        -n ubuntu-jdk001 \
        -f /hdd-data/img/ubuntu-jdk001.img 
        
        1
        2
        3
        4

        # 连接到虚拟机

        因为虚拟机有局域网ip,所以可以用ssh连接虚拟机,不过如果是刚复制出来的虚拟机,我们并不能直接得到它的ip地址,用arp也不行。

        此时有2种方法:

        • vnc连上去,然后看ip
        • virsh console 命令

        这里说下virsh console,因为比较方便

        首先是用于复制的模版虚拟机需要执行以下命令来开启访问服务:

        sudo systemctl enable serial-getty@ttyS0.service
        sudo systemctl start serial-getty@ttyS0.service
        
        1
        2

        宿主机访问虚拟机

        virsh console 虚拟机名称
        
        1

        执行之后要按一下回车才会提示登陆

        然后是按ctrl+] 退出访问

        # 安装windows10虚拟机

        安装Windows 10虚拟机会出现没有virtio驱动的问题,导致安装程序找不到硬盘,需要先下载virtio驱动。

        https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html

        virt-install \
        -n win10-1909-template \
        --description "win10-1909-template" \
        --accelerate \
        --ram=8192 --vcpus=2 \
        --network bridge:br0 \
        --graphics vnc,listen=0.0.0.0,keymap=en-us \
        --os-type=win --os-variant=win10 \
        --disk path=/hdd-data/img/win10-1909-template.img,bus=virtio,size=60 \
        --disk path=/ssd-data/iso/virtio-win-0.1.171_amd64.vfd,device=floppy \
        --cdrom=/ssd-data/iso/win10-1909-x64.iso
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11

        安装时会找不到硬盘,这时候选择加载驱动,然后选择加载软盘里的驱动就可以了

        # 虚拟机管理

        # 查看虚拟机

        virsh list
        
        1

        # 虚拟机关机(拔电源)

        virsh destroy 虚拟机名称
        
        1

        # 删除虚拟机

        virsh undefine 虚拟机名称
        
        1

        还需要手动删除虚拟机的img文件

        # 参考资料

        • https://segmentfault.com/a/1190000015418876
        上次更新: 2020/07/13, 12:07:00
        最近更新
        01
        搭建redis
        11-21
        02
        istio安装
        10-25
        03
        搭建K8S高可用集群
        09-13
        更多文章>
        鄂ICP备15015406号 | Copyright © 2015-2020 jdkhome
        • 跟随系统
        • 浅色模式
        • 深色模式
        • 阅读模式