虚拟化(KVM)

2023-05-16

虚拟化介绍

VMware Workstation就是虚拟化
虚拟化简单讲,就是把一台物理计算机虚拟成多台逻辑计算机,每个逻辑计算机里面可以运行不同的操作系统,相互不受影响,这样就可以充分利用硬件资源
关键词Hypervisor(VMM) 虚拟机管理器
虚拟化技术分为全虚拟化和半虚拟化
早期的CPU硬件不支持虚拟化,虚拟机上的操作系统(guestos)要想使用cpu资源,需要通过VMM来翻译指令,这个过程比较耗费资源,这种虚拟化技术叫做全虚拟化(VMware Workstation)
半虚拟化技术通过修改guestos内核,让guestos可以直接使用CPU资源,而不需要翻译指令了,从而节省了资源,但修改内核比较鸡肋(XEN)
后续cpu厂商直接支持虚拟化,不需要通过VMM翻译指令了,无所谓半虚拟化和全虚拟化
参考 http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html  http://itoedr.lofter.com/post/1472ba_69c62fa
 
常见虚拟化软件
VMware系列
•VMware workstation、VMware vsphere(VMware esxi)、VMware Fusion(Mac)
Xen 开源 半虚拟化
• XenServer 商业,厂商Ctirx,基于Xen的
• KVM 开源 基于linux内核模块
Hyper-V 商业,厂商微软
• Openvz 开源  基于linux 虚拟机和宿主机共用一个内核
• VirtualBox 开源  Sun公司开发  Oracle收购Sun
http://developer.huawei.com/ict/forum/thread-23385-1-1.html

 

虚拟化架构

88f073a10c4c2f8ed16879cd5433e848ff7.jpg

http://developer.huawei.com/ict/forum/thread-23385-1-1.html

 

KVM介绍

KVM是以色列初创公司Qumranet开发,2008年9月RedHat公司收购了Qumranet
KVM是Linux内核的一个模块,它把Linux内核变成了一个Hypervisor
KVM是完全开源的,RedHat基于KVM的虚拟化解决方案叫做RHEV
KVM在Linux操作系统里面以进程的形式出现,由标准的Linux调度程序进行调度,这使得KVM能够使用Linux内核的已有功能
只有一个KVM内核模块还不能实现虚拟化的全部功能,就好比操作系统只有内核还不能成为一个完整的操作系统一样
QEMU是一个开源的虚拟化软件,纯软件,可以虚拟化所以的硬件,性能不强
KVM基于QEMU开发了一个能够运行在用户空间的工具QEMU-KVM
磁盘、网络设备等都是通过QEMU-KVM这个工具模拟出来的
KVM和QEMU-KVM通信是通过/dev/kvm实现的
libvirt是用来管理KVM虚拟机的API,其命令为virsh
 
KVM架构图
 
 

Centos7上安装KVM

•前提是CPU支持虚拟化
• 虚拟机设置内存2G,增加一个50G的虚拟磁盘,处理器2核,虚拟化引擎两个虚拟化相关的选项打上对勾
• 关闭iptables或者firewalld
• 关闭selinux
• 格式化新磁盘,挂载到/kvm_data
[root@harry-02 ~]# mkfs.ext4 /dev/sdb
mke2fs 1.42.9 (28-Dec-2013)
[root@harry-02 ~]# mkdir /kvm_data
[root@harry-02 ~]# mount /dev/sdb /kvm_data/

vim /etc/fstab 添加如下内容:

/dev/sdb                                  /kvm_data               ext4    defaults        0 0 

• 下载一个centos7的镜像文件

• 检查cpu参数是否支持虚拟化 

安装kvm
yum install -y  virt-*  libvirt  bridge-utils qemu-img

 

配置网卡并安装centos7

•配置网卡,增加桥接网卡
• 设置一个br0网卡,TYPE为Bridge,IP地址设置为ens33的ip
• ens33配置文件里把IP地址去掉,增加BRIDGE=br0
[root@harry-02 network-scripts]# cat ifcfg-ens33 > ifcfg-br0
[root@harry-02 network-scripts]# vim ifcfg-br0
TYPE=Bridge //改为桥接
PROXY_METHOD=none
BOOTPROTO=staic
DEFROUTE=yes
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.31.138 //继续使用ens33的ip 
NETWASK=255.255.255.0
GATEWAY=192.168.31.2
DNS1=119.29.29.29

ZONE=

vim ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BOOTPROTO=staic
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
#IPADDR=192.168.31.138
#NETWASK=255.255.255.0
#GATEWAY=192.168.31.2
DNS1=119.29.29.29
BRIDGE=br0  //设置桥接到br0这块网卡上去 
ZONE=

• 检查KVM模块是否加载
lsmod|grep kvm
启动libvirtd服务
systemctl start  libvirtd
[root@harry-02 ~]# systemctl start libvirtd 
[root@harry-02 ~]# ps aux | grep libvirtd
root      10473  4.4  0.4 1006832 15488 ?       Ssl  13:23   0:00 /usr/sbin/libvirtd
root      10644  0.0  0.0 112724   984 pts/0    S+   13:23   0:00 grep --color=auto libvirtd
brctl show可以看到两个网卡br0和virbr0
[root@harry-02 ~]# brctl show 
bridge name	bridge id		STP enabled	interfaces
br0		8000.000c29522647	no		ens33
virbr0		8000.525400367e29	yes		virbr0-nic

命令行安装centos7
virt-install --name=aminglinux01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-17081.iso --disk path=/kvm_data/aminglinux01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial  --extra-args="console=tty0 console=ttyS0"

 

虚拟机管理

安全完虚拟机需要重启,要退出虚拟机使用快捷键ctrl ]

•ps aux |grep kvm //查看kvm进程
• virsh list //查看虚拟机列表,只能看到运行的虚拟机
• virsh list --all //查看虚拟机列表,包括未运行的虚拟机
• virsh console aminglinux01//进入指定虚拟机
• virsh shutdown aminglinux01 //关闭虚拟机
• virsh start aminglinux01 //开启虚拟机
• virsh destroy aminglinux01//类似stop,这个是强制停止
• virsh undefine aminglinux01//彻底销毁虚拟机,会删除虚拟机配置文件,virsh list --all就看不到了
/etc/libvirt/qmeu/ #虚拟机的配置文件
• ls /etc/libvirt/qemu/  //可以查看虚拟机配置文件
• virsh autostart aminglinux01//宿主机开机该虚拟机也开机
• virsh autostart --disable aminglinux01//解除开机启动
• virsh suspend aminglinux01//挂起

 virsh resume aminglinux01//恢复

 

克隆虚拟机

virsh shutdown aminglinux01
virt-clone  --original aminglinux01 --name aminglinux02 --file /kvm_data/aminglinux02.img
• --original指定克隆源虚拟机
• --name指定克隆后的虚拟机名字
• --file指定目标虚拟机的虚拟磁盘文件
如果aminglinux01虚拟机开机状态,则提示先关闭或者暂停虚拟机
 

快照管理

创建快照  virsh snapshot-create aminglinux01
raw格式的虚拟磁盘不支持做快照,qcow2支持
• qemu-img info /kvm_data/aminglinux01.img //查看aminglinux01.img信息,同时会查看到快照列表
• virsh snapshot-list aminglinux01 //列出所有快照
• virsh snapshot-current aminglinux01//查看当前快照版本
• ls /var/lib/libvirt/qemu/snapshot/aminglinux01//查看所有快照配置文件
• virsh snapshot-revert aminglinux01 1513440854//恢复指定快照
• virsh snapshot-delete aminglinux01  1513440854//删除快照
 
磁盘格式
虚拟磁盘常用格式raw、qcow2
• qemu-img info /kvm_data/aminglinux01.img//查看虚拟磁盘格式
• qemu-img create -f raw /kvm_data/aminglinux01_2.img 2G//创建2G的raw格式磁盘
把raw格式的磁盘转换为qcow2格式
• qemu-img convert -O qcow2 /kvm_data/aminglinux01_2.img /kvm_data/aminglinux01_2.qcow2
• 转换后用ls -lh查看磁盘文件的大小,可以看到qcow2文件比较小,raw文件大小和我们指定空间大小一样是2G
• raw格式的磁盘性能比qcow2要好,但是raw格式的磁盘无法做快照
给aminglinux02转换为raw格式的磁盘
• virsh shutdown aminglinux02
• qemu-img convert -O raw /kvm_data/aminglinux02.img /kvm_data/aminglinux02_3.raw
• virsh edit aminglinux02//更改格式和文件路径
• virsh start aminglinux02
 
磁盘扩容 – raw格式
qemu-img resize /kvm_data/aminglinux02_3.raw +2G
qemu-img info /kvm_data/aminglinux02_3.raw
virsh destroy aminglinux02
virsh start aminglinux02
virsh console aminglinux02
fdisk -l 查看磁盘情况,并分新的分区
除了对已有磁盘扩容外,还可以额外增加磁盘
qemu-img create -f raw /kvm_data/aminglinux02_2.raw 5G
virsh edit aminglinux02 // 增加<disk>…</disk>,注意更改source、target、slot
virsh destroy aminglinux02
virsh start aminglinux02
 
磁盘扩容 – qcow2格式
qemu-img resize /kvm_data/aminglinux01.img +2G
若提示qemu-img: Can't resize an image which has snapshots,需要删除快照
qemu-img info /kvm_data/aminglinux01.img
virsh destroy aminglinux01
virsh start aminglinux01
virsh console aminglinux01
fdisk -l 查看磁盘情况,并分新的分区
除了对已有磁盘扩容外,还可以额外增加磁盘
qemu-img create -f qcow2 /kvm_data/aminglinux01_2.img 5G
virsh edit aminglinux01 //增加<disk>…</disk>,注意更改source、target、slot
virsh destroy aminglinux01

virsh start aminglinux01

调整cpu、内存、网卡

virsh dominfo aminglinux01 //查看配置

•virsh edit aminglinux01//更改如下部分内容

<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static' current='1'>2</vcpu>
virsh shutdown aminglinux01
virsh start aminglinux01
virsh setmem aminglinux01 800m//动态调整内存
virsh dumpxml aminglinux01 > /etc/libvirt/qemu/aminglinux01.xml//需要把配置写入到配置文件里
 
• virsh setvcpus aminglinux01 2 //动态调整cpu数量
• virsh domiflist aminglinux01//查看网卡
• virsh attach-interface aminglinux01 --type bridge  --source virbr0//增加一块新的网卡,并设置为nat网络模式(virbr0类似vmware的vmnet8),这里如果写--source br0,则网络模式为桥接
• virsh dumpxml aminglinux01 > /etc/libvirt/qemu/aminglinux01.xml//需要把配置写入到配置文件里
 

迁移虚拟机

该方式要确保虚拟机是关机状态
• virsh shutdown aminglinux01
• virsh dumpxml aminglinux01 > /etc/libvirt/qemu/aminglinux03.xml  // 如果是远程机器,需要把该配置文件拷贝到远程机器上
• virsh domblklist aminglinux01  //查看虚拟机磁盘所在目录
• rsync -av /kvm_data/aminglinux01.img  /kvm_data/aminglinux03.img  //如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上
• vi /etc/libvirt/qemu/aminglinux03.xml  //因为是迁移到本机,配置文件用的是aminglinux01子机的配置,不改会有冲突,所以需要修改该文件,如果是
远程机器不用修改
• 修改domname:   <name>aminglinux03</name>
• 修改uuid(随便改一下数字,位数不要变)
• 修改磁盘路径
• virsh define /etc/libvirt/qemu/aminglinux03.xml //定义新虚拟机
• virsh list --all   //会发现新迁移的aminglinux03子机

转载于:https://my.oschina.net/u/3993226/blog/3036339

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

虚拟化(KVM) 的相关文章

  • 虚拟化(KVM)

    虚拟化介绍 VMware Workstation就是虚拟化 虚拟化简单讲 xff0c 就是把一台物理计算机虚拟成多台逻辑计算机 xff0c 每个逻辑计算机里面可以运行不同的操作系统 xff0c 相互不受影响 xff0c 这样就可以充分利用硬
  • 24 KVM管理虚拟机-配置VNC-TLS登录

    文章目录 24 KVM管理虚拟机 配置VNC TLS登录 24 1 概述 24 2 操作步骤 24 KVM管理虚拟机 配置VNC TLS登录 24 1 概述 VNC服务端和客户端默认采用明文方式进行数据传输 因此通信内容可能被第三方截获 为
  • KVM实战入门之Libvirt

    环境说明 本实验在VMware的centos6 7 x64进行的 1 VMware配置 如果不能勾上则不能继续进行 解决办法 重新创建VMware虚拟机 到这一步 自定义 能勾上了 创建虚拟机后即可下一步 2 查看Linux环境 查看是否支
  • qemu-system-x86_64方式创建KVM虚拟机

    一 QEMU介绍 QEMU是一款高效而实用的模拟器及虚拟机监管器 Virtual Machine Monitor VMM 主要提供两种功能给用户使用 一是作为用户态模拟器 利用动态代码翻译机制来执行不同于主机架构的代码 二是作为虚拟机监管器
  • CentOS 7 virt-install 命令行方式(非图形界面)安装KVM虚拟机

    环境及网卡配置请参考 https blog csdn net mshxuyi article details 98305715 创建镜像目录 mkdir p home vms virt install 配置文件 virt install n
  • 23 KVM管理虚拟机-使用VNC密码登录虚拟机

    文章目录 23 KVM管理虚拟机 使用VNC密码登录虚拟机 23 1 概述 23 2 前提条件 23 3 操作步骤 23 KVM管理虚拟机 使用VNC密码登录虚拟机 本章介绍使用VNC密码登录虚拟机的方法 23 1 概述 当虚拟机操作系统安
  • Proxmox VE(PVE) 进行网卡直通

    文章目录 我的设备 介绍 添加CPU支持 开启iommu 查询网卡信息 Intel CPU AMD CPU 新增所需模块 添加PCI设备 命令模式添加 web页面模式添加 验证IOMMU有效 IOMMU中断重映射 查看中断重映射 启用中断重
  • 虚拟化KVM

    什么是虚拟化 在计算机技术中 虚拟化是一种资源管理技术 是将计算机的各种实体资源 CPU 内存 磁盘空间 网络适配器等 予以抽象 转换后呈现出来并可供分割 组合为一个或多个计算机配置环境 并重新分割 重新组合 已达到最大化合理利用物理资源的
  • KVM学习(一)vnc连接

    完整流程Windows连接CentOS7 这个KVM系列是我的本科毕业设计 边学边做 长期更新 1 安装vncserver 首先看下实验环境 windows上跑的vmware虚拟机 vncserver安装在虚拟机上 虚拟机已经安装好了gno
  • kvm虚拟化技术

    前言 kvm是一种虚拟化技术 使用 概念 kvm是linux内核的模块 它需要CPU支持 采用硬件辅助虚拟化技术Intel VT AMD V 内存的相关技术如Intel的EPT和AMD的RVI 是底层虚拟化内核模块 检查cpu是否支持虚拟化
  • 33 KVM管理设备-配置虚拟机PCIe控制器

    文章目录 33 KVM管理设备 配置虚拟机PCIe控制器 33 1 概述 33 2 配置PCIe Root PCIe Root Port和PCIe PCI Bridge 33 2 1 简化配置方法 33 2 1完整配制方法 33 KVM管理
  • 再论KVM超量使用

    转载自 http www sohu com a 111248295 251444 KVM超量使用一直是热门话题 前段时间发的文章 群讨论 虚拟机能否使用32个CPU 又引去了群友的激烈讨论 本文为群友根据自己的经验总结投稿 感谢这位热心的群
  • KVM-6、virsh 命令及功能详解

    1 虚拟机管理操作 attach device 从XML文件附加设备 attach disk 附加磁盘设备 attach interface 连接网络接口 autostart 自动启动一个域 blkdeviotune 设置或查询块设备I O
  • Linux 桌面虚拟化技术 KVM

    KVM 是 Kernel based Virtual Machine 的简称 是一个开源的系统虚拟化模块 自Linux 2 6 20之后集成在Linux的各个主要发行版本中 它使用Linux自身的调度器进行管理 所以相对于Xen 其核心源码
  • 使用VMware完成KVM虚拟化实验并运行Centos

    本次实验在VMware中的Ubuntu18内安装KVM并运行centos 首先 在VMware下开启虚拟化 更新软件索引 apt get update 安装依赖 apt get install qemu kvm qemu virt mana
  • KVM和QEMU

    原文地址 KVM和QEMU 作者 embeddedlwp 目录 1 硬件虚拟化技术背景 2 KVM的内部实现概述 2 1 KVM的抽象对象 2 2 KVM的vcpu 2 3 KVM的IO虚拟化 2 3 1 IO的虚拟化 2 3 2 Virt
  • kvm虚拟机vnc和spice配置

    一 简介 通过vnc或spice方式访问虚拟主机上的KVM虚拟机 可以直接通过图形化界面virt manager来设置 但此处通过xml配置文件修改 二 详解 1 VNC方式访问 vnc方式访问虚拟机不是在kvm虚拟机安装配置vnc服务器
  • 当 KVM-QEMU 打开时,Intel-PT 不记录任何数据包

    我尝试在主机上使用 Intel PT 同时在客户机上运行通用软件程序 所以我期望主机中运行的 Intel PT 将记录所有相关数据包 如 PIP FUP TSC 等 以及所有基于 VM 的数据包 如 VMCS 我使用以下命令 perf kv
  • Android 模拟器和 OpenGL ES3:EGL_BAD_CONFIG

    我正在运行一个Android 虚拟设备 https developer android com studio run managing avds html在我的 Ubuntu 主机上 它使用 CPU ABI Intel Atom x86 我
  • qemu KVM内核模块没有这样的文件或目录

    我目前正在上操作系统课程 我需要使用 qemu 来运行我的教授提供的一个小型操作系统 我正在尝试在 MacBook Air 5 2 上的 virtualbox 上的 ubuntu 12 04 虚拟机中使用 qemu 我知道我遇到的问题可能与

随机推荐