我有基于 Openstack Icehouse 版本的云系统。现在我想在现有的云中测试新版本的 Openstack (Juno)。所有主机和访客都使用 Ubuntu 14.04 作为操作系统。KVM 是我正在使用的虚拟机管理程序。
因此,我在云上创建了虚拟机,并在其上安装了 Openstack Juno 的组件。但我在这些虚拟机上遇到网络连接问题。
Openstack 安装指南说:
如果您将 OpenStack 节点构建为虚拟机,则必须配置虚拟机管理程序以允许外部网络上的混杂模式。
但它没有说明这是如何完成的。我也无法通过谷歌搜索找到这些信息。我尝试了很多方法,例如使用命令在各种接口上启用混杂模式:ifconfig eth0 promisc但没有任何效果。那么如何在我的虚拟机管理程序上启用混杂模式呢?
编辑:使用时ifconfig我看到我的接口处于 state UP BROADCAST RUNNING PROMISC。另外,我在物理主机上安装之前也使用过类似的安装,没有任何问题。
我使用 virt-manager 创建了一个虚拟机并保存了其当前状态的快照。
现在我想使用第一台机器的所有快照创建一个完全相同的重复机器。
我怎样才能做到这一点?
我想知道是否可以使用 KVM libvirt 创建一个多用户环境
,即每个用户都可以创建自己的虚拟机,但其他人不能访问它,
看到这个多用户使用 virt-manager
似乎不起作用
EDIT1:我想要为每个虚拟机设置所有者
我需要将一些虚拟机从 Virtualbox 测试系统移动到 KVM 生产主机。主机是完全相同的硬件和软件系统的两个副本(64 位 Ubuntu Server v16.04,重要的是)。
这一切都不太复杂,但网络部分。
对于 virtualbox 的 guest 虚拟机,我有一个 virtio 以太网适配器桥接到主机绑定设备之一。可以从主机所连接的网络和主机本身轻松访问来宾。这样,来宾就像“网络上的另一台服务器”。在操作过程中,除了 virbr0 桥之外,我看不到其他任何东西。
AFAIU,这个简单的设置无法在 KVM 下复制。如果我使用桥接,则无法从访客到主机进行通信。建议的解决方案是向来宾添加第二个接口以用于此类用途。
这是我唯一的选择吗?
然后,如果有任何技术细节,我想知道 Virtualbox 如何能做到 KVM 无法做到的事情。
我有一台 16GB RAM 的服务器,运行多个 Linux 虚拟机(大约 10 个),这些虚拟机执行多个不同的任务。这些机器,使用默认配置,将用缓存填满我给它们的最大内存。
即使这对于物理主机来说是理想的行为,但在我的设置中,该缓存实际上正在消耗无法从主机释放的真实主机 RAM,并迫使我为虚拟机设置相对较低的 RAM 量(不超过 )(16 - host cache)/number of vms。这是非常不可取的,因为系统失去了灵活性,无法处理来自具体虚拟机的零星 RAM 请求。
我想到的唯一方法是限制内核可用于缓存的 RAM 量(或使缓存更快过期),但我还没有找到任何有关如何执行此操作的文档。大多数论坛帖子都引用了 linuxatemyram.com 或类似的内容,而且我似乎也没有在 /proc/sys/vm/ 下公开任何相关参数。
也许有人可以对此提供一些见解?我将非常感激。
在使用 qemu-system 启动 guest 虚拟机期间是否可以以某种方式同时使用 -snapshot 和 -loadvm snap_id ?
目前,如果我同时使用这些选项,则无法启动 guest 虚拟机。
我需要防止将数据保存到来宾磁盘中以避免数据增长。-snapshot 允许即时实现它,但我还需要 -loadvm snap_id 来获取已启动的虚拟机,而不是等待它启动。
通常,当我将磁盘传递到虚拟机时,我会使用整个磁盘。我正在考虑尝试穿越KVM 中的分区。第一个问题是可能/好吗?看着这个文档,这似乎是让我感到惊讶的方法。
重要的
不应向来宾虚拟机授予对整个磁盘或块设备(例如 /dev/sdb)的写访问权限。能够访问整个块设备的来宾虚拟机可能能够修改卷标签,这可用于危害主机物理机系统。使用分区(例如 /dev/sdb1)或 LVM 卷来防止此问题。
我的下一个问题是我已经阅读了如何通过 /dev/sdX 和 diskID 执行此操作,但 DiskID 似乎是整个磁盘,IE:
https://lime-technology.com/forums/topic/34659-hard-drive-passthrough/
<disk type='block' device='disk'>
<source dev='/dev/disk/by-id/ata-Corsair_CSSD-F120GB2_1109650632000461003B' />
<target dev='hdc' bus='virtio' />
</disk>
Run Code Online (Sandbox Code Playgroud)
使用 by-id 的全部意义在于 /sdX 可以更改。我想知道我是否可以使用 LABEL 或 UUID?哪位有经验的,希望给点意见。
谢谢
我们的 SSD VPS 遇到崩溃,所有这些 VPS 都在 KVM 上运行:崩溃发生的原因有多种;为了急于恢复我的团队使用的服务来重新加载计算机的先前快照,并且从不保存日志。
不管怎样,在所有不同的崩溃情况中,一个反复出现的事实是corruption of in-memory data:我们的 VPS 提供商告诉我们他们的硬件运行良好,但我不知道如何阅读给我的糟糕日志。
检测到“内存数据损坏”时涉及什么?是否是因为 RAM 损坏,或者存在其他类型的内存损坏?
有趣的是:使用 VMware 的 VPS 提供商从来没有给我们带来麻烦,而使用 KVM 的 VPS 提供商却因为这些崩溃而让我们发疯。
编辑1:我决不要求你们从这个悲惨的日志中推断出解决方案。我遇到了这个问题,没有提供像样的日志,memtest这是无用的,因为硬件是模拟的,并且 VPS 提供商承认他们的硬件很好,并且没有 KVM 或 QEMU 实例崩溃。corruption of in-memory data detected困扰着我,我想不出任何有效的方法来进一步调查这个问题。
我的问题是“/var/lib/libvirt/qemu 文件夹中存储了什么?” 这是用作某种备份文件夹吗?
背景信息:我有一个 Debian 服务器,其中运行着 KVM 安装(+libvirt)和大约 15 个正在运行的虚拟机。我想了解为什么这个文件夹中有一个虚拟机的多个文件。类似于域 35-[VM1] 和域 18-[VM1]。
我最近“获得”了服务器,之前从未使用过 KVM/libvirt。
感谢您的帮助。
这个问题出现在 CentOS 7 的 kvm/qemu 管理程序上,我们在其中托管多个虚拟机。
磁盘 /dev/sda(1918.2 GB) 是 raid6 LSI MEGARAID。
[root@mia3 ~]# fdisk -l
Disk /dev/sda: 1918.2 GB, 1918239768576 bytes, 3746562048 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 label type: dos
Disk identifier: 0x51549cd4
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 135243775 67108864 82 Linux swap / …Run Code Online (Sandbox Code Playgroud) linux ×5
libvirt ×3
bridge ×1
cache ×1
centos7 ×1
corruption ×1
lvm ×1
openstack ×1
passthrough ×1
qemu ×1
ubuntu ×1
virsh ×1
virtualbox ×1
vps ×1
xfs ×1