当前位置: 首页 > news >正文

kvm+qemu+libvirt管理虚机

virt-manager 图形化创建虚拟机

#virt-manager纳管远程kvm虚拟机
# 可以指定kvm虚机的ssh端口和virt-manager所在主机的私钥
virt-manager -c 'qemu+ssh://root@10.197.115.17:5555/system?keyfile=id_rsa' --no-fork
# 如果你生成的ssh-key 的名称是 test-key,在/home/ssh-key/ 目录中,并保持了默认的 22 端口,则为:
virt-manager -c 'qemu+ssh://root@10.197.115.17/system?keyfile=/home/ssh-key/test-key' --no-fork

在这里插入图片描述

virt-install 命令行创建虚拟机(安装操作系统可选择vnc连接5910端口进行安装)

#virt-install是使用libvirt库构建虚机的命令行工具,使用了串行控制台(sdl\vnc客户端)来支持图形化安装
virt-install --name=kvm --ram=2048 --vcpus=2 --disk path=/root/kvm/centos01.img,size=20,bus=virtio --accelerate --cdrom /root/iso/CentOS-7-x86_64-Minimal-1810.iso --vnc --vncport=5910 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio --noautoconsole
--name #虚拟机名称
--ram #分配给虚拟机的内存,单位MB
--vcpus #分配给虚拟机的cpu个数
--cdrom #指定CentOS镜像ISO文件路径
--disk #指定虚拟机raw文件路径
--size #虚拟机文件大小,单位GB
--bus #虚拟机磁盘使用的总线类型,为了使虚拟机达到好的性能,这里使用virtio
--cache #虚拟机磁盘的cache类型
--network bridge #指定桥接网卡
--model #网卡模式,这里也是使用性能更好的virtio
#virt-install 子命令缩写
-n --name= 客户端虚拟机名称
-r --ram= 客户端虚拟机分配的内存
-u --uuid= 客户端UUID 默认不写时,系统会自动生成
--vcpus= 客户端的vcpu个数
-v --hvm 全虚拟化
-p --paravirt 半虚拟化
-l --location=localdir 安装源,有本地、nfs、http、ftp几种,多用于ks网络安装
--vnc 使用vnc ,另有--vnclient=监听的IP  --vncport =VNC监听的端口
-c --cdrom= 光驱 安装途径
--disk= 使用不同选项作为磁盘使用安装介质
-w NETWORK, --network=NETWORK 连接客户机到主机网络 
-s --file-size= 使用磁盘映像的大小 单位为GB
-f --file= 作为磁盘映像使用的文件
--cpuset=设置哪个物理CPU能够被虚拟机使用
--os-type=OS_TYPE 针对一类操作系统优化虚拟机配置(例如:‘linux’,‘windows’)
--os-variant=OS_VARIANT 针对特定操作系统变体(例如’rhel6’, ’winxp’,'win2k3')进一步优化虚拟机配置
--host-device=HOSTDEV 附加一个物理主机设备到客户机。HOSTDEV是随着libvirt使用的一个节点设备名(具体设备如’virsh nodedev-list’的显示的结果)
--accelerate KVM或KQEMU内核加速,这个选项是推荐最好加上。如果KVM和KQEMU都支持,KVM加速器优先使用。
-x EXTRA, --extra-args=EXTRA 当执行从"--location"选项指定位置的客户机安装时,附加内核命令行参数到安装程序
--nographics "virt-install" 将默认使用--vnc选项,使用nographics指定没有控制台被分配给客户机

virsh的libvirt的命令行管理工具

virsh define test.xml  # 通过xml文件创建虚机,此时虚机未启动
virsh create test.xml  # 创建虚机
virsh edit test  # 修改现有的虚机xml定义文件
virsh destroy test  # 关闭虚拟机
virsh undefined test  # 删除虚机的xml定义定义文件,磁盘文件不会删除
virsh list --all  # 列出所有的虚机,包括关机状态的
virsh start domain  # 启动虚机并查看状态
virsh autostart domain # 设置虚机自启动
virsh vncdisplay  domain  # 查看虚机的vnc端口,一版进行操作系统的安装
virsh console domain  # 连接虚机
virsh net-list  # 查看网络
virsh net-start default # 开启网络将启用一个网桥virbr0,iptables规则、dnsmasq、dhcp

qemu相关命令

# qemu-img用于创建空的镜像文件
qemu-img create -f qcow2  test.qcow2  20G
# 镜像转换
qemu-img convert -c -O qcow2  image  result.img
# 修改磁盘大小(增加10G)
qemu-img   resize  test.qcow2  +10G

虚拟机xml文件

<domain type='kvm'>#域类型<name>test</name> #虚拟机的名字,由字母和数字组成,不能包含空格<memory unit='GiB'>8</memory> #在不reboot guest的情况下,guset可以使用的最大内存,默认KB为单位<currentMemory unit='GiB'>4</currentMemory> #guest启动时内存(当前),可以通过virsh setmem来调整内存,但不能大于最大可使用内存。<vcpu>4</vcpu> #分配的虚拟cpu<os><type arch='x86_64' machine='pc'>hvm</type> #hvm:全虚拟化#<kernel>/tmp/vmlinuz-rhel54</kernel> #kernel:指定guest使用的内核,如果使用ISO(安装时)或guset系统中(系统已经安装完成)的内核,不需要指定该项#<initrd>/tmp/initrd-rhel54.img</initrd> #initrd:指定guest使用的ram disk,如果使用ISO(安装时)或guest系统中(系统已经安装完成)的ram disk,不需要指定该项#注:kernel 和initrd文件位于RHEL系统光盘的images/pxeboot目录,拷贝这两个文件到本地磁盘,并指定路径。#注:这两个元素,如果是为了安装guset而指定,在安装完成以后即可以删除。#如果host开启了SELINUX,需要改变文件的security context类型为virt_image_t,从而在启动时libvirtd可以访问这二者# chcon -t virt_image_t /tmp/vmlinuz-rhel54# chcon -t virt_image_t /tmp/initrd-rhel54.img# ls -Z /tmp|grep virt<boot dev='hd'/> #boot:指定启动设备,可以重复多行,指定不同的值,作为一个启动设备列表。hd表示从硬盘启动<boot dev='cdrom'/> #network表示从pxe启动</os><features> #处理器特性<acpi/><apic/><pae/></features><clock offset='utc'/> #时钟#定义了在kvm环境中power off,reboot,或crash时的默认的动作为destroy。其他允许的动作包括:restart,preserve,rename-restart.<on_poweroff>destroy</on_poweroff><on_reboot>restart</on_reboot><on_crash>destroy</on_crash> #destroy:停止该虚拟机。相当于关闭电源<devices> #设备定义开始<emulator>/usr/libexec/qemu-kvm</emulator> #模拟元素,此处写法用于kvm的guest。二进制模拟器设备的完整路径。<disk type='file' device='disk'>#disk是用来描述磁盘的主要容器<driver name='qemu' type='qcow2'/><source file='/home/zhzej/test.qcow2'/>#指定磁盘上文件的绝对路径#使用virtio,采用普通的驱动,即硬盘和网卡都采用默认配置情况下,硬盘是 ide 模式,#而网卡工作在 模拟的rtl 8139 网卡下,速度为100M 全双工。#采用 virtio 驱动后,网卡工作在 1000M 的模式下,硬盘工作是SCSI模式下。#硬盘采用 virtio 后,安装windows 系统,将不能正常的识别硬盘,解决的方法是:#从kvm 的官网下载virtio的驱动iso。#1. 先采用ide模式安装系统。#2. 安装完成后,添加一个virtio模式的硬盘。#3. 启动vm后,系统会自动搜索 SCSI的驱动,找到下载的virtio 驱动后,安装即可。#4. 修改vm 配置文件,删除掉添加的 vitro 硬盘后,修改ide硬盘为 virtio模式即可<target dev='vda' bus='virtio'/></disk><disk type='file' device='cdrom'><source file='/home/iso/ubuntu-14.04.3-server-amd64.iso'/><target dev='hdb' bus='ide'/></disk>#使用网桥类型。确保每个kvm guest的mac地址唯一。将创建tun设备,名称为vnetx(x为0,1,2...)<interface type='bridge'><source bridge='br0'/><mac address='52:54:02:2B:73:F1'/><model type='virtio'/></interface># 补充:使用默认的虚拟网络代替网桥,即guest为NAT模式。也可以省略mac地址元素,这样将自动生成mac地址。# 默认分配192.168.122.x/24的地址,也可以手动指定。网关为192.168.122.1#<interface type='network'># <source network='default'/># <mac address="3B:6E:01:69:3A:11"/>#</interface><input type='mouse' bus='ps2'/> #输入设备#定义与guset交互的图形设备。在这个例子中,使用vnc协议。listen的地址为host的地址。prot为-1,表示自动分配端口号。<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' keymap='en-us'/></devices>
</domain>
可以使用xml模版创建虚机,事先创建好磁盘文件,然后修改xml的磁盘文件路径和mac地址,重新创建并安装多台虚机

遇到的问题

  1. could not open disk ,imagePermission denied
    virt-install --virt-type kvm --name centos --ram 1024 --disk /tmp/centos.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=centos7.0 --location=/root/CentOS-7-x86_64-DVD-1708.iso
root@test:~# grep -n  root  /etc/libvirt/qemu.conf 
530:user = "root"
534:group = "root"
systemctl  restart   libvirtd.service

openstack、libvirt、kvm+qemu、kvm之间的关系

在这里插入图片描述

相关文章:

kvm+qemu+libvirt管理虚机

virt-manager 图形化创建虚拟机 #virt-manager纳管远程kvm虚拟机 # 可以指定kvm虚机的ssh端口和virt-manager所在主机的私钥 virt-manager -c qemussh://root10.197.115.17:5555/system?keyfileid_rsa --no-fork # 如果你生成的ssh-key 的名称是 test-key,在/home/ssh-key/ 目…...

电气防火限流式保护器在汽车充电桩使用上的作用

【摘要】 随着电动汽车行业的不断发展&#xff0c;电动汽车充电设施的使用会变得越来越频繁和广泛。根据中汽协数据显示&#xff0c;2022年上半年&#xff0c;我国新能源汽车产销分别完成266.1万辆和260万辆,同比均增长1.2倍,市场渗透率达21.6%。因此&#xff0c;电动汽车的安全…...

VBA技术资料MF38:VBA_在Excel中隐藏公式

【分享成果&#xff0c;随喜正能量】佛祖也无能为力的四件事&#xff1a;第一&#xff0c;因果不可改&#xff0c;自因自果&#xff0c;别人是代替不了的&#xff1b;第二&#xff0c;智慧不可赐&#xff0c;任何人要开智慧&#xff0c;离不开自身的磨练&#xff1b;第三&#…...

Gson:解析JSON为复杂对象:TypeToken

需求 通过Gson&#xff0c;将JSON字符串&#xff0c;解析为复杂类型。 比如&#xff0c;解析成如下类型&#xff1a; Map<String, List<Bean>> 依赖&#xff08;Gson&#xff09; <dependency><groupId>com.google.code.gson</groupId><art…...

伪彩色处理及算法

伪色彩(false color)是指将真实世界的中无法被肉眼观察到的色彩通过计算机或其他技术转换为可见光,从而使人们能够看到这些原本无法看到的色彩。这种技术被广泛应用于军事、医学、科研等领域。 在医学领域,伪色彩技术被用于医学影像诊断。例如,通过将不同灰度的图像映射到…...

Gradle-02:问题Plugin with id ‘maven‘ not found

1. 背景 在一次使用 Gradle 构建自己项目&#xff0c;完事&#xff0c;需要上传到本地 Maven 仓库&#xff0c;因为事先并不清楚 apply plugin: maven 插件已经被 Gradle 移除&#xff0c;找了一圈&#xff0c;才找到解决方案。 2. 原因 apply plugin: maven def localRepo f…...

jupyter lab环境配置

1.jupyterlab 使用虚拟环境 conda install ipykernelpython -m ipykernel install --user --name tf --display-name "tf" #例&#xff1a;环境名称tf2. jupyter lab kernel管理 show kernel list jupyter kernelspec listremove kernel jupyter kernelspec re…...

Unity Sort Group(排序组)

** Unity 中的Sort Group组组件允许让Sprite Renderer(精灵渲染器)重新决定渲染顺序. ** 作为组件存在 组件内容&#xff1a; Unity 使用Sort Group 组件的Sort layer 和Order in layer的值来确定排序组在渲染队列内相对与场景内其他排序组和游戏对象的优先级。 属性功能So…...

基于总线加锁和缓存锁(CPU实现原子操作的两种方式)

总线锁 总线锁就是使用处理器提供的一个LOCK#信号&#xff0c;当一个处理器在总线上输出此信号时&#xff0c;其他处理器的请求将被阻塞住&#xff0c;那么该处理器可以独占共享内存。 CPU和内存之间的通信被锁&#xff01;&#xff01; 如果多个处理器同时对共享变量进行读写…...

MybatisPlus存在 sql 注入漏洞(CVE-2023-25330)解决办法

首先我们了解下这个漏洞是什么&#xff1f; MyBatis-Plus TenantPlugin 是 MyBatis-Plus 的一个为多租户场景而设计的插件&#xff0c;可以在 SQL 中自动添加租户 ID 来实现数据隔离功能。 MyBatis-Plus TenantPlugin 3.5.3.1及之前版本由于 TenantHandler#getTenantId 方法在…...

【java】使用maven完成一个servlet项目

一、创建项目 创建一个maven项目 maven是一个管理java项目的工具&#xff0c;根据maven的pom.xml可以引入各种依赖&#xff0c;插件。 步骤 打开idea&#xff0c;点击新建项目 点击创建项目&#xff0c;项目创建就完成了 进入时会自动打开pom.xml文件。 pom是项目的配置文件…...

前端Vue入门-day07-Vuex入门

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 自定义创建项目 vuex概述 构建 vuex [多组件数据共享] 环境 创建一个空仓库 state 状态 1. 提供数据&…...

2023再谈前端状态管理

目录 什么是状态管理&#xff1f; 状态 常见模式 要解决的问题 心智模型 React Context Context 的问题 优点 缺点 React 外部状态管理库 概览 Class 时代 Redux 单向数据流 三大原则 如何处理异步 如何处理数据间联动 优点 缺点 Dva icestore Mobx 设…...

ffmpeg SDL播放器--播放udp组播流

c调用ffmpeg api及SDL库播放播放udp组播流。 代码及工程见https://download.csdn.net/download/daqinzl/88168574 参考文档&#xff1a;https://blog.csdn.net/a53818742/article/details/109312740 开发工具&#xff1a;visual studio 2019 记得推送udp流&#xff0c;可采…...

__attribute__((noreturn))

GNU C 的一大特色就是__attribute__ 机制&#xff0c;__attribute__ 可以设置函数属性&#xff08;Function Attribute&#xff09;、变量属性&#xff08;Variable Attribute&#xff09;和类型属性&#xff08;Type Attribute&#xff09;。 语法格式为: __attribute__((att…...

遮挡边界处的深度补全和双曲面外推

论文地址&#xff1a;Depth Completion with Twin Surface Extrapolation at Occlusion Boundaries 论文代码&#xff1a;https://github.com/imransai/TWISE 深度补全是从稀疏的已知深度值开始&#xff0c;为其余图像像素估计未知深度。 大多数方法将其建模为深度插值&#x…...

LK-99室温超导激发万万亿市场,将对我们的生活产生哪些影响?

7月下旬&#xff0c;韩国量子能源研究中心公司相关研究团队在预印本网站上陆续公布两篇类似的论文&#xff0c;宣称一种命名为LK-99的铜掺杂铅磷灰石材料拥有“室温常压”超导能力&#xff0c;系全世界首款室温常压超导材料。 它们的实验方法比较简单&#xff0c;就是把铅、铜、…...

子集——力扣78

文章目录 题目描述法一 迭代法实现子集枚举题目描述 法一 迭代法实现子集枚举 class Solution {public:vector<int> t;vector<vector<...

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(8 月 2 日论文合集)

文章目录 一、检测相关(8篇)1.1 Explainable Cost-Sensitive Deep Neural Networks for Brain Tumor Detection from Brain MRI Images considering Data Imbalance1.2 MonoNext: A 3D Monocular Object Detection with ConvNext1.3 Detecting Cloud Presence in Satellite Ima…...

JDK中「SPI」原理分析

基于【JDK1.8】 一、SPI简介 1、概念 SPI即service-provider-interface的简写&#xff1b; JDK内置的服务提供加载机制&#xff0c;可以为服务接口加载实现类&#xff0c;解耦是其核心思想&#xff0c;也是很多框架和组件的常用手段&#xff1b; 2、入门案例 2.1 定义接口 …...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...