1:什么是云计算?
云计算是一种按量付费的模式!云计算的底层是通过虚拟化技术来实现的!
KVM + openstack私有云
docker+k8s(管理平台)
2:云计算的服务类型
2.1 IAAS
基础设施即服务(infrastructure as an service) 虚拟机 ecs云主机
底层服务部署好,直接买esc 部署好数据就ok
2.2 PAAS
平台即服务(platform as an service ) php,java 容器
运行环境已经布置好,需要什么服务提供什么服务平台
2.3 SAAS
软件即服务(software as an service ) 企业邮箱服务 cdn服务 rds数据库
直接使用,付钱使用
3:为什么要用云计算
小公司:
10台 20w+ idc 5w/年 + 100M带宽 10W, 10台云主机,前期投入小,扩展灵活,风险小
大公司:
闲置服务器计算资源,虚拟机,出租(超卖)
64G 服务器 64台1G 320台1G 64台 大公司自己的业务 264台 租出去
国企,银行 ----- 了解
公有云: 谁都可以租 (模式 KVM管理平台+收费系统)
私有云: 只有公司内部使用
混合云: 有自己的私有云 + 租的公有云
4:云计算的基础KVM虚拟化
环境
宿主机:内存4G+ 纯净的系统CentOS-7(关闭selinux,firewalld和NetworkManager)
4.1:什么是虚拟化?
虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。
会造成一定程度的性能损耗,但能充分的利用资源
4.2 :linux虚拟化软件的差别
linux虚拟化软件:
qemu: 软件纯模拟全虚拟化软件,性能差!兼容性好,原生内核 可以跨cpu
xen(半) :性能特别好,需要使用定制的开源内核(劫持指令),兼容性差!
KVM (kernel-base vm --linux基于内核的虚拟机): 性能较好,兼容较好 。它有硬件支持cpu(开启主板虚拟化)原生内核
vmware workstations: 图形界面 --linux版 体验差
virtual box: 图形界面 Oracle -- 体验一般
4.3 安装kvm虚拟化管理工具 --控制内核
主机名 ip地址 内存 虚拟机
kvm01 10.0.0.11 4G(后期调整到2G) cpu开启vt虚拟化
kvm02 10.0.0.12 2G cpu开启vt虚拟化
环境要求:
centos 7.4 7.6 7.8(不要使用7.5) VNC客户端
vmware 宿主机 kvm虚拟机
内存4G,cpu开启虚拟化
更新base源 curl -o /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo
1.修改虚拟化配置
lsmod|grep kvm 查看虚拟化内核参数 --确认是否开启虚拟化
2.下载虚拟机管理程序机器软件
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)作用:解决 img依赖 管理虚拟机的虚拟磁盘
4.4:安装一台kvm虚拟机
VNC-Viewer-6.19.325
微软的远程桌面
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-1708.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 (可有可无)
成功会出现 5900端口 netstat -lntup
vnc:10.0.0.11:5900 --使用5900端口用vnc连接
注意:--vnc连接会断开 ,使用virsh命令启动虚拟机会重新建立连接
4.5:kvm虚拟机的virsh日常管理和配置
虚拟机的简单构成
磁盘文件 在/opt(安装目录下)下
配置文件在/etc/libvirt/qemu/centos7.xml -- 可以升级硬件配置
常用命令 -开关重启
列表list(--all 全部) virsh list --显示运行状态的虚拟机
virsh start centos7 启动命令
shutdown 关闭命令(虚拟机有系统)
拔电源关机、强制关机destroy(无系统)
重启reboot(虚拟机有系统)
导出虚拟机配置dumpxml
virsh dumpxml centos7 >vm_centos7-off.xml
删除虚拟机undefine
推荐:先destroy,在undefine
virsh undefine centos7
导入配置define
virsh define /opt/vm_centos7.xml
其他命令 修改、重命名 、挂起恢复、查询端口号
修改配置edit(自带语法检查) 虚拟关机再开,才生效
重命名domrename (低版本不支持)
virsh domrename 原名 改后名
挂起suspend 恢复resume -- 时间会暂停(chronyd服务重启时间会同步)
查询vnc端口号vncdisplay
virsh vncdisplay 虚拟机名
查看真实占用内存
du -smh *
free -m
kvm虚拟机开机启动
kvm运行业务程序 开机启动autostart /etc/libvirt/qemu文件查看开机自启虚拟机,
前提:systemctl enable libvirtd;
取消开机启动autostart --disable
console 控制台 登录命令
1.进入centos7的kvm虚拟机:
2.执行下面命令
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot
virsh console centos7
ctrl +] -- 宿主机和虚拟机之间进行切换
4.6:kvm虚拟机虚拟磁盘管理和快照管理
raw与pcow2区别
磁盘格式 占用空间 传输性能 快照 读写方式
raw 比较大 不方便,总50G,用1G传50G 不支持 连续读写,读写性能较好
qcow2 小 方便,总50G,用1G传1G 支持 随机读写,性能差一点
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-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
qcow2磁盘初始安装命令
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 **--disk /opt/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
4.6.1 磁盘工具的常用命令
查、创建、增量、raw转qcow2过程(四步)
qemu-img info,create,resize,convert
查看虚拟磁盘信息 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 oldboy.qcow2
-- 先关虚拟机 再改配置文件
# virsh shutdown centos7
# virsh edit centos7
导入配置
virsh destroy web01
启动生效
virsh start web01
4.6.2快照管理
创建快照
virsh snapshot-create-as centos7 --name install_ok
查看快照
virshsnapshot-listcentos7
还原快照
virshsnapshot-revertcentos7--snapshotname 1516574134
删除快照
virshsnapshot-deletecentos7--snapshotname 1516636570
4.7:kvm虚拟机克隆
4.7.1:完整克隆
自动挡:
virt-clone --auto-clone -o centos7 -n web01(完整克隆)
virt-clone --auto-clone -o centos7 -n web01 --file /opt/web01.qcow2 --磁盘放的位置 ,不含快照‘
virt-clone --auto-clone -o centos7 -n web02 --auto-clone
手动挡:
#手动完整克隆
#1磁盘文件的克隆
qemu-img convert -f qcow2 -O qcow2 -c web01.qcow2 web03.qcow2
#2修改配置文件
virsh dumpxml web01 >web03.xml
vim web03.xml
#修改虚拟机的名字
#删除虚拟机uuid
#删除mac地址mac add
#修改磁盘路径disk
#3导入数据并重启生效
virsh define web03.xml
virsh start web03
4.7.2 链接克隆
a:生成虚拟机磁盘文件
qemu-img create -f qcow2 -b web03.qcow2 web04.qcow2
b:生成虚拟机的配置文件
virsh dumpxml web01 >web04.xml
vim web04.xml
#修改虚拟机的名字
#删除虚拟机uuid
#删除mac地址
#修改磁盘路径
c:导入虚拟机并进行启动测试
virsh define web04.xml
virsh start web04
全自动链接克隆脚本:
[root@kvm01 scripts]# cat vi link_clone.sh
i#!/bin/bash
old_vm=$1
new_vm=$2
#a:生成虚拟机磁盘文件
old_disk=virsh dumpxml $old_vm|grep " disk_tmp=dirname $old_disk qemu-img create -f qcow2 -b $old_disk ${disk_tmp}/${new_vm}.qcow2 #b:生成虚拟机的配置文件 virsh dumpxml $old_vm >/tmp/${new_vm}.xml #修改虚拟机的名字 sed -ri "s#( #删除虚拟机uuid sed -i '/ #删除mac地址 sed -i '/ #修改磁盘路径 sed -ri "s#( #c:导入虚拟机并进行启动测试 virsh define /tmp/${new_vm}.xml virsh start ${new_vm} 默认的虚拟机网络是NAT模式,网段192.168.122.0/24 取消桥接网卡命令 virsh iface-unbridge br0 dhclient 重启获取IP地址 默认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地址:查看虚拟机编辑器是否打开DHCP模式 1.:关机状态下修改虚拟机配置文件: 2.修改配置: virsh edit centos7 3.:启动虚拟机生效 4.如果上层没有开启dhcp,需要配置 4.控制台直接登陆,查看是否配置成功 virsh console db01 lscpu |grep -i kvm 热添加硬盘、网卡、内存、cpu 创建过程 挂载 [root@localhost ~]# cp /etc/services /mnt/ [root@localhost ~]# ll /mnt/ total 656 -rw-r--r--. 1 root root 670293 Apr 12 23:04 services 1.先创建一块硬盘 qemu- img create -f qcow2 /opt/web03_ add01. qcow2 2G 2.添加硬盘 3.拆除硬盘 临时立即生效 1.虚拟机,umout取消挂载 宿主机 拆硬盘 2.扩容 ,附加硬盘 qemu-imgresizeweb03_add01.qcow2+2G virshattach-diskweb03/opt/web03_add01.qcow2vdb--subdriver qcow2 ---临时生效 virshattach-diskweb03/opt/web03_add01.qcow2vdb--subdriver qcow2 --config ---永久生效 (重启后生效) 3.虚拟机 重新挂载 ,刷新挂载空间 1.关机,调整vda的虚拟磁盘文件 #virshshutdownweb03 [root@kvm_01~]#virshdumpxmlweb03|grepqcow2 2.扩容 qemu-imgresizeweb03.qcow220G qemu-imginfoweb03.qcow2--查看磁盘容量 3.启动虚拟机 进入控制台 ,重新对vda1分区,删掉分区表,重新创建分区表 virshstartweb03--启动 virshconsoleweb03--控制台登陆 fdisk-l--查看磁盘实际内存 fdisk/dev/vda--设置分区 p--显示分区 d--删除分区表 n--新建分区 p--建主分区 回车 回车 回车 p--打印显示分区 df-h--查看挂载实际内存是否同步 4.重启虚拟机,xfs_growfs生效 [root@localhost~]#reboot [root@localhost~]#xfs_growfs/dev/vda1 [root@kvm_01opt]#virshattach-interfaceweb03networkdefault---临时生效 Interfaceattachedsuccessfully [root@kvm_01opt]#virshattach-interfaceweb03networkdefault--model e1000 Interfaceattachedsuccessfully---指定网卡 [root@kvm_01opt]#virshattach-interfaceweb03networkdefault--config ---永久生效 Interfaceattachedsuccessfully [root@kvm_01opt]#virshattach-interfaceweb03bridgebr0--model rtl8139 Interfaceattachedsuccessfully [root@kvm_01opt]#virshdomiflistweb03 InterfaceTypeSourceModelMAC ------------------------------------------------------- vnet1networkdefaultvirtio52:54:00:2f:e8:2f vnet2networkdefaultrtl813952:54:00:2f:37:ca vnet3networkdefaulte100052:54:00:b3:af:27 vnet4bridgebr0rtl813952:54:00:b4:0b:fb 查看虚拟机网卡数、拆除网卡 [root@kvm_01opt]#virshdomiflistweb03 InterfaceTypeSourceModelMAC ------------------------------------------------------- vnet1networkdefaultvirtio52:54:00:2f:e8:2f vnet2networkdefaultrtl813952:54:00:2f:37:ca vnet3networkdefaulte100052:54:00:b3:af:27 vnet4networkdefaultrtl813952:54:00:be:9d:0f [root@kvm_01opt]#virshdetach-interfaceweb03network--mac 52:54:00:be:9d:0f Interfacedetachedsuccessfully 添加内存 [root@kvm_01opt]#virshsetmemweb032G---临时生效 [root@kvm_01opt]#virshsetmemweb032G---永久生效 [root@localhost~]#free-m totalusedfreesharedbuff/cacheavailable Mem:200189180481071788 Swap:000 添加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 热添加 [root@kvm_01opt]#^C [root@kvm_01opt]#virshsetvcpusweb034 error:invalidargument:requestedvcpusisgreaterthanmaxallowablevcpusforthelivedomain:4>1---最大允许cpu颗数 [root@kvm_01opt]#virshsetvcpusweb03--maximum 4 --config ---重启生效 [root@kvm_01opt]#virshsetvcpusweb032 [root@localhost~]#lscpu Architecture:x86_64 CPUop-mode(s):32-bit,64-bit ByteOrder:LittleEndian CPU(s):2 环境准备 主机名 ip 内存 网络软件需求 虚拟化 kvm01 10.0.0.11 2G 创建br0桥接网卡kvm和nfs 开启虚拟化 kvm02 10.0.0.12 2G 创建br0桥接网卡kvm和nfs 开启虚拟化 nfs01 10.0.0.31 1G 无nfs 无 冷热迁移区别 名称 状态 具体方法 冷迁移 kvm虚拟机关机 配置文件,磁盘文件 热迁移 kvm虚拟机开机 配置文件,nfs共享 1.kvm02 修改IP地址主机名 2.下载软件 [root@kvm02~]#curl -o /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo --更新下载源 [root@kvm02~]#yum install libvirtqemu-kvmvirt -install -y 3.启动服务 [root@kvm02~]#systemctl start libvirtd [root@kvm02~]#systemctl enable libvirtd 4.kvm01 将配置文件和磁盘文件发送到kvm02上 [root@kvm_01opt]#virsh dumpxml web03>vm_web03.xml scp -rp /opt/vm_web03.xml /opt/web03.qcow2 [email protected]:/opt #需要将web03处于关机状态,一定要保持在同一目录 #如有附加硬盘以统发送 [root@kvm_01opt]#scp -rp /opt/web03_add01.qcow2 [email protected]:/opt [email protected]'s password: web03_add01.qcow2 100% 12MB 50.7MB/s 00:00 5.kvm02 导入配置文件 #导入配置文件 [root@kvm02opt]#virsh define vm_web03.xml Domain web03 defined from vm_web03.xml #启动web03虚拟机 virsh start web03 #注意:如有附加硬盘必须将附加硬盘一同发送过来,否则会报错如下图一 #两节点一定要保持环境一致,主节点做桥接,接收节点也需配置如下图二 [root@kvm02opt]#virsh iface-bridge eth0 br0 #进入控制台验证是否成功 [root@kvm02opt]#virsh console web03 Connected to domain web03 Escape character is ^] localhost login: root Password: Last failed login: Wed Apr 14 20:40:23 CST 2021 onttyS0 There was 1 failed login attempt since thel ast successful login. Last login: Tue Apr 13 21:38:35 on ttyS0 1.安装并配置(nfs) #下载nfs rpcbind服务 yum installnfs-utils rpcbind -y #修改/etc/export文件 [root@kvm_01~]#vi /etc/exports /data 10.0.0.0/24(rw,sync,no_root_squash,no_all_squash) #重启并验证挂载是否设置成功 [root@kvm_01~]#systemctl restart rpcbind [[root@kvm_01~]#systemctl enable nfs Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service. [root@kvm_01~]#showmount -e 10.0.0.11 Export list for 10.0.0.11: /data 10.0.0.0/24 2.将磁盘文件移动到 /data目录下,并挂载共享目录 #我们nfs直接放在了lvm01上 mv /opt/* /data/ #kvm01和kvm02 mount -t nfs10.0.0.11:/data/opt [root@kvm02opt]#ls /opt centos7.qcow2 lb02.qcow2 web03_add01.qcow2 centos7.raw nfs-utils-1.3.0-0.68.el7.x86_64.rpm web03.qcow2 db01.qcow2 test.raw web03.xml db02.qcow2 vm_web03.xml web04.qcow2 lb01.qcow2 web01.qcow2 web04.xml 3.在kvm启动一台虚拟机并进行热迁移 --必须开机状态 #临时迁移配置文件并没有过去 [root@kvm_01~]#virsh migrate --live --verbose web03 qemu+ssh://10.0.0.12/system --unsafe [email protected]'s password: Migration: [100%] [root@kvm02opt]#virsh list Id Name State ---------------------------------------------------- 4 web03 running #永久迁移 [root@kvm_01~]#virsh migrate --live --verbose web03 qemu+ssh://10.0.0.12/system --unsafe --persistent --undefinesource [email protected]'s password: Migration : [100%] #--verbose 显示进度条 --unsafe 强制迁移 解析不了kvm02,进行hosts解析 解决方法: 1.执行命令生成一个虚拟机 #从硬盘启动创建一个虚拟机 virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web03 --memory 1024 --vcpus 1 --disk /opt/web03.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole 2.导出配置文件 对比配置 [root@kvm_01opt]#virsh dumpxml web03>web03.xml [root@kvm_01opt]#vimdiff web03.xml web01.xml 3.对比替换cpu配置,将缺少部分进行添加或修改 内核驱动 (ethtool eth0查看网卡速度) rtl8139 e1000 virtio 网卡 10/100Mb/s 1Gb/s 10Gb/s 兼容性 最好 好 差 网卡名称 ens ens eth 生产厂家 Realtek(瑞昱(yù)) inter · yum history 查看历史装了几次yum yum history info 4 查看第四次下载的具体信息 yum history undo id号 下载后悔实现回滚 · setenforce 0 临时关闭selinux · systemctl stop postfix 关闭邮件服务 · systemctl stop · 思科模拟器:gns3 底层qemu模拟器 · 服务器:戴尔(性价比高) -- 够用节省成本 lb服务:raid1 性能要求高 数据库:raid10 安全性要求高 web服务:raid5 访问体验要求高 备份服务:sata硬盘 、raid6 空间大就ok · 起名字要见名知意 · 忘记密码 --挂载光盘修改密码4.8:kvm虚拟机的桥接网络
4.8.1:创建桥接网卡
4.8.2 新虚拟机使用桥接模式
4.8.3 将已有虚拟机网络修改为桥接模式
4.9:热添加技术
4.9.1 kvm热添加硬盘并挂载
qcow磁盘的创建与挂载
raw硬盘操作
数据盘扩容:
系统盘扩容
4.9.2 热添加网卡
net模式
桥接模式
4.9.3 kvm虚拟机在线热添加内存 (可扩可缩)
内存不足报错
4.9.4 kvm虚拟机在线热添加cpu
4.10:kvm虚拟机热迁移(共享的网络文件系统)
冷迁移
在线热迁移 ---需要环境一致
CPU不兼容 老版本向新版本服务器迁移
rtl8139、e1000、virtio 三种内核驱动区别
扩展小技巧
· 不同服务器 磁盘阵列的选择