kvm+qemu+libvirt管理虚机

news2024/11/16 12:36:11

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之间的关系

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/838487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面向城乡公交的嵌入式系统远程升级设计方案

针对城乡公交站牌显示终端现场升级与维护困难的问题&#xff0c;提出了一种基于应用程序&#xff08;IAP&#xff09;技术的嵌入式系统远程升级设计方案。 通过IAP技术配合改良过的远程升级程序代替传统的现场烧写调试&#xff0c;节约了奔赴现场调试的时间和成本。 针对远程…

Django使用uwsgi+nginx部署,admin没有样式解决办法

Django使用uwsginginx部署,admin没有样式解决办法 如果使用了虚拟环境则修改nginx.conf文件中的/static/路径为你虚拟环境的路径&#xff0c;没有使用虚拟环境则改为你python安装路径下的static server {listen 8008;server_name location; #改为自己的域名&#xff0c;没域名…

嵌入式开发学习(STC51-8-IO扩展-串转并)

内容 通过74HC595模块控制LED点阵&#xff0c;以一行循环滚动显示 74HC595简介 51单片机IO口非常有限&#xff0c;如果想要连接更多外围设备&#xff0c;可以通过IO扩展来实现&#xff1b;其中一种IO口扩展方式-串转并&#xff0c;使用的芯片是74HC595&#xff1b; 1个74HC…

LiveGBS流媒体平台GB/T28181常见问题-无法注册不上海康NVR摄像机自带物联网卡摄像头注册GB/T28181国标平台看不到设备的时候如何抓包及排查

LiveGBS无法注册不上海康NVR摄像机自带物联网卡摄像头注册GB/T28181国标平台看不到设备的时候如何抓包及排查 1、设备注册后查看不到1.1、是否是自带物联网卡的摄像头1.2、关闭萤石云1.3、防火墙排查1.4、端口排查1.5、IP地址排查1.6、设备TCP/IP配置排查1.7、设备多网卡排查1.…

HTML5注册页面

分析 注册界面实际上是一个表格&#xff08;对齐&#xff09;&#xff0c;一行有两个单元格。 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevic…

Opencv-C++笔记 (16) : 几何变换 (图像的翻转(镜像),平移,旋转,仿射,透视变换)

文章目录 一、图像平移二、图像旋转2.1 求旋转矩阵2.2 求旋转后图像的尺寸2.3手工实现图像旋转2.4 opencv函数实现图像旋转 三、图像翻转3.1左右翻转3.2、上下翻转3.3 上下颠倒&#xff0c;左右相反 4、错切变换4.1 实现错切变换 5、仿射变换5.1 求解仿射变换5.2 OpenCV实现仿射…

【单片机】51单片机,TLC2543,驱动程序,读取adc

TLC2543 是一款 12 位精密模数转换器 (ADC)。 1~9、11、12——AIN0&#xff5e;AIN10为模拟输入端&#xff1b; 15——CS 为片选端&#xff1b; 17——DIN 为串行数据输入端&#xff1b;&#xff08;控制字输入端&#xff0c;用于选择转换及输出数据格式&#xff09; 16——…

完全背包问题

题目链接 题意&#xff1a;在01背包的基础上多了每个物品都可以无限取的条件 思路&#xff1a;首先考虑在01背包的基础上的暴力枚举&#xff0c;我们可以在枚举前i件物品最多拿j的容量时再遍历当前物品拿的数量 贴一个暴力tle代码&#xff1a; #include<bits/stdc.h> #d…

线程间的同步、如何解决线程冲突与死锁

一、线程同步概念&#xff1a; 线程同步是指在多线程编程中&#xff0c;为了保证多个线程之间的数据访问和操作的有序性以及正确性&#xff0c;需要采取一些机制来协调它们的执行。在多线程环境下&#xff0c;由于线程之间是并发执行的&#xff0c;可能会出现竞争条件&#xf…

VUE框架:vue2转vue3全面细节总结(2)导航守卫

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人_python人工智能视觉&#xff08;opencv&#xff09;从入门到实战,前端,微信小程序-CSDN博客 最新的uniapp毕业设计专栏也放在下方了&#xff1a; https://blog.csdn.net/lbcy…

学习源码,模仿编程

一.观察者模式: 1.创建事件 2.发布事件 3.监听事件 4.效果: 二.模板方法模式

【云原生】使用kubeadm搭建K8S

目录 一、Kubeadm搭建K8S1.1环境准备1.2所有节点安装docker1.3所有节点安装kubeadm&#xff0c;kubelet和kubectl1.4部署K8S集群1.5所有节点部署网络插件flannel 二、部署 Dashboard 一、Kubeadm搭建K8S 1.1环境准备 服务器IP配置master&#xff08;2C/4G&#xff0c;cpu核心…

如何下载和编译 Android 源码?

本文为洛奇看世界(guyongqiangx)原创&#xff0c;转载请注明出处。 文章链接&#xff1a;https://blog.csdn.net/guyongqiangx/article/details/132125431 网上关于如何下载 Android 源码和编译的文章很多&#xff0c;其中最常见的就是 Android 官方文档&#xff1a; 下载源代码…

前端js--扩展卡片

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><link rel"stylesheet" href"…

谈一谈Python中的装饰器

1、装饰器基础介绍 1.1 何为Python中的装饰器&#xff1f; Python中装饰器的定义以及用途&#xff1a; 装饰器是一种特殊的函数&#xff0c;它可以接受一个函数作为参数&#xff0c;并返回一个新的函数。装饰器可以用来修改或增强函数的行为&#xff0c;而不需要修改函数本身…

使用JProfiler进入JVM分析

要评测JVM&#xff0c;必须将JProfiler的评测代理加载到JVM中。这可以通过两种不同的方式发生&#xff1a;在启动脚本中指定-agentpath VM参数&#xff0c;或者使用attach API将代理加载到已经运行的JVM中。 JProfiler支持这两种模式。添加VM参数是评测的首选方式&#xff0c;集…

拥抱创新:用Kotlin开发高效Android应用

拥抱创新&#xff1a;用Kotlin开发高效Android应用 引言 在当今数字时代&#xff0c;移动应用已经成为人们生活中不可或缺的一部分。无论是社交媒体、电子商务还是健康管理&#xff0c;移动应用已经深刻地影响了我们的生活方式。随着移动设备的普及和功能的增强&#xff0c;A…

【JAVA】类和对象

作者主页&#xff1a;paper jie的博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精…

高项V4.高级PM.项目集set+项目组合portfolio+组织级OPM+量化项目管理+实践模型

PMI &#xff0c; ITSS 、CMMI 和PRINCE2 等为各类信息系统项目管理提供了最佳实践&#xff0c;井提供了对组织的项目管理能力进行持续改进和评估的方法。 第一部分 项目集--《项目集管理标准>> (第4 版) ---实现项目11>2的更大效益 由项目管理协会(PMI) 出版的《…

OpenCV之信用卡识别实战

文章目录 代码视频讲解模板匹配文件主程序(ocr_template_match.py)myutils.py 代码 链接: https://pan.baidu.com/s/1KjdiqkyYGfHk97wwgF-j3g?pwdhhkf 提取码: hhkf 视频讲解 模板匹配文件 主程序(ocr_template_match.py) # 导入工具包 from imutils import contours # 从…