标签: kvm-virtualization

KVM/libvirt 和 ip_forward = 1 导致网络冻结

我正在使用 KVM 和 libvirt,并且每隔 2-3 分钟左右就会在主机和来宾上遇到一次小型网络冻结。冻结持续 1-2 秒。使用的操作系统是 Ubuntu 10 LTS 服务器版。

我正在使用标准的桥接设置,主机还作为来宾的路由器(因为数据中心总是将来宾 IP 路由到主机)。除了偶尔每隔几分钟网络冻结之外,这一切都很好。mtr来自外部机器的跟踪报告大约 1-2% 的数据包丢失(对于主机和来宾)。

我发现当我在主机 (/proc/sys/net/ipv4/ip_forward) 上禁用 ip 转发时,不再发生冻结(但是来宾显然没有网络连接),所以我猜这是一个软件相关的问题而不是硬件问题。

我已经尝试在来宾中切换到替代网络驱动程序(从 virtio 到 e1000/rtl),禁用我们的 iptables 数据包过滤,使用各种网络选项(关闭/打开 icmp 重定向等),但这并没有改变任何事物。

对此的任何想法和想法都非常感谢。

谢谢,托比亚斯

networking libvirt kvm-virtualization

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

将 LVM 快照用于 KVM 虚拟机克隆

所以,我现在有一个非常棒的 KVM 设置正在运行,主机和来宾域上的 CentOS5.5,管理所有配置的 libvirt,等等。来宾域文件系统存储在硬件 RAID5 卷顶部的 LVM 中,所以我具有备份和低级数据冗余的灵活性。

我今天测试了 virt-clone,它运行得非常好,除了将 24G 数据从挂起域的 LVM 磁盘复制到新虚拟机的新 LVM 卷需要大约 30 分钟。

我的问题是:我不能只使用 LVM 快照来创建新 VM 的根磁盘吗?例如: lvcreate -s guest1_root -n guest2_root -L 8G raid_vg

现在,我对 LVM 快照的理解是,快照存储对原始块所做更改的逆增量,因此快照占用的实际空间很少,即使在写入原始卷后也可以读取原始块。LVM2 添加了读写快照,开启了这种有趣的可能性。

事实上,LVM HOWTO甚至建议将此功能与 Xen 结合使用:

这开辟了许多新的可能性,这是 LVM1 的只读快照无法实现的。(...) 它对于创建用于 Xen 的卷也很有用。您可以创建磁盘映像,然后对其进行快照并修改特定 domU 实例的快照。然后,您可以创建原始卷的另一个快照,并针对不同的 domU 实例修改该快照。由于快照使用的唯一存储是在源或快照上更改的块,因此大部分卷由 domU 共享。

这似乎是一个非常强大的工具,我想知道是否有人在他们的生产虚拟化环境中尝试过它,能想到任何采用这种方法的供应商(Citrix、VMWare),或者能想到这个想法的任何严重问题。我可以想到以下潜在问题:

  • 如果“原始”来宾在快照时运行,则潜在的文件系统问题。
  • 作为“逆增量”和“写入块”日志附加到的主机域 LVM 性能。它可能非常快,但我不知道,这似乎是一个奇怪的想法,因此需要进行测试和基准测试。
  • 一篮子里的更多鸡蛋:如果“原始”LVM 卷被损坏,那么快照卷也会被冲洗掉。当然,RAID5 可以减轻磁盘损坏,但值得注意的是。
  • 你能快照快照吗?我假设是这样。

作为可能比我拥有更多虚拟化经验的人,有没有什么让想要从这样的设置中尖叫的?

virtualization linux lvm kvm-virtualization

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

在 Lucid KVM 服务器上自动安装 Lucid 来宾

我们有一个运行 KVM 的 Ubuntu 10.04 服务器非常好,但是在找出最干净(和最快)的方式来执行 10.04 来宾的无人值守安装时遇到了麻烦。

要求:

  • 必须将 LVM 卷用于来宾的存储(没有一些 qemu-img 转换或类似的转换)

  • 必须使用 virtio 进行网络和磁盘存储(最好不要在 XML 文件中进行黑客攻击)

  • 必须使用本地镜像 - 所以它很快(例如 <5 分钟)

  • 真的很希望它是完全自动化和非交互式的。(即启动并在几分钟后运行一个功能系统)

  • 希望能够在开始到指定的IP地址,所以很容易去不看DHCP服务器。

  • 希望能够指定不同的味道/发行版/版本等。

选项 1: 我们不喜欢从 virt-manager UI 执行此操作——因为您必须在物理服务器上(不远程使用 virt-manager)才能安装到 LVM 分区。这确实有效,但您必须在服务器上运行 VNC 和 Gnome,这并不酷。此外,它是交互式的,您必须单击许多选项,而且我们仍然希望编写包装脚本来执行此操作。

选项 2: 来自 python-vm-builder 包的 vmbuilder 似乎正是我们想要的——因为你可以指定一个本地镜像(为此使用 apt-proxy)但无法让它使用 LVM 卷,也不将 virtio 用于磁盘。

vmbuilder kvm ubuntu --suite=lucid --flavour=virtual --arch=amd64 --mirror= http://192.168.1.1:9999/ubuntu -o --libvirt=qemu:///system --ip=192.168 .1.94 --part=vmbuilder.partition --raw=/dev/VG0/LVtest --templates=mytemplates --firstboot=/root/vm/boot.sh --user=linuxadmin --name=linuxadmin --pass= secretpass …

ubuntu ubuntu-10.04 virt-install kvm-virtualization

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

KVM 来宾的正确网络配置使其位于主机的同一网络上

我在 Lenny 上运行 Debian Linux 服务器。在其中,我正在使用 KVM 运行另一个 Lenny 实例。两台服务器都是外部可用的,具有公共 IP,以及用于 LAN 的具有私有 IP 的第二个接口。一切正常,除了 VM 将所有网络流量视为源自主机服务器。我怀疑这可能与我在主机上运行的基于 iptables 的防火墙有关。

我想弄清楚的是:如何正确配置主机的网络以满足所有这些要求?

  1. 主机和虚拟机都有 2 个网络接口(公共和私有)。
  2. 主机和虚拟机都可以独立设置防火墙。
  3. 理想情况下,VM 流量不必穿过主机防火墙。
  4. VM 看到的是真正的远程 IP 地址,而不是主机的。

目前,主机的网络接口被配置为网桥。eth0 和 eth1 没有分配给它们的 IP 地址,但 br0 和 br1 有。

/etc/network/interfaces 在主机上:

# The primary network interface
auto br1
iface br1 inet static
    address 24.123.138.34
    netmask 255.255.255.248
    network 24.123.138.32
    broadcast 24.123.138.39
    gateway 24.123.138.33
    bridge_ports eth1
    bridge_stp off

auto br1:0
iface br1:0 inet static
    address 24.123.138.36
    netmask 255.255.255.248
    network 24.123.138.32
    broadcast …
Run Code Online (Sandbox Code Playgroud)

networking linux firewall bridge kvm-virtualization

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

如何将特定的虚拟机快照导出为原始磁盘映像

我为我的朋友创建了一个 Linux 设备。这是一个小型的 Ubuntu 安装,配置了 Trac、lighthttp 和 ufw。

我是用 VirtualBox 做的。

现在我想导出最新的快照版本,其中所有内容都受到保护并配置为原始磁盘映像,以便与 KVM 一起使用。

现在我想知道我是否因为不知道如何导出而浪费了几个小时的工作。

我已经浏览了互联网,但材料数量巨大,而且我还没有找到与我想做的事情类似的描述。

是否可以?

virtualbox snapshot diff export kvm-virtualization

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

libvirt qemu/kvm 迁移问题

我在戴尔服务器上使用 kvm 和 libvirt。现在我正在尝试将一台虚拟机从物理服务器迁移到另一台。然而,我每次都失败了。

在 physicalServer1 上的 virsh 中,我输入:

virsh # migrate virtualmachine1 qemu+ssh://username@physicalServer2/system
error: operation failed: migration to 'tcp:physicalServer2:49163' failed: migration failed
Run Code Online (Sandbox Code Playgroud)

然后我在 libvirt.org 上搜索了FAQ 部分。它说:

error: operation failed: migration to '...' failed: migration failed

This is an error often encountered when trying to migrate with QEMU/KVM. This typically happens with plain migration, when the source VM cannot connect to the destination host. You will want to make sure your hosts are properly configured for …
Run Code Online (Sandbox Code Playgroud)

kvm-virtualization

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

sysctl.conf 未在启动时运行

sysctl.conf 应该在引导期间在什么时候被读取,为什么它可能不会运行?我有以下设置,在我重新启动时没有应用:

net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-filter-pppoe-tagged = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0

fs.nfs.nlm_udpport = 32768
fs.nfs.nlm_tcpport = 32768
Run Code Online (Sandbox Code Playgroud)

第一部分用于 KVM 桥接,第二部分是在已知端口上运行 NFS 锁管理器。但是,启动后,这些值并没有生效。如果我跑sysctl -p,那么他们会。

这不会是一个大问题,除了我无法弄清楚如何在不重新启动的情况下重新启动锁管理器。我真的很想知道为什么 sysctl.conf 在启动时不起作用,但我只能重新启动锁管理器。

这是在 Ubuntu 服务器 10.04.2,内核 2.6.32-31-server 上。我知道有些守护进程会检查他们的配置文件的权限,如果他们过于宽松就拒绝工作,但 sysctl.conf 是 644 root:root,我很确定这是默认值。

linux ubuntu nfs sysctl kvm-virtualization

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

KVM + cgroups:Dom0 进程最佳实践?

我正在从 Xen 过渡到 KVM,并将使用 Fedora 14。我计划使用 cgroups 为 VM 分配优先级。

我的问题如下:如果我将虚拟机放在不同的 cgroup 中,我是否也应该将所有其他 Domain-0(物理主机)进程放在单个 cgroup 中,然后分配较低的优先级?Xen 的类比是当 Dom0“VM”被调度时,所有的 Dom0 进程都是批量调度的,所以通过将它们全部放在同一个 cgroup 中,我将模拟这种行为。但是,由于 KVM 没有与 Xen 相同的 Dom0 IO 依赖性,我可以为 Dom0 cgroup 分配低优先级。

换句话说,所有后台 Dom0 进程(如 ntpd、yum 等)是否会与通过 cgroup 显式控制资源分配的 VM 竞争,从而导致性能下降?这里的最佳做法是什么?

process-priority cgroup kvm-virtualization

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

KVM 上的带宽监控

是否可以监控/限制 KVM 来宾的带宽?我想在我的服务器上为人们提供虚拟机,但我想小心不要超过我的每月带宽限制。我能找到的唯一支持它的地方是“云”框架,我猜我要么在 Linux 中遗漏了一些简单的东西,要么我需要与我上方的路由器交谈(我无权访问)。

networking libvirt bandwidth-control ubuntu-10.04 kvm-virtualization

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

Ubuntu 上的 KVM:控制台连接不显示任何内容

我使用以下命令创建了一个 KVM 虚拟机:

sudo ubuntu-vm-builder kvm oneiric \
                  --domain xpstage \
                  --dest xpstage \
                  --arch i386 \
                  --hostname xpstage \
                  --mem 1024 \
                  --user myuser --pass mypassword \
                  --bridge virbr0 \
                  --ip 192.168.1.50 --dns 8.8.8.8 \
                  --components main,universe,restricted \
                  --addpkg acpid --addpkg vim --addpkg openssh-server --addpkg avahi-daemon \
                  --libvirt qemu:///system ;
Run Code Online (Sandbox Code Playgroud)

我可以启动 VM,但无法使用网络 (ssh) 或控制台连接到它。

为了启用控制台访问,我在 VM 定义文件中添加了一个控制台部分:

<domain type='kvm' id='10'>
  <name>xpstage</name>
  <uuid>1fbe45ca-655f-9de2-b552-6ed44b2fe4c2</uuid>
  <memory>1048576</memory>
  <currentMemory>1048576</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-0.14'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot> …
Run Code Online (Sandbox Code Playgroud)

ubuntu kvm-virtualization

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