KVM虚拟机管理和基本使用

id:wljsghq
kvm 虚拟化环境部署和管理方法
kvm 简介
kvm — 全称是基于内核的虚拟机(kernel-based virtual machine)是一个开源软件,基于内核的虚拟化技术,实际是嵌入系统的一个虚拟化模块,通过优化内核来使用虚拟技术,该内核模块使得linux 变成了一个hypervisor,虚拟机使用linux自身的调度器进行管理。
kvm 是基于虚拟化扩展(intel vt 或者amd-v)的x86 硬件的开源的linux 原生的全虚拟化解决方案。kvm 中,虚拟机被实现为常规的linux 进程,由标准linux 调度程序进行调度;虚机的每个虚拟cpu 被实现为一个常规的linux 进程。这使得kvm 能
够使用linux 内核的已有功能。但是,kvm 本身不执行任何硬件模拟,需要客户空间程序通过/dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的i/o,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是qemu。
qemu 是一套由fabrice bellard 所编写的模拟处理器的自由软件。它与bochs,pearpc 近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu 这个开源的加速器,qemu 能模拟至接近真实电脑的速度。
libvirt 是管理虚拟机和其他虚拟化功能的软件,比如存储管理,网络管理的软件集合。它包括一个api 库,一个守护程序(libvirtd)和一个命令行工具(virsh);libvirt 本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的api。libvirt的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。
注意:我们通常所说和使用的kvm 虚拟机,实际上是这三个软件的结合
安装kvm、qemu、libvirtd:
查看和打开cpu 虚拟化支持:
egrep (svm|vmx) /proc/cpuinfo #查看cpu 是否支持虚拟化注:vmx 对应inter 的cpusvm 对应amd 的cpu需在主板bios 打开虚拟化选项,多数计算机默认处于打开状态  
查看内核kvm 支持
lsmod|grep kvm  
安装所需软件包
apt-get install libvirt0 libvirt-daemon qemu virt-manager bridge-utils libvirt-clientspython-libvirt qemu-efi uml-utilities virtinst qemu-system  
#安装kvm 和相关虚拟化工具
启动libvirtd
systemctl restart libvirtd.service #启动libvirtdsystemctl status libvirtd.service #查看启动状态  
两种管理虚拟机的方法:
virt-manager 是图形化方式,相对直观。
virsh 是命令行方式
kvm 配置与应用
virsh 命令行管理工具详解
virsh(虚拟shell),基于命令行的管理工具,可以实现简单的资源管理。支持交互模式virsh shutdown deepin1 #正常关闭vm 虚拟机virsh start deepin1 #启动kvm 虚拟机virsh destroy deepin1 #强制关闭kvm 虚拟机virsh list #显示本地活动虚拟机virsh list --all #查看所有虚拟机virsh suspend deepin1 #挂起kvm 虚拟机virsh resume deepin1 #恢复被挂起虚拟机virsh dominfo deepin1 #查看指定虚拟机的配置摘要信息virsh undefine deepin1 #删除kvm 虚拟机(如果虚拟机处于runing,一旦关闭就会消失)virsh dumpxml deepin1 #显示虚拟机的当前配置文件virsh define deepin2.xml #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)virsh autostart deepin1 #虚拟机设为自动启动(成/etc/libvirt/qemu/autostart/)virsh autostart --disable deepin1 #取消自动启动virsh edit deepin1 #编辑配置文件(一般是在刚定义完虚拟机之后)virsh setmem deepin1 512000 #给虚拟机设置内存大小virsh setvcpus deepin1 4 #给虚拟机设置cpu 个数  
qemu-img 是一个功能强制磁盘镜像管理工具
qemu-img --help 包括以下功能check 检查完整性create 创建镜像commit 提交更改compare 比较convert 转换info 获得信息map 映射snapshot 快照管理rebase 在已有的镜像的基础上创建新的镜像resize 调整大小amend 修订镜像格式选  
kvm 虚拟机的xml 配置文件说明
xml 配置文件也就是通常所说的虚拟机的描述文件,主要用来定义一个虚拟机的名称、uuid、cpu、内存、虚拟磁盘、网卡等各种参数设置
/etc/libvirt/qemu/ #配置文件默认路径
deepin.xml 配置文件说明:
deepin #虚拟机的名字16e9cb49-8b05-4b34-9325-3bcf169dd32e #uuid 值4194304 #虚拟机的最大内存4194304 #虚拟机当前的内存4 #该虚拟机的cpu 数hvm #hvm 表示全虚拟化 #hd 表示从硬盘启动。。。。。。。。。。/usr/bin/qemu-system-x86_64 #二进制模拟器设备的完整路径 #disk 是用来描述磁盘的主要容器 #指定磁盘上文件的绝对路径/etc/libvirt/qemu/deepin3.xml  
修改导出后的配置
vim /etc/libvirt/qemu/deepin3.xml
vim /etc/libvirt/qemu/deepin3.xmldeepin3 #新名称3d7f2197-8dad-473c-99af-0570cd02ae5c #新uuid 值4194304 #内存大小,单位kb4194304 #虚拟机分配的内存大小,单位kb2 #虚拟cpu 核数....... #新磁盘路径....... #虚拟机网络连接方式 #修改mac 地址 #当前主机网桥的名称.......  
确认结果
virsh list --all
定义新虚拟机
virsh define deepin3.xml
id name state------------------------ deepin2 shut off- deepin3 shut off #新虚拟机  
虚拟机快照建立的方式
快照(raw 格式的磁盘无法创建快照)
#qemu-img snapshot -l /kvm/img/test12.qcow2 #查看磁盘快照virsh snapshot-list test12 #查看快照virsh snapshot-create test12 #生成快照virsh snapshot-create-as test12 snap1 #自定义快照名virsh snapshot-revert test12 snap1 #快照恢复虚拟机virsh snapshot-delete test12 snapname #删除指定快照virsh snapshot-current test12  
项目实战
1. 使用命令行工具创建虚拟机
用法: virt-install --name name --memory mb storage install [options]
用途:从指定安装源创建新虚拟机。
示例
创建镜像文件
qemu-img create -f qcow2 -o size=20g /data/kvm/deepin-server3.qcow2  
通过cdrom 镜相引导安装系统:
virt-install -n deepin-server3 --vcpus 2 -r 4096 -c/home/yanght/iso/uniontechos-desktop-20-professional-1021_amd64.iso --disk/data/kvm/deepin-server3.qcow2,bus=virtio,size=20 --graphics vnc,listen=0.0.0.0 --networkbridge=virbr0,model=virtio  
2. 利用已有的虚拟机配置文件创建新的虚拟机
把deepin2 当做模板机,提取deepin2 的虚拟机磁盘、xml 配置文件
qemu-img info /var/lib/libvirt/images/deepin2.qcow2  
输出:
image: /var/lib/libvirt/images/deepin.qcow2file format: qcow2virtual size: 64g (68719476736 bytes) #虚拟机磁盘容量disk size: 8.1g #在kvm 服务器占用容量cluster_size: 65536format specific information:compat: 1.1lazy refcounts: truerefcount bits: 16corrupt: false  
复用deepin2 模板机的磁盘数据
qemu-img create -f qcow2 -b /var/lib/libvirt/images/deepin2.qcow2/var/lib/libvirt/images/deepin4.qcow2  
复制配置
cd /etc/libvirt/qemu/cp deepin2.xml deepin4.xml  
修改配置文件
vim deepin4.xml
deepin4 #新虚拟机名称da2478f0-abf0-11ea-a912-6f46e76df6b1 #新uuid 值 #文件类型 #磁盘类型 #新虚拟卷位置 #虚拟机的网络接口类型#删除mac 地址 #虚拟机的网卡的源网络名称  
根据配置文件定义虚拟机
virsh define /etc/libvirt/qemu/deepin4.xml  
查看所有虚拟主机
virsh list --all
id name state------------------------ deepin2 shut off- deepin4 shut off  
开启deepin 虚拟机
virsh start deepin4  
3. 使用命令行工具完成磁盘设备的热插拔
virsh attach-disk (添加磁盘设备)
用法:
attach-disk    [--targetbus ] [--driver ][--subdriver ] [--iothread ] [--cache ] [--io ] [--type ][--mode ] [--sourcetype ] [--serial ] [--wwn ] [--alias ][--rawio] [--address ] [--multifunction] [--print-xml] [--persistent] [--config] [--live][--current]  
示例:
1、用qemu-img 创建一块100g 的qcow2 硬盘
sourcefile=/data/kvm/deepin-server1-disk1.qcow2qemu-img create -f qcow2 $sourcefile 20g  
2、附加磁盘到指定虚拟机
domain=deepin-server1target=sdbvirsh attach-disk --domain $domain --source $sourcefile --target $target--subdriver qcow2 --config --live  
  target:一般为vdb,vdc…
–subdriver:这一项是必须的,如果不加的话,虚拟机不知道镜像文件的格式,挂载
就会失败。
virsh detach-disk (删除磁盘设备)
用法:
detach-disk   [--persistent] [--config] [--live] [--current] [--print-xml]  
示例:
virsh detach-disk deepinserver1 sdb  
输出:
disk detached successfully  


钢管配线的连接要求
小米长江基金入股广东微容电子
简要分析汽车前置发动机和后置发动机的工作原理和区别
区块链最典型的特点是什么
德国5G频谱拍卖正式结束德国电信支付了1.484亿欧元的最高金额
KVM虚拟机管理和基本使用
“智能、互联——赋能产业新发展”工博会亮相上海
浅析芯片技术在细胞治疗领域的作用
学生使用笔记本注意事项
英特尔计划将部分芯片外包给三星和台积电代工
2020年Q1,Samsung Memory以50%的收益份额主导智能手机存储芯片市场
亨通与德国莱尼合资的工厂已正式开始投产
iPhone12或掀换机超级周期 或因国内5G布局迅速
超高频四通道军标读写器的特点以及功能的介绍
苹果还是一台赚钱机器但创新力不足
掌握了这5个模拟电路你就是老司机了
TI公司三个高精度半桥驱动器_TIDA-01330设计图
魅族PRO7曝光:双曲面,8G运存,联发科10核
基于MSP430F1121单片机的Σ-ΔA/D转换器方案
RV减速器和谐波减速器的对比分析