我正在尝试创建一个python脚本来处理基本的VM操作,例如:创建VM,删除VM,启动,停止等.
目前我很"坚持" create
从命令行,您将执行以下操作:
qemu-img create -f qcow2 vdisk.img <size>
virt-install --virt-type kvm --name testVM --ram 1024
--cdrom=ubuntu.iso --disk /path/to/virtual/drive,size=10,format=qcow2
--network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
--os-type=linux
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的VM,testVM并在之前定义的上安装它vdisk.img
但我想在python中完成所有这些; 我知道如何处理第二部分:
打开libvirt连接并使用连接处理程序创建VM
但我想知道第一部分,你必须创建虚拟磁盘.
有没有libvirt API calls可以使用的?
或者,你必须在系统调用qemu-img create来创建虚拟磁盘?
我刚刚在TrustZone上阅读ARM 的这份文档,有些事情我不清楚。
事实上,Hypervisor提供了一种特殊的 CPU 模式,并且对于TrustZone来说,处理器附带了一个额外的第 33 位:模式不是也是一个特定的位设置吗?那么,额外的一点是如何在安全性方面产生如此大的差异的呢?我确实知道额外的位可以为两个单独的 32 位地址空间让路,但除此之外,我无法将两个和两个放在一起。有人可以清楚地解释为什么TrustZone比 Hypervisor 更安全吗?
想象一下用于 VM 检测的简单 CPU 计时检查。
static inline unsigned long long rdtsc_diff_vmexit() {
unsigned long long ret, ret2;
unsigned eax, edx;
__asm__ volatile("rdtsc" : "=a" (eax), "=d" (edx));
ret = ((unsigned long long)eax) | (((unsigned long long)edx) << 32);
/* vm exit forced here. it uses: eax = 0; cpuid; */
__asm__ volatile("cpuid" : /* no output */ : "a"(0x00));
/**/
__asm__ volatile("rdtsc" : "=a" (eax), "=d" (edx));
ret2 = ((unsigned long long)eax) | (((unsigned long long)edx) << 32);
return ret2 …Run Code Online (Sandbox Code Playgroud) 我无法理解哪些(如果有)系统调用会导致 VM 在 Intel VMX 下退出到 VMX 根模式。我对与网络相关的系统调用(即套接字、接受、发送、接收)特别感兴趣,因为它们需要“虚拟”设备。我知道必须调用虚拟机管理程序才能实际打开套接字,但这可以并行完成吗(假设在多核处理器上)?
任何澄清将不胜感激。
我正在研究使用虚拟机来托管多个操作系统,我正在寻找有很多这些操作系统的免费解决方案.我对管理程序是什么感到困惑,为什么它们与"标准"虚拟机不同或更好.当我的意思是标准时,我将使用基准虚拟机VMWare Server 2.0.
对于具有4 GB RAM的双核系统,该系统最多可运行3个VM.哪个是最好的选择?管理程序或非管理程序,为什么?我已经阅读过维基百科的文章,但技术细节已经超出我的想象.我需要一个基本答案,了解这些不同的VM口味对我有什么影响.
我的主要问题涉及如何在多种环境中进行测试.我担心操作系统的隔离,因此我可以同时测试多个操作系统上的应用程序.还有哪种味道可以更真实地体验真机的运行方式?
我正在考虑以下事项:
(管理程序)
(非管理程序)
*我列出的VM的分类可能不正确.
我已经开始阅读有关VMM的文章,并想知道管理程序如何知道特权指令(例如cpuid)发生在VM而不是真正的OS中?
假设我已经执行了cpuid,就会发生陷阱并发生VMEXIT,炒作者如何知道指令发生在我的常规OS或VM内?
我是这个话题的新手。我一直在网上寻找有关该主题的信息,现在我也更加困惑了。如果我没记错的话,他们会管理硬件并在用户空间和设备的真实物理部分之间创建连接(如果不是这样,请纠正我)。但两者之间真正的区别是什么?我如何对它们进行分类?我正在寻找的是一个明确的答案,它可以推动我正确的参考,以更好地理解和深入研究该领域。
我正在尝试编写一个 powershell 脚本来安装和设置 Hyper-V 计算机。安装似乎没问题,但是,我从系统中得到了矛盾的响应。基本上,我使用(gcim Win32_ComputerSystem).HypervisorPresent来确定 HyperV 是否正在运行。
它返回False。
有一个类似的类,具有相同的成员,(gcim CIM_ComputerSystem).HypervisorPresent也返回False。
还发现了这个问题How do you check to see if Hyper-V isenabled using PowerShell? 并且此状态属性已启用
我错过了什么吗?这些查询不一样吗?您能否指出其中是否有任何已被弃用?我是不是完全被骗了,启用意味着系统能够运行HyperV,但实际上它没有运行?
假设我有一台 x86 机器。通过 Linux KVM API 可以轻松创建 x86 VM。
请参阅:vm_init()在kvm-host中:
if ((v->kvm_fd = open("/dev/kvm", O_RDWR)) < 0)
return throw_err("Failed to open /dev/kvm");
if ((v->vm_fd = ioctl(v->kvm_fd, KVM_CREATE_VM, 0)) < 0)
return throw_err("Failed to create vm");
if (ioctl(v->vm_fd, KVM_SET_TSS_ADDR, 0xffffd000) < 0)
return throw_err("Failed to set TSS addr");
...
if ((v->vcpu_fd = ioctl(v->vm_fd, KVM_CREATE_VCPU, 0)) < 0)
return throw_err("Failed to create vcpu");
Run Code Online (Sandbox Code Playgroud)
在这个项目中,很容易在 x86 机器上创建 x86 VM。
然而,我的问题是,如果我希望该虚拟机是 ARM 架构怎么办?
我相信这是适用的,因为我们有qemu-system-arm,而我试图实现的正是它所做的。
我想测试Hyper-V 2012(v3)中的一些新功能.
Hyper-V v3可以作为"免费"版本"Hyper-V Server 2012"下载,也可以作为Windows Server 2012 Standard或数据中心的一部分购买.但是,通常的许可证还不清楚.
一方面MS在几个(很多)网站上谈论他们的免费版本.另一方面,当你去实际的下载网站时,它会谈到一个试验.对我来说,试验有一个到期日,所以它让我很紧张.我可以使用我的Windows Standard 2012许可证作为我的Microsoft Action Pack订阅(MAPS)的一部分,但我不确定我实际上有权获得什么.
所以我的问题是:Hyper-V Server 2012的免费(试用)下载与付费的Windows Server Core 2012之间存在真正的区别,您需要使用密钥进行安装."试用"版本是否真的过期了?
我对虚拟化非常陌生,最近我一直在努力熟悉 VMM 的运行方式以及如何进行超级调用。
谈到我计划在安装在我的 Ubuntu 桌面上的 KVM 中实现一个新的超级调用,然后可以从来宾环境调用。通过这个超级调用,我计划只返回一个字符串,说“Hello World”。在这一点上,我对如何实现它一无所知。如果您能指导我如何实现这样的超级调用,那将非常有帮助。谢谢!
当我运行此命令时:
minikube start --vm-driver=hyperv
minikube 无法启动并显示以下错误:
Microsoft Windows 10 Enterprise 上的 minikube v1.7.2
根据用户配置使用hyperv驱动
!“hyperv”驱动程序报告了一个问题:C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online failed:
建议:以管理员身份启动 PowerShell,然后运行:'Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All'
X hyperv 似乎没有安装
所以我按照显示的消息并启动了命令:
Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online
它向我展示了以下结果:
FeatureName:Microsoft-Hyper-V-All DisplayName:Hyper-V 描述:提供用于创建和运行虚拟机及其资源的管理服务和工具。RestartRequired:可能的状态:已启用 CustomProperties:
此外,我已验证 Hyper-v 已正确安装。我安装了 minikube 1.7.2。知道如何解决这个问题吗?
谢谢你的帮助。
hypervisor ×12
kvm ×4
hyper-v ×3
linux-kernel ×3
kernel ×2
arm ×1
kubernetes ×1
libvirt ×1
linux ×1
microkernel ×1
minikube ×1
powershell ×1
python ×1
qemu ×1
security ×1
trustzone ×1
ubuntu-14.04 ×1
windows ×1
x86 ×1