一、前言
企业引入多云战略后,需要将一部分云资源从某云服务商迁移到另一个,这时候就需要依赖云厂家提供的迁移工具。不过,阿里云在Windows操作系统上做了一个限制,不允许Windows的虚拟机转换为镜像。这个信息的出处在阿里云官网的这里。如下截图。
针对Linux系统可以直接export为镜像文件,然后传输到AWS云上,但Windows系统不能导出。这可能是出于对微软License管理的角度。由此给迁移造成了难度。
如果应用部署不是特别复杂,建议在AWS上直接创建新的空白的Windows,然后部署应用,将应用的配置文件等打包通过S3复制到AWS上运行。
如果原有应用不便于重新部署,例如应用开发、维护团队已经离场,开发团队人员变更、甚至解散,无法为迁移提供技术支持,那么可以采用本文的方法:即使用其他第三方工具将阿里云上的Windows提取为镜像,然后导入AWS迁移。注:导入镜像时候,默认将采用AWS提供的Windows Server License运行。
下边介绍工具。
二、迁移工具及流程介绍
1、迁移工具
Sysinternal是有着多年历史的一个微软平台上的第三方组织开发的一系列工具的集合,里边包括了一系列运维和系统管理员喜闻乐见的工具,例如ps系列,包括process monitor等跟踪和调试工具,例如pskill、psshutdown等进程管理管理,例如ADexplorer等活动目录调试工具。这些都是系统管理员的调试利器。早些年微软收购了整个Sysinternal团队。Sysinternal的官网链接在这里。
使用AWS EC2 Windows用户可能已经注意到,每次登录EC2实例的Windows系统的RDP终端后后,窗口右上角有每个机器的IP地址等信息白色文字水印。AWS的实现方式是:将这个信息投射在Windows默认壁纸上,更换壁纸后就看不到了,或者使用纯色背景就没有这个信息了。当然以后可以通过配置EC2Launch小程序继续恢复这个显示功能。这个功能使用Sysinternal的 bginfo工具 就可以实现类似效果。
自行下载Sysinternal的bginfo,双击后运行,显示字段可以自行定制。如下图是使用效果。
本次的话题是系统迁移,要使用的是Sysinternal的另外一款工具:Disk2VHD 。
这个工具利用Windows Shadow copy的支持,可以将整个磁盘使用块方式抓取出来,保存为VHD文件格式,VHD再做格式转换即可迁移到其他云平台。
2、迁移流程
Windows虚拟机从阿里云ECS到AWS EC2的迁移的主要方法是:
- 登录到阿里云ECS
- 安装必要的AWS驱动
- 卸载阿里云专有安全服务(或者在最后统一卸载)
- 生成vhd镜像
- 传输vhd镜像到AWS S3
- 必要的IAM权限准备
- 在S3上执行导入并监控进度
- 其他必要的调整并重新生成新AMI
下面启动阿里云的ECS开始操作。
三、迁移准备-安装AWS驱动程序
这一步将在阿里云的ECS Windows虚拟机上安装AWS驱动。之所以要在迁移前安装,是因为切换到AWS EC2环境上,包括第五代实例的M5、C5、R5这些系统,基于Nitro硬件架构,很有可能因为缺少NVMe SSD驱动而导致蓝屏。如果迁移目标是普通T2、T3实例,或者M5系列标准实例,不执行这一步安装驱动,虚拟机也可以正常启动。在AWS的EC2启动后再补充安装EC2launch等工具也是可以的。
如果需要使用带有存储优化、网络增强等各种高级5系列实例,那么需要按照本步骤安装驱动,否则可能造成虚拟机启动失败。AWS EC2是不提供虚拟机的物理Console可以链接的,也就是说,关于虚拟机引导失败、蓝屏等过程,都没有办法通过物理Console和安全模式排错。由此,一切驱动准备工作,需要在迁移到AWS之前完成。
1、安装NVMe驱动。
AWS官方安装NVMe驱动的说明文档在这里。官方驱动下载地址在这里。
首先将驱动下载到ECS上,解压缩,并记住下载路径。然后点击开始菜单,选择“Power Shell”,如下截图。
在打开的 Windows Power Shell 窗口中,执行安装包所在路径对应的install.psl,例如如下命令。注意:其中的路径请替换为实际操作时候使用的路径。
C:\Users\Administrator\Downloads\Export-VHD-to_AWS-EC2\AWSNVMe\install.ps1
安装完成。不要重启,继续安装后续。
2、安装EC2Launch
AWS EC2的Windows实例内有一系列负责系统初始化的工具叫做EC2Launch,有关EC2Launch详细功能说明在这里。
下载zip压缩包的地址在这里,下载powershell脚本地址在这里,这两个文件要同时下载到阿里云ECS的Windows内。
像下图一样,把ZIP包和power shell脚本都下载到同一个路径下。不要对ZIP解压缩。
在 Windows Power Shell 下,执行如下命令安装。注意:其中的路径请替换为实际操作时候使用的路径。
C:\Users\Administrator\Downloads\Export-VHD-to_AWS-EC2\install.ps1
安装完毕后,执行如下命令验证安装成功。如下截图。
如果阅读EC2Launch的详细文档可以发现,这个程序是具备重启时候reset password的功能。目前在迁移阶段先不用修改conf中的配置参数,保持默认即可。
完成后不要重启,继续操作。
3、安装增强网络驱动
接下来安装增强网络驱动,AWS官网的文档在这里,下载地址在这里。这时候还要借用上一个步骤的EC2launch工具,因此上一步需要先安装好。执行如下命令。
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
将驱动下载后,执行驱动目录里边的 install.ps1。
C:\Users\Administrator\Downloads\Export-VHD-to_AWS-EC2\AwsEnaNetworkDriver\install.ps1
注意,这几个驱动的安装程序脚本名字都叫 install.ps1 ,请不要相互覆盖。如下截图,安装完成。
安装完毕。不要重启,继续下一步。
4、卸载阿里云的系统服务
阿里云ECS Windows服务器会安装阿里云的管理Agent,这些对应的服务需要被卸载掉。要找到这些服务,可以通过Windows的系统服务清单里边找到。查看的方法如下。
点击开始菜单,选择Windows管理工具。
在管理工具中,点击服务。
在打开服务清单后,根据阿里云开通ECS时候配置的不同,可能会存在1至4个非微软官方的、由阿里云安装的服务。例如下图标记出来的其中一个阿里云服务。
接下来在阿里云ECS上卸载这些服务。我们使用系统自带的sc.exe完成。从开始菜单上找到命令提示符,点击鼠标右键,选择“以管理员身份运行”。
启动,命令提示符之后,运行如下命令。
sc query
这个命令将列出所有系统正在运行的命令。
这里需要注意,执行 sc query 只显示运行中的服务,这样可以看到服务的全名。但是当执行delete操作时候,服务可以是处于停止状态一样可以被delete掉。因此,先停止服务,然后去卸载。
执行命令后返回所有运行中的服务,从中找到阿里云对应服务,然后需要记住 “SERVICE_NAME” 这个字段的值,卸载时候需要用这个字段来指定服务。图形界面上看到的只是“Display Name”字段对应的值。
先从服务清单里边停止服务。然后执行如下命令删除服务。
sc delete AliyunService
效果如下截图。
这个步骤完成后,不要重启,继续下边的步骤。
5、卸载开启了安全加固的系统服务(可选)
Windows系统中非微软官方的、由阿里云植入的服务数量,主要是取决于创建这个阿里云ECS时候,是否在界面上选中了“安全加固”。如下截图是开通时候选择“安全加固”的选项位置。如果选择了这个选项,那么请按照本小节去卸载对应服务。如果没开启,请跳过本小节。
在开启了安全加固后,登录阿里云的ECS Windows环境,按照前文描述的查看系统服务的方法,将可以看到如下几个服务。如下截图。
图中的前两个服务就是在启用安全加固后新增的服务。和上文一样,通过 sc 命令查询服务的名称并卸载。
卸载服务需要使用的是sc query查询出来的Service Name,而不是Display Name。前文已经提到过卸载AliyunService这个服务了,和上文一样,先停止掉服务,然后执行卸载。操作方法是在管理员权限下启动命令行,执行如下命令。
sc delete "Alibaba Security Aegis Detect Service"
sc delete "Alibaba Security Aegis Update Service"
执行成功后,服务就被从系统清单中卸载。此时系统服务窗口中这几个服务不会立刻自动消失,而是要彻底关闭窗口,或者重启系统后才会消失。
6、卸载阿里云监控服务(可选)
阿里云提供的监控有默认的Hypervisor层的监控叫做ECS自带监控,是不需要给Windows上装Agent的,但不能采集到内存等OS之内的信息。阿里云做的比较人性化,可以一键自动安装。相关文档参考阿里云的官网这里。以上特点和AWS的CloudWatch基础监控功能一致。AWS上需要给EC2实例手工安装额外Cloudwatch Agent才可以采集OS层面的信息。
在迁移启动前准备环境的过程中,如果ECS上安装了阿里云监控Agent,也需要提前卸载。如果没有安装云监控Agent,本步骤可以跳过。
首先定位阿里云监控Agent。如下截图。
通过sc query命令可以看到他的服务名字,就叫做CmsGoAgent。如下截图。
先停止服务,然后执行如下命令卸载。
sc delete CmsGoAgent
卸载云监控完成。
7、删除文件
上述操作完成后,重启系统。
重启后删除以下目录:
C:\Program Files\AliyunService
C:\ProgramData\aliyun
C:\Program Files (x86)\Alibaba (针对选中安全加固的ECS存在此目录)
C:\Program Files\Alibaba (针对部署了云监控Agent语的环境)
以上操作都完成后,准备就绪,开始导出镜像。
四、迁移开始-在阿里云ECS中生成镜像
在ECS上下载Disk2VHD工具。官网地址在这里。
不建议从第三方网站下载系统运维层面的工具,可能存在病毒、木马等安全风险。
官网网址可以通过bing.com搜索引擎获得。
现在登录到阿里云的ECS桌面上,使用Windows内置的IE浏览器下载Disk2VHD。
本文档顺便说一下如何快速的关闭IE11的增强安全配置,否则每次下载程序都要一堆白名单确认,相当麻烦。这个功能可以从系统管理面板快速关闭。
点击开始菜单,选择服务器管理。如下截图红色框的图标。
在打开的服务器管理器界面里边,选择左侧的“本地服务器”。如下截图。
在打开本地服务器管理洁面后,右侧中间部分可以找到“IE增强的安全配置”,默认是启用。如下图截图红色框部分。
点击启用,把他们设置为关闭即可。
注意:如果您决定关闭IE增强安全,那么意味着您需要符合安全运维最佳实践,您确认您访问的网站是安全和守信的。例如通过Google和Bing去搜索,搜索后只访问官网,不会使用任何第三方的有潜在风险搜索引擎和软件。如果对此有疑问,请不要关闭IE增强安全以确保系统更加安全。
关闭增强安全之后,再次打开系统内置的IE浏览器,已经看到提示增强安全是关闭状态了。
使用浏览器访问Sysinternal的官网。前文提到过,现在Sysinternal被微软收购,官网就是doc.microsoft.com的二级域名。启动下载到桌面的disk2vhd程序。
启动第一步,同意微软许可协议。Sysinternal全系工具都有这个提示。点击Agree继续。如下截图。
应用启动后,选项很少,就是将C盘导出,保存路径是桌面。
这里要注意,下图中,右侧上方默认选中“Use Vhdx”格式,这里默认选中的,必须要取消选中,即导出为VHD格式。因为AWS的导入是不支持VHDX的,仅支持VHD。所以这里没有取消选择,后续在AWS上导入时候就会报错。
点击Create后等待几分钟,VHD导出就完成了,按照预先选择的路径保存在ECS内。
五、数据传输-从阿里云导出镜像的几种方式
上文生成的VHD镜像文件是在阿里云ECS虚拟机的桌面上。一般的来说,一个Windows Server 2016系统导出,如果不含数据,只是系统盘,体积应该在15GB上下。如果是老系统如Windows Server 2012或2008,体积略小。
将VHD导入到AWS上成为虚拟机导入的终极条件是,磁盘镜像VHD必须保存在S3对象存储上。由此,在S3上可访问VHD是最终目标。这里可以规划以下几种方式:
1、借助阿里云OSS
这种操作方法是:VHD镜像保存在阿里云ECS -> 阿里云OSS -> AWS EC2 -> AWS S3。过程简要叙述如下:
- 开通阿里云OSS
- 在阿里云ECS上,安装阿里云CLI命令行,上传数据到阿里云OSS
- 在AWS上新建EC2
- 在EC2内发起下载,从阿里云OSS上下载完整的VHD
- 在EC2内安装AWS CLI,将VHD上传到S3
这个过程相对步骤较多,操作麻烦。当然也可以考虑使用第三方OSS、S3迁移工具,从阿里云OSS到S3一步到位。这种方案,走OSS的下载,出阿里云的流量最便宜。如果不希望操作步骤这么麻烦,可以考虑如下第二种方法。
2、在阿里云ECS内使用AWS CLI直接将文件写入S3
这种方法需要在阿里云ECS内安装AWS的CLI,然后配置好有权限的Access Key,接着就直接upload to S3即可。这种方法省时省力。不过,出阿里云流量是直接走互联网公网流量,流量费比S3稍微贵一些。
此外,工作完成后记得关闭迁移完毕的Access Key的权限,不然容易留下安全隐患。本文后续编写采用这种方法来操作。
六、数据传输-上传VHD到AWS S3
1、在阿里云ECS内安装AWS CLI
从AWS官网下载CLI的最新版本,网址在这里。注意,虽然国内和国外AWS账号体系不通用,但这个CLI是通用的。
安装过程一路继续即可。
安装完成后,进入阿里云ECS Windows的CMD命令行,注意不需要admin权限,就普通命令行,然后运行aws命令即可。
2、创建Access Key用于API访问
从控制面板上,创建一个用于CLI和API访问的Access Key。注意AWS国内和国外是两套账号。国内的KEY可以在北京和宁夏通用,海外的全球除中国通用)
如果是用Admin角色的账号创建的API Access Key,是具备所有权限的,可以直接对S3增删改查。如果是在一个普通IAM用户下,那么需要确认此用户具有访问S3特定bucket的权限,然后再创建Access Key。
在命令行中执行 aws configure 配置,分别输入KEY ID名称和密码。
然后在输入Region地方,北京Region对应的是 cn-north-1 ,宁夏Region对应的 cn-northwest-1 。注意输入时候不需要加可用区的abc。这里输入的表示是默认对哪个Region发起操作。
为了验证配置正确,可以执行 aws s3 ls 命令。如果能列出来bucket名字,那么配置正确。如下截图,可以列出来数个bucket名字。
3、上传镜像到AWS S3
复制过程,建议选择和要迁移的AWS Region最接近的区域,这样可以加快网络速度。
执行 aws s3 cp 源文件 s3://bucket-name/dir-name/ 的方式,将文件从阿里云ECS上复制到AWS S3上。如下。
aws s3 cp Desktop/iZg8krqvbkwc90Z.vhd s3://disk-2-vhd-import/
复制进行中,可能需要数分钟。如下截图。
在AWS CLI命令行下,对S3发起复制,是不受最大文件5GB限制的,CLI会自动分片上传。不需要额外追加参数。
复制速度可以看到,从阿里云北京区域复制到AWS S3北京区域,速度跑满100Mbps,传输速度大约12.5MB/s。并没有达到更高。
这是因为在阿里云EC2创建配置时候,阿里云对每个虚拟机可以设置带宽上限,一般普通虚拟机设置为5Mbps公网带宽,计费是按照带宽上限5Mbps为标准计费,不限制流量,可购买的带宽上限是100Mbps。当把阿里云的ECS计费模式选择为按流量计费时候,带宽上限这个参数依然有效,最高还是100Mbps,默认还是5Mbps,但计费因素是按照流量每GB收费。因此,本次测试为了加速数据传输,特意选择了上限是100Mbps。突破100Mbps需要更换阿里云特定ECS产品,可以上到200Mbps。这里不在展开讨论。
AWS一侧,主要计费是按流量,绝大部分产品都没有所谓的带宽限制,跑满没有压力。
传输完毕后,通过AWS CLI再次查看,可以看到对应的bucket下,VHD已经传输过来。
七、转换准备-IAM设置
1、确认执行转化命令的用户是否具有足够权限
执行导入前,需要在IAM上增加新的权限。AWS官网文档出处参考这里。
在执行从S3到AMI导入的这个过程,不是在图形界面控制台发起的,而是在AWS CLI命令行下发起。这时候发起CLI操作对应的API Access Key是属于一个特定account的,需要确认这个Account的角色和权限是否足够。
如果当前操作的账号是root,或者本账号下其他账号但是赋予了“Admin Role”,那么则可以跳过本步骤,直接到下一步创建Policy。
如果不是上述情况,执行转换操作的只是一个普通IAM用户,那么,需要为这个用户增加如下权限。在以下命令中有亮点需要注意,一是其中arn的字段是带有cn的标示,这是中国区的endpoint,比海外多了cn字样;而是授权的mys3bucket需要替换为用户自己bucket。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:DeleteBucket",
"s3:DeleteObject",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject"
],
"Resource": ["arn:aws-cn:s3:::mys3bucket","arn:aws:s3:::mys3bucket/*"]
},
{
"Effect": "Allow",
"Action": [
"iam:CreateRole",
"iam:PutRolePolicy"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:CancelConversionTask",
"ec2:CancelExportTask",
"ec2:CreateImage",
"ec2:CreateInstanceExportTask",
"ec2:CreateTags",
"ec2:DeleteTags",
"ec2:DescribeConversionTasks",
"ec2:DescribeExportTasks",
"ec2:DescribeInstanceAttribute",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstances",
"ec2:DescribeTags",
"ec2:ImportInstance",
"ec2:ImportVolume",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:TerminateInstances",
"ec2:ImportImage",
"ec2:ImportSnapshot",
"ec2:DescribeImportImageTasks",
"ec2:DescribeImportSnapshotTasks",
"ec2:CancelImportTask"
],
"Resource": "*"
}
]
}
2、创建IAM权限策略(Policy)
进入IAM控制台,点击创建策略。如下图。
在创建策略界面中,选择JSON,直接编辑文本,并输入如下的策略。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket"
],
"Resource":[
"arn:aws-cn:s3:::disk-2-vhd-import",
"arn:aws-cn:s3:::disk-2-vhd-import/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject",
"s3:GetBucketAcl"
],
"Resource":[
"arn:aws-cn:s3:::disk-2-vhd-import",
"arn:aws-cn:s3:::disk-2-vhd-import/*"
]
},
{
"Effect":"Allow",
"Action":[
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource":"*"
}
]
}
如下截图。
这里需要注意的是:
- 如果参照的是上边提供的网址的官方文档,需要将文中endpoint中aws修改为aws-cn,这是因为中国区的S3的endpoint有专属的名字
- 需要将bucket name替换为存储着VHD文件的bucketname
完成后点击查看策略,并继续填写策略名称,例如 vmip-policy。
设置完成。
3、设置IAM所需要角色
在IAM界面上,点击角色按钮,然后点击创建。
在选择产品位置选AWS,在服务位置选EC2,点击下一步。如下截图。
在角色(Role)关联策略(Policy)的界面上,通过搜索上一步创建的策略的名字,关联选择出来刚才创建好的策略。如下截图,并点击下一步标签。
标签位置不需要输入,也可选输入,点击审核继续。
下一步角色名称的位置,请注意必须使用特定名称“vmimport”,然后点击创建继续。
4、设置信任关系
在角色菜单下,使用搜索功能,搜出来刚创建好的vmimport角色。点击名字进入编辑状态。
点击“信任关系”按钮,然后点击编辑。如下截图。
在弹出来的编辑信任关系界面上,删除原先的代码,替换为如下的一段代码。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{
"sts:Externalid": "vmimport"
}
}
}
]
}
这段代码可以从前文提到的AWS官网的文档中找到。中国区和海外区的设置一样,其中的有个域名保持原样不需要外改动。
更新信任实体完成后,可以看到图中的查询结果已经变化了。
至此准备工作完成。
八、发起转换并监控进度
1、发起转换
IAM准备工作完成后,可以发起转换。此时还可以继续用刚才在阿里云上ECS内安装好AWS CLI的那个机器操作。也可以换一个AWS的EC2执行CLI,也可以本地笔记本上发起转换。发起转换之后,系统会后台处理,转换需要数分钟,此时操作CLI的电脑下线或关机都不影响转换过程。
在CLI上执行如下命令。
aws ec2 import-image --disk-containers Format="vhd",UserBucket="{S3Bucket=disk-2-vhd-import,S3Key=20191027-aliyun-srv-uninstalled.vhd}"
其中,disk-2-vhd-import这是当前存放VHD的bucket 那么,请替换为实际使用的bucket name。后边的S3Key是完整的文件名,请替换为实际操作的文件名。执行命令后效果如下截图。
这表示已经将转换任务派遣到后台。这里生成了一个任务ID,后续查询进度还需要继续用这个ID,如下图红色部分标注出来的ID。
如前文所说,现在关闭控制台也不影响转换进度。
2、查看进度
使用如下命令查看已经在队列中的转换任务。
aws ec2 describe-import-image-tasks --import-task-ids import-ami-0f45c36844bfc1b09
上边命令中的ID就是上一个步骤的任务ID。执行结果反馈如下图。
图中红色文字表示进度28%,当前转换中。这个过程可能持续10分钟以上,过一会继续查询以下结果就可以了。也可以用watch命令让控制台自动刷新,例如:
watch -n 10 "aws ec2 describe-import-image-tasks --import-task-ids import-ami-0f45c36844bfc1b09"
参数 -n 10 表示每10秒执行刷新,直到转换任务完成。
转换彻底完成后,将看到如下截图的状态。显示为Completed完成。
下一步进入系统做测试并继续整理。
九、启动镜像并整理环境
1、用镜像首次在AWS启动EC2
首先进入AMI镜像管理界面中,应该可以看到刚才导入的镜像。
使用这个新生成的镜像,创建新的EC2实例。创建过程本文不再讲解如何操作。
创建之后链接的时候,注意不要用AWS EC2的查看密码功能,而是Administrator密码登录,密码沿用迁移之前在阿里云的密码,直接使用RDP登录。因为阿里云默认是直接制定明文的administrator的密码的,因此这里AWS EC2的通过PEM证书解密获得EC2密码的功能暂时无效。
2、卸载转换过程的遗留服务
镜像转换过程会给系统加上一个Sysinternal的psshutdown工具到后台服务。迁移完成后,这个服务可以卸载掉。
查看这个服务的信息如下。
卸载之前,先把服务停止掉。这里需要注意,执行 sc query 只显示运行中的服务,这样可以看到服务的全名。但是当执行delete操作时候,服务可以是处于停止状态,一样可以被delete掉。因此,先停止服务,然后去卸载。
然后执行如下命令卸载。
sc delete PsShutdownSvc
卸载后删除程序,执行如下命令。
del c:\windows\pssdnsvc.exe
删除完成。
3、制作新版AMI
如果没有别的操作要准备,可以将刚才迁移所用的各种临时工具从镜像中移除,重启EC2实例了,以一个干净的系统准备转换最终版本镜像,通过EC2控制台上的生成新AMI按钮生成镜像。如下截图。
这一步的意义是结束中间过程,在迁移的过程中使用的工具在运维阶段一般不会使用,可以从机器上删除,生成AMI,也就是上线的Golden Image,正式启动业务。
至此迁移过程完成。
十、小结(待更新)
本文主要描述了如何将阿里云ECS Windows迁移到AWS。迁移过程采用的是预先安装驱动、清理阿里云ECS环境,然后通过disk2vhd工具抓取镜像,最终通过vmimport方式导入到AWS EC2上运行。全文基于国内阿里云北京区域和AWS北京区域编写测试通过。具体到项目中,可能还有轻微调整,根据项目情况酌情进行。
完整的参考资料PDF版本在这里。