Articles of kvm virtualization

自动清理虚拟机中磁盘上未使用的空间

我运行基于KVM的虚拟化服务器(即Proxmox),其中一些基于Debian的机器在KVM虚拟机中运行。 Proxmox可以创buildVM的备份,也可以压缩VM磁盘映像。 据我们了解,随着时间的推移,备份大小不断增加,因为存储在每个VM磁盘上的更多数据以及更多“干净”的VM磁盘块变得“脏”(即包含剩余的旧文件)。 所以,即使我通过rm -rf删除这样的虚拟磁盘上的所有文件,实际上备份将是相同的大小,因为这不会清除VM磁盘的所有块。 我可以通过做一些像dd if=/dev/zero of=/BIG.txt然后rm -f /BIG.txt来“清除”VM磁盘 – 这样我就可以创build大文件,这些文件将会使用所有的零磁盘空间,并删除后,其前块将包含零。 缺点是一会儿磁盘变满,影响到每一个想写任何东西的程序。 但也许还有其他的方法来清零未使用的磁盘块零,所以备份将压缩这样的磁盘更好的速度? 一些基于Windows的程序提供了“清除未使用的磁盘空间”(例如CCleaner)的选项,但我需要Linux。

获取英特尔SR-IOV虚拟function计数器

在对Intel SR-IOV进行了一些研究之后,我意识到在audio接口连接到虚拟机 (例如带有Libvirtpipe理器的QEMU / KVM虚拟机)时,没有方便的方法获得audio计数器。 而且,我还没有发现这样做的麻烦,因为一旦VM在HOST上被创build,并被绑定到一些VF接口(这是SRI-OV VFs的主要用例)的configuration,该接口将自动从主机上分离出来并连接到虚拟机 (我认为这是为了允许直通绕过内核或其他目的而完成的),实际上我找不到find计数器的方法的虚拟机在主机上使用的VF (我使用的是Ubuntu 16.04,我尝试在VF端口上寻找计数器,在PF接口上使用ethtool -S但没有效果),那些计数器可能实际上是非常有助于各种情况。 如果有一些处理SRIOV的经验的人可能会对这个问题有所暗示,并告诉我我错了,而且有一个简单的方法,这将会非常有帮助。 谢谢! 更新 :。 其实我发现ethtool -S可能是有用的,它可以让你看到nic的TX / RX队列计数器,我发现VFfunction驱动ixgbevf为每个VF使用恰好一对不同的TX / RX队列。 而且他们正在按顺序分配,所以有可能做一个映射。 但不幸的是,这是一个丑陋的,依赖驾驶员的解决方

在LVM卷上虚拟化ZFS

我们有一些大的SATA磁盘在踢,我一直在想把它们扔到KVM主机上,然后安装FreeNAS VM来pipe理它们。 我会通过LVM将这些添加到主机,并给予磁盘的总大小(〜5TB),我可能需要直接使用LVM卷,而不是vm磁盘的磁盘映像。 我的问题是这样的:我会否通过这种方式将它安装在LVM之上否定在FreeNAS上使用ZFS的好处? 我试图围绕如何将冗余和纠错从硬件转换为ZFS来解决这种问题。

通过Eucalyptus启动映像时,使用virsh连接到KVM实例?

我在Ubuntu 10.04上使用Eucalyptus来build立私有云。 有时我不能SSH入虚拟机实例,我希望能够直接连接到VM实例的控制台。 但是,默认情况下,这似乎并没有通过virsh: $ sudo virsh -c qemu:///system console i-486B085E No console available for domain 有没有办法启用它,例如,通过改变Eucalyptus生成传递给libvirt的XML文件的方式? 这是Eucalyptus生成的libvirt.xml文件: $ cat /var/lib/eucalyptus/instances/admin/i-486B085E/libvirt.xml <domain type='kvm'> <name>i-486B085E</name> <os> <type>hvm</type> <kernel>/var/lib/eucalyptus/instances//admin/i-486B085E/kernel</kernel> <initrd>/var/lib/eucalyptus/instances//admin/i-486B085E/ramdisk</initrd> <cmdline>root=/dev/sda1 console=ttyS0</cmdline> </os> <features> <acpi/> </features> <memory>262144</memory> <vcpu>1</vcpu> <devices> <disk type='file'> <source file='/var/lib/eucalyptus/instances//admin/i-486B085E/disk'/> <target dev='sda'/> </disk> <interface type='bridge'> <source bridge='eucabr10'/> <mac address='d0:0d:48:6B:08:5E'/> <model type='e1000'/> </interface> <serial type="file"> […]

在KVM guest虚拟机中使用多个IP

我正在使用Ubuntu服务器和KVM,并试图找出如何让networking工作,以便一个客人可以使用多个静态IP地址从一个networking适配器。 现在我假设一个这样的布局(全部是静态的): eth0 |- 192.168.1.100 – Server address A (eth0) |- 192.168.1.101 – Server address B (eth0:1) \- Virtual machine |- 192.168.1.150 – VM address C (eth0:2?) \- 192.168.1.151 – VM address D (eth0:3?) 我不太清楚如何在/etc/networking/interfaces或virsh中进行设置。 我猜测一个网桥需要参与,而且networking需要使用libvirtbuild立,但我不知道如何设置。

kvm内存通过virsh更改不会传播给vm

您好我刚开始在rhel6上使用kvm,创build一个虚拟机之后,我尝试增加内存,但是我在xml文件中的更改不会传播给虚拟机,即使在popup虚拟机并重新启动libvert之后? [root@kvm01 qemu]# virsh dominfo dev-kvm01 Id: 2 Name: dev-kvm01 UUID: 9b2bf581-2807-3116-b176-60e9c0559943 OS Type: hvm State: running CPU(s): 2 CPU time: 1975.3s Max memory: 7864320 kB Used memory: 7864320 kB Persistent: yes Autostart: disable Security model: selinux Security DOI: 0 Security label: system_u:system_r:svirt_t:s0:c47,c760 (enforcing) [iknowmed@dev-kvm01 ~]$ free total used free shared buffers cached Mem: 3632284 […]

如何使用virtio nic在windows 2008中configurationvlans

我只是用kvm在我的debian操作系统中安装了Windows2008。 我安装virtio网卡。 我只想用vlanconfigurationvirtio nic。 但经过多次search。 这里似乎没有解决办法。 那么,这里有人能解决我的问题吗?

具有多个子网的KVM的IP网桥

我有一台机器设置运行KVM和eth0上的网桥与机器的IP地址。 该机器有一个IP地址范围内没有更多的IP地址免费。 我正在尝试使第二个子网可用于KVM来宾使用他们的IP地址。 network — eth0 — bridge0 –| (xxx75/26) |– guest0:eth0 (xxy213/28) | |– guest1:eth0 (xxy214/28) 我通过在主机上创build了一个ifcfg-bridge0文件来创build了这个桥梁,而且它似乎一直在工作,但是我无法从外部世界发起连接到客户端。 奇怪的是,客人有互联网接入,显然返回数据包到达他们要去的地方,但新的连接不能build立。 例如,如果我使用VNC连接到某个guest虚拟机,则可以执行wget http://google.com/然后获得该页面。 在主机和客户机上,iptables已经被刷新,所以没有iptables规则。 在主机上,路由命令的输出是 host# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface xxx64 0.0.0.0 255.255.255.224 U 0 0 0 bridge0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 169.254.0.0 […]

在networking可用之前调用KVM guest虚拟机中的脚本?

通过使用VMware的PowerCLI,您可以使用Invoke-VMScript Cmdlet(需要安装vmtools)甚至在guest虚拟机具有networking连接性之前调用guest虚拟机中的脚本。 在联网可用之前是否有类似的机制可用于在KVM客户机内调用脚本? 我需要进行部署后自定义。 作为一种解决方法,我考虑了挂载磁盘映像和chroot,但是我正在寻找更具“脚本化”和直接的方式。 谢谢。

CPU使用情况如何从大量使用的VM主机上的虚拟机中看出来?

我知道我可以testing这个,但是现在我没有时间去设置原始的testing条件来学习应该以文件formslogging的东西,而且我也不能以权威的formsfind。 我认为在一个虚拟机上消耗的CPU百分比是相对于分配给虚拟机的CPU总数,并且主机上的空闲CPU周期被平均分配给主机中所有正在运行的虚拟机。 因此,如果主机上有2个虚拟机,其中VM1消耗50%的主机CPU容量, VM2消耗10%的主机CPU容量。 所以有40% CPU容量可以分配到正在运行的虚拟机中。 VM1 sees一个CPU潜力70%的总主机CPU( 50%实际CPU消耗+ 20% – 或20%的备用周期)。 所以VM1loggingCPU消耗71.42% ( 50%实际/ 70%分配总计* 100 = 71.42%和28% CPU免费。 VM2 sees CPU潜在性30%整个主机CPU的30% ( 10%实际CPU消耗+ 20% – 或另一半的备用周期)。 所以, VM2的 CPU消耗分别为33.333%和33.333% 。 停止任何一个虚拟机应该立即增加备用CPU到另一个可用,这应该显示为另一个的CPU消耗的下降。 对或错? 如果是假,我不明白什么?