kvm虚拟化

2023-05-16

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide/index

https://docs.openstack.org/image-guide/obtain-images.html

http://cloud.centos.org/

http://cloud-images.ubuntu.com/

什么是虚拟化?

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率

虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

为什么要用虚拟化?

512G 内存,4路 8核16线程 cpu,12* PCI-E 1T的SSD;ntp服务,资源浪费,10 tomcat多实例,6个数据库,2个Hadoop

既不想资源浪费,服务的安全隔离性,虚拟化

场景1:同一台物理机运行多个php版本
场景2:机房的迁移,解决了硬件和系统的依赖
场景3:openstack环境,软件发布体检
场景4:开发环境和测试环境,使用虚拟化
场景5:业务的快速部署

虚拟化:提高了资源的利用率,服务的安全性隔离,解决了系统和硬件之间的依赖

在这里插入图片描述

虚拟化引擎

1、vmware esxi : x86

2、Hyper-v

3、xen

4、kvm

QEMU与KVM

QEMU是一个开源项目,实际就是一台硬件模拟器,可以模拟许多硬件,包括x86架构处理器、AMD64架构处理器等

QEMU的好处是因为是纯软件模拟,所以可以在支持的平台模拟支持的设备

QEMU的缺点是因为是纯软件模拟,所以非常慢

kvm只是一个内核模块,只提供CPU和内存,使用qemu模拟器模拟IO设备(磁盘、网卡)

KVM虚拟机=KVM内核模块+QEMU模拟器

在这里插入图片描述

Libvirt 与KVM

Libvirt是一套开源的虚拟化管理工具,主要由3部分组成

一套API的lib库,支持主流的编程语言,包括C、python、Ruby等

libvirtd服务

命令行工具virsh

libvirt可以实现对虚拟机的管理,比如虚拟机的创建、启动、关闭、暂停、恢复、迁移、销毁,以及虚拟机网卡、硬盘、CPU、内存等多种设备的热添加

kvm虚拟化软件的安装

Kernel-based Virtual Machine

查看硬件是否支持虚拟化

egrep 'vmx|svm' /proc/cpuinfo

yum install libvirt* virt-* qemu-kvm* -y
yum install qemu-kvm libvirt virt-install virt-manager bridge-utils

KVM:Kernel-based Virtual Machine

libvirt 作用:虚拟机的管理软件
virt virt-install virt-clone 作用:虚拟机的安装和克隆
qemu-kvm qemu-img 作用:复制管理虚拟机的磁盘

虚拟化软件:
qemu 软件纯模拟全虚拟化软件,特别慢!
xen(半) 性能特别好,需要使用专门修改之后的内核
KVM 全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核

安装一台kvm虚拟机

分发软件TightVNC或者VNC Viewer 4.exe


systemctl start libvirtd.service
systemctl status libvirtd.service

建议虚拟机内存不要低于1024M

nat模式(default)

virt-install --os-type=linux --os-variant rhel7 --name centos7 --memory 1024,maxmemory=2048 --vcpus 1,maxvcpus=8 --disk /opt/centos2.qcow2,format=qcow2,size=10 --cdrom /opt/CentOS-7-x86_64-Minimal-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
--virt-type qemu

桥接

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024,maxmemory=2048 --vcpus 1,maxvcpus=8 --disk /opt/centos2.qcow2,format=qcow2,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

raw:10G 不支持做快照,性能好

qcow2: 支持快照

添加多块网卡

–network bridge=br0 --network bridge=br1

退出vnc全屏

ctrl + alt +shift +f

kvm虚拟机的virsh日常管理和配置

列表list

virsh list --all

开机start

virsh start centos7

关机shutdown

virsh shutdown centos7

拔电源关机destroy

virshdestroy centos7

导出配置dumpxml

/etc/libvirt/qemu/centos7.xml

virsh dumpxml centos7 >centos7-off.xml

删除虚拟机undefine

推荐:先destroy,在undefine

virsh undefine centos7

导入虚拟机define

virsh define centos7.xml

修改配置edit

virsh edit centos7

重命名domrename

**关机执行**virsh domrename centos7 web01

挂起suspend

suspend web01

恢复resume

resume web01

查询vnc端口号vncdisplay

virsh vncdisplay web01

kvm虚拟机随虚拟化软件自启动

virsh autostart web01

kvm虚拟机关闭自启动

virsh autostart --disable web01

console登录

**kvm虚拟机****中执行**
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot

宿主机连接kvm虚拟机

virsh console web01

退出kvm虚拟机

ctrl+]

kvm虚拟机虚拟磁盘格式转换和快照管理

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /data/oldboy.qcow2,format=qcow2,size=10 --cdrom /data/CentOS-7.2-x86_64-DVD-1511.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

raw:裸格式,占用空间比较大,不支持快照功能,性能较好,
qcow2:cow (copy on write)占用空间小,支持快照,性能比raw差一点

查看磁盘文件信息

qemu-img info  test.qcow2

创建一块qcow2格式的虚拟硬盘

qemu-img create -f qcow2 test.qcow2 2G

磁盘扩容

qemu-img resize test.qcow2 8G
qemu-img resize test.qcow2 +1G

raw转qcow2

convert [-f fmt] [-O output_fmt] filename output_filename

qemu-img convert -f raw -O qcow2  oldboy.raw   oldboy.qcow2
virsh edit centos7                                       
<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/oldboy.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='
0x0'/>
</disk>

创建快照

virsh snapshot-create centos7

查看快照

virsh snapshot-list centos7

还原快照

virsh snapshot-revert centos7 --snapshotname 1516574134

删除快照

virsh snapshot-delete centos7 --snapshotname 1516636570

kvm虚拟机克隆

kvm虚拟机完整克隆

virt-clone --auto-clone -o centos7 -n web

a:拷贝虚拟机磁盘文件

b:生成虚拟机的配置文件

  <name>49-web03</name>
  <uuid>8e505e25-5175-46ab-a9f6-feaa096daaa4</uuid>
  <source file='/opt/49-web03.qcow2'/>
  <mac address='52:54:00:4e:5b:89'/>

c:导入虚拟机并进行启动测试

kvm链接克隆

1.基于源磁盘文件,创建链接磁盘文件

qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2

2.导入虚拟机并进行启动测试

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name 49-web04 --memory 1024 --vcpus 1 --disk /opt/49-web04.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

https://docs.openstack.org/image-guide/obtain-images.html

http://cloud.centos.org/

http://cloud-images.ubuntu.com/

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/CentOS-7-x86_64-GenericCloud-1811.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

kvm虚拟机的桥接网络

1、virsh iface-bridge eth0 br0

2、

virsh edit centos7
    <interface type='bridge'>
      <mac address='52:54:00:55:aa:fa'/>
      <source bridge='br0'/>

在宿主机上,重启虚拟机生效

3、修改kvm虚拟机的ip
/etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.111
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=223.5.5.5

修改默认(default)网络

查看

virsh # net-list
Name                 State      Autostart     Persistent
----------------------------------------------------------
default              active     yes           yes

编辑

net-edit default

停止

net-destroy default

启动

net-start  default

kvm虚拟机在线热添加硬盘

创建磁盘

qemu-img create -f qcow2 add01.qcow2 5G

添加磁盘

virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2

摘除磁盘

virsh detach-disk centos7 vdb

虚拟机磁盘扩容

1、在kvm虚拟机,umount

2、摘除磁盘

virsh detach-disk centos7 vdb

3、扩容

qemu-img resize /data/centos7-add01.qcow2 +5G

4、添加磁盘

virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2
5、在虚拟机中
xfs_growfs /dev/vdb

根分区扩容

1、**在宿主机上关闭虚拟机并调整虚拟机磁盘大小**
qemu-img resize oldboy.qcow2 +10G
2、虚拟机中fdisk重新分区(删除旧分区,新建分区)
fdisk /dev/vda
3、**重启之后,执行**
xfs_growfs /dev/vda1#自动扩展XFS文件系统到最大的可用大小

如果虚拟机磁盘文件系统是ext4

resize2fs /dev/vda1

热操作网卡

永久添加

virsh attach-interface web01 --type bridge --source br0 --model virtio --config

临时添加

virsh attach-interface web01 --type bridge --source br0 --model virtio

删除网卡

detach-interface web01 --type bridge --mac 52:54:00:1e:79:47

热操作内存、CPU

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /opt/centos2.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /opt/centos2.qcow2 --boot hd --network bridge=br0 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

热调整内存

virsh setmem web02 1024M --live --config

热操作cpu(只能增加

virsh setvcpus web02 6 --live --config

kvm虚拟机热迁移

1:两边的环境(桥接网卡)
2:实现共享存储(nfs)
3:虚拟机桥接网络

4:在线热迁移
本机 虚拟机 web03 迁移到 10.0.0.12

virsh migrate web03 qemu+ssh://10.0.0.12/system --live --unsafe

5:图形界面、vnc服务端、virt-manager

yum groups install "GNOME Desktop"
yum install tigervnc-server.x86_64 virt-manager
yum install openssh-askpass.x86_64

6:启动vnc和停止vnc

vncserver  :0
vncserver  -kill  :0

exsi虚拟机迁移

ova文件转换为qcow2文件

yum install virt-v2v
virt-v2v -i ova centos.ova -o local -os /data/test1 -of qcow2

p2v迁移(物理机到kvm虚拟机的迁移)

http://blog.csdn.net/tantexian/article/details/42869179

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

kvm虚拟化 的相关文章

  • KVM虚拟机创建功能详细讲解

    KVM虚拟机创建功能详细讲解 一 KVM虚拟机创建的用户操作 对于用户或者管理员来说 xff0c 虚拟机的创建有着很多的方法 xff0c 例如 xff1a kvm自带命令行工 具 使用virsh命令来创建 使用具有图形界面的virt man
  • KVM虚拟机使用桥接方式时和宿主机无法通信的解决方案

    KVM虚拟机使用桥接方式时和宿主机无法通信的解决方案 应用场景 虚拟机客户机安装完成后 xff0c 需要为其设置网络接口 xff0c 以便和主机网络 xff0c 客户机之间的网络通信 事实上 xff0c 如果要在安装时使用网络通信 xff0
  • kvm的快照功能 (二、基于libvirt的快照)

    实例二 利用libvirt使用快照 virsh snapshot create domain name 一 创建虚机快照 名字自动生成 可在开机 关机 suspend等各种状态下做 virsh snapshot create test Do
  • 虚拟机隔离和容器隔离机制及区别

    1 虚拟机隔离机制 通过虚拟化技术虚拟出资源完全独立的的主机 支持虚拟化的层是hypervisor hypervisor是一种虚拟化服务器的软件 2 Docker容器的隔离机制 Docker利用Namespace实现系统环境隔离 采用Cgr
  • 10 KVM虚拟机配置-虚拟CPU和虚拟内存

    文章目录 10 KVM虚拟机配置 虚拟CPU和虚拟内存 10 1 概述 10 2 元素介绍 10 3 配置示例 10 KVM虚拟机配置 虚拟CPU和虚拟内存 10 1 概述 本节介绍虚拟CPU和虚拟内存的常用配置 10 2 元素介绍 vcp
  • KVM同步脏页原理

    文章目录 硬件基础 SPTE 硬件要素 工作流程 PML 硬件要素 工作流程 数据结构 用户态 内核态 API 脏页开启 脏页获取 流程 使能记录 记录脏页 流程图 具体过程 获取脏页 流程图 具体过程 实验 QEMU在内存迁移阶段首先会标
  • 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虚拟化技术

    目录 10 1 kvm简介 10 2 在CentOS 7 图形化界面下安装KVM 使用IDEA开发读写MySQL数据库程序 实验目的 了解 CentOS7图形化界面的部署方法 了解 KVM的组成和作用 了解 KVM的技术架构 了解KVM的安
  • KVM源代码分析1:基本工作原理

    http www oenhan com kvm src 1 13年的时候准备挖 KVM源代码分析 的坑 陆陆续续2年过去了 坑也没有填上 当时是因为对KVM了解的肤浅 真正的理解必然要深入到代码级别 所谓 摈弃皮毛 看到血肉 看到真相 当时
  • Xen、QEMU 和 KVM 之间有什么区别?

    我知道Xen使用QEMU 而KVM是QEMU的一个分支 那么 KVM 包括 Xen 添加到 QEMU 中吗 是什么名字 Thanks QEMU 是一个功能强大的模拟器 这意味着它可以模拟多种处理器类型 Xen 使用 QEMUHVM http
  • Android Studio:/dev/kvm 设备权限被拒绝

    当我尝试在模拟器上运行 Android 应用程序时 出现以下错误 dev kvm 权限被拒绝 我检查了权限并将当前登录的用户添加到 kvm 组中 怎么了 正如评论中提到的 从乌班图18 04 and Linux 薄荷塔拉你需要先sudo a
  • Android模拟器和virtualbox不能同时运行

    每当我运行 Virtualbox 时 我都无法启动 Android 模拟器映像 反之亦然 AVD管理器中的错误消息是 ioctl KVM CREATE VM failed Device or resource busy ko failed
  • 虚拟机上奇怪的程序延迟行为

    我编写了一个程序来读取 256KB 数组以获得 1 毫秒的延迟 该程序非常简单并附带 然而 当我在Xen上的VM上运行它时 我发现延迟不稳定 它具有以下模式 时间单位是ms totalCycle CyclePerLine totalms 2
  • qemu KVM内核模块没有这样的文件或目录

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

    我有一个自己的 nginx 配置 home ubuntu workspace web conf由脚本生成 我更喜欢把它放在下面 etc nginx conf d除了default conf 下面是nginx yaml apiVersion
  • qemu kvm:如何获取性能监控中断?

    我在操作系统内核中编写了一些函数 以便在指令计数器溢出时发出性能监控中断 PMI 它在我的机器 Intel core i5 上运行良好 但是当我使用 qemu 在 qemu 上运行它时 qemu system x86 64 enable k
  • 如何获取文件夹的大小,包括稀疏文件的表观大小? (du太慢了)

    我有一个包含很多KVM qcow2文件的文件夹 它们都是稀疏文件 现在我需要获取文件夹的总大小 qcow2 文件大小应计为表观大小 而不是实际大小 例如 图片 c9f38caf104b4d338cc1bbdd640dca89 qcow2 文

随机推荐

  • mysql group by 报错Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated c

    当使用group by的语句中 xff0c select后面跟的列 xff0c 在group by后面没有时 xff0c 会报以下错误 xff1a Expression 2 of SELECT list is not in GROUP BY
  • Opencv快速入门(C++版),新手向

    Opencv快速入门 C 43 43 版 xff09 前言1 图像的读取与显示所使用的API接口 xff1a 代码演示 xff1a 2 图像色彩空间转换所使用的API接口 xff1a 代码演示 xff1a 3 图像对象的创建与赋值所使用的A
  • 前台解析jwt token 前后端分离 ant design pro

    前言 在如今得环境下 xff0c 越来越多得项目采用微服务 xff0c 前后端分离项目 优点在于同时开发 xff0c 分开部署 缺点在于需要约定的太多 xff0c 导致前后端联调产生分歧 就标题而言 xff0c 解决前端antd 接收后台返
  • win10 双击启动nacos报错 Unable to start web server...... Unable to start embedded Tomcat

    1 遇到的问题 win10双击启动nacos报错 2 分析 从启动cmd开始查看 发现 启动模式为集群模式 定位成功 3 解决 修改startup中启动模式 重新启动 成功
  • IDEA 远程debugger SpringBoot项目 超赞!!!

    如题哦 xff0c 项目发布到服务器上后 xff0c 每天被不同的bug所困扰 强大的idea超出你的想象 xff0c 强大到可以远程debugger xff0c 就和在本地一样一样的 进入正题 前提概要 线上即服务器代码必须与本地一致 x
  • git提交时 # Please enter the commit message for your changes. Lines starting # with ‘#‘ will be ignored

    问题 xff1a Please enter the commit message for your changes Lines starting with 39 39 will be ignored and an empty message
  • canal 修改配置信息后监听不到mysql数据并报错can‘t find start position for example

    原由 xff1a 数据库地址变化 canal 需要修改监听 问题 xff1a 修改配置信息后重启canal 但并无监听到数据库信息变化 分析 xff1a canal 与数据库之间断层 xff0c 导致信息传输失败 解决 xff1a xff0
  • AI那点事儿

    从古至今 xff0c 改朝换代 一代崛起 xff0c 就标志着一代的灭亡 AI的兴起 xff0c 让无数程序梦想客死他乡 无论是学者还是技术科研者 xff0c 无一不在说 xff0c AI的时代到了 然而 xff0c 我们扣心自问 xff0
  • win7 配置JDK环境变量

    第一步 xff1a 安装jdk 8u101 windows x64 exe xff0c 路径为默认路径 xff0c 一直下一步直到完成安装 安装最好不要修改安装路径 xff0c 防止自己找不到 第二步 xff1a 设置环境变量 xff1a
  • 完整的搭建内网穿透ngrok详细教程(有图有真相)

    如上 网上找到的都是不稳定的 还不如自己搭建一个 去问度娘了 xff0c 发现了一堆 好吧 xff0c 那就动手开干吧 准备工作 xff08 其实也是硬性条件 xff09 xff1a 1 服务器一台 2 备案域名一个 xff08 好多都说可
  • lsyncd-实时同步(镜像)守护程序

    E mail 1226032602 64 qq com 官方文档 https axkibe github io lsyncd https github com axkibe lsyncd 简介 Lsyncd使用文件系统事件接口 xff08
  • Dockerfile

    docker安装 yum span class token function install span y yum utils device mapper persistent data lvm2 span class token func
  • c51单片机学习笔记-LED闪烁编程

    目的 xff1a 使LED灯闪烁 xff0c 需循环让 D1 指示灯先亮一会后熄灭 xff0c 因此只需编写一个循环函数 xff0c 专门在那循环运行即可实现延时功能 编译软件 xff1a keil5 过程 1 书写延时函数 函数名 xff
  • 网络管理命令-nmcli

    网络管理工具 iproute 软件包包括 ip ss 命令 net tools软件包包括 ifconfig route netstat命令 ip 命令相当于之前的 ifconfig route ss 命令相当于之前的 netstat nmt
  • nginx

    本文作者 五行哥 QQ 1226032602 E mail 1226032602 64 qq com web服务器种类 apache nginx tomcat resin Lighttpd IIS WebLogic Jetty Node j
  • kubernetes ingress

    https kubernetes io docs concepts services networking ingress 负载均衡软件 NginxTraefikEnvoy https github com kubernetes ingre
  • kubernetes configMap secret

    配置容器化应用的方式 自定义命令行参数把配置文件直接焙进镜像环境变量 cloud native的应用程序一般可直接通过环境变量加载配置通过entrypoint脚本来预处理变量 存储卷 configMap 配置中心 pod从configMap
  • 运维精华面试题

    一 基本概念 1 常见的Linux发行版本都有什么 xff1f 你最擅长哪一个 xff1f 它的官网网站是什么 xff1f 说明你擅长哪一块 xff1f 常见的Linux发行版本有Redhat Centos Debian Ubuntu Su
  • K8S集群监控 Prometheus

    Prometheus xff08 普罗米修斯 xff09 是一个最初在SoundCloud上构建的监控系统 xff0c 自2012年成为社区开源项目 xff0c 拥有非常活跃的开发人员和用户社区 xff0c 为强调开源及独立维护 xff0c
  • kvm虚拟化

    https access redhat com documentation zh cn red hat enterprise linux 7 html virtualization getting started guide index h