标签: kvm-virtualization

在 Libvirt 中更改 VNC 侦听地址而无需重新启动 VM

有没有办法即时编辑 Libvirt-Machine 的监听地址?目前好像要编辑监听地址,得先关闭对应的VM,再编辑xml,重新定义域。

我目前正在构建一个小型 Web 应用程序(libvirt 前端),我想在其中实现一个名为“启用/禁用 vnc”的功能 - 但是,如果唯一的方法是关闭虚拟机。

vnc libvirt kvm-virtualization

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

使用 virt-install initrd-inject 预置命令字符串失败并显示换行符

我正在使用 libvirt 的 virt-install 命令创建一个新的虚拟机。该命令使用 initrd-inject 从管理程序中提取本地预置文件:

virt-install \
--autostart \
--name vm1 \
--ram 4096 \
--location=http://archive.ubuntu.com/ubuntu/dists/precise/main/installer-amd64/ \
--initrd-inject=/var/lib/libvirt/preseeds/vms/preseed.cfg \
--extra-args="locale=en_US console-setup/ask_detect=false keyboard-configuration/layoutcode=us hostname=virtual domain=unassigned-domain interface=auto" \
--vcpu=4 \
--vnc \
--vnclisten=0.0.0.0 \
--noautoconsole \
--os-type=linux \
--os-variant=ubuntukarmic \
-w bridge=br0 \
-w bridge=br1 \
-w network=default \
 --disk format=qcow2,size=20,bus=virtio,path=/export/vm/vm1.qcow2
Run Code Online (Sandbox Code Playgroud)

一切正常,直到 preseed 的 late_command 部分动态打印一个 upstart 脚本到文件中;

d-i preseed/late_command string printf "description \"the run-once bootstrap\"\n\nstart on net-device-up\nstop on runlevel [!2345]\n\npre-start script\n wget -O /root/bootstrap.sh http://my.bootstrap/bootstrap;\nchmod +x /root/bootstrap.sh;\n  /root/bootstrap.sh > …
Run Code Online (Sandbox Code Playgroud)

preseed debian-squeeze kvm-virtualization

5
推荐指数
1
解决办法
1288
查看次数

KVM:从内部关闭来宾时运行脚本?

我正在运行 KVM 作为虚拟化引擎。

有没有办法让 QEMU/libvirt 在来宾从内部关闭时在主机上运行脚本(现在关闭 -h)?

我希望能够在来宾停止时运行一些自定义清理任务。

linux libvirt qemu kvm-virtualization

5
推荐指数
1
解决办法
3334
查看次数

新的 KVM 访客无法访问 LAN 外

我有一台 KVM 主机(在192.168.0.10),它目前有一个工作的 KVM 来宾(在192.168.0.12)。今天尝试安装一个新的 KVM 来宾时,我遇到了一个问题,即新来宾上的网络只能部分工作。

我可以从新来宾访问的唯一内容是网络内的资源。尝试访问任何其他网络资源(包括那些经过网关的资源)会导致到达目的地的 100% 数据包丢失。

客人通过连接在桥br0使用eth2访问网络。

主机网络按预期工作,另一个(当前只有一个)来宾上的网络也通过同一网桥连接,工作正常。关闭工作访客并不能解决问题。

两个来宾都通过 DHCP 获取他们的网络详细信息。

tcpdump在来宾的虚拟接口上从主机运行显示来宾尝试与外部世界通信,并且仅从主机和网关获得响应。


主持人

有问题的来宾当前正在通过 连接vnet0

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:1e:4f:34:dc:79 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc …
Run Code Online (Sandbox Code Playgroud)

networking linux routing bridge kvm-virtualization

5
推荐指数
1
解决办法
4079
查看次数

多个不同的 VLAN 中继到 KVM 来宾 (Linux)

我遇到了架构挑战的各种障碍。我有一台运行 KVM 的服务器——它将包含许多来宾,一些运行虚拟化防火墙,其他一些,只是普通的 Web 服务器。

  • Web 服务器需要一个未标记的 VLAN 接口
  • 防火墙需要标记的 VLAN 中继

现在,这通常很简单,只需eth0在其中添加一个网桥,在网桥上添加几个 VLAN(vmbr0.1等等) - 然后为每个来宾(或其倍数)分配一个带有未标记 VLAN 的接口。

                             firewall1 (vlan 1,2,3,4)
switch ===== eth0  vmbr0     firewall2 (vlan 1,2,5,6)
                   (eth0)    server1 (vlan 7)
                             server2 (vlan 8)
     vlan trunk
 (1,2,3,4,5,6,7,8)     
Run Code Online (Sandbox Code Playgroud)

现在,如果您只有几个需要传递给来宾的接口,这可以正常工作。但是当您需要将 500 个 VLAN 放入防火墙时会发生什么。它的不切实际。

所以我无法弄清楚如何创建一个数字中继(具有公共 VLAN 和不同的 VLAN),并将它们分配给来宾。

到目前为止,我找到的最接近的解决方案是在主桥上创建 VLAN,然后对于服务器,只需从中分配一个 VLAN。

然后对于防火墙,为每个防火墙创建一个桥,其中只有来宾的tap接口,然后vlan为相应的桥创建未标记的接口,并将其添加到主vmbr0桥。

唯一的问题是离开未标记接口的流量当然是未标记的。

是否可以标记离开接口的流量?

——

否则,如何实现 KVM 来宾的不同中继,这些中继可能具有公共 VLAN 和不同的 VLAN(但绝不是所有 VLAN) - 并且能够分配单个未标记的 vlan 接口

linux vlan bridge trunk kvm-virtualization

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

如何在一个 VPS 主机帐户上设置多个 VPS 或虚拟机?

假设您有一个 Linux VPS 托管帐户,并且您想在该 VPS 或虚拟机中添加多个 VPS,您该怎么做?

一个场景可能是我想安装一个 IIS 服务器,或者我想拥有多个用于不同目的的 Linux 虚拟机。

我不确定这在 VPS 上是如何实现的,比如如果它们都放在一个具有一个 IP 的 VPS 中,你将如何连接到不同的机器。

linux vps web-hosting virtual-machines kvm-virtualization

5
推荐指数
1
解决办法
9898
查看次数

KVM(virtio 驱动程序)的网络性能不佳 - 更新:使用 vhost_net

我之前已经设置了几个基于 KVM 的网络,但从未遇到过这个问题,我一生都无法想象我以前会设置什么不同的网络。

设置

基本上,我已经完全拥有戴尔堆栈:

  • 2x Dell N2024(堆叠千兆交换机)
  • 几个用于 KVM 管理程序的 Dell R720
  • 2 个用于网关/防火墙的 Dell R320

所有机器都运行 CentOS6.5,hypervisor,基本上是标准安装,有一些 sysctl 调整。

目前,我有一些测试 VM 的设置,它们的设置与它们的主机相似(CentOS 6.X,基本安装带有基本的 puppet 驱动配置)。所有虚拟机都是:

  • 桥接到两个物理分离的网络之一(即每个管理程序有两个以太网连接,一个用于公共/DMZ 桥接 LAN,另一个用于私有)
  • 所有 VM 都使用 virtio 来处理网络、块设备(基本上是运行 virt-install 命令的标准结果)——例如(例如 libvirt 配置)

    <interface type='bridge'>
          <mac address='52:54:00:11:a7:f0'/>
          <source bridge='dmzbr0'/>
          <model type='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    
    Run Code Online (Sandbox Code Playgroud)
  • 并且所有 VM 都可以访问 2 到 8 个 VCPU 以及 8 到 64GB 的 RAM,并且它们的驱动器是主机上的 LVM 卷

VM 中的一些简单文件副本和 dd 测试产生了完全可以接受的结果(在这些小规模综合测试中为 300MB/s - 800MB/s)

物理机之间的网络性能

我现在已经离开了 Jumbo …

networking centos libvirt kvm-virtualization virtio

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

在 KVM 上无人值守安装 Windows Server 2012

我正在尝试使用virt-install. 安装程序抱怨说,“Windows 无法<ProductKey>从无人参与的应答文件中读取设置”,我一直无法弄清楚如何继续处理这一点。

我从以下autounattend.xml文件开始:

<unattend xmlns="urn:schemas-microsoft-com:unattend"
xmlns:ms="urn:schemas-microsoft-com:asm.v3"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
  <settings pass="windowsPE">
    <component name="Microsoft-Windows-Setup"
    publicKeyToken="31bf3856ad364e35" language="neutral"
    versionScope="nonSxS" processorArchitecture="x86">
      <UserData>
        <AcceptEula>true</AcceptEula>
        <ProductKey>
          <Key>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
          <WillShowUI>OnError</WillShowUI>
        </ProductKey>
      </UserData>
      <ImageInstall>
        <OSImage>
          <WillShowUI>Never</WillShowUI>
          <InstallTo>
            <DiskID>0</DiskID>
            <PartitionID>1</PartitionID>
          </InstallTo>
          <InstallFrom>
            <MetaData>
              <Key>/IMAGE/Name</Key>
              <Value>Windows Longhorn SERVERSTANDARDCORE</Value>
            </MetaData>
          </InstallFrom>
        </OSImage>
      </ImageInstall>
    </component>
  </settings>
</unattend>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下方法将其烘焙成 ISO 映像mkisofs

$ ls config/
autounattend.xml
$ mkisofs -o config.iso -J -r config
Run Code Online (Sandbox Code Playgroud)

然后我像这样开始安装:

virt-install -n ws2012 -r 2048 -w network=default,model=virtio \
  --disk path=ws2012.qcow2,device=disk,bus=virtio \
  --cdrom en_windows_server_2012_r2_with_update_x64_dvd_4065220.iso \ …
Run Code Online (Sandbox Code Playgroud)

unattended kvm-virtualization windows-server-2012-r2

5
推荐指数
1
解决办法
3889
查看次数

如何在 Ubuntu 12.04 中配置和使用 qemu-guest-agent?我的主要目的是从主机获取来宾 VM 的 IP 地址

在文档中不太清楚如何在 Ubuntu 12.04 中安装和使用 qemu-guest-agent。

任何人都可以帮助我吗?

http://wiki.libvirt.org/page/Qemu_guest_agent

它是在域内运行的守护程序,旨在帮助管理应用程序执行需要来宾操作系统帮助的功能。我想使用 guest-network-get-interfaces qemu-guest-agent 命令知道来宾 VM 的 IP 地址。

有没有其他方法可以找到来宾 VM 的 IP 地址?

arp -an, arpwatch ,echo syslog | grep $mac_address 在我的场景中没有用?

libvirt qemu kvm-virtualization

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

'virsh save' 后 VM 的状态

virsh save vm_name memdump然后virsh restore memdump恢复一个(正在运行的)VM 就好了。

但是,VM 在 之后关闭virsh save。我正在为 KVM 虚拟机编写“实时”备份和恢复脚本,因此在备份部分,我显然需要在备份后运行虚拟机。virsh restore memdump备份后立即执行不是问题,但在我看来基本上没有必要 - 我“应该”能够暂停虚拟机,将其内存保存到文件中,然后简单地恢复/取消挂起虚拟机。

这对于内存很少的虚拟机来说并不是真正的问题,但是如果虚拟机有相当大的工作内存,那么它会不必要地延长备份时间。

不幸的是,即使我virsh suspendvirsh save.

有没有办法做到这一点?(即暂停、保存、取消暂停)

linux libvirt kvm-virtualization virsh

5
推荐指数
1
解决办法
6901
查看次数