1.什么是云计算?

云计算是一种按量付费的模式!云计算的底层是通过虚拟化技术来实现的!

2.云计算的服务类型

2.1 IAAS 基础设施即服务(infrastructure as an service) 虚拟机 ecs openstack

2.2 PAAS 平台即服务(platform as an service ) php,java docker容器 +k8s

2.3 SAAS 软件即服务(software as an service ) 企业邮箱服务 cdn服务 rds数据库 开发+运维

3.云计算基础KVM虚拟化

3.1 什么事虚拟化

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

3.2 虚拟化软件的差别

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

vmware workstations: 图形界面

virtual box: 图形界面 Oracle

3.3 安装虚拟化工具

1.KVM:Kernel-based Virtual Machine

2.yum install -y libvirt virt-install qemu-kvm

libvirt 作用:虚拟机的管理软件
libvirt: kvm,xen,qemu,lxc…

virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具
qemu-kvm qemu-img (qcow2,raw)作用:管理虚拟机的虚拟磁盘

3.配置base源:curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3.4 安装kvm虚拟机

1、准备vnc
2、systemctl start libvirtd.service
systemctl status libvirtd.service
3、

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

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

列表list(–all)
开机start
关机shutdown(虚拟机有系统)
拔电源关机destroy
重启reboot(虚拟机有系统)

导出配置dumpxml 例子:virsh dumpxml centos7 >centos7-off.xml
删除undefine 推荐:先destroy,在undefine
导入配置define
修改配置edit(自带语法检查)

重命名domrename (低版本不支持)
挂起suspend
恢复resume
查询vnc端口号vncdisplay

kvm虚拟机开机启动
kvm运行业务程序
开机启动autostart,前提:systemctl enable libvirtd;
取消开机启动autostart --disable

console 控制台 登录

centos7的kvm虚拟机:
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot
注意: 要在kvm虚拟机里执行 不要再宿主机执行

3.6 kvm虚拟机虚拟磁盘管理和快照管理

raw: 裸格式,占用空间比较大,不支持快照功能,不方便传输 ,读写性能较好 总50G 占用5G,传输50G
qcow2: qcow(copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 占用5G,传输5G

3.6.1 磁盘工具的常用命令

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

-c 压缩

virsh edit web01:查看 web01 配置文件

<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/centos2.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>

virsh destroy web01 关机
virsh start web01 启动 使配置生效

3.6.2 快照

创建快照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 完整克隆

自动克隆:

virt-clone --auto-clone -o web01 -n web02 (完整克隆)

手动克隆:

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

4.7.2 连接克隆

a : 生成虚拟机磁盘文件

qemu-img  create  -f qcow2  -b  web03.qcow2   web04.qcow2

b : 生成虚拟机的配置文件

virsh dumpxml web01 >web03.xml
vim web03.xml
#修改虚拟机的名字
<name>web03</name>
#删除虚拟机uuid
<uuid>8e505e25-5175-46ab-a9f6-feaa096daaa4</uuid>
#删除mac地址
<mac address='52:54:00:4e:5b:89'/>
#修改磁盘路径
<source file='/opt/web03.qcow2'/>

c : 导入虚拟机并进行启动测试

virsh define web03.xml 
virsh start web03

全自动连接克隆脚本:

[root@kvm01 scripts]# cat link_clone.sh 
#!/bin/bash
old_vm=$1
new_vm=$2
#a:生成虚拟机磁盘文件
old_disk=`virsh dumpxml $old_vm|grep "<source file"|awk -F"'" '{print $2}'`
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#(<name>)(.*)(</name>)#\1${new_vm}\3#g" /tmp/${new_vm}.xml
#删除虚拟机uuid
sed -i '/<uuid>/d' /tmp/${new_vm}.xml
#删除mac地址
sed -i '/<mac address/d' /tmp/${new_vm}.xml
#修改磁盘路径
sed -ri "s#(<source file=')(.*)('/>)#\1${disk_tmp}/${new_vm}.qcow2\3#g" /tmp/${new_vm}.xml
#c:导入虚拟机并进行启动测试
virsh define /tmp/${new_vm}.xml
virsh start ${new_vm}

4.8 kvm虚拟机的桥接网络

默认的虚拟机网络是NAT模式,网段192.168.122.0/24

4.8.1 创建桥接网卡

创建桥接网卡命令:
virsh iface-bridge eth0 br0
取消桥接网卡命令:
virsh iface-unbridge br0

4.8.2 新建虚拟机使用桥接模式

默认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

4.8.3 将已有虚拟机网络模式修改为桥接模式

a : 关机状态下修改虚拟机配置文件:

virsh edit centos7

<interface type='bridge'>
  <source bridge='br0'/>

b : 启动虚拟机,测试虚拟机网络
如果上层没有开启dhcp,需要手动配置ip地址,IPADDR,NATMASK.GATEWAY,DNS1=180.76.76.76

3 4.9 添加热技术

热添加硬盘 网卡 内存 cpu

4.9.1 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更新扩容盘超级块信息

4.9.2 kvm虚拟机在线添加网卡

virsh attach-interface web04  --type bridge --source br0 --model virtio 

virsh attach-interface web04  --type bridge --source br0 --model virtio  --config

virsh detach-interface web04 --type bridge --mac 52:54:00:35:d3:71

4.9.3 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

4.9.4 kvm虚拟机在线热添加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

4.10 virt-manager和kvm虚拟机热迁移(共享的网络文件系统)

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

热迁移kvm虚拟机:配置文件,nfs共享
1 : 准备环境
在这里插入图片描述
2 : 实现共享存储 (nfs)

yum  install nfs-utils rpcbind  -y
​
vim /etc/exports
/data  10.0.0.0/24(rw,async,no_root_squash,no_all_squash
​
systemctl start rpcbind  nfs
​
#kvm01和kvm02
mount -t nfs 10.0.0.31:/data /data

3 : 在线热迁移

#临时迁移
virsh migrate --live --verbose web04 qemu+ssh://10.0.0.11/system --unsafe
#永久迁移
virsh migrate --live --verbose web03 qemu+ssh://10.0.0.100/system --unsafe --persistent --undefinesource
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐