使用libvirt管理KVM虚拟机

2023-11-18

使用libvirt管理KVM虚拟机


一、安装虚拟化管理工具
1、yum install virt-manager libvirt libvirt-python python-virtinst
  1. 1、kmod-kvm : kvm kernel module(s)
  2. 2、kvm : Kernel-based Virtual Machine
  3. 3、kvm-qemu-img : Qemu disk image utility
  4. 4、kvm-tools : KVM debugging and diagnostics tools
  5. 5、python-virtinst : Python modules and utilities for installing virtual machines
  6. 6、virt-manager : Virtual Machine Manager (GUI app, to install and configure VMs)
  7. 7、virt-viewer: Virtual Machine Viewer (another lightweight app to view VM console and/or install VMs)
  8. 9、bridge-utils : Utilities for configuring the Linux Ethernet bridge (this is recommended for KVM networking)
KVM Package Group RHEL comes with KVM software group which includes full virtualization support with KVM. You can list all packages in the group as follows:

# yum groupinfo KVM

 
2、Start the libvirtd daemon service
service libvirtd start
关于错误:
注:该错误出现在centos5.4,libvirtd 0.6.3
重启libvirtd后,启动guest时会出现下面的问题。
Apr 22 09:16:20 srv4 kernel: libvirtd[27156]: segfault at 00000000444e3000 rip 0000003e5501e161 rsp 00000000444dfcd0 error 4
Apr 22 09:16:20 srv4 libvirtd: 09:16:20.739: error : internal error Unable to daemonize QEMU process 
重启了host,问题解决
原因:https://bugzilla.redhat.com/show_bug.cgi?id=505625
Everytime the virGetCapabilities() method is run, it destroys the existing virCapsPtr object and creates it again....without any of the selinux info. virt-manager runs this method. so once virt-manager has run, subsequent calls to get the security info will give the crash you see.
 
二、有关网络
1、一般网络(又名NAT):guest可以访问外网,外网不能访问guest。
安装了libvirt后,一个NAT网络即可用。host被设置为192.168.122.1(virbr0),所有的guest将被分配为192.168.122.x
如果看不到virbr0
或者在 virsh start <Name of KVM>时出现下面的错误:
Apr 22 08:50:37 srv4 libvirtd: 08:50:37.839: error : internal error Failed to add tap interface 'vnet%d' to bridge 'virbr0' : No such device 
 
查看/var/log/message.log
Apr 22 08:57:10 srv4 dnsmasq[26000]: failed to open pidfile /var/run/libvirt/network/default.pid: Permission denied
Apr 22 08:57:10 srv4 dnsmasq[26000]: FAILED to start up
 
手动启动default network
virsh net-start default
error: Failed to start network default
error: internal error '/usr/sbin/dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/default.pid --conf-file=  --listen-address 192.168.122.1 --except-interface lo --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-lease-max=253' exited with non-zero status 3 and signal 0: 
dnsmasq: failed to open pidfile /var/run/libvirt/network/default.pid: Permission denied
解决办法:
我的当前系统:selinux-policy.noarch                                               2.4.6-203.el5  
yum updata selinux-policy.noarch
selinux-policy.noarch                                               2.4.6-279.el5_5.2 
 
service libvirtd restart
注:需要重启host,上面写了原因
  1. # ifconfig virbr0
  2. virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
  3. inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
  4. inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
  5. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  6. RX packets:0 errors:0 dropped:0 overruns:0 frame:0
  7. TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
  8. collisions:0 txqueuelen:0
  9. RX bytes:0 (0.0 b) TX bytes:10962 (10.7 KiB)
一个故障:
不论是NAT,还是Bridge模式,guest都无法与其他服务器通信,而且NAT模式时无法通过dhcp获取IP。没有查到错误原因。
不使用virsh来启动,按照 http://blog.chinaunix.net/space.php?uid=1838361&do=blog&id=234090文章介绍的方法来启动时,NAT及bridge模式都可以正常访问其他服务器。所以按照该文章的方法,在guest的xml文件中定义interface的部分,指定虚拟网卡为tap0,网络正常了,将指定的网卡名去掉,由virsh自动分配为vnet0,网络也是正常的,也可以通过dhcp获取IP了。原因未知。
另:virsh启动的log文件位于:/var/log/libvirt/qemu/
 
20110711:
nat方式无法获取IP,service libvirtd restart 重启服务,恢复。
 
关于NAT方式,guest可以获取ip,但无法与访问公网:
有多个网卡?你的物理机由哪个网卡访问公网?例如,我的物理机由br0访问公网,则,修改default.xml文件,添加forward的dev参数。
  1. virsh # net-dumpxml default
  2. <network>
  3.   <name>default</name>
  4.   <uuid>8d004490-ee73-4e36-b9ef-821d7e73f9f6</uuid>
  5.   <forward dev='br0' mode='nat'/>
  6.   <bridge name='virbr0' stp='on' forwardDelay='0' />
  7.   <ip address='192.168.122.1' netmask='255.255.255.0'>
  8.     <dhcp>
  9.       <range start='192.168.122.2' end='192.168.122.254' />
  10.     </dhcp>
  11.   </ip>
  12. </network>
  1. virsh # net-define /etc/libvirt/qemu/network/default.xml
  2. virsh # net-destroy default
  3. virsh # net-start  default
2、Bridge网络(又名:共享物理网卡):guest可以访问外网,外网也可以访问guest
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-br0 
两个配置文件内容分别为:
/etc/sysconfig/network-scripts/ifcfg-eth0
  1. DEVICE=eth0
  2. TYPE=Ethernet
  3. ONBOOT=yes
  4. NM_CONTROLLED=no
  5. BRIDGE=br0
/etc/sysconfig/network-scripts/ifcfg-br0
  1. DEVICE=br0
  2. TYPE=Bridge
  3. NM_CONTROLLED=no
  4. BOOTPROTO=static
  5. IPADDR=221.193.136.121
  6. NETMASK=255.255.255.0
  7. ONBOOT=yes
The NM_CONTROLLED=no option was added because both device should not be controlled by the Network Manager for bridge to work. 
 
重启network( 当前连接会丢失,确保你总是可以访问host,否则要格外小心
service network restart
关于错误:Bringing up interface eth0:  tg3 device eth0 does not seem to be present, delaying initialization.
原因:br0里没有加配置 TYPE=Bridge
对于rhel6和centos6,需要关闭NetworkManager 
service NetworkManager stop
chkconfig --level 35 NetworkManager off
 
Disable Netfilter processing in the bridged traffic.
/etc/sysctl.conf文件中添加:
  1. net.bridge.bridge-nf-call-ip6tables = 0
  2. net.bridge.bridge-nf-call-iptables = 0
  3. net.bridge.bridge-nf-call-arptables = 0
  4. net.bridge.bridge-nf-filter-vlan-tagged = 0
 
        验证是否生效
ifconfig
br0现在扮演eth0的角色。
br0       Link encap:E
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用libvirt管理KVM虚拟机 的相关文章

  • 无需编译即可检查变量实现接口

    我想知道具体类型是否实现特定接口并将其打印出来 我编写了一个示例 0 其中包含自定义结构 MyPoint 而不是接口类型 MyPoint 具有 io Reader 接口中定义的 Read 函数 type MyPoint struct X Y
  • 具有通用签名的接口中的静态方法

    从 Java 8 开始 您可以在接口中实现默认或静态方法 如下所示 public interface DbValuesEnumIface
  • F# 中的对象表达式和捕获状态

    是什么让第一次实施KO type IToto abstract Toto unit gt unit new IToto with member this Toto fun gt new IToto with member this Toto
  • 为什么 Eclipse 在实现 Java 接口方法时不包含注释?

    界面如下 import javax xml ws Action public interface AnnotationsTestInterface Action public void annotatedMethod 和一个实现类 publ
  • 方法的通用接口重载?

    有没有一种好的 通用的方法来执行以下操作 而无需诉诸第二种方法或大量强制转换 我希望 API 尽可能轻量 并且在 OO 方面对我来说似乎没问题 class Foo public T Bar
  • 我如何实例化?包含代码

    编译器不允许我将 保留在最后一行 我不明白为什么 如何编译这样一个通用结构 我尝试将代码更改为 X a new A
  • 在 TypeScript 中实现接口原型

    我创建了一个TypeScript我的服务结果界面 现在我想为里面的两个函数定义一个基本功能 问题是我收到错误 Support 类型的值不存在属性 ServiceResult I use WebStorm为发展 VS2012让我紧张 因为大型
  • Ruby 获取可用磁盘驱动器

    谁能告诉我如何获取 ruby 中可用磁盘驱动器的列表 我正在创建一个开放文件对话 需要知道 预先感谢 嗯 Brian 给出的文章正确地指出了以下代码 require win32ole file system WIN32OLE new Scr
  • 为什么 Haskell [] (list) 不是类型类?

    我正在编写一个 Haskell 函数 它接受一个列表作为输入 也就是说 它没有理由不能是队列或出列 或者任何允许我访问它的 头 和 尾 并检查它是否为空 的东西 所以 a 输入类型似乎太具体了 但据我所知 没有标准库类型类可以准确捕获此接口
  • 界面设计的一些基本原则是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在整理我的第一个真实界面的一些模型 我想知道 良好的用户界面设计的一些基本原则是什么 我正在寻找诸如项目符号列表摘要之类的东西 也
  • IEnumerable 如何在后台工作

    我正在徘徊于更深入的功能IEnumerable
  • 没有任何成员的界面 - 不好的做法? [复制]

    这个问题在这里已经有答案了 可能的重复 标记接口的目的是什么 https stackoverflow com questions 1023068 what is the purpose of a marker interface 创建一个完
  • Python C-API 访问字符串常量

    我想使用 python 的 C API 在 C 语言中实现我为 python 编写的库 在 python 中 我可以通过声明以下内容在我的模块中声明 常量 RED red Not really a constant I know BLUE
  • COM接口指南

    我不太喜欢 COM 接口 所以我有一个小问题 假设我有这段代码 Guid 148BD528 A2AB 11CE B11F 00AA00530503 InterfaceType ComInterfaceType InterfaceIsIUnk
  • 是否有类似 ICollection 的接口,但专为排序集合而设计?

    或者我可以毫无问题地使用 ICollection 吗 我的意思是 我不认为 ICollection 是为排序集合设计的 因为这可能会破坏为排序或未插入 ICollection 对象设计的应用程序 但我不知道 我会说ICollection 接
  • 为什么接口变量默认是static和final?

    为什么Java中接口变量默认是static和final 来自 Philip Shaw 的 Java 界面设计常见问题解答 接口变量是静态的 因为 Java 接口不能以其自身的方式实例化 变量的值必须在不存在实例的静态上下文中分配 Final
  • 为什么我们要实现接口?

    实现接口只是提供方法的骨架 如果我们知道该方法的确切签名行 在这种情况下实现接口有什么要求 这是Interface已经实现的情况 interface IMy void X public class My IMy public void X
  • Dao 和服务接口的需求

    我是Spring Mvc的新手 在很多教程中 我发现有一个像这样的Dao接口 public interface StudentDAO public List
  • Java 8 中接口和抽象类之间的根本区别[重复]

    这个问题在这里已经有答案了 考虑到接口现在可以为其提供的方法提供实现 我无法正确合理地解释接口和抽象类之间的差异 有谁知道如何正确解释其中的差异 我还被告知 从性能角度来看 接口比抽象类更轻量 有人可以证实这一点吗 接口仍然不能有任何状态
  • 将接口作为参数传递给扩展方法

    我使用扩展方法来扩展 html 助手来制作 RSS 转发器 public static string RSSRepeater this HtmlHelper html IEnumerable

随机推荐

  • xshell无法连接vmware虚拟机

    一 问题描述 本机使用Xshell无法连接VMware中的虚拟机 并且从本机也无法ping通虚拟机 虚拟机也无法ping通本机物理机 二 环境 场景 物理机 windows10系统 Xshell 6 VMware Workstation 1
  • linux 下的 iptables/ netfilter 防火墙 深度理解 前篇

    一 概述 iptables 其实不是真正的防火墙 我们可以把它理解为一个客户端代理 用户通过iptables 这个代理 将用户的安全设置执行到对应的 安全框架 中 这个安全框架才是真正的防火墙 这个框架的名称叫做netfilter 二 五链
  • 服务器虚拟化导出快照,ESXi5 PACS服务器虚拟化系统快照数据恢复

    杭州某国有企业 一台ESXi5 1 虚拟化系统中运行一重要的PACS服务的虚拟机 因为之前做了快照 管理员在误还原快照后 数据回到3个月前 数据很重要 管理员在尝试多种方式后 也无法补救数据 后通过集成商介绍 联系到了北京安数云和科技 北京
  • sklearn K近邻KNeighborsClassifier参数详解

    原文网址 https scikit learn org stable modules generated sklearn neighbors KNeighborsClassifier html class sklearn neighbors
  • 项目中的STL经验

    STL是c 非常重要的一部分 它是很多大神的杰作 高效 稳定 可扩展性好 虽然STL确实存在难以调试 内存碎片的问题 现在机器的内存越来越大 内存碎片的问题基本不太可能成为系统瓶颈 但只要你使用恰当 它能显著提高生产力 并使代码更短 更易维
  • 五大常用经典算法

    五大常用算法之一 分治算法 一 基本概念 在计算机科学中 分治法是一种很重要的算法 字面上的解释是 分而治之 就是把一个复杂的问题分成两个或更多的相同或相似的子问题 再把子问题分成更小的子问题 直到最后子问题可以简单的直接求解 原问题的解即
  • 【UE4】搭建局域网内VR直播 UE4.27

    前言 英伟达显卡 UE4 27的内网搭建360 相机直播 并在内网任意设备使用VR观看 理论上性能足够效果越好 此处使用的VR设备为Vive 梳理了整体构建流程 希望能帮到你 多图警告 图片教程比较直观 1 准备工作 下载UE和OBS所需安
  • 代码走查和代码审查_代码审查随时间而变化

    代码走查和代码审查 我们已经进行了大约4年的代码审查 代码审查入门 从一开始 开发人员就会互相帮助 在有人询问时查看代码 或者有时主管或高级开发人员会介入并检查代码 如果我们发现测试存在问题 或者是否有人刚刚加入团队并且我们期望他们需要一些
  • android 透明状态栏方法及其适配键盘上推(二)

    在上一篇文章中介绍了一种设置透明状态栏及其适配键盘上推得方法 但是上一篇介绍的方法中有个缺点 就是不能消除掉statusbar的阴影 很多手机如 三星 Nexus都带有阴影 即使我用了
  • GD32F303调试小记(五)之ADC+DMA+硬件过采样

    前言 单片机的大多数的功能都是基于数字信号去控制的 然而许多的场合下 我们也需要有模拟信号的参与 因为许多变量的控制是需要连续的而非阶跃式的 常见的若想得到电压值 温度值 电流值等等都需要用到A D转换 如果外围器件不是特定IC而是自己搭的
  • Mask R-CNN详解

    一 Mask R CNN网络介绍 Mask R CNN是何凯明2017年提出的一个实例分割 Instance segmentation 算法 可以用来做 目标检测 目标实例分割 目标关键点检测 是ICCV2017的best paper Ma
  • 小科普

    买固态硬盘 我们会比较关注颗粒寿命 机械硬盘虽然几乎不用考虑长寿与否 除了考虑SMR PMR记录方式外 最怕的其实就是坏 盘一挂数据未必能找回来 所以其故障率指标就显得尤为重要 各种寿命指标 那这个指标一般就是MTBF了 全称平均无故障间隔
  • 文件传输协议FTP与TCP/IP协议之间有什么关系

    TCP IP协议是目前网络所采用的一种框架协议 包括五层 应用层 传输层 网络层 链路层 物理层 FTP协议是TCP IP协议的一部分 严格意义上来说是应用层协议 FTP是一种应用程序 基于TCP IP协议 它定义了本地登录户机与远程服务器
  • Verilog HDL运算符

    一 逻辑运算符 逻辑与 逻辑或 逻辑非 二 关系运算符 逻辑相等 逻辑不等 全等 不全等 和 可以比较含有x和z的操作数 在模块的功能仿真中有着广泛的应用 三 位运算符 非 与 或 异或 同或 四 拼接运算符 s1 s2 sn 五 一元约简
  • Python数据可视化:豆瓣电影TOP250

    欢迎关注天善智能 我们是专注于商业智能BI 人工智能AI 大数据分析与挖掘领域的垂直社区 学习 问答 求职一站式搞定 对商业智能BI 大数据分析挖掘 机器学习 python R等数据领域感兴趣的同学加微信 tstoutiao 邀请你进入数据
  • eclipse 使用maven构建 springboot +swagger

    swagger用于定义API文档 好处 1 前后端分离开发 2 API文档非常明确 3 测试的时候不需要再使用URL输入浏览器的方式来访问Controller 4 传统的输入URL的测试方式对于post请求的传参比较麻烦 当然 可以使用po
  • vue 记住密码下次自动登录

    div div
  • <HarmonyOS第一课>运行Hello World课后作业

    前言 HarmonyOS应用开发者基础认证课程课后习题 仅供参考 也欢迎各位小伙伴讨论指正 习题 判断题 1 DevEco Studio是开发HarmonyOS应用的一站式集成开发环境 正确 True 2 main pages json存放
  • [Qt]基础数据类型和信号槽

    文章目录 1 Qt基本结构 1 1 Qt本有项目 1 1 1 项目文件 pro 1 1 2 main cpp 1 1 3 mainwindow ui 1 1 4 mainwindow h 1 1 5 mainwindow cpp 1 2 Q
  • 使用libvirt管理KVM虚拟机

    使用libvirt管理KVM虚拟机 一 安装虚拟化管理工具 1 yum install virt manager libvirt libvirt python python virtinst 1 kmod kvm kvm kernel mo