标签: libvirt

将 USB 驱动器直接映射到 libvirt KVM 虚拟机?

我正在搜索有关使用 libvirt 将现有驱动器(USB 驱动器)映射到 KVM 虚拟机的信息。我一直在浏览http://libvirt.org/formatstorage.html#StoragePoolTarget。但我不太明白将现有设备暴露给 VM 需要哪些选项(或者甚至可能的话)。

从我正在阅读的target内容来看,该元素期望path机器上的文件夹中有一个元素来存储基于文件的图像。可以是path这样的设备/dev/sdc1吗?用typeraw

libvirt kvm-virtualization

9
推荐指数
1
解决办法
3万
查看次数

KVM/Qemu、Ubuntu:为什么更多来宾 CPU 会快速增强磁盘 I/O?

我们有一个由两个节点组成的 Heartbeat/DRBD/Pacemaker/KVM/Qemu/libvirt 集群。每个节点都运行带有以下包/版本的 Ubuntu 12.04 64 位:

  • 内核 3.2.0-32-generic #51-Ubuntu SMP
  • DRBD 8.3.11
  • qemu-kvm 1.0+noroms-0ubuntu14.3
  • libvirt 0.9.13
  • 起搏器 1.1.7
  • 心跳 3.0.5

虚拟来宾运行 Ubuntu 10.04 64 位和 Ubuntu 12.04 64 位。我们使用 libvirt 功能将主机 CPU 的功能传递给虚拟来宾,以实现最佳 CPU 性能。

现在这里是这个集群上的一个常见设置:

  • VM“监控”有 4 个 vCPU
  • VM“监控”使用ide作为磁盘接口(出于显而易见的原因,我们目前正在切换到VirtIO)

我们最近运行了一些简单的测试。我知道他们不专业,没有达到高标准,但他们已经表现出一个强大的趋势:

节点 A 正在运行 VM“bla” 节点 B 正在运行 VM“监控”

当我们将文件从虚拟机“bla”同步到虚拟机“监控”时,我们仅达到 12 MB/s。当我们在虚拟机“监控”中执行一个简单的 dd if=/dev/null of=/tmp/blubb 时,我们达到了大约 30 MB/s。

然后我们向虚拟机“监控”添加了 4 个 vCPU 并重新启动它。VM“监控”现在有 8 个 vCPU。我们重新运行测试,结果如下:当我们将文件从 VM“bla”同步到 VM“监控”时,我们现在达到了 36 MB/s。当我们在虚拟机“监控”中执行一个简单的 dd if=/dev/null of=/tmp/blubb 时,我们现在达到了大约 61 MB/s。

对我来说,这种效果是相当令人惊讶的。为什么会自动为这个虚拟来宾添加更多虚拟 CPU …

performance central-processing-unit libvirt qemu kvm-virtualization

9
推荐指数
1
解决办法
2512
查看次数

同一主机上的 KVM VM 和 docker 容器之间的网络

在 Debian-Stretch 主机(连接到物理 LAN)上,我有一个新的 docker 安装(v18.09)和一个数据库容器(端口映射到主机),我运行 KVM/libvirt 和一些 Debian-Stretch VM。我可以从 LAN 访问 docker 容器和 VM(取决于通过 SSH 隧道或直接配置的配置),但我很难从 VM 访问 docker 容器。

在此处输入图片说明

# brctl show
bridge name         bridge id           STP enabled interfaces
br-f9f3ccd64037     8000.0242b3ebe3a0   no      
docker0             8000.024241f39b89   no      veth35454ac
virbr0              8000.525400566522   yes     virbr0-nic
Run Code Online (Sandbox Code Playgroud)

在阅读了几天之后,我在这篇文章中找到了一个非常引人注目的解决方案Docker 和 KVM 带有一个我没有开始工作的桥原始)。该解决方案建议使用一行配置 daemon.json 代码启动 docker 以使用 KVM“默认”网桥。那该有多好!有希望吗?

我在 KVM 虚拟机之间尝试了两种不同的网络配置。在这两种情况下,VM 与 LAN+路由器+云之间的通信都完美无缺,但我只是不知道如何越过围栏 - 到更绿的草地...... :)

Conf 1 - KVM 默认桥接与 NAT:我可以通过 ssh 连接到 Debian 主机并访问 docker 容器端口,但是否有直接路由的设置?

会议 2 - …

libvirt linux-networking kvm-virtualization docker debian-stretch

9
推荐指数
1
解决办法
9703
查看次数

使用 virt-install 和 http preseed 进行无人值守的 ubuntu 10.04 安装

我使用的 virt-install 命令行如下

sudo virt-install kvm ubuntu -v sudo virt-install -v -n gold-egg -r 256 --disk path=/var/lib/libvirt/images/golden-egg.qcow2,size=5 --os-type linux --os-variant ubuntulucid --force --cdrom=temp/ubuntu-10.04.1-server-amd64.iso --virt-type qemu --connect=qemu:///system --extra-args="接口eth0的= =主机域名goldenegg = foo.internal加上netcfg / get_ipaddress = 192.168.1.15加上netcfg / get_netmask = 255.255.255.0加上netcfg / get_gateway = 192.168.1.1加上netcfg / get_nameservers = 192.168.1.1加上netcfg / disable_dhcp = TRUE自动URL = HTTP:/ /192.168.1.100/ "

ubuntu 安装程序正在启动,但它进入交互模式。我已经设置了一个小型网络服务器来提供 preseed 文件,并验证它是在指定的 url 上提供的。但是,服务器不会在创建 VM 时受到影响,并且 VM 控制台或我可以通过的任何其他内容都没有错误。

关于如何继续进行这项工作的任何建议。

ubuntu automated-install libvirt

8
推荐指数
1
解决办法
2997
查看次数

我可以在重新启动 iSCSI 存储阵列时暂停虚拟机吗

不幸的是,我可能不得不重启我的存储阵列。

在使用带有 libvirt 的 KVM 管理虚拟机的情况下,我需要对存储阵列重新通电,是否可能或什至建议:

  1. 暂停虚拟机
  2. 刷新并关闭多路径
  3. 注销 iSCSI 会话
  4. 更新和重启存储阵列。

然后按照相反的过程

  1. 重新建立 iISCSI 会话
  2. 恢复多路径
  3. 恢复虚拟机

欢迎任何建议。

iscsi storage-area-network libvirt multipath kvm-virtualization

8
推荐指数
1
解决办法
339
查看次数

用于短期私有 VM 的技术

我正在尝试构建一个系统,该系统将运行短期(CI 和测试版本)的软件组件,根据我的要求,每个组件都位于私人主机上是强制性的。我将这个定义也包含在半虚拟化选项中,因为它似乎可以让我省去很多麻烦。

我在 Mac 上工作,所以几乎所有技术都已淘汰,libvirtquemu等对我不起作用。然而,我计划部署到 Debian;所以在 Debian 上运行的任何东西都回到了桌面上,前提是我可以编写主机及其来宾域的配置脚本。

我的预期设置是我可以用来引导 Debian 安装程序,这意味着在启动时,机器会自动配置(Chef、Puppet、Babushka,别介意,真的) - 并且该配置的一部分应该构建一个可用于启动容器的模板 rootfs。容器本身也需要进行配置,这样当容器上来的时候,知道要做什么工作,可以做工作,然后退出。

简而言之,这是我需要的工作流程:

  1. 启动一台机器(虚拟的或其他的)并准备好开始工作。
  2. 该工作应由chef/puppet/babushka/etc安装的脚本执行
  3. 当工作开始时,应该启动一个虚拟机来完成工作。
  4. VM 应该完成工作,退出并将其资源释放给父/主机。(重要的是,这可以在合理的硬件上扩展到至少数百个来宾 VM)

我已经到了尝试以下的地步,并出于以下内联的原因放弃了它们:

对于主机

  1. 使用 Instalinux(LinuxCOE 支持)预种子 Debian micro ISO 映像(坏: 根本不起作用(“未找到内核模块”(因为 Instalinux 映像与 FTP 存储库不同步,显然该解决方案非常脆弱,它也不允许安装后有太多空间,并将已知的 SSH 密钥、主机密钥等放到机器上,这似乎是一发不可收拾,最后我有一台正在运行的机器,但无法访问它.)
  2. Pre-seed Debian netinst ISO(与上述相同的问题,除了至少安装通常会完成,因为 ISO 和 FTP 存储库之间没有内核差异。安装后的范围仍然有限。 绝对可靠且可重复,很容易在 Mac 或裸机上使用任何 VM 技术堆栈,可以在任何地方工作,但是我无法进行足够的后安装
  3. 构建 rootfs 的各种方法,并将其编译为可引导的硬盘映像(我能做的一点点工作非常脆弱,很难安装到真机上,并且是一个复杂的构建过程。 好: 如果我可以让它工作,这似乎为使用 ssh 密钥、主机密钥、主机名、从 Git 安装的软件以及其他任何东西将机器预配置为给定规范提供了最大的范围,但问题是如何打包它用于分发,或者如何编写它的娱乐脚本。

老实说,我不确定人们应该使用什么技术来将虚拟机从一无所有变成一个运行、工作和有用的系统。对我来说似乎是三个步骤 …

virtualization debian provisioning libvirt lxc

8
推荐指数
1
解决办法
460
查看次数

libvirt 网络错误 - 未找到“默认”网络设备

我的初衷是为openstack创建centos镜像。虽然我直接用kvm做了,但仍然想知道错误。

正在使用手册来完成我的任务。

在这个命令之后:

# virt-install --virt-type kvm --name centos-6.4 --ram 1024 \
--cdrom=/data/isos/CentOS-6.4-x86_64-netinstall.iso \
--disk /tmp/centos-6.4.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6
Run Code Online (Sandbox Code Playgroud)

我有一个错误:

ERROR    Error in network device parameters: Virtual network 'default' does not exist: Network not found: no network with matching name 'default'
Run Code Online (Sandbox Code Playgroud)

不用说,我正在使用RDO。默认情况下,我没有为 libvirt 预先配置任何网络设备。问题是哪些网络设备可用?或者如果没有,如何创建一个?也许 RDO 在 libvirt 网络上有不同的方法?

centos libvirt openstack kvm-virtualization

8
推荐指数
3
解决办法
5万
查看次数

将 USB 加密狗连接到 KVM 虚拟机

我正在努力将主机正确检测到的 USB 设备连接到 kvm 虚拟机。

我有一个新安装的 Ubuntu Server 14.10 作为 KVM/QEMU 主机。我使用以下命令设置了一个 Ubuntu 虚拟机:

virt-install --connect qemu:///system \
            -n test01 \
            -r 1024 \
            --vcpus=2 \
            --disk path=/vmstorage/01/test01.img,size=5 \
            --vnc \
            --noautoconsole \
            --os-variant=ubuntuutopic \
            --hvm \
            --cdrom /path/to/ubuntu-14.10-server-i386.iso
Run Code Online (Sandbox Code Playgroud)

安装成功后virsh dumpxml test01返回

virt-install --connect qemu:///system \
            -n test01 \
            -r 1024 \
            --vcpus=2 \
            --disk path=/vmstorage/01/test01.img,size=5 \
            --vnc \
            --noautoconsole \
            --os-variant=ubuntuutopic \
            --hvm \
            --cdrom /path/to/ubuntu-14.10-server-i386.iso
Run Code Online (Sandbox Code Playgroud)

我现在想连接一个 USB 记忆棒。一些googleing后,我发现 了一些 人士,基本上都建议使用以下方法:

  1. 将棒连接到主机
  2. 获取供应商和产品 ID

    root@host01:~# …
    Run Code Online (Sandbox Code Playgroud)

ubuntu libvirt qemu kvm-virtualization

8
推荐指数
2
解决办法
2万
查看次数

如何为 libvirt/kvm 修复损坏的调整大小的 qcow2 磁盘映像?

今天我想增加一个虚拟机的大小,所以我做了我一直在做的事情(以前做过):

qemu-img resize diskimage.qcow2 +22GB
Run Code Online (Sandbox Code Playgroud)

然后文件损坏了,VM 不再启动。我尝试从 CD 启动 VM 以调整分区,但系统将不再读取磁盘:

qemu-img check -r all diskimage.qcow2
tcmalloc: large alloc 389841715200 bytes == (nil) @  0x7fdb4ea66bf3 0x7fdb4ea88488 0x7fdb4e5674a6 0x7fdb50236a37 0x7fdb50236bc8 0x7fdb50237011 0x7fdb5023941e 0x7fdb5023d891 0x7fdb5027848b 0x7fdb5027c196 0x7fdb491efb35 0x7fdb5021ee4d (nil)
No errors were found on the image.
Run Code Online (Sandbox Code Playgroud)

没有错误?听起来不错,但virsh start vm不起作用,日志说:

2017-05-21T10:02:30.755824Z qemu-system-x86_64: -drive file=/.../diskimage.qcow2,format=qcow2,if=none,id=drive-virtio-disk0: could not open disk image /.../diskimage.qcow2: qcow2: Image is corrupt; cannot be opened read/write
Run Code Online (Sandbox Code Playgroud)

我尝试转换为 raw 但转换失败(退出 1):

qemu-img convert -f qcow2 diskimage.qcow2 -O raw diskimage.raw
qcow2: …
Run Code Online (Sandbox Code Playgroud)

corruption libvirt qemu qcow2 kvm-virtualization

8
推荐指数
1
解决办法
2万
查看次数

如何在 KVM 中添加虚拟存储作为 SSD

作为以前的 VirtualBox 用户,我最近转移到 KVM(QEMU/libvirt 或其他任何名称)。我知道在 VirtualBox 中,当您向 VM 添加新存储设备时,会有一个标记为Solid-state Drive的复选框,如果选中,来宾系统会将虚拟磁盘视为固态设备。这非常有用,因为它可以通知来宾系统(即 Windows)禁用碎片整理。我想知道这在 KVM 中是否可行,因为我在互联网上找不到任何相关内容?

virtualization virtual-machines libvirt qemu kvm-virtualization

8
推荐指数
2
解决办法
1万
查看次数