## 1:什么是云计算?
**云计算是一种按量付费的模式!云计算的底层是通过虚拟化技术来实现的!**
## 2:云计算的服务类型
**2.1 IAAS基础设施即服务(基础设施即服务)虚拟机 ecs openstack**
**2.2 PAAS平台即服务(平台即服务)php,java docker容器**
**2.3 SAAS软件即服务 企业邮箱服务cdn服务 rds数据库 开发+运维**
![img](https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3621370037,2551555039&fm=26&gp=0.jpg)
## 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工作站:图形界面**
**虚拟框:图形界面Oracle**
### 4.3安装kvm虚拟化管理工具
**KVM:基于内核的虚拟机**
```
yum install libvirt virt-install qemu-kvm -y
```
```bash
KVM:基于内核的虚拟机
libvirt作用:虚拟机的管理软件libvirt:kvm,xen,qemu,lxc ....
virt-virt-install virt-clone作用:虚拟机的安装工具和克隆工具qemu-kvm qemu-img(qcow2,raw)作用:管理虚拟机的虚拟磁盘
```
**注意:如果使用内网源仓库**
```bash
echo "192.168.37.200 mirrors.aliyun.com" >>/etc/hosts
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
```
**环境要求:**
```bash
centos 7.4 7.6
vmware宿主机kvm虚拟机
内存4G,cpu打开虚拟化
```
![1574832417510](C:%5CUsers%5C%E5%8C%85%E6%B3%BD%E6%97%AD%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C1574832417510.png)
### 4.4:安装一台kvm虚拟机
```
分发软件TightVNC或者VNC-Viewer-6.19.325 宿主机
微软的远程桌面
vnc:远程的桌面管理工具 向日葵 微软的远程桌面
```
```bash
systemctl start libvirtd.service systemctl status libvirtd.service
```
**宿主机:物理服务器** **10.0.0.100**
**建议虚拟机内存不要低于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
```
**netstat -lntup 查看5900端口是否启动**
**vnc:10.0.0.100:5900**
![1574832818644](C:%5CUsers%5C%E5%8C%85%E6%B3%BD%E6%97%AD%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C1574832818644.png)
**注意:云主机都没有swap分区**
![1574832843222](C:%5CUsers%5C%E5%8C%85%E6%B3%BD%E6%97%AD%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C1574832843222.png)
## 4.5:kvm虚拟机的virsh日常管理和配置
#### 命令1
```bash
virst list #查看正在运行的虚拟机
virst list --all #查看创建的所有虚拟机
virsh start centos7 #启动虚拟机 #centos是虚拟机的名称
virsh shutdown(虚拟机有系统) #关机
virsh destroy #拔电源关机
virsh reboot(虚拟机有系统) #重启
```
``` bash
virsh undefine(删除之前一定关机) 删除虚拟机 注意:如果装一半想要删除虚拟机需要删除磁盘文件
virsh dumpxml centos7 >vm_Centos7.xml #导出/备份配置文件
virsh define vm_Centos7.xml #导入配置文件
```
**问题:因为没有关机删除虚拟机导致删除了配置文件进程还在这时候系统认为虚拟机存在这时候你关虚拟机少一台虚拟机**
**解决方法:**
```
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 -- boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
-- boot hd :启动硬盘 这时候会在/etc/libvirt/qemu/生成一个xml的配置文件
```
### 命令2
```
virsh domrename web01(关机之后命名) #重命名
修改磁盘名字: mv centos7.raw web01.raw
virsh edit web01 编辑配置文件 (语法检查功能)
修改为web01
```
```
virsh suspend web01 #挂起指定的虚拟机
virsh resume web01 #恢复挂起的虚拟机
```
```
注意:挂起的虚拟机可能会时间不同步
yum install ntpdate -y
ntpdate ntp6.aliyun.com
```
```
virsh vncdisplay web01 #查看vnc端口号
第一种设置开机自启方法
virsh autostart --disable web01 #取消开机自启
Virsh autostart web01 #设置指定虚拟机开机自启
第二种设置开启自启方法(软连接)
ln -s /etc/libvirt/qemu/web01.xml /etc/libvirt/qemu/autostart/
rm -fr /etc/libvirt/qemu/autostart/ #取消开机自启(删除软连接)
```
**console 控制台登录**
```
centos7的kvm虚拟机:
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"(修改内核参数)
reboot
配置完之后:
virsh console web01
```
![1574900854807](../AppData/Roaming/Typora/typora-user-images/1574900854807.png)
**注意:需要退出按ctrl +]**
```
问题:如果将宿主机挂起会导致kvm管理的虚拟机上不了网
解决方法:因为将虚拟机挂起会导致内核转发参数消失
开启内核转发参数:
sysctl -a|grep upv4|grep ip_forward
sysctl net.ipv4.ip_forward=1
```
### 4.6:kvm虚拟机虚拟磁盘格式转换和快照管理
**1.raw: 裸格式,占用空间比较大,不支持快照功能,不方便传输 ,读写性能较好 总50G 占用50G,传输50G**
**2.qcow2: qcow(copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 占用2G,传输2G**
*qemu-img: 管理磁盘格式*
```bash
qemu-img info /opt/web01.raw #查看指定虚拟磁盘信息
qemu-img create /opt/baozexu.raw 10G #创建一块容量为10G的raw格式的虚拟硬盘
-f 指定磁盘格式
qemu-img create -f qcow2 /opt/bao.qcow2 #创建一块的qcow2格式的虚拟硬盘
qemu-img resize /opt/baozexu.raw 20G #扩容baozeu.raw硬盘为20G
qemu-img convert -f raw -O qcow2 /opt/baozexu.raw /opt/baozexu.qcow2 #将baozexu.raw格式 转换为baozexu.qcow2格式
注意:如果将格式转换后将配置文件也一并一起修改
virsh edit web01
...
...
virsh dumpxml web01|grep qcow2 #打印修改的配置文件
```
### 4.6.2快照管理
```bash
virsh snapshot-create web01 #创建快照(以默认的时间戳命名)
virsh snapshot-list web01 #查看快照
virsh snapshot-delete web01 --snapshotname 1574860043 #删除快照
virsh snapshot-create-as web01 --name install_nginx #创建快照并命名为install——nginx
virsh snapshot-revert web01 --snapshotname install_nginx #还原快照
注意:raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件
中
```
### 4.7:kvm虚拟机克隆
#### 4.7.1:完整克隆
```
自动挡:
virt-clone --auto-clone -o web01 -n web02 (完整克隆)
```
```bash
手动挡
cp web01.qcow2 web02.qcow2
virsh dumpxml web01 >web02.xml
vim web02.xml
#修改虚拟机的名字
#删除虚拟机uuid
#删除mac地址
#修改磁盘路径
virsh define web02.xml
virsh start web02
```
#### 4.7.2:链接克隆
```bash
a:生成虚拟机磁盘文件 qemu-img create -f qcow2 -b web03.qcow2
web04.qcow2
-b 创建引用盘 (基于web03.qcow2链接克隆web04.qcow2)
b:生成虚拟机的配置文件
virsh dumpxml web01 >web03.xml
vim web03.xml
#修改虚拟机的名字
#删除虚拟机uuid
#删除mac地址
#修改磁盘路径
c:导入虚拟机并进行启动测试
virsh define web03.xml virsh start web03
```