zoukankan      html  css  js  c++  java
  • (转)kvm初识

    一 虚拟化介绍

    1 常见虚拟化软件
    VMware系列
    VMware workstation、VMware vsphere(VMware esxi)、VMware Fusion(Mac)
    Xen 开源 半虚拟化
    XenServer 商业,厂商Ctirx,基于Xen的
    KVM 开源 基于linux内核模块
    Hyper-V 商业,厂商微软
    Openvz 开源 基于linux 虚拟机和宿主机共用一个内核
    VirtualBox 开源 Sun公司开发 Oracle收购Sun
    http://developer.huawei.com/ict/forum/thread-23385-1-1.html
    2 虚拟化架构
    Linux学习总结(七十二)虚拟化之kvm
    参考 http://developer.huawei.com/ict/forum/thread-23385-1-1.html

    二 kvm

    1 为什么选择kvm
    Vmware,Xen,Hyper-V 通通收费,剩下openvz了,可是虚拟机要跟宿主机共用内核,比如要装一个windos虚拟机,实现不了。kvm免费的,而且是作为linux内核的一个功能模块而存在。因此yum安装后就能使用,非常方便。
    2 kvm 技术
    KVM是以色列初创公司Qumranet开发,2008年9月RedHat公司收购了Qumranet
    KVM是Linux内核的一个模块,它把Linux内核变成了一个Hypervisor
    KVM是完全开源的,RedHat基于KVM的虚拟化解决方案叫做RHEV
    KVM在Linux操作系统里面以进程的形式出现,由标准的Linux调度程序进行调度,这使得KVM能够使用Linux内核的已有功能
    只有一个KVM内核模块还不能实现虚拟化的全部功能,就好比操作系统只有内核还不能成为一个完整的操作系统一样
    QEMU是一个开源的虚拟化软件,纯软件,可以虚拟化所以的硬件,性能不强
    KVM基于QEMU开发了一个能够运行在用户空间的工具QEMU-KVM
    磁盘、网络设备等都是通过QEMU-KVM这个工具模拟出来的
    KVM和QEMU-KVM通信是通过/dev/kvm实现的
    libvirt是用来管理KVM虚拟机的API,其命令为virsh
    Linux学习总结(七十二)虚拟化之kvm
    3 Centos7上安装KVM
    前提是CPU支持虚拟化
    虚拟机设置内存2G,增加一个50G的虚拟磁盘,处理器2核,虚拟化引擎两个虚拟化相关的选项打上对勾

    关闭iptables或者firewalld
    systemctl stop iptables
    systemctl stop firewalld
    关闭selinux
    setenforce 0
    vim /etc/selinux/config
    设置SELINUX=disabled
    格式化新磁盘,挂载到/kvm
    mkfs.ext4 /dev/sdc
    blkid /dev/sdc
    mkdir /kvm
    mount /dev/sdc /kmv
    添加开机自动挂载
    vim /etc/fstab
    对照之前的挂载规则,增加一条
    /dev/sdc                /kvm                ext4    defaults        0 0

    下载一个centos7的镜像文件
    检查cpu参数是否支持虚拟化
    grep -Ei 'vmx|svm' /proc/cpuinfo
    安装kvm
    yum install -y virt-* libvirt bridge-utils qemu-img
    4 配置网卡并安装centos7
    配置网卡,增加桥接网卡
    设置一个br0网卡,TYPE为Bridge,IP地址设置为ens33的ip
    ens33配置文件里把IP地址去掉,增加BRIDGE=br0
    检查KVM模块是否加载
    lsmod|grep kvm
    启动libvirtd服务
    systemctl start libvirtd
    brctl show可以看到两个网卡br0和virbr0
    命令行安装centos7
    virt-install --name=lvlinux01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1708.iso --disk path=/kvm/lvlinux01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
    5 虚拟机管理
    安全完虚拟机需要重启,要退出虚拟机使用快捷键ctrl ]
    ps aux |grep kvm//查看kvm进程
    virsh list //查看虚拟机列表,只能看到运行的虚拟机
    virsh list --all //查看虚拟机列表,包括未运行的虚拟机
    virsh console lvlinux01//进入指定虚拟机
    virsh shutdown lvlinux01 //关闭虚拟机
    virsh start lvlinux01 //开启虚拟机
    virsh destroy lvlinux01//类似stop,这个是强制停止
    virsh undefine lvlinux01//彻底销毁虚拟机,会删除虚拟机配置文件,virsh list --all就看不到了
    ls /etc/libvirt/qemu/ //可以查看虚拟机配置文件
    virsh autostart lvlinux01//宿主机开机该虚拟机也开机
    virsh autostart --disable lvlinux01//解除开机启动
    virsh suspend lvlinux01//挂起
    virsh resume lvlinux01//恢复
    6 虚拟机克隆
    virsh shutdown lvlinux01
    virt-clone --original lvlinux01 --name lvlinux02 --file /kvm/lvlinux02.img
    --original指定克隆源虚拟机
    --name指定克隆后的虚拟机名字
    --file指定目标虚拟机的虚拟磁盘文件
    如果lvlinux01虚拟机开机状态,则提示先关闭或者暂停虚拟机
    7 快照管理
    创建快照 virsh snapshot-create lvlinux01
    raw格式的虚拟磁盘不支持做快照,qcow2支持
    qemu-img info /kvm/lvlinux01.img //查看lvlinux01.img信息,同时会查看到快照列表
    virsh snapshot-list lvlinux01//列出所有快照
    virsh snapshot-current lvlinux01//查看当前快照版本
    ls /var/lib/libvirt/qemu/snapshot/lvlinux01//查看所有快照配置文件
    virsh snapshot-revert lvlinux01 1513440854//恢复指定快照
    virsh snapshot-delete lvlinux01 1513440854//删除快照
    8 磁盘格式
    虚拟磁盘常用格式raw、qcow2
    qemu-img info /kvm/lvlinux01.img//查看虚拟磁盘格式
    qemu-img create -f raw /kvm_data/lvlinux01_2.img 2G//创建2G的raw格式磁盘
    把raw格式的磁盘转换为qcow2格式
    qemu-img convert -O qcow2 /kvm/lvlinux01_2.img /kvm/lvlinux01_2.qcow2
    转换后用ls -lh查看磁盘文件的大小,可以看到qcow2文件比较小,raw文件大小和我们指定空间大小一样是2G
    raw格式的磁盘性能比qcow2要好,但是raw格式的磁盘无法做快照
    给lvlinux02转换为raw格式的磁盘
    virsh shutdown lvlinux02
    qemu-img convert -O raw /kvm/lvlinux02.img /kvm/lvlinux02_3.raw
    virsh edit lvlinux02//更改格式和文件路径
    virsh start lvlinux02
    9 磁盘扩容 – raw格式

    qemu-img resize /kvm/lvlinux02_3.raw +2G
    qemu-img info /kvm/lvlinux02_3.raw 
    virsh destroy lvlinux02
    virsh start lvlinux02
    virsh console lvlinux02

    fdisk -l 查看磁盘情况,并分新的分区
    除了对已有磁盘扩容外,还可以额外增加磁盘

    qemu-img create -f raw /kvm/lvlinux02_2.raw 5G
    virsh edit lvlinux02 //增加<disk>…</disk>,注意更改source、target、slot
    virsh destroy lvlinux02
    virsh start lvlinux02

    磁盘扩容 – qcow2格式
    qemu-img resize /kvm/lvlinux01.img +2G
    若提示qemu-img: Can't resize an image which has snapshots,需要删除快照
    qemu-img info /kvm/lvlinux01.img
    virsh destroy lvlinux01
    virsh start lvlinux01
    virsh console lvlinux01
    fdisk -l 查看磁盘情况,并分新的分区
    除了对已有磁盘扩容外,还可以额外增加磁盘
    qemu-img create -f qcow2 /kvm/lvlinux01_2.img 5G
    virsh edit lvlinux01 //增加<disk>…</disk>,注意更改source、target、slot
    virsh destroy lvlinux01
    virsh start lvlinux01
    10 调整cpu、内存、网卡
    virsh dominfo lvlinux01 //查看配置
    virsh edit lvlinux01//更改如下部分内容

     <memory unit='KiB'>1048576</memory>
      <currentMemory unit='KiB'>524288</currentMemory>
      <vcpu placement='static' current='1'>2</vcpu>

    virsh shutdown lvlinux01
    virsh start lvlinux01
    virsh setmem lvlinux01 800m//动态调整内存
    virsh dumpxml lvlinux01 &gt; /etc/libvirt/qemu/lvlinux01.xml//需要把配置写入到配置文件里
    virsh setvcpus lvlinux01 2 //动态调整cpu数量
    virsh domiflist lvlinux01//查看网卡
    virsh attach-interface lvlinux01 --type bridge --source virbr0//增加一块新的网卡,并设置为nat网络模式(virbr0类似vmware的vmnet8),这里如果写--source br0,则网络模式为桥接
    virsh dumpxml lvlinux01 &gt; /etc/libvirt/qemu/lvlinux01.xml//需要把配置写入到配置文件里
    11 迁移虚拟机
    该方式要确保虚拟机是关机状态
    virsh shutdown lvlinux01
    virsh dumpxml lvlinux01 &gt; /etc/libvirt/qemu/lvlinux03.xml // 如果是远程机器,需要把该配置文件拷贝到远程机器上
    virsh domblklist lvlinux01 //查看虚拟机磁盘所在目录
    rsync -av /kvm/lvlinux01.img /kvm/lvlinux03.img //如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上
    vi /etc/libvirt/qemu/lvlinux03.xml //因为是迁移到本机,配置文件用的是lvlinux01子机的配置,不改会有冲突,所以需要修改该文件,如果是远程机器不用修改
    修改domname: <name>lvlinux03</name>
    修改uuid(随便改一下数字,位数不要变)
    修改磁盘路径
    virsh define /etc/libvirt/qemu/lvlinux03.xml//定义新虚拟机
    virsh list --all //会发现新迁移的lvlinux03虚拟机

  • 相关阅读:
    数据库之事务与常见故障
    数学的魅力 之 正多边形
    html5 的基础理解1
    android 引入开源项目
    android 图片查看器
    java 线程安全
    python3 自动生成requirement.txt
    centos 7 安装 python3.7
    python3 创建,激活虚拟环境
    Mac 配置poetry
  • 原文地址:https://www.cnblogs.com/yjt1993/p/10417158.html
Copyright © 2011-2022 走看看