我正在搜索有关使用 libvirt 将现有驱动器(USB 驱动器)映射到 KVM 虚拟机的信息。我一直在浏览http://libvirt.org/formatstorage.html#StoragePoolTarget。但我不太明白将现有设备暴露给 VM 需要哪些选项(或者甚至可能的话)。
从我正在阅读的target内容来看,该元素期望path机器上的文件夹中有一个元素来存储基于文件的图像。可以是path这样的设备/dev/sdc1吗?用type的raw?
我们有一个由两个节点组成的 Heartbeat/DRBD/Pacemaker/KVM/Qemu/libvirt 集群。每个节点都运行带有以下包/版本的 Ubuntu 12.04 64 位:
虚拟来宾运行 Ubuntu 10.04 64 位和 Ubuntu 12.04 64 位。我们使用 libvirt 功能将主机 CPU 的功能传递给虚拟来宾,以实现最佳 CPU 性能。
现在这里是这个集群上的一个常见设置:
我们最近运行了一些简单的测试。我知道他们不专业,没有达到高标准,但他们已经表现出一个强大的趋势:
节点 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
在 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
我使用的 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 控制台或我可以通过的任何其他内容都没有错误。
关于如何继续进行这项工作的任何建议。
不幸的是,我可能不得不重启我的存储阵列。
在使用带有 libvirt 的 KVM 管理虚拟机的情况下,我需要对存储阵列重新通电,是否可能或什至建议:
然后按照相反的过程
欢迎任何建议。
iscsi storage-area-network libvirt multipath kvm-virtualization
我正在尝试构建一个系统,该系统将运行短期(CI 和测试版本)的软件组件,根据我的要求,每个组件都位于私人主机上是强制性的。我将这个定义也包含在半虚拟化选项中,因为它似乎可以让我省去很多麻烦。
我在 Mac 上工作,所以几乎所有技术都已淘汰,libvirt和quemu等对我不起作用。然而,我计划部署到 Debian;所以在 Debian 上运行的任何东西都回到了桌面上,前提是我可以编写主机及其来宾域的配置脚本。
我的预期设置是我可以用来引导 Debian 安装程序,这意味着在启动时,机器会自动配置(Chef、Puppet、Babushka,别介意,真的) - 并且该配置的一部分应该构建一个可用于启动容器的模板 rootfs。容器本身也需要进行配置,这样当容器上来的时候,知道要做什么工作,可以做工作,然后退出。
简而言之,这是我需要的工作流程:
我已经到了尝试以下的地步,并出于以下内联的原因放弃了它们:
对于主机
老实说,我不确定人们应该使用什么技术来将虚拟机从一无所有变成一个运行、工作和有用的系统。对我来说似乎是三个步骤 …
我的初衷是为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 网络上有不同的方法?
我正在努力将主机正确检测到的 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后,我发现 了一些 人士,基本上都建议使用以下方法:
获取供应商和产品 ID
root@host01:~# …Run Code Online (Sandbox Code Playgroud)今天我想增加一个虚拟机的大小,所以我做了我一直在做的事情(以前做过):
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) 作为以前的 VirtualBox 用户,我最近转移到 KVM(QEMU/libvirt 或其他任何名称)。我知道在 VirtualBox 中,当您向 VM 添加新存储设备时,会有一个标记为Solid-state Drive的复选框,如果选中,来宾系统会将虚拟磁盘视为固态设备。这非常有用,因为它可以通知来宾系统(即 Windows)禁用碎片整理。我想知道这在 KVM 中是否可行,因为我在互联网上找不到任何相关内容?
virtualization virtual-machines libvirt qemu kvm-virtualization
libvirt ×10
qemu ×4
ubuntu ×2
centos ×1
corruption ×1
debian ×1
docker ×1
iscsi ×1
lxc ×1
multipath ×1
openstack ×1
performance ×1
provisioning ×1
qcow2 ×1