1、什么是云计算?
云计算是一种按量付费的模式!云计算的底层是通过虚拟化技术来实现
2、云计算的服务类型
2.1 IAAS ---> 基础设施即服务(infrastructure as an service) 虚拟机 ecs openstack 2.2 PAAS ---> 平台即服务(platform as an service ) php,java docker容器 2.3 SAAS ---> 软件即服务 企业邮箱服务 cdn服务 rds数据库 开发+运维
3、为什么要用云计算
小公司:10台 20w+ idc 5w + 100M 10W, 10台云主机,前期投入小,扩展灵活,风险小
大公司:闲置服务器计算资源,虚拟机,出租(超卖)
64G 服务器 64台1G 320台1G 64台 大公司自己的业务 264台 租出去国企
4:云计算的基础KVM虚拟化
宿主机:内存4G+ 纯净的系统CentOS-7
4.1:什么是虚拟化?
虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。
4.2 :虚拟化软件的差别
linux虚拟化软件:
qemu 软件纯模拟全虚拟化软件,特别慢!
AIX,兼容性好! xen(半) 性能特别好,需要使用专门修改之后的内核,兼容性差!
redhat 5.5 xen kvm KVM(linux) 全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核 centos6 kvm 性能较好,兼容较好
vmware workstations: 图形界面
virtual box: 图形界面 Oracle
4.3 安装kvm虚拟化管理工具
KVM:Kernel-based Virtual Machine
libvirt 作用:虚拟机的管理软件 libvirt: kvm,xen,qemu,lxc....virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具
qemu-kvmqemu-img (qcow2,raw)作用:管理虚拟机的虚拟磁盘
环境要求:
centos 7.4 7.6
vmware 宿主机 kvm虚拟机
内存4G,cpu开启虚拟化
4.4、安装一台kvm虚拟机
分发软件TightVNC或者VNC-Viewer-6.19.325 宿主机
微软的远程桌面
vnc:远程的桌面管理工具 向日葵 微软的远程桌面
#下载centos7的base源,请将之前的源移走
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#安装软件包
yum install libvirt virt-install qemu-kvm -y
#启动libvirtd.service 可检查端口5900
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-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 显示器
4.5:kvm虚拟机的virsh日常管理和配置
virsh常用参数
list(--all)
#开机
start
#关机
shutdown(虚拟机有系统)
#拔电源关机
destroy
#重启
reboot(虚拟机有系统时可用)
#导出配置
dumpxml 例子:virsh dumpxml centos7 >centos7-off.xml
#删除
undefine 推荐:先destroy,在undefine
#导入配置
define
#修改配置
edit(自带语法检查)
#重命名
domrename (低版本不支持)
#挂起
suspend
#恢复
resume
#查询vnc 端口号
vncdisplay
#开机启动
autostart,前提:systemctl enable libvirtd;
#取消开机启动
autostart --disable
#执行 centos7的kvm虚拟机:(执行前请备份/boot/grub2/gurb.cfg)
grubby --update-kernel=ALL --args="console=ttyS0,115200n8" && reboot后
实现命令行登陆kvm虚拟机
virsh console
4.6:kvm虚拟机虚拟磁盘格式转换和快照管理
raw: 裸格式,占用空间比较大,不支持快照功能,不方便传输 ,读写性能较好 总50G 占用50G,传输50G
qcow2: qcow(qemu 写时的复制 copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 占用2G,传输2G
创建kvm虚拟机时参数--disk需要变化
--disk /opt/oldboy.qcow2,format=qcow2,size=10
4.6.1磁盘工具的常用命令
qemu-img #command
info #查看虚拟磁盘文件的信息 qemu-img info test.qcow2
create #创建新的虚拟磁盘 qemu-img create -f qcow2 test.qcow2 2G
resize #调整磁盘磁盘容量 qemu-img resize test.qcow2 +20G
生产环境不能缩容
convert #磁盘文件格式转换 qemu-img convert -f raw -O qcow2 oldboy.raw oldboy.qcow2
convert [-f fmt] [-O output_fmt] filename output_filename -c
压缩 virsh edit web01:
4.6.2快照管理
创建快照
#创建以unix时间为名的快照
virsh snapshot-create web-01
#创建自定义名称的快照
virsh snapshot-create-as centos7 --name install_ok
查看快照
virsh snapshot-list centos7
还原快照
virsh snapshot-revert centos7 --snapshotname 1516574134
删除快照
virsh snapshot-delete centos7 --snapshotname 1516636570
raw格式不支持做快照,qcow2格式支持快照,并且快照就保存在qcow2的磁盘文件中
4.7:kvm虚拟机克隆
4.7.1:完整克隆
自动挡:
#o为old,n为new
virt-clone --auto-clone -o web01 -n web02 (完整克隆)
手动挡:
#拷贝虚拟磁盘文件
cp web01.qcow2 web02.qcow2
#将虚拟主机的配置文件重定向到新的xml文件当中
virsh dumpxml web01 >web02.xml
#修改导入的配置文件
vim web02.xml
#修改虚拟机的名字
#删除虚拟机uuid
#删除mac地址
#修改磁盘路径
#导入配置文件
virsh define web02.xml
#启动虚拟主机
virsh start web02
4.7.2:链接克隆
a:生成虚拟机磁盘文件 qemu-img create -f qcow2 -b web03.qcow2 web04.qcow2
b:生成虚拟机的配置文件
#将web01的配置文件导入新的xml文件并修改
virsh dumpxml web01 >web03.xml
vim web03.xml
#修改虚拟机的名字
web03
#删除虚拟机uuid
8e505e25-5175-46ab-a9f6-feaa096daaa4
#修改虚拟磁盘文件路径
#删除mac地址
c:导入虚拟机并进行启动测试
virsh define web03.xml
virsh start web03
链接克隆为了方便,我选择用shell实现
#!/bin/bash
read -p "请输入要链接克隆的主机: " Old
virsh list --all | grep "$Old" &>/dev/null
if [ $? -ne 0 ];then
fi
read -p "请输入要生成的主机名: " New
vir_hd=${Old}.qcow2
hd_file=$(find / -name "${vir_hd}")
new_xml=/kvm/vm_${New}.xml
qemu-img create -f qcow2 -b ${hd_file} /kvm/${New}.qcow2 &>/dev/null
#if [ $? -ne 0 ];then
# exit 99
#fi
virsh dumpxml $Old >${new_xml}
dump=$?
sed -i "//c $New " ${new_xml}
rename=$?
sed -i "//d" ${new_xml}
uuid=$?
sed -i "/