赞
踩
今日目标:-搭建虚拟化平台
- 创建云主机
-了解云计算
虚拟化与云计算的关系
虚拟化是什么?虚拟化是一种技术,顾名思义,就是将不可拆分的实体资源变成可以自由划分的逻辑资源,从而实现资源的整合、隔离、在分配,云计算就是利用了虚拟化技术这个特点。
云计算是什么?云计算是一种服务模式(IAAS),其实就是把各种资源整合起来,然后租用给有需要的用户,其中的资源包括处理器(cpu)、内存、存储、网络和其他基本的计算机资源。通常我们通过虚拟化手段把这些资源分割打包提供给用户使用。
1、创建虚拟机 2cpu,4G内存
[root@localhost ~]# hostnamectl set-hostname ecs [root@localhost ~]# exit
2、验证 ecs 是否支持虚拟化
grep -Po "vmx|svm" /proc/cpuinfo lsmod |grep kvm查看KVM模块 modprobe kvm 加载模块 rmmod kvm 卸载模块
构建虚拟化平台工具软件包
[root@ecs ~]# dnf install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu libvirt-daemon-driver-network dnsmasq [root@ecs ~]# systemctl enable --now libvirtd [root@ecs ~]# virsh version#查看版本
网桥(虚拟交换机)
默认路径:/etc/libvirt/qemu/networks/vbr.xml
命令 | 描述 |
---|---|
virsh net-list [--all] | 列出虚拟网络 |
virsh net-start | 启动虚拟交换机 |
virsh net-destroy | 强制停止虚拟交换机 |
virsh net-define | 根据xml文件创建虚拟网络 |
virsh net-undefine | 删除一个虚拟网络设备 |
virsh net-edit | 修改虚拟交换机的配置 |
virsh net-autostart | 设置开机自启动 |
# 官网手册: https://libvirt.org/docs.html [root@ecs ~]# vim /etc/libvirt/qemu/networks/vbr.xml <network> <name>vbr</name>网桥名 <forward mode='nat'/>工作模式 <bridge name='vbr' stp='on' delay='0'/> <ip address='192.168.100.254' netmask='255.255.255.0'>网桥ip <dhcp> <range start='192.168.100.128' end='192.168.100.200'/> </dhcp> </ip> </network> # 创建网桥 [root@ecs ~]# virsh net-define /etc/libvirt/qemu/networks/vbr.xml Network vbr defined from /etc/libvirt/qemu/networks/vbr.xml # 设置开机自启动 [root@ecs ~]# virsh net-autostart vbr Network vbr marked as autostarted # 启动网桥 [root@ecs ~]# virsh net-start vbr Network vbr started # 验证状态 [root@ecs ~]# virsh net-list --all Name State Autostart Persistent ----------------------------------------- vbr active yes yes [root@ecs ~]# ifconfig vbr # 验证
虚拟机的构成:
/etc 存放配置文件 /usr 存放程序文件 /var 存放数据文件
虚拟机磁盘:在文件仿真中被广泛采用的CoW格式具有支持弹性空间、支持后端盘复用、支持快照、支持压缩
COW 写时拷贝技术 ,使用指针指向原始盘所有块。若一个块要被改写,首先把数据从原始盘拷贝到前端盘,然后在前端盘进行改写,最后把数据指针指向改写过的数据
原始盘始终是只读的
虚拟机磁盘管理:
qemu-img 是管理虚拟机磁盘命令
命令格式:qemu -img 子命令 子命令参数 块文件名称 大小
-f 指定磁盘格式
-b 原始盘名称
-F 原始盘磁盘格式
创建虚拟机vmhost的磁盘文件
后端数据盘:cirros.qcow2
创建前端盘:/var/lib/libvirt/images/vmhost.img
前端盘的大小20G
上传 cirros.qcow2 到虚拟机
[root@ecs ~]# cp cirros.qcow2 /var/lib/libvirt/images/ [root@ecs ~]# cd /var/lib/libvirt/images/ [root@ecs ~]# qemu-img create -F qcow2 -f qcow2 -b cirros.qcow2 vmhost.img 20G ls -lh [root@ecs ~]# qemu-img info vmhost.img #查看信息
qemu-img create -F qcow2 -f qcow2 -b cirros.qcow2 vmhost.img 20G
qemu-img create -F 原始盘的格式-f 目标盘的格式-b 原始盘的名称 目标盘的名称 目标盘的大小
文件:/etc/libvirt/qemu/{虚拟机名称}.xml
官方手册:libvirt: Documentation 或者生成配置模板
按要求使用模板创建虚拟机配置文件
-虚拟机名称: vmhost
-虚拟机配置:CPU(2核心)内存(1G)
-虚拟机网络:Vbr桥接
拷贝 模板node_base.xml 到虚拟机中
[root@ecs ~]# cp node_base.xml /etc/libvirt/qemu/vmhost.xml [root@ecs ~]# 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'/>
命令 | 说明 |
---|---|
virsh list [--all] | 列出虚拟机 |
virsh start/shutdown/reboot | 启动/关闭/重启虚拟机 |
virsh destroy | 强制停止虚拟机 |
virsh define/undefine | 创建/删除虚拟机 |
virsh console | 连接虚拟机的 console |
[root@ecs ~]# virsh define /etc/libvirt/qemu/vmhost.xml Domain vmhost defined from /etc/libvirt/qemu/vmhost.xml [root@ecs ~]# virsh list --all Id Name State ---------------------------------------------------- - vmhost shut off [root@ecs ~]# virsh start vmhost Domain vmhost started [root@ecs ~]# virsh console vmhost # 两次回车 Connected to domain vmhost Escape character is ^] login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root. cirros login: 退出使用 ctrl + ]
若要删除云主机磁盘 命令:cd /var/lib/libvirt/images/ rm -f vmhost.img
命令 | 说明 |
---|---|
virsh edit | 修改虚拟机的配置 |
virsh autostart | 设置虚拟机自启动 |
virsh dominfo | 查看虚拟机摘要信息 |
virsh domiflist | 查看虚拟机网卡信息 |
virsh domblklist | 查看虚拟机硬盘信息 |
附: 编写一个脚本用来管理虚拟机,可以完成虚拟机的批量创建、批量删除,自定义虚拟机名称等功能,现有的模板虚拟机信息如下:
- [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
IaaS: 基础设施服务,Infrastructure-as-a-service PaaS: 平台服务,Platform-as-a-service SaaS: 软件服务,Software-as-a-service
公有云:是第三方的云供应商,通过互联网为广大用户提供的一种按需使用的服务器资源,是一种云基础设施。 私有云:是一个企业或组织的专用云环境。一般在企业内部使用,不对外提供服务,因此它也被视为一种企业云。 混合云:是在私有云的基础上,组合其他公有云资源,从而允许在不同云环境之间共享应用和数据的使用方式。
华为云网址:共建智能世界云底座-华为云
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。