无虚拟化层访问权限时如何将单台私有云VM迁移至Azure
无底层虚拟化权限时本地VM迁移Azure落地方案
你当前只有VM guest操作系统操作权限、无法访问底层虚拟化平台的场景完全可以完成迁移,不需要协调底层运维开权限,以下是3种可直接落地的方案,按推荐优先级排序:
方案1:Azure Migrate 物理机迁移模式(首推,整机迁移一致性最高)
这个方案本质是把你这台拿不到虚拟化权限的VM当成独立物理服务器来做迁移,全程操作都在VM系统内完成:
- 前置准备:确保VM出方向能连通Azure迁移服务的公网/专线端点即可,不需要配置入站公网规则
- 操作步骤:
- 在Azure门户创建Azure Migrate项目,选择「服务器迁移」工具,迁移源类型选择「物理机/其他虚拟化平台」
- 直接在待迁移VM的操作系统内下载Mobility Service迁移代理,安装时填入Azure Migrate项目分配的密钥和对应区域配置,不需要任何宿主机层面的操作
- 代理安装完成后会自动做系统信息、磁盘数据的初始同步,同步完成后先做一次测试迁移,验证Web应用、数据库能正常拉起、配置不丢失,验证通过后停业务写流量做最后一次增量同步,即可正式割接
- 注意事项:
- 迁移前提前清理VM内的临时文件、过期日志,减少同步数据量,缩短割接窗口
- 代理安装时会自动注入Azure平台所需的虚拟化驱动,迁到Azure后VM不会出现蓝屏、网卡识别不了的问题,不需要手动提前改驱动配置
- 承载核心业务的数据库一定要在最后一次增量同步前停写,避免同步过程中数据写入导致迁完后库文件不一致
方案2:本地磁盘镜像手动上传迁移(适合禁止安装第三方代理的合规场景)
如果你的环境有合规要求,不能在生产VM里安装迁移代理,可以用手动打镜像上传的方式,同样不需要底层权限:
- 操作步骤:
- 先在原VM内做云环境适配准备:Windows系统执行
sysprep /generalize /oobe /shutdown清除系统唯一标识,Linux系统清除网卡静态配置、udev硬件规则,避免迁到Azure后网络不通 - 用磁盘镜像工具(Windows用Disk2VHD、Linux用dd或qemu-img)在停机状态(或者进救援模式下)把系统盘、所有存储Web程序和数据库的数据盘制作成固定大小VHD格式镜像,镜像存在本地非系统盘目录即可
- 用AzCopy命令行工具把制作好的VHD镜像上传到Azure存储账户的Blob容器,上传完成后基于系统盘VHD创建Azure托管磁盘,再基于该磁盘创建对应规格的Azure VM,依次挂载数据盘即可
- 先在原VM内做云环境适配准备:Windows系统执行
- 注意事项:
- 制作磁盘镜像前一定要先停Web服务、数据库服务,避免镜像捕获时数据库文件处于半写入状态,导致迁完后数据库损坏
- 不要用动态VHD格式上传,Azure平台不支持直接挂载动态VHD启动VM
方案3:应用+数据分层迁移(适合后续计划做云原生架构优化的场景)
如果不想整机迁移,打算迁完后直接用Azure的PaaS服务降低运维成本,可以直接在VM内部导出应用和数据做分层迁移:
- 操作步骤:
- Web应用层:把站点源码、配置文件、SSL证书、依赖组件打包,在Azure侧提前建好对应规格的VM或者App Service,上传部署包完成配置
- 数据库层:针对常用的SQL Server、MySQL、PostgreSQL等数据库,在原库做全量备份+事务日志/增量备份,恢复到Azure侧对应的PaaS数据库实例或者自建VM数据库实例
- 验证所有应用接口、数据库读写正常后,修改DNS解析指向Azure侧服务地址完成割接
- 优缺点:迁完后直接适配云服务架构,后续运维成本低;但割接步骤多,需要逐个验证应用兼容性,割接窗口比整机迁移长,适合业务复杂度不高的场景
选型建议:如果你的VM上Web应用、数据库配置复杂,不想重新部署调试环境,优先选方案1,操作成本最低,迁移一致性最好;如果有合规要求不能装代理就选方案2;只有当你后续明确要做云架构重构,再考虑方案3。
内容的提问来源于stack exchange,提问作者Anup Das Gupta
相关产品推荐
相关产品推荐

