1.云计算底层技能
1.1假造技能介绍
假造化技能是一种资源管理方法,它答应在单一物理硬件平台上运行多个独立的操作体系实例,这些实例被称为假造机
1.1.1常见假造化技能
系列PC/服务器版代表VMwareVMware Workstation、vSphereMicrosoftVirtualPC、Hyper-VRedHatKVM、RHEVCitrixXenOracleOracle VM VirtualBox 1.1.2假造化与云计算的关系
- 假造化:假造化是一种技能,将不可拆分的实体资源酿成可以自由划分的逻辑资源,从而实现资源的整合、隔离、再分配,云计算就是利用假造化技能这个特点
- 云计算:是一种服务模式——基础设施服务(IAAS),将各种资源整合起来,租给用户,如处理器(CPU)、内存、存储、网络和其他根本计算资源。通过假造化手段经这些资源分割打包提供给用户使用
1.2假造平台安装
真机(windows/linux)
在真机中创建假造机,内部假造机通过划分可用资源,如设置假造网桥,使得内层假造机可以访问外网。
1.2.1验证是否支持假造化
- Linux:创建假造机最低设置:2CPU,4G内存
- Windows:常见错误(VMware CPU 没有启用假造化支持)
- windows:右键——使命管理器——CPU——假造化(已启用)
处理器:引擎——假造化Intel
- //linux虚拟化
- grep -Po "vmx | svm" /pro/cpuinfo
- -E 支持拓展正则
- -P 支持Perl正则
- -o 显示行中非空匹配部分
- /pro/cpuinfo cpu详细信息文件
- lsmod | grep kvm 查看是否有kvm模块
- lsmod //查看内核模块
- modprobe //装载内核模块,内核模块是高度封装的,只能装载或卸载
- rmmod //卸载内核模块,类似umount
复制代码 1.2.2安装假造化平台
- KVM/qemu/Libvired
- KVM是linux内核模块,需要CPU指令集(Intel-VT/AMD-V)支持,是一种硬件辅助假造化技能
- QUME 是一种假造化仿真工具,通过IOctl(输入输出)与内核模块交互完成对硬件的假造化支持
- Libvirt 是对假造化管理的接口的工具,提供客户端步调,virsh,virsh-manager
- //虚拟化平台安装
- dnf -y install \
- qemu-kvm \ //虚拟化仿真程序
- libvirt-daemon \ //核心守护进程
- libvirt-client \ //客户端程序
- libvirt-daemon-driver-qemu \ //QEMU管理模块
- libvirt-daemon-driver-netwoek \ //网络管理模块
- dnsmasq //DHCP、DNS服务
- systemctl enable libvirtd --now
复制代码
- virsh
- 提供管理各假造机的命令接口
- 支持交互/非交互模式,查察/创建/停止/关闭
- 格式:virsh 控制命令 [资源名] [参数]
- virsh version //查看虚拟化相关版本信息
- Compiled against library: libvirt 8.0.0
- Using library: libvirt 8.0.0
- Using API: QEMU 8.0.0
- Running hypervisor: QEMU 6.2.0
复制代码 2.假造化网络
2.1假造网络管理命令
命令选项描述net-list [–all]列出假造网络net-start启动假造交换机net-destroy强制停止假造交换机net-define根据xml文件创建假造网络net-undefine删除一个假造网络装备net-autostart设置开机自启动net-edit修改假造交换机的设置virsh net-autostart设置开机自启动 2.2创建网桥
- 问AI(Libvirt XML 设置)
- 官网复制(https://libvirt.org/docs.html——>networks)
- 云主机不能nmcli、nmtui ,只能在web页面修改,关机修改,云平台dhcp分配的是永久ip
- //网桥配置文件书写,文件名对应创建的网桥名称,根据模板修改
- vim /etc/libvirt/qemu/networks/vbr.xml
- <network>
- <name>vbr</name> //显示的virsh net-list 虚拟网络中的名称
- <bridge name="vir" stp='on' delay='0'/> //显示的ifconfig中的网卡名称
- <forward mode="nat"/>
- <ip address="192.168.100.254" netmask="255.255.255.0">
- <dhcp>
- <range start="192.168.100.128" end="192.168.100.200"/>
- </dhcp>
- </ip>
- <ip family="ipv6" address="2001:db8:ca2:2::1" prefix="64"/>
- </network>
- //stp='on': 这个属性表示生成树协议(Spanning Tree Protocol, STP)是否启用
- //delay='0': 这个属性定义了STP重新计算网络拓扑结构前等待的时间(单位为秒)
复制代码- //创建配置文件中声明的网桥
- virsh net-define /etc/libvirt/qemu/networks/vbr.xml
- Network vbr defined from /etc/libvirt/qemu/networks/vbr.xml
- //启动网桥
- virsh net-start vbr
- Network vbr started
- //设置开机自启
- virsh net-autostart vbr
- //查看网桥状态
- virsh net-list --all
- Name State Autostart Persistent
- -----------------------------------------
- vbr active yes yes
-
- //验证
- ifconfig vbr
复制代码 3.假造机原理
3.1假造机的构成
- 假造设置文件(*.xml)
- 文件默认路径:/etc/libvirt/qemu/
- 用途:定义了假造机的装备,如:CPU、内存、网卡等
- 存储文件(*.img)
- 文件默认路径:/var/lib/libvirt/images/
- 用途:仿真假造机磁盘,存储全部数据信息
- 创建vmhost虚拟机
- 1.创建虚拟配置文件 /etc/libvirt/qemu/vmhost.xml
- 2.创建存储文件 /var/lib/libvirt/images/vmhost.xml
复制代码 3.2假造机磁盘
- 假造机磁盘可以使用块装备、逻辑卷装备、文件仿真等。
- 其中文件仿真模式具有易迁徙、易扩展、支持多种磁盘格式、设置方便等特点。广泛应用与云平台
- 在文件仿真中采取COW格式具有:
3.3COW写时拷贝技能
- 在COW机制中,写操作会导致数据从后端盘复制到前端盘,然后在前端盘上进行修改,而不是从前端盘复制到后端盘。如允许以制止不必要的数据移动,同时保持原始数据的完备性。
- 只有在数据真正被修改时才进行复制
- cow技能使用指针指向原始盘全部块,若一个块要被改写,首先将数据从原始盘拷贝到前端盘,在前端盘改写,最后将数据指针指向改写过的数据。此时数据存储在前端盘的新副本中,而不是后端盘的原始数据块
- 原始盘始终是只读的
3.3假造机设置管理
3.3.1假造机磁盘管理
- qemu-img 是假造机的磁盘管理命令,磁盘格式:raw、qcow2、vdi、vmdk等
- qemu-img命令格式
- qemu-img 子命令 子命令参数 块文件名称 大小
- 常用子命令
- create 创建一个磁盘
- info 查察磁盘信息
- //上传cirros.qcow2到虚拟机
- cp cirros.qcow2 /var/lib/libvirt/images/
- cd cirros.qcow2 /var/lib/libvirt/images/
- //创建磁盘
- qemu-img create -F qcow2 -f qcow2 -b cirros.qcow2 vmhost.img 20G
- Formatting 'vmhost.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=21474836480 backing_file=cirros.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16
- //查看信息,实际大小不会是20G,因为弹性空间
- qemu-img info vmhost.img
- image: vmhost.img
- file format: qcow2
- virtual size: 20 GiB (21474836480 bytes)
- disk size: 196 KiB
- cluster_size: 65536
- backing file: cirros.qcow2
- backing file format: qcow2
- Format specific information:
- compat: 1.1
- compression type: zlib
- lazy refcounts: false
- refcount bits: 16
- corrupt: false
- extended l2: false
- //读取操作会先查找前端盘的差分映像vmhost.img , 如果未找到才会找后端盘的cirros.qcow2,此时
- 写入操作只会写入vmhost.img
复制代码 3.3.2假造机设置文件
- 官网复制(https://libvirt.org/docs.html——>node devices)
- cp node_base.xml /etc/libvirt/qemu/vmhost.xml
- vim /etc/libvirt/qemu/vmhost.xml
- 02: <name>vmhost</name> //虚拟机名称
- 03: <memory unit='KB'>1024000</memory> //最大内存
- 04: <currentMemory unit='KB'>1024000</currentMemory> //当前内存
- 05: <vcpu placement='static'>2</vcpu> //CPU数量
- 25: <source file='/var/lib/libvirt/images/vmhost.img'/> //磁盘文件路径
- 29: <source bridge='vbr'/>
复制代码 3.3.3创建假造机
管理内层假造机命令说明virsh list [–all]列出全部假造机virsh start/shutdown启动/关闭假造机virsh destory强制停止假造机virsh define/undefine创建/删除假造机virsh console连接假造机的consolevirsh edit修改假造机的设置virsh autostart设置假造机自启动virsh domiflist查察假造机网卡信息virsh dominfo查察假造机择要信息virsh domblklist查察假造机硬盘信息- virsh define /etc/libvirt/qemu/vmhost.xml //创建虚拟机
- Domain 'vmhost' defined from /etc/libvirt/qemu/vmhost.xml
- virsh start vmhost //启动虚拟机,状态由shut off变为running
- Domain 'vmhost' started
- virsh console vmhost //两次回车
- Connected to domain 'vmhost'
- Escape character is ^] (Ctrl + ])
- login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
- cirros login: cirros
- Password: gocubsgo
- $
- PS1='[\u\h \W]\$'
- [rootcirros ~]#
- shift + ] 退出登陆填写密码状态栏
- //默认进去是$普通用户,需要sudo -i 变为#,可以修改$PS1系统变量调整样式
复制代码 3.3.4创建假造机脚本
- vim /usr/local/bin/vm
- #!/bin/bash
- cd /var/lib/libvirt/images/
- qemu-img create -F qcow2 -f qcow2 -b cirros.qcow2 ${1}.img 20G
- sed "s,#####,${1}," /root/node_base.xml > /etc/libvirt/qemu/${1}.xml
- virsh define /etc/libvirt/qemu/${1}.xml
- chmod 0755 /usr/local/bin/vm
- vm vmhost.xml
- virsh list --all
- Id Name State
- -------------------------
- - vmhost shut off
复制代码 4.公有云概述
4.1云服务范例
模式说明IaaS基础设施服务PaaS平台服务SaaS软件服务 4.2三大服务模式
4.2.1 IaaS——基础设施即服务
IaaS提供计算资源的基础设施,如假造机、存储空间、网络和操作体系,以及一些根本的网络组件如假造路由器和firewalld。用户可以根据需要租用这些资源,并自行安装操作体系、中间件、运行时、数据管理软件和其他所需的软件。
4.2.2 PaaS——平台即服务
PaaS提供了一个完备的开辟和摆设环境,包括操作体系、数据库、开辟工具和运行时环境。开辟职员可以利用 PaaS 来构建、测试和摆设应用步调,而无需关心底层的基础设施。PaaS 办理方案通常包括应用步调服务器、数据库服务、开辟框架和 API
4.2.3 SaaS——软件即服务
SaaS 是通过互联网提供的软件应用步调,用户无需安装和维护软件,只需订阅即可使用。SaaS 供应商负责管理应用步调的可用性、安全性、可扩展性和维护。
4.3三大使用场景
云介绍公有云是第三方的云供应商,通过互联网为广大用户提供的一种按需使用的服务器资源,是一种云基础设施。私有云是一个企业或组织的专用云环境。一般在企业内部使用,不对外提供服务,因此它也被视为一种企业云。混淆云是在私有云的基础上,组合其他公有云资源,从而答应在不同云环境之间共享应用和数据的使用方式。 5.能力提拔
编写一个脚本用来管理假造机,可以完成假造机的批量创建、批量删除,自定义假造机名称等功能,现有的模板假造机信息如下:
- 配置文件模板:/var/lib/libvirt/images/node_base.xml
- 后端盘模板: /var/lib/libvirt/images/node_base.qcow2
复制代码- [root@localhost ~]# vim /usr/local/bin/clone-vm
- #!/bin/bash
- CONF_DIR="/etc/libvirt/qemu"
- IMG_DIR="/var/lib/libvirt/images"
- CONF_FILE="/var/lib/libvirt/images/node_base.xml"
- IMG_FILE="/var/lib/libvirt/images/node_base.qcow2"
- export LANG=C
- . /etc/init.d/functions
- function create_vm(){
- if [ -e ${IMG_DIR}/${1}.img ];then
- echo_warning
- echo "vm ${1}.img is exists"
- return 1
- else
- qemu-img create -b ${IMG_FILE} -F qcow2 -f qcow2
- ${IMG_DIR}/${1}.img 20G &>/dev/nl
- sed -re "s,#{5},${1}," ${CONF_FILE} >${CONF_DIR}/${1}.xml
- sudo virsh define ${CONF_DIR}/${1}.xml &>/dev/null
- echo_success
- echo "vm ${1} create"
- fi
- }
- function remove_vm(){
- read _ img <<<$(sudo virsh domblklist $1 2>/dev/null |awk 'NR==3{print}')
- if [ -e "${img}" ];then
- sudo virsh destroy $1 &>/dev/null
- sudo virsh undefine $1 &>/dev/null
- rm -f ${img}
- echo_success
- echo "vm ${1} delete"
- fi
- }
- # main
- case "$1" in
- create|remove)
- CMD=${1}
- while ((${#} > 1));do
- shift
- ${CMD}_vm ${1}
- done
- ;;
- *)
- echo "${0##*/} {create|remove} vm1 vm2 vm3 ... ..."
- ;;
- esac
- exit $?
- 验证
- [root@localhost ~]# chmod 755 /usr/local/bin/clone-vm
- [root@localhost ~]# virsh list --all
- Id Name State
- ----------------------------------------------------
- [root@localhost ~]# clone-vm
- clone-vm {create|remove} vm1 vm2 vm3 ... ...
- [root@localhost ~]# clone-vm create web db
- vm web create [ OK ]
- vm db create [ OK ]
- [root@localhost ~]# virsh list --all
- Id Name State
- ----------------------------------------------------
- - web shut off
- - db shut off
- [root@localhost ~]# virsh start web
- Domain web started
- [root@localhost ~]# virsh start db
- Domain db started
- [root@localhost ~]# virsh list --all
- Id Name State
- ----------------------------------------------------
- 1 web running
- 2 db running
- [root@localhost ~]# virsh console web
- Connected to domain 'web'
- Escape character is ^] (Ctrl + ])
- login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
- cirros login:
- [root@localhost ~]# clone-vm remove web db
- vm web delete [ OK ]
- vm db delete [ OK ]
- [root@localhost ~]# virsh list --all
- Id Name State
- ----------------------------------------------------
- [root@localhost ~]#
复制代码 磁盘读取/写入,在写入时拷贝数据
速率快前端盘使用了指针(快捷方式),只能读,不能写
读操作只是创建指针,指向原始盘的数据
弹性空间:根据数据的增加,改变大小,节约资源
原始盘范例 原始盘名称 克隆
内层假造机网卡eth0链接真机的vnet0,然后通过vnet0链接vbr
cow链接克隆,快速,相较于原假造机,占用内存空间大大缩小
cp 完备克隆
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |