云计算

一.云计算概述

1.什么是云计算?

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

2.云计算的服务类型

ISSA:基础设施即服务 —>虚拟机 ecs openstack

PAAS:平台即服务—>docker容器

SAAS:软件即服务—>企业邮箱服务 cdn服务 rds数据库

在这里插入图片描述

3.为什么要用云计算

小公司:前期投入小,风险小,可以灵活扩容风险小

大公司:闲置服务器计算资源,虚拟机,出租(超卖计算)

超卖技术:64核cpu的物理机可以产生64个1核的虚拟机

但是超卖技术,可以产生达到640台1核的虚拟机。

二.云计算的基础KVM虚拟化

1.什么是虚拟化?

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

2.虚拟化软件的差别

linux虚拟化软件:

qemu:全虚拟化软件,性能特别慢,兼容性好。

xen:性能特别好,需要使用专门修改之后的内核,兼容性差

KVM:全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用抓门的内核,性能较好,兼容性较好。

3.安装KVM虚拟化管理工具

yum install libvirt virt-install qemu-kvm -y

KVM:Kernel-based Virtual Machine

libvirt: 虚拟机的管理软件

virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具

qemu-kvm qemu-img(qcow2,raw)作用:管理虚拟机的模拟磁盘。

环境要求:

centos 7.4 7.6

4.安装一台kvm虚拟机

VNC-Viewer-6.19.325:远程的桌面管理工具

启动虚拟机的管理服务

systemctl start libvirtd.service
systemctl enable 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
–noautoconsole

在这里插入图片描述

云主机没有swap分区

在这里插入图片描述

三.kvm虚拟机的virsh基础命令

1.KVM状态的命令

查看运行的KVM虚拟机状态

virsh list

查看所有的虚拟机状态

`virsh list --all`

kvm开机

`virsh start privi-server`

kvm重启

`virsh reboot privi-server`

kvm关机

`virsh ``shutdown` `privi-server`

kvm强制关机

`virsh destroy privi-server`

kvm暂停或挂起

`virsh suspend privi-server`

kvm从挂起状态恢复

`virsh resume privi-server`

kvm删除,但不会删除磁盘

`virsh undefine privi-server`

kvm设置随物理机启动而启动

`virsh autostart privi-server`

kvm关闭随物理机启动而启动

`virsh autostart --disable privi-server`

2.KVM文件的命令

KVM 虚拟机默认的配置文件在 /etc/libvirt/qemu 目录下,默认是以虚拟机名称命名的.xml文件

[root@oldboy ~]# ll /etc/libvirt/qemu
total 16
-rw------- 1 root root 4179 Oct 24 18:15 centos8.xml


修改配置文件

virsh edit web01

备份KVM虚拟机配置文件

virsh dumpxml web01 > /opt/vm_web01.xml

3.KVM虚拟机虚拟磁盘格式转换

raw:裸格式,占用空间比较大,不支持快照功能,性能好,不方便传输 总共50G占用也是50G

qcow2:实际生产常用,占用空间小,支持快照,性能比raw差一点,方便迁移 分配50G但只占用你所写的2G磁盘。

查看磁盘信息

qemu-img info /opt/centos2.raw

创建磁盘,默认为raw格式

qemu-img creat /opt/test.raw 5G
qemu-img	create -f qcow2 /opt/test.qcow2 5G

调整磁盘大小

qemu-img resize /opt/test.raw 10G
qemu-img resize /opt/test.qcow2 +5G

转换格式

test qemu-img convert -f raw -O qcow2 /opt/test.raw /opt/qcow2
					转换		源格式		目标格式    源文件        目标文件

4.KVM虚拟机快照管理

存储每raw格式,不支持快照

创建快照

virsh snapshot-create web01
virsh snapshot-create-as --name install_ok web01

查看快照

virsh snapshot-list web01

删除快照

virsh snapshot-delete web01 --snamshotname -install_ok

恢复快照

virsh snapshot-revert web01 --snapshotname install_ok
#恢复快照后需要校正时间 systemctl restart chronyd

快照存储位置

qemu-img info /opt/centos8.qcow2

删除快照

virsh snapshot-delete web01 --snamshotname install_ok

恢复快照

virsh snapshot-revert web01 --snapshotname install_ok
#恢复快照后需要校正时间 systemctl restart chronyd

快照存储位置

qemu-img info /opt/centos8.qcow2

5.完整克隆与链接克隆

1.完整克隆

全自动生成

virt-clone-auto-clone -o web01 -n web02

手动如何完成完整克隆?

cp web01.qcow2 web02.qcow2
virsh dumpxml web01 >web02.xml
vim web02.xml
#修改虚拟机的名字 
#删除虚拟机uuid 
#删除mac地址 
#修改磁盘路径
virsh define web02.xml #加载配置文件
virsh start web02

2.链接克隆

手动生成

a.#生成虚拟机磁盘文件

qemu-img create -f qcow2 -b web01.qcow2 web02.qcow2

b.#生成虚拟机的配置文件

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

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

virsh define web02.xml 
virsh start web02

全自动链接克隆

需要邪写脚本完成

#!/bin/bash
soure_clone=$1
dest_clone=$2
XML_DIR="/etc/libvirt/qemu"

virsh dumpxml  $soure_clone > ${XML_DIR}/${dest_clone}.xml
#修改虚拟机的名字
sed -i "s#<name>${soure_clone}</name>#<name>${dest_clone}</name>#g" ${XML_DIR}/${dest_clone}.xml
#删除uuid
sed -i "/uuid/d" ${XML_DIR}/${dest_clone}.xml
#删除mac地址
sed -i "/mac address/d" ${XML_DIR}/${dest_clone}.xml
#修改磁盘文件路径
sed -ri "/source file/s#(.*/)(.*)('/>)#\1${dest_clone}.qcow2\3#g" ${XML_DIR}/${dest_clone}.xml

soure_cipan=$(awk -F "['']" '/source file/{print $2}' ${XML_DIR}/${soure_clone}.xml)
dest_cipan=${soure_cipan%/*}
qemu-img create -f qcow2 -b $soure_cipan  $dest_cipan/${dest_clone}.qcow2
virsh define ${XML_DIR}/${dest_clone}.xml
virsh start $dest_clone
6.kvm虚拟机的桥接网络

看下面命令可知道,虚拟机默认的网络是NAT模式

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
创建桥接虚拟机

1.创建桥接网卡

virsh iface-bridge eth0 br0
#取消桥接网卡命令
virsh iface-unbridge br0

2.桥接模式创建虚拟机

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 bridge=br0 --graphics vnc,listen=0.0.0.0 -- noautoconsole
将已有虚拟机网络修改为桥接模式

1.关机状态下修改虚拟机配置文件

virsh edit web01
<interface type='bridge'>
	<source bridge='br0'>

2.启动虚拟机,测试虚拟机网络

virsh start web01
7.热添加技术
1.kvm热添加硬盘

a.创建一块一盘

qemu-img create -f qcow2 web01_add01.qcow2 10G

b.

临时生效

virsh attach-disk web01 /data/web01-add.qcow2 vdb --subdriver qcow2

永久生效

virsh attach-disk web01 /data/web01-add.qcow2 vdb --subdriver qcow2 --config

c.进入kvs虚拟机

virsh console web01

d.初始化硬盘并且挂载

#查看是否多了一块磁盘
fdisk -l
#格式化硬盘
mkfs.xfs /dev/vdb
#mount /dev/vdb /mnt

e.剥离硬盘

#临时剥离硬盘
virsh detach-disk web01 vdb
#永久剥离硬盘
virsh detach-disk web01 vdb --config
2.硬盘扩容

a.在虚拟机里把扩容盘挂载取消

umount /mnt

b.在宿主机上剥离硬盘

virsh detach-disk web01 vdb

c.在宿主机上调整容量

qemu-img resize /opt/web01-add01.qcow2 20G

d.在宿主机上再次附加硬盘

virsh attach-disk web01 /opt/web01-add01.qcow2 vdb --subdriver qcow2 --config

e.在kvm虚拟机中再次挂载扩容盘

mount /opt/web01-add01.qcow2 /mnt

f.在虚拟机里更新扩容盘超级块信息

xfs_growfs /dev/vdb
8.热添加内存

PS:添加的内存数,必须小于等于配置文件中规定的最大内存数

1.创建虚拟机时添加内存

–memory

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 bridge=br0 --graphics vnc,listen=0.0.0.0 -- noautoconsole

2.热添加内存

#临时添加
virsh setmem web01 1024M
#永久添加
virsh setmem web01 1024M --config
9.热添加cpu

1.创建虚拟机时添加内存

–vcpu

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 bridge=br0 --graphics vnc,listen=0.0.0.0 -- noautoconsole

2.热添加cpu

#临时
virsh setvcpus web01 2
#永久
virsh setcpus web01 2 --config
10.KVM虚拟机热迁移(两台宿主机)

关键点:

发送配置文件和磁盘信息,考虑链接克隆

共享磁盘文件(借助nfs服务器)

对方宿主机的内存

virsh migrate --live --verbose web01 qemu+ssh://10.0.0.101/system --unsafe
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐