VMware虚拟机迁移:兼用性踩坑和复盘

文章目录

    • 方法
    • 失败情况分析:
    • 参考文档

方法

虚拟机关机,整个文件夹压缩后拷贝到新机器中,开机启用即可

成功的情况:

  • Mac (intel i5) -> Mac (intel i7)
  • Mac (intel, MacOS - VMware Fusion) -> DELL (intel, Windows - VMware Workstation)

失败的情况:

  • DELL (intel) -> Mac (M3)

在这里插入图片描述

失败情况分析:

原先的认知: 虚拟机技术会从硬件开始虚拟化,其上层OS kernel(内核)、libraries(系统函数库)、dependencies、softwares都会被封装在虚拟机中。

所以虚拟机不会依赖于宿主机是Windows还是Unix/Linux,因此 Mac (intel) -> DELL是成功的。

原先认知之外的地方: 既然硬件也会被虚拟化,并且VMware的软件已经支持M3芯(ARM架构)能在上面运行了,为什么不能虚拟出一套ARM架构的虚拟CPU呢?即,x86架构 -> ARM架构 为什么会失败。

排查和结论:

首先,“从硬件开始虚拟化”这一点没问题。官方文档3:支持虚拟机的基础架构至少包含两个软件层:虚拟化层和管理层。在 vSphere 中,ESXi提供虚拟化功能,用于将主机硬件作为一组标准化资源进行聚合并将其提供给虚拟机。在 vCenter Server管理的 ESXi 主机上运行虚拟机。

但是,VMware虚拟机技术中的硬件虚拟化,目的并不在于支持不同的CPU处理器架构,而在于隔离:每个虚拟机都在其自己的专用操作系统上运行,并分配有单独的资源,例如 CPU、内存和存储。这种隔离可确保一个虚拟机中的应用程序不会干扰其他虚拟机中的应用程序,从而增强安全性和稳定性。

基于这个目的,VMware选择(这是一个设计选择)尽可能调用基础物理资源、比如用宿主机的机器码,会是更好的做法,因为性能会好很多。

资料佐证:

  • 官方文档在“虚拟机中的硬件设备”一节提到1 :虚拟机的每个虚拟硬件设备与物理机上的硬件执行相同的功能。每个虚拟机都有 CPU、内存和磁盘资源。CPU 虚拟化着重于性能,只要有可能就会直接在处理器上运行。只要有可能就会使用基础物理资源。 虚拟化层仅在需要时才运行指令,使得虚拟机就像直接在物理机上运行一样。

  • AWS文档提到2:虚拟机是物理计算机的数字副本,将物理硬件划分为多个环境。

  • Atlassian文档 4:

    • Virtualbox
      Virtualbox 是甲骨文旗下的免费开源 x86 架构仿真系统。Virtualbox 是最受欢迎、最成熟的虚拟机平台之一,其辅助工具生态系统可帮助开发和分发虚拟机镜像。
    • VMware
      VMware 是一家上市公司,其业务建立在最早的 x86 硬件虚拟化技术之上。VMware 附带了一个虚拟机管理程序,该管理程序是一种用于部署和管理多个虚拟机的实用程序。VMware 具有用于管理虚拟机的强大用户界面。VMware 是提供支持的绝佳企业虚拟机选项。
    • QEMU
      QEMU 是最强大的硬件仿真虚拟机选项。它支持任何通用硬件架构。QEMU 是一个仅限命令行的实用程序,不提供用于配置或执行的图形用户界面。这种权衡使得 QEMU 成为最快的虚拟机选项之一。
  • Apple社区的讨论5 :

    • it’s true that most virtualization software support only ARM-compiled images but UTM does compile and emulate X64 virtual machines # UTM就是基于前面提到的QEMU
    • The key word being “emulate”. The way that a regular virtual machine gets its speed is by running almost everything natively on the host CPU. That requires native machine code …

实验佐证:

  • 通过VMware,M3芯的Mac上能跑ARM架构的Ubuntu发行版,但不能跑amd架构的Ubuntu发行版。(不过x86_64宿主机上跑x86还是可以的)
  • 通过UTM(QEMU),M3芯的Mac上能跑amd架构的Ubuntu发行版。

参考文档

1 https://docs.vmware.com/cn/VMware-vSphere/8.0/vsphere-vm-administration/GUID-A70B7BF0-923E-443A-A1DD-11D99B6330EE.html

2 https://aws.amazon.com/compare/the-difference-between-containers-and-virtual-machines/

3 https://docs.vmware.com/cn/VMware-vSphere/8.0/vsphere-vm-administration/GUID-00D086B8-6D10-4644-8845-156095748D23.html

4 https://www.atlassian.com//microservices/cloud-computing/containers-vs-vms

5 https://discussions.apple.com/thread/255243487

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/37974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zynq7000系列FPGA中的DMA控制器简介(二)

AXI互连上的DMA传输 所有DMA事务都使用AXI接口在PL中的片上存储器、DDR存储器和从外设之间传递数据。PL中的从设备通过DMAC的外部请求接口与DMAC通信,以控制数据流。这意味着从设备可以请求DMA交易,以便将数据从源地址传输到目标地址。 虽然DMAC在技术…

mysql5.7安装使用

mysql5.7安装包:百度网盘 提取码: 0000 一、 安装步骤 双击安装文件 选择我接受许可条款–Next 选择自定义安装,下一步 选择电脑对应的系统版本后(我的系统是64位),点击中间的右箭头,选择Next 选择安装路径–Next 执行…

.NET之C#编程:懒汉模式的终结,单例模式的正确打开方式

概述 在C#编程世界中,单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。然而,传统的懒汉模式实现方式在多线程环境下存在安全隐患。本文将深入探讨单例模式的正确实现姿势,带你走出懒汉…

matlab可以把图像数据转换为小波分析吗

🏆本文收录于《CSDN问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

【后端面试题】【中间件】【NoSQL】ElasticSearch 节点角色、写入数据过程、Translog和索引与分片

中间件的常考方向: 中间件如何做到高可用和高性能的? 你在实践中怎么做的高可用和高性能的? Elasticsearch节点角色 Elasticsearch的节点可以分为很多种角色,并且一个节点可以扮演多种角色,下面列举几种主要的&…

【软件测试】白盒测试(知识点 + 习题 + 答案)

《 软件测试基础持续更新中》 最近大家总是催更……,我也是百忙之中给大家详细总结了白盒测试的重点内容! 知识点题型答案,让你用最短的时间,学到最高效的知识! 整理不易,求个三连 ₍ᐢ..ᐢ₎ ♡ 目录 一、…

Spring专题一:源码编译

下载源码 因为公司使用的是Spring5.2.x所以就下载了这个版本,github源码地址如下: GitHub - spring-projects/spring-framework at v5.2.6.RELEASE: 如果网络不稳定可以使用下载压缩版即可,网络稳定的话还是建议使用git clone …

JDBC中的元数据是什么?如何获取?

JDBC中的元数据(MetaData)是关于数据的数据,它描述了数据库的结构、表的结构、列的数据类型、存储过程、支持的SQL语法和数据库产品的版本等信息。元数据在JDBC中主要通过DatabaseMetaData和ResultSetMetaData两个接口来获取。 1. DatabaseM…

代理IP用什麼協議?

代理IP的運作主要依賴兩種協議:HTTP代理協議和SOCKS代理協議。 HTTP代理協議 HTTP代理協議是最常見的代理協議。它主要用於HTTP請求,即我們常說的網頁流覽。當你通過HTTP代理伺服器訪問網站時,你的設備會先向代理伺服器發送HTTP請求&#x…

【redis】redis RDB

1、概述 1.1定义 RDB (Redis Database) 是 Redis 的默认持久化机制,它能够在指定的时间间隔内将内存中的数据集快照写入磁盘。RDB 持久化产生的文件是一个经过压缩的二进制文件,通过该文件可以还原生成 RDB 文件时的数据库状态。 1.2特点 一次性全量备…

RStudio学习笔记(三):其他数据结构

1、矩阵 在R语言中&#xff0c;矩阵是二维的&#xff0c;包括行和列&#xff0c;其中分为数值型、字符型、逻辑型三种&#xff0c;在每个矩阵中的矩阵元素的类型必须一致&#xff0c;可以通过matrix函数创建矩阵。 m <- matrix(1:20, nrow 4, ncol 5) # 创建一个四行…

【工具分享】SQLmap

文章目录 工具介绍安装方式环境准备安装 sqlmap 工具介绍 sqlmap 是一个非常强大的自动化 SQL 注入工具&#xff0c;主要用于渗透测试和安全审计。它能够检测和利用 SQL 注入漏洞&#xff0c;进而访问数据库服务器。 GitHub&#xff1a;https://github.com/sqlmapproject/sql…

JS:防抖与节流函数的实现与应用

一、防抖 防抖&#xff1a;一连串操作只执行一次。通过设置一个延迟时间&#xff0c;如果这段时间没有再次执行操作则运行目标函数&#xff0c;否则重新计时。 下面是一个防抖函数代码&#xff1a; let a1; const add () > {a; }; const debounce (fun: Function, dela…

Everything 一款功能强大的搜索工具

要在电脑上使用Everything搜索文件&#xff0c;您需要使用以下步骤&#xff1a; 在您的电脑上下载并安装Everything软件。您可以从官方网站https://www.voidtools.com/downloads/下载最新版本的软件。 安装完成后&#xff0c;打开Everything软件。 在搜索栏中输入您要查找的文…

Java中如何处理大数据量的排序?

Java中如何处理大数据量的排序&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们来讨论一下在Java中如何处理大数据量的排序问题…

JsonCpp:更简洁的序列化及反序列化

简介 jsoncpp 提供了一组简单易用的 API&#xff0c;使得在 C 程序中处理 JSON 数据变得更加方便和高效。 安装 linux环境下安装jsoncpp sudo apt-get update sudo apt-get install --reinstall libjsoncpp-dev建立软链接确保编译器找到头文件 #include <json/json.h>…

Java数据结构6-栈与队列

1. 栈(Stack) 1.1 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则 压栈…

机电公司管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;管理员管理&#xff0c;客户管理&#xff0c;公告管理&#xff0c;考勤管理&#xff0c;请假管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;公告&#xff0c;机电零件&…

gitee配置ssh教程

生成公钥 执行命令&#xff1a; ssh-keygen -t rsa查看公钥 cat ~/.ssh/id_rsa.pub这个公钥就是要复制粘贴到Gitee中的ssh公钥。 配置Gitee SSH公钥 来到Gitee的ssh公钥中&#xff0c;配置

代码随想录算法训练营第四十六天| 121. 买卖股票的最佳时机 ,122.买卖股票的最佳时机II,123.买卖股票的最佳时机III

121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int maxProfit(int[] prices) {if(prices.length 0){return 0;}int[][] dp new int[prices.length][2];dp[0][0] 0;dp[0][1] -prices[0];for(int i1;i<prices.length;i){dp[i][0…