我正在使用 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 重定向等),但这并没有改变任何事物。
对此的任何想法和想法都非常感谢。
谢谢,托比亚斯
所以,我现在有一个非常棒的 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),或者能想到这个想法的任何严重问题。我可以想到以下潜在问题:
作为可能比我拥有更多虚拟化经验的人,有没有什么让想要从这样的设置中尖叫的?
我们有一个运行 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 …
我在 Lenny 上运行 Debian Linux 服务器。在其中,我正在使用 KVM 运行另一个 Lenny 实例。两台服务器都是外部可用的,具有公共 IP,以及用于 LAN 的具有私有 IP 的第二个接口。一切正常,除了 VM 将所有网络流量视为源自主机服务器。我怀疑这可能与我在主机上运行的基于 iptables 的防火墙有关。
我想弄清楚的是:如何正确配置主机的网络以满足所有这些要求?
目前,主机的网络接口被配置为网桥。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) 我为我的朋友创建了一个 Linux 设备。这是一个小型的 Ubuntu 安装,配置了 Trac、lighthttp 和 ufw。
我是用 VirtualBox 做的。
现在我想导出最新的快照版本,其中所有内容都受到保护并配置为原始磁盘映像,以便与 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) 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,我很确定这是默认值。
我正在从 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 竞争,从而导致性能下降?这里的最佳做法是什么?
是否可以监控/限制 KVM 来宾的带宽?我想在我的服务器上为人们提供虚拟机,但我想小心不要超过我的每月带宽限制。我能找到的唯一支持它的地方是“云”框架,我猜我要么在 Linux 中遗漏了一些简单的东西,要么我需要与我上方的路由器交谈(我无权访问)。
networking libvirt bandwidth-control ubuntu-10.04 kvm-virtualization
我使用以下命令创建了一个 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) linux ×3
networking ×3
ubuntu ×3
libvirt ×2
ubuntu-10.04 ×2
bridge ×1
cgroup ×1
diff ×1
export ×1
firewall ×1
lvm ×1
nfs ×1
snapshot ×1
sysctl ×1
virt-install ×1
virtualbox ×1