zoukankan      html  css  js  c++  java
  • KVM

    一、kvm简介

    基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为KVM),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个虚拟机监视器(Hypervisor)。KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上。

    • kvm:kernel-based vm。
    • CPU和内存的虚拟化由kvm负责,IO虚拟化由qemu负责。

    主机级虚拟化:

    • xen
    • kvm

    容器级虚拟化:

    • lxc
    • openvz

    二、kvm安装

    1、确认内核是否支持kvm

    # modinfo kvm
    

    2、确认CPU是否支持kvm

    # grep -i -E '(vmx|svm|lm)' /proc/cpuinfo
    

    vmx:intel svm:amd lm:x64

    3、安装kvm

    # yum install libvirt-daemon-kvm qemu-kvm virt-manager libvirt -y
    

    4、启动服务

    # systemctl start libvirtd
    # systemctl enable libvirtd
    

    5、启动图形接口

    # virt-manager &
    

    配置桥接

    # virsh iface-bridge ens32 br0 || systemctl restart network
    

    需要修改ifcfg-br0配置文件

    三、使用cirros镜像测试

    1、准备一个cirros

    # mkdir -p /data/VMs/c1/
    # cd /data/VMs/c1/
    # wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img
    # mv cirros-0.3.0-x86_64-disk.img c1.img
    # qemu-img info c1.img
    

    2、启动virt-manager

    # virt-manager &
    

    新建——导入现有磁盘映像——》

    3、使用virsh连接

    查看:

    virsh # list
    virsh # console c1
    使用"Ctrl+]"剥离会话
    

    四、vrish命令

    1、域管理命令

    virsh # domstate c1
    virsh # domstats c1
    virsh # dominfo c1
    virsh # domiflist c1
    virsh # domblklist c1
    # virsh dumpxml c1
    # virsh create --console /etc/libvirt/qemu/c2.xml
    # virsh shutdown c2
    # virsh destroy c2 强制关闭虚拟机
    # virsh define /etc/libvirt/qemu/c2.xml 定义域
    # virsh save c1 /tmp/c1.snap 将状态保存到文件
    # virsh restore /tmp/c1.snap 从文件载回
    
    start
    reboot
    undefine 删除虚拟机
    suspend/resume 暂停和继续
    
    # virsh setmem centos7.0 1024 修改内存大小
    

    增加/拆除磁盘

    # cd /data/VMs/c1/
    c1]# qemu-img create -f qcow2 -o size=20G,preallocation=metadata ./second.img
    c1]# qemu-img info second.img
    # virsh attach-disk c1 /data/VMs/c1/second.img vdb 为c1附加磁盘
    # virsh detach-disk c1 vdb 拆除
    

    增加/拆除网卡

    # virsh attach-interface c1 bridge virbr0
    # virsh detach-interface c1 bridge --mac 52:54:00:db:7b:65
    

    2、域监控命令

    3、查看宿主机和虚拟机相关信息

    4、管理网络接口

    5、管理网络防火墙规则

    6、管理虚拟网络

    7、管理节点设备

    8、远程连接认证

    9、管理快照

    10、管理存储池

    图形管理工具:

    • kimchi
    • OpenStack
    • oVirt
    • proxmox

    管理工具栈:http://www.linux-kvm.org/page/Management_Tools

    五、brctl工具

    安装:

    # yum install bridge-utils
    

    查看

    # brctl show
    

    添加桥

    # brctl addbr mybr0
    # ip link set mybr0 up
    # ip addr add 10.0.0.1/8 dev mybr0
    

    六、qemu-kvm工具

    安装

    # yum install qemu-kvm
    # ln -sv /usr/libexec/qemu-kvm /usr/bin/
    

    查看可以模拟的架构和CPU

    # qemu-kvm -machine ?
    # qemu-kvm -cpu ?
    

    指定CPU核心树

    -smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
    

    指定引导选项

    -boot [order=drives][,once=drives][,menu=on|off]
          [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]
    

    块设备

    -hda/-hdb file:
    -hdc/-hdd file:
    -cdrom file.iso:
    -drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
    

    显示

    -display type: sdl,curses,none,vnc
    -nographic:不使用图形接口
    -vga [std|cirrus|vmware|qxl|xenfb|none]
    -vnc
    -monitor stdio
    	ctrl-a,c
    	ctrl-a,h
    

    网络选项

    -net nic
    -net tap
    

    /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: on interface specified"
    	exit 2
    fi
    

    示例:

    [root@p-kvm ~]# vim /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: on interface specified"
            exit 2
    fi
    # chmod -x /etc/qemu-ifup
    [root@p-kvm ~]# mkdir /data/VMs/c1 -p
    [root@p-kvm ~]# cd /data/VMs/c1/
    下载cirros
    [root@p-kvm c1]# mv cirros-no_cloud-0.3.0-x86_64-disk.img c1.img
    [root@kvm ~]# qemu-kvm -name c1 -m 128 -cpu host -smp 2 -drive file=/data/VMs/c1/c1.img,if=virtio,media=disk,cache=writeback,format=qcow2 -net nic,macaddr=52:54:00:00:00:00,model=virtio -net tap,script=/etc/qemu-ifup -vnc :0
    

    批量获取kvm虚拟机IP的脚本:

    #!/bin/bash 
    #ping当前网段内在线的主机,以便产生arp记录. 
    for ip in 172.20.128.{1..253};do
            { ping -c1 $ip >/dev/null 2>&1 
            }& 
    done
    #依次查找arp记录. 
    running_vms=`virsh list |grep running` 
    echo -ne "共有`echo "$running_vms"|wc -l`个虚拟机在运行.
    " 
    for i in `echo "$running_vms" | awk '{ print $2 }'`;do 
            mac=`virsh dumpxml $i |grep "mac address"|sed "s/.*'(.*)'.*/1/g"`
            ip=`arp -ne |grep "$mac" |awk '{printf $1}'` 
            printf "%-30s %-30s
    " $i $ip 
    done
    

    批量创建kvm

    # for i in {1..30}; do virt-clone --connect=qemu:///system -o temp -n node$i -f /data/node$i.img ;done
    
  • 相关阅读:
    封装和参数调用(格式修改)
    今天休息
    2018.1.9内部类
    2018.1.8转型
    环境变量
    环境变量
    计算机的高级语言
    常用的设计模式
    常用的设计模式
    【python3】中 elif 的使用
  • 原文地址:https://www.cnblogs.com/L-dongf/p/9691951.html
Copyright © 2011-2022 走看看