云计算底层和假造化管理

饭宝  金牌会员 | 2024-7-11 18:16:26 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 715|帖子 715|积分 2145

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

  1. //linux虚拟化
  2. grep -Po "vmx | svm" /pro/cpuinfo
  3. -E  支持拓展正则
  4. -P  支持Perl正则
  5. -o  显示行中非空匹配部分
  6. /pro/cpuinfo  cpu详细信息文件
  7. lsmod | grep kvm  查看是否有kvm模块
  8. lsmod      //查看内核模块
  9. modprobe   //装载内核模块,内核模块是高度封装的,只能装载或卸载
  10. rmmod      //卸载内核模块,类似umount
复制代码
1.2.2安装假造化平台



  • KVM/qemu/Libvired

    • KVM是linux内核模块,需要CPU指令集(Intel-VT/AMD-V)支持,是一种硬件辅助假造化技能
    • QUME 是一种假造化仿真工具,通过IOctl(输入输出)与内核模块交互完成对硬件的假造化支持
    • Libvirt 是对假造化管理的接口的工具,提供客户端步调,virsh,virsh-manager

  1. //虚拟化平台安装
  2. dnf -y install              \
  3. qemu-kvm                    \      //虚拟化仿真程序
  4. libvirt-daemon              \      //核心守护进程
  5. libvirt-client              \      //客户端程序
  6. libvirt-daemon-driver-qemu  \   //QEMU管理模块
  7. libvirt-daemon-driver-netwoek \  //网络管理模块
  8. dnsmasq                        //DHCP、DNS服务
  9. systemctl enable libvirtd  --now  
复制代码


  • virsh

    • 提供管理各假造机的命令接口
    • 支持交互/非交互模式,查察/创建/停止/关闭
    • 格式:virsh 控制命令 [资源名] [参数]

  1. virsh version  //查看虚拟化相关版本信息
  2. Compiled against library: libvirt 8.0.0
  3. Using library: libvirt 8.0.0
  4. Using API: QEMU 8.0.0
  5. 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
  1. //网桥配置文件书写,文件名对应创建的网桥名称,根据模板修改
  2. vim /etc/libvirt/qemu/networks/vbr.xml
  3. <network>
  4.   <name>vbr</name>      //显示的virsh net-list 虚拟网络中的名称
  5.   <bridge name="vir" stp='on' delay='0'/>  //显示的ifconfig中的网卡名称
  6.   <forward mode="nat"/>
  7.   <ip address="192.168.100.254" netmask="255.255.255.0">
  8.     <dhcp>
  9.       <range start="192.168.100.128" end="192.168.100.200"/>
  10.     </dhcp>
  11.   </ip>
  12.   <ip family="ipv6" address="2001:db8:ca2:2::1" prefix="64"/>
  13. </network>
  14. //stp='on': 这个属性表示生成树协议(Spanning Tree Protocol, STP)是否启用
  15. //delay='0': 这个属性定义了STP重新计算网络拓扑结构前等待的时间(单位为秒)
复制代码
  1. //创建配置文件中声明的网桥
  2. virsh net-define /etc/libvirt/qemu/networks/vbr.xml
  3. Network vbr defined from /etc/libvirt/qemu/networks/vbr.xml
  4. //启动网桥
  5. virsh net-start vbr
  6. Network vbr started
  7. //设置开机自启
  8. virsh net-autostart vbr
  9. //查看网桥状态
  10. virsh net-list --all
  11. Name   State    Autostart   Persistent
  12. -----------------------------------------
  13. vbr    active   yes         yes
  14. //验证
  15. ifconfig  vbr
复制代码
3.假造机原理

3.1假造机的构成



  • 假造设置文件(*.xml)

    • 文件默认路径:/etc/libvirt/qemu/
    • 用途:定义了假造机的装备,如:CPU、内存、网卡等

  • 存储文件(*.img)

    • 文件默认路径:/var/lib/libvirt/images/
    • 用途:仿真假造机磁盘,存储全部数据信息

  1. 创建vmhost虚拟机
  2. 1.创建虚拟配置文件   /etc/libvirt/qemu/vmhost.xml
  3. 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 查察磁盘信息

  1. //上传cirros.qcow2到虚拟机
  2. cp cirros.qcow2 /var/lib/libvirt/images/
  3. cd cirros.qcow2 /var/lib/libvirt/images/
  4. //创建磁盘
  5. qemu-img create -F qcow2 -f qcow2 -b cirros.qcow2 vmhost.img 20G
  6. 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
  7. //查看信息,实际大小不会是20G,因为弹性空间
  8. qemu-img info vmhost.img
  9. image: vmhost.img
  10. file format: qcow2
  11. virtual size: 20 GiB (21474836480 bytes)
  12. disk size: 196 KiB
  13. cluster_size: 65536
  14. backing file: cirros.qcow2
  15. backing file format: qcow2
  16. Format specific information:
  17.     compat: 1.1
  18.     compression type: zlib
  19.     lazy refcounts: false
  20.     refcount bits: 16
  21.     corrupt: false
  22.     extended l2: false
  23. //读取操作会先查找前端盘的差分映像vmhost.img , 如果未找到才会找后端盘的cirros.qcow2,此时
  24. 写入操作只会写入vmhost.img
复制代码
3.3.2假造机设置文件



  • 官网复制(https://libvirt.org/docs.html——>node devices)
  1. cp node_base.xml /etc/libvirt/qemu/vmhost.xml
  2. vim /etc/libvirt/qemu/vmhost.xml
  3. 02: <name>vmhost</name>        //虚拟机名称
  4. 03: <memory unit='KB'>1024000</memory> //最大内存
  5. 04: <currentMemory unit='KB'>1024000</currentMemory> //当前内存
  6. 05: <vcpu placement='static'>2</vcpu>  //CPU数量
  7. 25: <source file='/var/lib/libvirt/images/vmhost.img'/> //磁盘文件路径
  8. 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查察假造机硬盘信息
  1. virsh define /etc/libvirt/qemu/vmhost.xml  //创建虚拟机
  2. Domain 'vmhost' defined from /etc/libvirt/qemu/vmhost.xml
  3. virsh start vmhost      //启动虚拟机,状态由shut off变为running
  4. Domain 'vmhost' started
  5. virsh console vmhost     //两次回车
  6. Connected to domain 'vmhost'
  7. Escape character is ^] (Ctrl + ])
  8. login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
  9. cirros login: cirros
  10. Password: gocubsgo
  11. $   
  12. PS1='[\u\h \W]\$'
  13. [rootcirros ~]#
  14. shift + ] 退出登陆填写密码状态栏
  15. //默认进去是$普通用户,需要sudo -i 变为#,可以修改$PS1系统变量调整样式
复制代码
3.3.4创建假造机脚本

  1. vim /usr/local/bin/vm
  2. #!/bin/bash
  3. cd /var/lib/libvirt/images/
  4. qemu-img create -F qcow2 -f qcow2 -b cirros.qcow2 ${1}.img 20G
  5. sed "s,#####,${1}," /root/node_base.xml > /etc/libvirt/qemu/${1}.xml
  6. virsh define /etc/libvirt/qemu/${1}.xml
  7. chmod 0755 /usr/local/bin/vm
  8. vm vmhost.xml
  9. virsh list --all
  10. Id   Name     State
  11. -------------------------
  12. -    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.能力提拔

编写一个脚本用来管理假造机,可以完成假造机的批量创建、批量删除,自定义假造机名称等功能,现有的模板假造机信息如下:
  1. 配置文件模板:/var/lib/libvirt/images/node_base.xml
  2. 后端盘模板: /var/lib/libvirt/images/node_base.qcow2
复制代码
  1. [root@localhost ~]# vim /usr/local/bin/clone-vm
  2. #!/bin/bash
  3. CONF_DIR="/etc/libvirt/qemu"
  4. IMG_DIR="/var/lib/libvirt/images"
  5. CONF_FILE="/var/lib/libvirt/images/node_base.xml"
  6. IMG_FILE="/var/lib/libvirt/images/node_base.qcow2"
  7. export LANG=C
  8. . /etc/init.d/functions
  9. function create_vm(){
  10.         if  [ -e ${IMG_DIR}/${1}.img ];then
  11.             echo_warning
  12.             echo "vm ${1}.img is exists"
  13.             return 1
  14.         else
  15.            qemu-img create -b ${IMG_FILE} -F qcow2 -f qcow2
  16.            ${IMG_DIR}/${1}.img 20G &>/dev/nl
  17.             sed -re "s,#{5},${1}," ${CONF_FILE}                         >${CONF_DIR}/${1}.xml
  18.            sudo virsh define ${CONF_DIR}/${1}.xml &>/dev/null
  19.           echo_success
  20.            echo "vm ${1} create"
  21.         fi
  22.     }
  23. function remove_vm(){
  24.         read _ img <<<$(sudo virsh domblklist $1 2>/dev/null |awk 'NR==3{print}')
  25.         if [ -e "${img}" ];then
  26.             sudo virsh destroy  $1 &>/dev/null
  27.             sudo virsh undefine $1 &>/dev/null
  28.             rm -f ${img}
  29.             echo_success
  30.             echo "vm ${1} delete"
  31.         fi
  32.     }
  33.     # main
  34.     case "$1" in
  35.         create|remove)
  36.         CMD=${1}
  37.         while ((${#} > 1));do
  38.             shift
  39.             ${CMD}_vm ${1}
  40.         done
  41.         ;;
  42.         *)
  43.         echo "${0##*/} {create|remove} vm1 vm2 vm3 ... ..."
  44.         ;;
  45.     esac
  46.     exit $?
  47. 验证
  48.     [root@localhost ~]# chmod 755 /usr/local/bin/clone-vm
  49.     [root@localhost ~]# virsh list --all
  50.      Id    Name                           State
  51.     ----------------------------------------------------
  52.     [root@localhost ~]# clone-vm
  53.     clone-vm {create|remove} vm1 vm2 vm3 ... ...
  54.     [root@localhost ~]# clone-vm create web db
  55.     vm web create                                      [  OK  ]
  56.     vm db create                                       [  OK  ]
  57.     [root@localhost ~]# virsh list --all
  58.      Id    Name                           State
  59.     ----------------------------------------------------
  60.      -     web                            shut off
  61.      -     db                             shut off
  62.     [root@localhost ~]# virsh start web
  63.     Domain web started
  64.     [root@localhost ~]# virsh start db
  65.     Domain db started
  66.     [root@localhost ~]# virsh list --all
  67.      Id    Name                           State
  68.     ----------------------------------------------------
  69.      1     web                            running
  70.      2     db                             running
  71.     [root@localhost ~]# virsh console web
  72.     Connected to domain 'web'
  73.     Escape character is ^] (Ctrl + ])
  74.     login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
  75.     cirros login:
  76.     [root@localhost ~]# clone-vm remove web db
  77.     vm web delete                                             [  OK  ]
  78.     vm db delete                                              [  OK  ]
  79.     [root@localhost ~]# virsh list --all
  80.      Id    Name                           State
  81.     ----------------------------------------------------
  82.     [root@localhost ~]#
复制代码
磁盘读取/写入,在写入时拷贝数据
速率快前端盘使用了指针(快捷方式),只能读,不能写
读操作只是创建指针,指向原始盘的数据
弹性空间:根据数据的增加,改变大小,节约资源
原始盘范例 原始盘名称 克隆
内层假造机网卡eth0链接真机的vnet0,然后通过vnet0链接vbr
cow链接克隆,快速,相较于原假造机,占用内存空间大大缩小
cp 完备克隆

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表