KVM虚拟化

1. 什么是云计算?
云计算是一种按量付费的模式!云计算的底层是通过虚拟化技术来实现的!
2. 云计算的服务类型
  • IAAS 基础设施即服务 虚拟机 ecs openstack
  • PAAS 平台即服务 php,java docker容器
  • SAAS 软件即服务 企业邮箱服务 cdn服务 rds数据库 开发+运维
    在这里插入图片描述
3. 为什么要用云计算

小公司:10台 20w+ idc 5w + 100M 10W, 10台云主机,前期投入小,扩展灵活,风险小
大公司:闲置服务器计算资源,虚拟机,出租(超卖计算)
64G 服务器 64台1G 320台1G
国企,银行

4. 云计算的基础KVM虚拟化
  • 4.1 什么是虚拟化?

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

    qemu 软件纯模拟全虚拟化软件,特别慢!AIX,兼容性好! 
    xen(半) 性能特别好,需要使用专门修改之后的内核,兼容性差! 
    redhat 5.5 xen kvm KVM(linux) 全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核 centos6 kvm 性能较好,兼容较好
    
  • 4.3 安装kvm虚拟化管理工具

    KVM:Kernel-based Virtual Machine
    虚拟化管理工具
    libvirt 作用:虚拟机的管理软件 libvirt: kvm,xen,qemu,lxc....
    virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具
    qemu-kvm qemu-img (qcow2,raw)作用:管理虚拟机的虚拟磁盘
    
    环境要求:
    centos 7.4 7.6
    vmware 宿主机 kvm虚拟机
    内存4G,cpu开启虚拟化
    IP:10.0.0.11
    ## 安装软件包
    yum install libvirt virt-install qemu-kvm -y
    

在这里插入图片描述

  • 4.4 安装一台kvm虚拟机

    ## 启动虚拟机管理工具
    systemctl start libvirtd.service systemctl status libvirtd.service
    ## 创建虚拟机
    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-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    参数详解:
    --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
    ## vnc连接
    vnc:10.0.0.11:5900
    安装系统步骤 略....
    说明: 云主机都没有swap分区
    

    在这里插入图片描述

  • 4.5 kvm虚拟机的virsh日常管理和配置

    显示当前运行虚拟机  virsh list
    显示所有虚拟机列表  virsh list --all
    启动            	 start
    关机   		     shutdown 
    重启  		     reboot 
    拔电源关机 		 destroy 
    导出配置 		 dumpxml 
    例子:virsh dumpxml centos7 >centos7-off.xml  
    删除			     undefine    建议先destroy ,再undefine
    导入配置	         define
    修改配置 	     edit(自带语法检查)
    重命名 			 domrename (低版本不支持)
    挂起 suspend  恢复 resume 
    查询vnc端口号 	 vncdisplay
    控制台 登录 	     console 
    开机启动		     autostart  取消开机启动autostart --disable
    
    故障:先 执行undefine,关闭虚拟机就消失了
    解决: 随意导出一个配置文件
    1. virsh dumpxml  xxx>kvm_centos7.xml
    2. vim kvm_centos7.xml
    修改name 删除uuid 修改虚拟磁盘路径 删除mac地址
    3.virsh define kvm_centos7.xml
    
    Centos7控制台登录
    修改内核参数 	(网卡名)    
    grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
    reboot
    
    Centos6控制台登录
    1.装系统时必须有swap分区
    2.装完系统关闭swap
    swapoff -a
    vim /etc/fstab
    #UUID=0a798927-3f23-4235-b839-64bbe5634f55 swap       swap    defaults        0 0
    3.添加ttyS0的许可,允许root登陆:
    echo "ttyS0" >> /etc/securetty
    4.修改内核参数
    sed -i '/\tkernel/s#.*#& console=ttyS0#g' /etc/grub.conf
    sed -i '/\tkernel/s#.*#& console=ttyS0#g' /boot/grub/grub.conf
    echo 'S0:12345:respawn:/sbin/agetty ttyS0 115200' >>/etc/inittab
    
  • 4.6 虚拟磁盘格式转换和快照管理

    raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输 总50G 占用50G 
    qcow2: cow(copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 占用2G
    
  • 磁盘工具的常用命令

    查看虚拟磁盘信息   
    qemu-img info test.qcow2
    创建一块qcow2格式的虚拟硬盘
     qemu-img create -f qcow2 test.qcow2 2G
    调整磁盘磁盘容量   
    qemu-img resize test.qcow2 +20G
    raw转qcow2:  
    qemu-img convert -f raw -O qcow2 oldboy.raw 
    1. 必须关机修改
    2. 修改配置文件
    3. 启动查看
    
  • 快照管理

    创建快照
    virsh snapshot-create-as centos7 --name install_ok 
    查看快照
    virsh snapshot-list centos7
    还原快照
    virsh snapshot-revert centos7 --snapshotname install_ok
    删除快照
    virsh snapshot-delete centos7 --snapshotname install_ok
    说明:raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中
    

5. kvm虚拟机克隆

  • 完整克隆

    自动挡:
    virt-clone --auto-clone -o web01 -n web02 (完整克隆)
    --file 可以指定路径 
    
    手动挡:
    qemu-img convert -f qcow2 -O qcow2 -c web01.qcow2 web03.qcow2
    virsh dumpxml web01 >web02.xml
    vim web02.xml
    #修改虚拟机的名字
    #删除虚拟机uuid
    #删除mac地址
    #修改磁盘路径
    virsh define web02.xml 
    virsh start web02
    
  • 链接克隆

    生成虚拟机磁盘文件
    qemu-img  create  -f qcow2  -b  web03.qcow2   web04.qcow2
    生成虚拟机的配置文件
    /virsh dumpxml web01 >web03.xml
    vim web03.xml
    #修改虚拟机的名字
    #删除虚拟机uuid
    #删除mac地址
    #修改磁盘路径
    导入虚拟机并进行启动测试
    virsh define web03.xml 
    virsh start web03
    
    全自动链接克隆脚本:
    #!/bin/bash
    mubanji=$1
    vm_disk_file='/opt'
    clone_vm=$2
    #创建磁盘文件
    qemu-img  create -f qcow2  -b $vm_disk_file/${mubanji}.qcow2  $vm_disk_file/${clone_vm}.qcow2
    #生成配置文件
    virsh  dumpxml ${mubanji} >kvm_${clone_vm}.xml
    sed -ri  "s#(  <name>)(.*)(</name>)#\1${clone_vm}\3#g" kvm_${clone_vm}.xml
    sed -i  '/  <uuid>/d' kvm_${clone_vm}.xml
    sed -i  '/<mac address=/d' kvm_${clone_vm}.xml
    sed -ri "s#(<source file=')(.*)('/>)#\1$vm_disk_file/${clone_vm}.qcow2\3#g" kvm_${clone_vm}.xml
    #导入并启动虚拟机
    virsh define  kvm_${clone_vm}.xml
    rm -fr kvm_${clone_vm}.xml
    virsh start  ${clone_vm}
    

6. kvm虚拟机的桥接网络

默认的虚拟机网络是NAT模式,网段192.168.122.0/24
创建桥接网卡命令
virsh iface-bridge eth0 br0
取消桥接网卡命令
virsh iface-unbridge br0

新虚拟机使用桥接模式
默认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:
如果虚拟机获取不到ip地址:
在这里插入图片描述

将已有虚拟机网络修改为桥接模式
a:关机状态下修改虚拟机配置文件:
例如:virsh edit centos7
<interface type='bridge'>
<source bridge='br0'/>
b:启动虚拟机,测试虚拟机网络
如果上层没有开启dhcp,需要手动配置ip地址,IPADDR,NATMASK.GATEWAY,DNS1=180.76.76.76

7. 热添加技术

热添加硬盘、网卡、内存、cpu

  • kvm热添加硬盘

    临时生效
    virsh attach-disk web01 /data/web01-add.qcow2 vdb --subdriver qcow2
    永久生效
    virsh attach-disk web01 /data/web01-add.qcow2 vdb --subdriver qcow2 --config
    临时剥离硬盘
    virsh detach-disk web01 vdb
    永久剥离硬盘
    virsh detach-disk web01 vdb --config
    
    扩容:
    在虚拟机里把扩容盘的挂载目录,卸载掉
    在宿主机上剥离硬盘virsh detach-disk web01 vdb
    在宿主机上调整容量qemu-img resize
    在宿主机上再次附加硬盘virsh attach-disk web01 /data/web01-add.qcow2 vdb --subdriver qcow2
    在虚拟机里再次挂载扩容盘
    在虚拟机里用xfs_growfs更新扩容盘超级块信息
    
    扩容kvm虚拟机的根分区
    关机虚拟机
    qemu-img  resize web01.qcow2 +20G
    开启虚拟机
    [root@localhost ~]# fdisk /dev/vda
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    
    Command (m for help): d
    Selected partition 1
    Partition 1 is deleted
    
    Command (m for help): n
    Partition type:
     p   primary (0 primary, 0 extended, 4 free)
    e   extended
    Select (default p): p
    Partition number (1-4, default 1): 1
    First sector (2048-62914559, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559): 
    Using default value 62914559
    Partition 1 of type Linux and of size 30 GiB is set
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or 	kpartx(8)
    Syncing disks.
    重启虚拟机
    xfs_growfs /dev/vda1
    
  • kvm虚拟机在线热添加网卡

    临时热添网卡
    virsh attach-interface web04  --type bridge --source br0 --model virtio 
    永久添加网卡
    virsh attach-interface web04  --type bridge --source br0 --model virtio  --config
    有多个网卡需指定mac
    virsh 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
    
    临时热添加内存
    virsh  setmem web04 1024M 
    永久增大内存
    virsh  setmem web04 1024M --config
    调整虚拟机内存最大值
    virsh setmaxmem web04 4G
    
  • kvm虚拟机在线热添加cpu

    装虚拟机时.指定最大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核数
    virsh setvcpus web04 4 
    永久添加cpu核数
    virsh setvcpus web04 4 --config
    调整虚拟机cpu的最大值
    virsh setvcpus web01  --maximum 4 --config
    

8. kvm虚拟机热迁移

冷迁移kvm虚拟机:配置文件,磁盘文件

链接克隆磁盘文件转换为单独的,再进行迁移
qemu-img convert -f qcow2 -O qcow2 db01.qcow2 db02.qcow2

在这里插入图片描述

热迁移kvm虚拟机:配置文件,nfs共享
nfs01:
yum install nfs-utils rpcbind -y
vim /etc/exports
/data 10.0.0.0/24(rw,sync,no_root_squash,no_all_squash)
mkdir /data
systemctl start rpcbind nfs
systemctl enable rpcbind nfs
km02:  kvm环境略
yum install nfs-utils rpcbind  -y
showmount  -e 10.0.0.31:/data
mount -t nfs 10.0.0.31:/data /opt
km01:
yum install nfs-utils rpcbind  -y 
showmount -e 10.0.0.31
mv /opt/* /srv
mount -t nfs 10.0.0.31:/data/ /opt/
mv /srv/* /opt
virsh migrate --live  --verbose web01 qemu+ssh://10.0.0.12/system --unsafe --persistent --undefinesource
  • 图形化页面热迁移

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值