我正在使用以下命令创建一个新的虚拟磁盘*:
$ virsh vol-create-as --format=qcow2 guest-disks disk_instid.24_diskid.30 8192M
Vol disk_instid.24_diskid.30 created
Run Code Online (Sandbox Code Playgroud)
“guest-disks”池是一个简单的“dir”类型池。如您所见,该命令成功了,但是当我尝试在新域中安装操作系统时,它只显示为几兆字节的大小:
# fdisk -l /dev/sda
Disk /dev/sda: 0 MB, 262144 bytes
1 heads, 1 sectors/track, 512 cylinders, total 512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sda doesn't contain a valid partition table
Run Code Online (Sandbox Code Playgroud)
如您所见,大小完全错误。知道这是为什么吗?
*不要介意数字 - 它是自动创建域的工具的一部分。
我有一台运行 Debian 6 的专用服务器,带有 Libvirt(0.9.11.3)和 Qemu-KVM(qemu-kvm-1.0+dfsg-11,Debian)。
我在使用较新内核 (>2.6.38) 的 KVM 来宾中使用桥接/路由网络时遇到问题。NATted 网络虽然工作正常。
较旧的内核也能正常工作。
主机内核的版本为 3.2.0-2-amd64,旧主机内核也存在问题。
主机的内容/etc/network/interfaces(去掉ip):
# 环回设备: 自动低速 iface lo inet环回 # 桥 自动 br0 iface br0 inet 静态 地址 176.9.xx.xx 广播 176.9.xx.xx 网络掩码 255.255.255.224 网关 176.9.xx.xx 点对点 176.9.xx.xx 网桥端口 eth0 bridge_stp 关闭 bridge_maxwait 0 桥接_fd 0 up route add -host 176.9.xx.xx dev br0 # VM IP 后期 mii-tool -F 100baseTx-FD br0 # 访问子网的默认路由 up route add -net 176.9.xx.xx 网络掩码 255.255.255.224 gw 176.9.xx.xx br0
ifconfig -a主机上的输出: …
我正在尝试向特定的虚拟主机添加固定地址,因此我关闭了虚拟机并使用了sudo virsh net-edit somenet. 添加行后
<host mac='52:54:00:26:61:22' name='virt.example.com' ip='192.168.111.111' />
Run Code Online (Sandbox Code Playgroud)
我保存并退出。然后我用相同的命令再次检查并恢复了以前的状态,我的更改消失了。
同时,当我查看 时/etc/libvirt/qemu/networks/somenet.xml,会应用我的更改。
如果我再次启动我的虚拟机,它会从 DHCP 池 ( 192.168.111.170)获取 IP ,但不是我上面定义的地址。
当我在更改后重新启动 libvirt-service 时,情况似乎相同:在配置文件中是我的更改,virsh我看到 vanilla 状态和虚拟机获取错误的 IP。
这里有什么问题?
编辑。在此处添加完整的 XML。这是我在下面看到的 conf /etc:
<network>
<name>somenet</name>
<uuid>80d85710-23bb-1ab6-79e6-cd65c6739714</uuid>
<bridge name='virbr1' stp='on' delay='0' />
<mac address='52:54:00:90:75:1A'/>
<domain name='example.com'/>
<ip address='192.168.111.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.111.100' end='192.168.111.254' />
<host mac='52:54:00:26:61:22' name='virt.example.com' ip='192.168.111.111' />
</dhcp>
</ip>
</network>
Run Code Online (Sandbox Code Playgroud)
这是我看到的conf virsh:
<network>
<name>somenet</name>
<uuid>80d85710-23bb-1ab6-79e6-cd65c6739714</uuid>
<bridge name='virbr1' stp='on' delay='0' />
<mac address='52:54:00:90:75:1A'/> …Run Code Online (Sandbox Code Playgroud) 主机操作系统是具有以下版本的 Arch Linux:-
qemu 2.1.0-2 libvirt 1.2.7-1 linux 3.15.8-1
来宾操作系统是 Windows 7 64 位。
当我第一次创建这个 VM 并开始使用它时,这个问题并不存在,而是在某个时候出现了。不幸的是,我无法将其确定为特定主机或来宾配置更改或软件更新。
使用 virt-manager 查看器运行 VM 时,按键注册所需的时间不到一秒钟。鼠标操作不会延迟。机器整体运行速度并不明显 - 延迟似乎仅出现在键盘输入中。
这是机器的定义:-
<domain type='kvm'>
<name>Windows7</name>
<uuid>ad22629b-64eb-7444-359f-f97d458336cb</uuid>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>4</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-1.5'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode='custom' match='exact'>
<model fallback='allow'>Nehalem</model>
<vendor>Intel</vendor>
<topology sockets='1' cores='2' threads='4'/>
<feature policy='require' name='avx'/>
<feature policy='require' name='vme'/>
<feature policy='require' name='dtes64'/>
<feature policy='require' name='xsave'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='xtpr'/>
<feature policy='require' name='pcid'/>
<feature policy='require' …Run Code Online (Sandbox Code Playgroud) 我将 vagrant 与 vagrant-libvirt 一起使用,我想通过命令行创建一个包:
vagrant package --output ubuntu14-base.box
Run Code Online (Sandbox Code Playgroud)
我遇到了有关 virt-sysprep 不存在的错误(在系统中搜索后确认)。我尝试安装这些软件包,但没有成功:
但仍然没有virt-sysprep安装。在 Googlesphere 中搜索总是会返回libguestfs-tools-cUbuntu 中不可用的内容。
我有一个在桥上有一个接口的虚拟机(例如 br0)。重新启动网桥(关闭,启动)后,VM 看不到网络,我必须执行“电源循环”(关闭然后打开电源)才能让 VM 看到网络。为什么会发生这种情况,为什么重启没有帮助?真挚地。
Hypervisor 是 Ubuntu 16.04 上的 KVM
目前,libvirt 中只有两个与网络引导相关的选项可用bootp:
server和file
所以对于这样的配置:
<bootp file='test.ipx' server='10.10.10.2'/>
Run Code Online (Sandbox Code Playgroud)
生成此代码:
dhcp-boot=test.ipx,,10.10.10.2
Run Code Online (Sandbox Code Playgroud)
1)我如何添加这样的东西:
dhcp-userclass=set:ipxe,iPXE
dhcp-boot=tag:ipxe,http://matchbox.foo:8080/boot.ipxe
Run Code Online (Sandbox Code Playgroud)
2)或者我可以将配置文件更改var/lib/libvirt/dnsmasq/default.conf为其他内容
选项 1 似乎不可能查看libvirt 代码。
选项 2 似乎也不可能
我正在从 Xen 迁移到 Kvm。
在 Xen 中,我能够轻松地将主机 cpus 固定到来宾虚拟机,并将主机 cpus 固定到 "dom0"。
在 Kvm 中,我还可以轻松地将主机 cpus 固定到来宾 vms,但是,据我所知,没有什么能阻止在主机操作系统上运行的应用程序使用这些 cpus。我想防止在主机上运行的程序饿死/增加来宾延迟的情况。
我可以手动执行详细的 cgroup 策略,但也许我只是缺少 libvirt / centos7 中的设置?
此外,还有一个供客人使用的“emulatorpin”设置。我应该将“模拟器”固定到专用主机 cpu 上,还是应该将其限制为来宾 cpu?目标是尽可能地限制来宾的延迟。
我正在使用 libvirt 来管理我的 VM,但我不需要自动启动服务的 dnsmasq DNS 服务器,因为它与我的 acme-dns 设置冲突。
有没有办法完全禁用 DNS 服务器并仅将 dnsmasq 用于 DHCP,或者至少更改 dnsmasq 正在侦听的端口?
编辑/var/lib/libvirt/dnsmasq/default.conf没有意义,因为它只是被覆盖了,但是当使用sudo virsh net-edit default它时是完全不同的格式。
我想做BSD服务器的物理到虚拟迁移,保存IP地址。目标虚拟主机是 Linux/KVM。
当前设置:我有一台硬件故障的 BSD 服务器。我刚刚用新服务器替换了它,它的硬件太新,BSD 不能直接使用。
因此,我在新服务器上安装了 Linux,并希望使用 KVM 将 BSD 迁移到虚拟化中。
我有旧服务器的完整硬盘转储。
问题是:我只有一个真实 IP,我应该在来宾和主机中都使用这个 IP。
我想在来宾上使用 IP,因为它是一个邮件服务器,我希望在邮件标头中使用我的真实 IP。
在主机上使用 IP 是因为我没有任何其他 IP。
机器的 TCP 服务是:
端口 22,25,53,110 将使用 iptables 从主机转发到访客。如果可能的话,我也会将访客的 DNS 服务器转发到 realIP。
我应该如何配置 KVM 网络和 libvirt 以在来宾和主机中实现相同的 IP 使用?
networking virtualization iptables libvirt kvm-virtualization
libvirt ×10
bridge ×2
networking ×2
qemu ×2
centos7 ×1
iptables ×1
linux ×1
opennebula ×1
pinning ×1
vagrant ×1