zoukankan      html  css  js  c++  java
  • kvm虚拟化

    1:什么是虚拟化?

    虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。

    2:为什么要用虚拟化?

    阿里云   kvm开源
    azure
    vmware ESXI商业软件
    
    没有虚拟化之前:
    计算机的硬件配置越来越高
    
    512G 内存,4路 8核16线程 ,12* PCI-E 1T的SSD;
    ntp服务,安装多个mysql,安装多个tomcat,安装.... 
    
    linux开源的,很多软件都有依赖包openssl  nginx
    
    充分利用资源,软件运行环境的隔离,只有虚拟化才行实现。
    
    场景1:同一台物理机运行多个php版本 php5.3(openssl,gd)  php5.5  php7.2
    
    场景2:机房的迁移,解决了硬件和系统的依赖
    
    场景3:openstack环境,软件发布方式
    
    场景4:开发环境和测试环境,使用虚拟化
    只靠一台物理服务器,30台虚拟机
    
    产品  -- 开发 -- 运维 -- 测试
    so结尾,linux 库文件
    
    场景5:业务的快速部署  
    从头安装系统,安装服务,配置
    克隆虚拟机,改ip,
    
    虚拟化:提高了资源的利用率,各个服务的安全性隔离,解决了系统和硬件之间的依赖
    

    3:kvm虚拟化管理软件的安装

    yum install libvirt virt-install qemu-kvm -y
    
    KVM:Kernel-based Virtual Machine  
    
    libvirt  作用:虚拟机的管理软件
    libvirt: kvm,xen,qemu,lxc....
    
    virt   virt-install virt-clone   作用:虚拟机的安装工具和克隆工具
    qemu-kvm  qemu-img (qcow2,raw)作用:管理虚拟机的虚拟磁盘
    
    虚拟化软件:
    qemu      软件纯模拟全虚拟化软件,特别慢!AIX,兼容性好!
    xen(半)   性能特别好,需要使用专门修改之后的内核,兼容性差!  redhat 5.5  xen
    KVM(linux)    全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核   centos6 kvm
    性能较好,兼容较好
    

    4:安装一台kvm虚拟机

    分发软件TightVNC或者VNC Viewer 4.exe
    宿主机

    vnc:远程的桌面管理工具
    向日葵

    systemctl start libvirtd.service
    systemctl status libvirtd.service
    

    10.0.0.11 宿主机

    建议虚拟机内存不要低于1024M,否则安装系统特别慢!

    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    

    VNC出现连接失败执行下面:

    virsh list --all
    virsh destroy centos7
    virsh undefine centos7
    rm -fr /opt/centos2.raw 
    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    
    
    vnc-service:5900
    
    vnc:10.0.0.11:5900
    
    --virt-type kvm    虚拟化的类型(qemu)
    --os-type=linux    系统类型
    --os-variant rhel7 系统版本
    --name centos7     虚拟机的名字 
    --memory 1024      虚拟机的内存
    --vcpus 1          虚拟cpu的核数
    --disk /opt/centos2.raw,format=raw,size=10
    --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso 
    --network network=default   使用默认NAT的网络
    --graphics vnc,listen=0.0.0.0 
    --noautoconsole
    

    磁盘格式:
    raw:10G 不支持做快照,性能好
    qcow2: 支持快照

    5:kvm虚拟机的virsh日常管理和配置

    列表                list(--all)
    开机                start
    关机                shutdown
    拔电源关机     destroy
    
    导出配置dumpxml      例子:virsh dumpxml centos7 >centos7-off.xml
    删除undefine              推荐:先destroy,在undefine
    导入配置                    define   
    修改配置                    edit(自带语法检查)
     
    重命名                        domrename (低版本不支持)
    挂起                            suspend
    恢复                            resume
    查询vnc端口号            vncdisplay
    /usr/libexec/qemu-kvm
    

    6:kvm虚拟机开机启动和console 控制台 登录

    kvm运行业务程序

    开机启动autostart,前提:systemctl enable libvirtd;
    取消开机启动autostart --disable

    centos7的kvm虚拟机:
    grubby --update-kernel=ALL --args="console=ttyS0,115200n8"

    reboot

    作业1:实现centos6的kvm虚拟机,console命令行登录?
    安装一台centos6的kvm虚拟机
    console命令行登录

    作业2:centos6实现没有swap分区,启动进系统

    7:kvm虚拟机虚拟磁盘格式转换和快照管理

    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    
    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /data/oldboy.qcow2,format=qcow2,size=10 --cdrom /data/CentOS-7.2-x86_64-DVD-1511.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    
    raw:  裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输           总50G 占用2G
    qcow2:cow  (copy on write)占用空间小,支持快照,性能比raw差一点,方便传输  总50G 占用2G
    qcow
    
    
    qemu-img info  test.qcow2
    创建一块qcow2格式的虚拟硬盘:qemu-img create -f qcow2 test.qcow2 2G
    
    raw转qcow2:qemu-img convert -f raw     -O qcow2           oldboy.raw   oldboy.qcow2
                         convert [-f fmt]   [-O output_fmt]    filename     output_filename
    
    virsh edit web01:					 
    <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
          <source file='/opt/centos.qcow2'/>
          <target dev='vda' bus='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
    
    virsh destroy web01
    virsh start web01					 
    
    					 
    创建快照virsh snapshot-create centos7
    查看快照virsh snapshot-list centos7
    
    还原快照virsh snapshot-revert centos7 --snapshotname 1516574134
    删除快照virsh snapshot-delete centos7 --snapshotname 1516636570
    
    raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中
    

    8:kvm虚拟机克隆

    virt-clone --auto-clone -o web01 -n web02 (完整克隆)  
    
    
    a:生成虚拟机磁盘文件
    qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2
    
    b:生成虚拟机的配置文件
      <name>49-web03</name>
      <uuid>8e505e25-5175-46ab-a9f6-feaa096daaa4</uuid>
      <source file='/opt/49-web03.qcow2'/>
      <mac address='52:54:00:4e:5b:89'/>
    c:导入虚拟机并进行启动测试
    
    kvm链接克隆
    a.基于源磁盘文件,创建链接磁盘文件
    qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2
    
    后置备
    
    b:生成虚拟机的配置文件
    c:导入虚拟机并进行启动测试
    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
    

    9:kvm虚拟机的桥接网络

    默认的虚拟机网络是NAT模式,网段192.168.122.0/24
    
    默认NAT模式
    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    桥接模式
    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
    
    1:创建桥接网卡
    virsh iface-bridge eth0 br0
    
    取消桥接网卡
    virsh iface-unbridge br0
    
    2:virsh edit centos7
    
        <interface type='bridge'>
          <mac address='52:54:00:55:aa:fa'/>
          <source bridge='br0'/>
    在宿主机上,重启虚拟机生效
    
    3:测试虚拟机网络
    

    10:热添加技术

    kvm虚拟机在线热添加硬盘
    临时生效
    virsh  attach-disk web04 /opt/oldboy.qcow2 vdb --subdriver qcow2 
    永久生效
    virsh  attach-disk web04 /opt/oldboy.qcow2 vdb --subdriver qcow2 --config
    
    
    
    kvm虚拟机在线热添加网卡
    kvm虚拟机在线热添加内存
    kvm虚拟机在线热添加cpu
    
    qemu-img create -f qcow2 add01.qcow2 5G
    virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb  --subdriver=qcow2
    virsh detach-disk centos7 vdb
    
    虚拟机磁盘扩容:
    在kvm虚拟机,卸载
    virsh detach-disk centos7 vdb
    qemu-img resize /data/centos7-add01.qcow2 +5G
    virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2
    
    在xfs文件系统虚拟机中:xfs_growfs /dev/vdb
    在ext2-4文件系统虚拟机中:resize2fs /dev/vdb
    

    作业3:扩容kvm虚拟机的根分区

    根分区扩容:
    1)在宿主机上关闭虚拟机并调整虚拟机磁盘大小
    qemu-img resize oldboy.qcow2 +10G
    
    2)虚拟机中fdisk重新分区
    fdisk /dev/vda
    删除原来的/dev/vda1
    重新将所有空间给/dev/vda1
    reboot重启
    
    3)重启之后,执行xfs_growfs /dev/vda1,
    如果虚拟机磁盘文件系统是ext4:resize2fs /dev/vda1
    

    kvm虚拟机在线热添加网卡

    virsh attach-interface web04 --type bridge --source br0 --model virtio
    detach-interface web04 --type bridge --mac 52:54:00:35:d3:71
    

    kvm虚拟机在线热添加内存

    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
    
    临时热添加内存
    setmem web04 1024M --live
    永久增大内存
    setmem web04 1024M --config
    

    kvm虚拟机在线热添加cpu

    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
    热添加cpu核数
    setvcpus web04 4 --live
    永久添加cpu核数
    setvcpus web04 4 --config
    

    11:virt-manager和kvm虚拟机热迁移(共享的网络文件系统)

    冷迁移kvm虚拟机:配置文件,磁盘文件
    热迁移kvm虚拟机:配置文件,nfs共享
    
    1):
    yum groupinstall "GNOME Desktop" -y
    yum install openssh-askpass -y
    
    yum install tigervnc-server -y
    
    vncpasswd
    vncserver :1
    vncserver -kill :1
    
    
    2):kvm虚拟机热迁移
    1:两边的环境(桥接网卡)
    2:实现共享存储(nfs)
    3:虚拟机桥接网络
    4:在线热迁移
    

    作业3:扩容kvm虚拟机的根分区

    作业4:扩展研究EXSI虚拟化和EXSI iso到kvm的虚拟机迁移

    http://blog.51cto.com/liqingbiao/1742724
    
    virt-v2v -i ova centos-dev-test01-v2v.ova -o local -os /opt/test  -of qcow2
    

    作业5:p2v迁移(物理机到kvm虚拟机的迁移

    http://blog.csdn.net/tantexian/article/details/42869179
    

    老古董:发热量大,配置低 2G ddr 400MHZ 750w
    老古董:发热量大,配置低 2G ddr 400MHZ 750w

    一台新集群 64G ddr4 2400MHZ 550w

    iso镜像,U盘 启动盘 win PE
    打包所有根目录的文件,上传到kvm服务器,输出一个qcow2格式,替换驱动,

    kvm宿主机 2000台
    查看每一个宿主机有多少台虚拟机?
    查看每一个宿主机还剩多少资源?
    查看每一台宿主机,每一个虚拟机的ip地址?
    kvm管理平台,数据库工具
    信息:宿主机,总配置,剩余的总配置
    虚拟机的信息,配置信息,ip地址,操作系统

    带计费功能的kvm管理平台,openstack ceilometer计费
    自动化管理kvm宿主机,云主机定制化操作

    12.部署openstack

    克隆一台openstack模板机:4G内存,开启虚拟化,挂载centos7.4的光盘
    上传脚本openstack-mitaka-autoinstall.sh到/root目录
    上传镜像:cirros-0.3.4-x86_64-disk.img到/root目录
    上传配置文件:local_settings到/root目录
    上传openstack_rpm.tar.gz到/opt下,并解压
    sh /root/openstack-mitaka-autoinstall.sh
    大概10-30分钟左右
    访问http://10.0.0.11/dashboard
    域:default
    用户名:admin
    密码:ADMIN_PASS

    注意: 在windows系统上修改host解析(10.0.0.11 controller)

    添加node节点:
    修改ip地址
    hostnamectl set-hostname compute1
    重新登录让新主机名生效
    cd /opt/
    rsync -avz 10.0.0.11:/opt/repo .
    上传脚本 openstack_node_autoinstall.sh
    sh openstack_node_autoinstall.sh <node节点ip>

    openstack controller主控制节点,node节点, kvm宿主机
    node节点, kvm宿主机
    node节点, kvm宿主机
    node节点, kvm宿主机
    node节点, kvm宿主机

  • 相关阅读:
    bite one's tongue
    你以为你以为的教育是教育吗?[转]
    使用ngnix通过uwsgi app容器部署django项目
    使用ngnix通过uwsgi app容器部署django项目
    vue作为前端的静态代码与后端融合
    linux下的下载器软件
    git的gui client终端
    java 查找bug的工具 SpotBugs 和 Findbugs
    awesome c, awesome c++
    加密货币即时交换平台 Changelly vs ShapeShift vs CoinSwitch vs ChangeNOW
  • 原文地址:https://www.cnblogs.com/Forever-x/p/11323511.html
Copyright © 2011-2022 走看看