1. 什么是云计算?
云计算是一种按量付费的模式,云计算的底层是通过虚拟化技术来实现。
2. 云计算的服务类型
1) IAAS 基础设施即服务(infrastructure as an service) 虚拟机 ecs openstack
2)PAAS 平台即服务(platform as an service ) php,java docker容器 +k8s
3)SAAS 软件即服务(software as an service ) 企业邮箱服务 cdn服务 rds数据库 开发+运维
3. 为什么要用云计算
小公司:10台物理机20w+、租用idc机房5w+、100M宽带10W(成本高)
10台云主机,前期投入小,扩展灵活,风险小
大公司:闲置服务器计算资源,虚拟机,出租(超卖)
超卖:64G服务器,64台1G == 320台1G; 64台大公司自己的业务,264台 租出去
国企,银行
公有云 | 谁都可以租 |
---|---|
私有云 | 只有公司内部使用 |
混合云 | 有自己的私有云 + 租的公有云 |
4. 云计算的基础KVM虚拟化
宿主机:内存4G+ 纯净的系统CentOS7
4.1 什么是虚拟化
虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。
4.2 虚拟化软件的差别
1)linux虚拟化软件:
软件名 | 特点 |
---|---|
qemu | 软件纯模拟全虚拟化软件,特别慢!兼容性好! |
xen(半) | 性能特别好,需要使用专门修改之后的内核,兼容性差! redhat 5.5 xen kvm |
KVM(linux) | 全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核 centos6+集成kvm内核;性能较好,兼容较好 |
2)vmware workstations: 图形界面
3)virtual box: 图形界面 Oracle
4.3 安装kvm虚拟化管理工具
主机名 | ip地址 | 内存 | 虚拟机 |
---|---|---|---|
kvm01 | 10.0.0.11 | 4G(后期调整到2G) | cpu开启vt虚拟化 |
kvm02 | 10.0.0.12 | 2G | cpu开启vt虚拟化 |
install libvirt virt-install qemu-kvm
KVM:Kernel-based Virtual Machine
libvirt :虚拟机的管理软件 libvirt: kvm,xen,qemu,lxc....
virt virt-install virt-clone :虚拟机的安装工具和克隆工具
qemu-kvm qemu-img (qcow2,raw) :管理虚拟机的虚拟磁盘
环境要求:
1)centos 7.4 7.6
2)vmware 宿主机 kvm虚拟机
3)内存4G,cpu开启虚拟化 IP:10.0.0.11
需要基础源,安装管理kvm的工具
# 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
# systemctl start libvirtd.service
# systemctl enable libvirtd.service
4.4 安装一台kvm虚拟机
准备:iso镜像,VNC-Viewer-6.19.325 宿主机(微软的远程桌面)
vnc:远程的桌面管理工具 向日葵 微软的远程桌面
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
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
注意:云主机都没有swap分区
4.5 kvm虚拟机的virsh日常管理和配置
命令 | 含义 |
---|---|
virsh list --all | 列表list(–all) |
virsh start web01 | 开机start |
virsh shutdown web01 | 关机shutdown(虚拟机有系统) |
virsh destroy web01 | 拔电源关机destroy |
reboot | 重启reboot(虚拟机有系统) |
virsh dumpxml centos7 >centos7-off.xml | 导出配置dumpxml |
virsh destroy web01 virsh undefine web01 |
删除undefine 推荐:先destroy,在undefine |
virsh define /opt/vm_centos7.xml | 导入配置define |
virsh edit web01 | 修改配置edit(自带语法检查) |
virsh domrename kd web01 | 重命名domrename (低版本不支持) |
virsh suspend web01 | 挂起suspend |
virsh resume web01 | 恢复resume |
virsh vncdisplay web01 | 查询vnc端口号vncdisplay |
virsh autostart web01 | 开机启动autostar,前提:systemctl enable libvirtd; |
virsh autostart --disable web01 | 取消开机启动autostart --disable |
vish console web01 | 控制台登录 |
4.5.1 kvm虚拟机详细介绍及命令
kvm虚拟机由两个文件组成(虚拟磁盘文件,配置文件:cpu, 内存,网络)
配置文件路径:/etc/libvirt/qemu/*.xml
磁盘文件路径:/opt/*.raw
1)创建一台web01kvm虚拟机
# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web01 --memory 1024 --vcpus 1 --disk /opt/web01.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
2)迁移web01kvm虚拟机
备份web01配置文件
# virsh dumpxml web01 >/opt/vm_web01.xml
导入虚拟机
# virsh define /opt/vm_web01.xml
3)删除web01kvm虚拟机
#停止web01
[root@kvm1 ~]# virsh destroy web01
#undefine只是删除配置文件
[root@kvm1 ~]# virsh undefine web01
问题:kvm虚拟机关一台少一台原因?
virsh undefine xxx
之前执行过undefine命令导致配置文件消失,但是直接undefine不会杀死kvm虚拟机的进程,所以现在是进程还在,配置文件消失,当关机的时候,进程也消失了,所以kvm虚拟机会关一台消失一台。
解决办法:
查看/etc/libvirt/qemu/*.xml,如果没有
# ls /etc/libvirt/qemu/web01.xml
ls: cannot access /etc/libvirt/qemu/web01.xml: No such file or directory
# virsh dumpxml web01 >/opt/vm_web01.xml
# virsh define /opt/vm_web01.xml
# ls /etc/libvirt/qemu/web01.xml
/etc/libvirt/qemu/web01.xml
生产建议:磁盘文件和配置文件名称一致
方法一:修改文件名称
# virsh dumpxml centos7 |grep raw
<driver name='qemu' type='raw'/>
<source file='/opt/centos2.raw'/>
# virsh shutdown centos7 #先关机再修改
# mv /opt/centos2.raw /opt/centos7.raw
# virsh edit centos7 #使用edit修改文件
# virsh dumpxml centos7 |grep raw
<driver name='qemu' type='raw'/>
<source file='/opt/centos7.raw'/>
<driver name='qemu' type='raw'/>
开启重新读取磁盘文件
# virsh start centos7
方法二:重命名
# virsh domrename centos7 kd
# virsh list --all
- kd shut off
4)挂起恢复虚拟机(开机之后的才能挂起)
# virsh suspend kd
# virsh list --all
6 kd paused
# virsh resume kd
# virsh list --all
6 kd running
问题:虚拟机挂起,导致时间不同步,要做时间同步(定时任务)
5)查询vnc端口号vncdisplay
# virsh vncdisplay kd
:1
6)设置kvm虚拟机开机自启(只要libvirt服务启动kvm虚拟机就会启动)
设置为开机自启
# virsh autostart web01
关闭开机自启
# virsh autostart web01 --disable
查看kvm虚拟机是否为开机自启
# ls /etc/libvirt/qemu/autostart/
web01.xml
6)console登录
在vnc查看ip,xshell远程登录
centos7的kvm虚拟机:
[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
[root@localhost ~]# reboot
[root@kvm01 ~]# virsh console web01
使用Ctrl+]退出
特点:
console和vnc:就算虚拟机没有网络,都可以管理虚拟机
console:不需要安装vnc客户端,可以复制粘贴
console比vnc用的更广
4.6 kvm虚拟机虚拟磁盘管理和快照管理
raw: 裸格式,占用空间比较大,不支持快照功能,不方便传输 ,读写性能较好 ;总50G 占用5G,传输50G
qcow2: qcow(copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 占用5G,传输5G
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
4.6.1 磁盘工具的常用命令
qemu-img info,create,resize,convert
查看虚拟磁盘信息 :
qemu-img info test.qcow2
qemu-img info /opt/centos2.raw
创建一块qcow2格式的虚拟硬盘:
qemu-img create -f qcow2 test.qcow2 2G
调整磁盘容量(qcow2只能扩容不能缩容:缩容会丢数据 raw可以缩容)
qemu-img resize test.qcow2 +20G
raw转qcow2( -c 压缩 )
qemu-img convert -f raw -O qcow2 centos7.raw kd.qcow2 -c
virsh edit web01:
<disk type