赞
踩
虚拟化技术是一种资源管理方法,它允许在单一物理硬件平台上运行多个独立的操作系统实例,这些实例被称为虚拟机
系列 | PC/服务器版代表 |
---|---|
VMware | VMware Workstation、vSphere |
Microsoft | VirtualPC、Hyper-V |
RedHat | KVM、RHEV |
Citrix | Xen |
Oracle | Oracle VM VirtualBox |
真机(windows/linux)
在真机中创建虚拟机,内部虚拟机通过划分可用资源,如设置虚拟网桥,使得内层虚拟机可以访问外网。
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
//虚拟化平台安装
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 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
命令选项 | 描述 |
---|---|
net-list [–all] | 列出虚拟网络 |
net-start | 启动虚拟交换机 |
net-destroy | 强制停止虚拟交换机 |
net-define | 根据xml文件创建虚拟网络 |
net-undefine | 删除一个虚拟网络设备 |
net-autostart | 设置开机自启动 |
net-edit | 修改虚拟交换机的配置 |
virsh net-autostart | 设置开机自启动 |
//网桥配置文件书写,文件名对应创建的网桥名称,根据模板修改 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
创建vmhost虚拟机
1.创建虚拟配置文件 /etc/libvirt/qemu/vmhost.xml
2.创建存储文件 /var/lib/libvirt/images/vmhost.xml
//上传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
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'/>
管理内层虚拟机命令 | 说明 |
---|---|
virsh list [–all] | 列出所有虚拟机 |
virsh start/shutdown | 启动/关闭虚拟机 |
virsh destory | 强制停止虚拟机 |
virsh define/undefine | 创建/删除虚拟机 |
virsh console | 连接虚拟机的console |
virsh 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系统变量调整样式
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
模式 | 说明 |
---|---|
IaaS | 基础设施服务 |
PaaS | 平台服务 |
SaaS | 软件服务 |
IaaS提供计算资源的基础设施,如虚拟机、存储空间、网络和操作系统,以及一些基本的网络组件如虚拟路由器和firewalld。用户可以根据需要租用这些资源,并自行安装操作系统、中间件、运行时、数据管理软件和其他所需的软件。
PaaS提供了一个完整的开发和部署环境,包括操作系统、数据库、开发工具和运行时环境。开发人员可以利用 PaaS 来构建、测试和部署应用程序,而无需关心底层的基础设施。PaaS 解决方案通常包括应用程序服务器、数据库服务、开发框架和 API
SaaS 是通过互联网提供的软件应用程序,用户无需安装和维护软件,只需订阅即可使用。SaaS 供应商负责管理应用程序的可用性、安全性、可扩展性和维护。
云 | 介绍 |
---|---|
公有云 | 是第三方的云供应商,通过互联网为广大用户提供的一种按需使用的服务器资源,是一种云基础设施。 |
私有云 | 是一个企业或组织的专用云环境。一般在企业内部使用,不对外提供服务,因此它也被视为一种企业云。 |
混合云 | 是在私有云的基础上,组合其他公有云资源,从而允许在不同云环境之间共享应用和数据的使用方式。 |
编写一个脚本用来管理虚拟机,可以完成虚拟机的批量创建、批量删除,自定义虚拟机名称等功能,现有的模板虚拟机信息如下:
配置文件模板:/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 完整克隆
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。