kvm虚拟化

--- 虚拟化技术主要分类 平台虚拟化 platform virtualization 资源虚拟化
应用程序虚拟化

--- kvm虚拟化技术简介 kvm架构

运行图形界面的sentos7 kvm 安装 cat /proc/capuinfo |grep -E 'vmx|svm' -s查看是否支持虚拟化

systemctl stop firewalld 关闭防火墙 systemctl disabble firewalld

vi /etc/sysconfig/selinux setenforce 0

清理环境,卸载kvm yum remove rpm -qa | egrep 'qemu|virt|kvm' -y rm -rf /var/lib/libvirt /etc/libvirt/ /etc/libvirt/

uname -r 3.10.0-693.el7.x86_64

yum install qemu virt librbd1-devel -y

yum upgrade

注: qemu-kvm: 主包 libvirt: api接口 virt-manager 图形管理程序

所谓的kvm技术中,应用到的其实有2个东西: qemu + kvm kvm负责cpu虚拟化+内存虚拟化 实现了cpu和内存的虚拟化,但kmm不能模拟 其它设备 qemu是模拟io设备(网卡,磁盘) kvm加上qemu这后就能实现真正意义上服务器虚拟化 所以一盘叫qemu-kvm libvirt则是调用kvm虚拟技术的接口管理的,用libvirt管理方便

centos8 进行组安装的时候会出现关于rpm版本的错误问题 解决: yum upgrade rpm -y

启动服务 systemctl start libvirtd systemctl enable libvirtd

查看kvm模块加载 lsmod | grep kvm

---- guestos安装 1.图形安装 2.完全文本模式 3.命令行模式 4.通过飞机驾驶舱安装和管理虚拟机 (web界面) yum install cockpit -y systemctl start cockpit systemctl start cockpit netstat -lntp -端口默认9090 浏览器访问 ip:port

连接,传输软件 finalshell3.0.10

图形安装 virt-manager 图形界面上操作 applications-tool-virtual machie manager

创建虚拟机.在virt-manager界面上,file-new virtual machine 本地方式创建-选择linux系统源文件-。。。

-- 文本方式安装 virt-install --connect qemu:///system -n vm6 -r 512 --dis path=/virhost/vmware/vm6.img,size=7 --os-type=linux --os-variant=rhel6 --vcpus=1 --network bridge=br0 --location=http://127.0.0.1/rhe16u4 -x console=ttyS0 --nographics

virt-install --connect qemu:///system -n vm9 -r 2048 --disk path=/var/lib.libvirt.images.vm9.img,size=7 --os-type=linux --os- variant=centos7.0 --vcpus=1 --location=ftp://192.168.100.230/centos7u3 -x console=ttyS0 --nographics

查看kvm支持的os版本 man virt-install osinfo-query os |grep centos

-- 命令行模式安装

虚拟机配置文件 -事先已在图形界面创建过一台vm1.img /etc/libvirt/qemu

储存虚拟机的介质 /var/lib/libvirt/images/

根据配置文件创建虚拟机 cp vm1.img vm2.img -需要有磁盘镜像文件

cp vm1.xml vm2.xml -需要有配置文件

virsh define /etc/libvirt/qemu/vm2.xml -创建虚拟机

systemctl restart libvirtd

宿主机开启路由转发 vim /etc/sysctl.conf
sysctl -p net.ipv4.ip_forward = 1

修改配置文件 先拷贝模板镜像和配置文件 cp /var/lib/libvirt/images/vm1.img /var/lib/libvirt/images/vm2.img cp /etc/libvirt/qemu/vm1.xm1 /etc/libvirt/qemu/vm2.xml

vim /etc/libvirt/qemu/vm2.xml

vm3 修改名称

uuid需要修改,否则会冲突 memory -如果修改内存,currentmemory也要保持一致 source -修改磁盘文件名为vm3.im mac -修改mac地址,只能修改后6位

virsh define //etc/libvirt/qemu/vm2.xml -创建虚拟机 systemctl restart libvirtd vim /etc/sysctl.conf -修改路由转发 net.ipv4.ip_forward = 1 -增加这一行 :wq

sysctl -p -查看路由转发

virt-manager

------ guestos 安装问题解析 yum upgrade -y

配置文件添加磁盘 devices disk 拷贝disk标签修改以下内容 source -修改名称 /var/lib/libirt/images/vm1-1.qcow2 address-slot -修改插槽名称 :wq

qemu-img create -f qcow2 /var/lib/libirt/images/vm1-1.qcow2 2g

virsh define /etc/libvirt/qemu/vm1.xml

---- 存储池管理 mkdir -p /data/vmfs -创建存储池目录 virsh pool-define-as vmdisk --type dir --target /data/vmfs -定义存储池与目录 virsh pool-build vmdisk -创建已定义的存储池 virsh pool-list --all -查看 virsh pool-start vmdisk -启动 virsh pool-autostart vmdisk -设置开机启动 virsh pool-list --all

virsh vol-create-as vmdisk oeltest03.qcow2 3G --format qcow2 -在存储池中创建虚拟机存储卷

ll /data/vmfs/ -查看

存储池相关管理命令 virsh vol-delete -pool vmdisk oeltest03.qcow2 -删除 virsh pool-destroy vmdisk -取消激活存储池 virsh pool-delete vmdisk -删除存储池定义的目录/data/vmfs virsh pool-undefine vmdisk -取消定义存储池

磁盘格式 raw 原始格式,性能最好

qcow cow(写时拷贝copy on write),性能过不如raw,所以出现 了qcow2

qcow2 性能上还是不如fraw,但是raw不支持快照,qcow2支持快照

什么叫写时拷贝 raw立刻分配空间,创建即占用 qcow2用的时候才分配空间

-- 创建磁盘文件 qemu-img create -f qcow2 test.qcow2 20g -创建qcow2格式磁盘文件 qemu-img create -f raw test.raw 20G -创建raw格式磁盘文件 qemu-img info test.qcow2 -查看已经创建的虚拟磁盘文件

-- 磁盘挂载 需求:拷贝虚拟的文件到宿机,通过挂载的方式 virt-df -h -d vm1 -查看磁盘镜像分区信息 virt-filesystems -d vml gusetmount -d vm1 -m /dev/centos/root --rw /mnt -虚拟机vm1的root目录挂载到宿主机的mnt目录

guestunmount /mnt -取消挂载

     ----- kvm 基本管理

virsh list -查看虚拟机 virsh list --all -查看所有状态的虚拟机 virsh dumpxml name -查看虚拟机配置文件 virsh edit node6 -修改node6的配置文件=vim /etc/libv1rt/qemu/vm1.xml,edit有报错提醒 virsh start vm1 -启动,修改配置后需要重启动 virsh suspend vm_name -暂停虚拟机 virsh resume vm_name -恢复 virsh shutdown vm1 -关机 virsh destroy vm1 -关机 virsh reset vm1 -重置 virsh undefine vm1 -删除,开机状态下只删除配置文件,再运行virsh destroy vm1就能删除 virsh autostart vm1 -开机自动启动 ls /etc/libvirt/qemu/autostart -域,vm1标记为自动开始,该目录开机自动创建 ls /etc/libvirt/qemu/autostart -查看所有开机自启的guest os virsh list -aa --autostart -查看所有开机自启的guest os virsh define from /etc/libvirt/qemu/vm1.xml -刷新配置文件

---- kvm 克隆 virt-clone -o vm1 --auto-clone -默认克隆 virt-clone -o vm1 -n vm3 -f /var/lib/libvirt/images/vm3.qcow2 --auto-clone -克隆,-n指定名称,-f指定生成新的磁盘镜像 ll /var/lib/libvirt/images/ -查看克隆

注:默认克隆后自动修改配置必改项,如: name,uuid,mac,磁盘镜像名称

---- 增量镜像 相当于副本,以基本镜像为基础,叠加创建增量镜像,基本镜像删除,增量镜像失效 qemu-img create -b /var/lib/libvirt/images/vm2.img -f qcow2 /var/lib/libvirt/images/node4.img -创建增量镜像 qemu-img info /var/lib/libvirt/images/node4.img -查看镜像

创建虚拟机node4的xml配置文件 cp /etc/libvirt/qemu/node.xml /etc/libvirt/qemu/node4.xml vim /etc/libvirt/qemu/node4.xml 修改name,uuid,mac,磁盘镜像名称 virsh define from /etc/libvirt/qemu/node4.xml virsh start node 4

测试: du -h node.img -查看镜像的大小 du -h node4.img dd if=/dev/zero of=test bs=1 count=20M -创建一个20M的文件 du -h node.img -查看镜像的大小,前后改变可见:node4增加文件,node不变 du -h node4.img

----- 快照 图形界面的省略 注: raw格式不支持快照 virsh snapshot-create-as vm8 vm8.snap qemu-img info /var/lib/libvirt/images/vm2.img -查看镜像 virsh snapshot-list vm2 -查看快照信息

验证raw快照, 步骤:添加磁盘,修改配置文件添加 qemu-img create -f raw /var/lib/libvirt/images.vm2-1.raw 2G -创建一个2G的磁盘 ll -h /var/lib/libvirt/images/vm2-1.raw -查看磁盘大小

vim /etc/libvirt/qemu/ -修改配置文件 复制disk 修改以下内容 type='raw' source ='../vm2-1.img' target-dev='vdb' address-slot='' -改最后一位即可 :wq virsh define vm2.xml -刷新 virsh start vm2

virsh snapshot-create-as vm2 vm2.snap -创建快照报错...type raw qemu

把raw 转换成 qcow2 qemu-img convert -O qcow2 /var/lib/libvirt/images/vm2-1.raw /var/lib/libvirt/images/vm2-1.qcow2 ll -h /var/lib/libvirt/images/ -查看镜像 qemu-img info vm2-1.qcow2 -查看磁盘信息

vim /etc/libvirt/qemu/vm2.xml -修改配置文件里的指定格式 disk-type='qcow2' source-file='....qcow2' virsh define vm2.xml -刷新 virsh start vm2

virsh snapshot-create-as vm2 vm2.snap -快照创建成功

virsh snapshot-revert vm2 vm2.snap -恢复快照

virsh sanpshot-list vm2 -查看快照 virsh snapshot-delete --snapshotname vm2.snap3 vm2 -删除快照

----- kvm网络管理 分类: nat isolated bridge

虚拟交换机 linux-bridge(linux自带) ovs(open-Vswitch)

ip a -virbr0指的虚拟交换机的网卡 brctl show -查看虚拟交换机 brctl delif virbr0 vnet0 -删除虚拟交换机virbr0 上的接口vnet0 brctl addif virbr0 vnet0 -增加

--- 配置文件方式配置桥接 添加虚拟网卡 ip a ls /etc/sysconfig/network-scripts/ -可见没有ifcfg-br0配置文件,需新建 vim /etc/sysconfig/network-scripts/incfg-br0 -新建配置文件,内容可从ens33复制 TYPE=Bridge -桥接 ip= ip就是宿主机ip cat ifcfg-br0 :wq

vim ifcfg-enp33 -设置将物理网卡桥接到桥接网卡br0 DEVICE="ens33" ONBOOT="yes" BRIDGE=br0 :wq

systemctl restart libvirtd systemctl restart network 到图形界面选择网卡方式 删除 rm -rf ifcfg-br0 rm -rf ifcfg-ens33 mv ifcfg ens33.bak ifcfg-ens33

systemctl restart network

---- 创建nat网络 cp /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/nat1.xml vim /etc/libvirt/qemu/networks/nat1.xml name: nat1 uuid: -改1位即可 forward: nat bridge-name: virbr1 mac地址: -改后6位 ip:192.168.120.1 -可改任意 dhcp-range -start 192.168.120.2-190.168.120.200 -地址池 :wq systemctl restart libvirtd 到图形界面选择网卡方式

---- 创建isolated 隔离模式 cp /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/nat1.xml vim /etc/libvirt/qemu/networks/isolated200.xml name: isolated200 uuid: -改1位即可

bridge-name: virbr2 mac地址: -改后6位 ip:192.168.121.1 -可改任意 dhcp-range -start 192.168.121.2-190.168.121.200 -地址池 :wq systemctl restart libvirtd virsh net-list -查看所有网络 virsh net-start isolated200 -启用 virsh net-autostart isolated200 -网络自动启动 到图形界面选择网卡方式

关于dhcp ps -elf |grep dnsmasq
cd /var/lib/libvirt/dnsmasq/ cat virbr0.status

脚本管理kvm

JS
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。