本地windows2008R2镜像上腾讯云迁移解决方案--实践技术文档

一、概述

【实践目的】实现本地的windows2008R2等镜像上云迁移,让迁移后的云机保持本地的业务环境。

【迁移关键】本地Windows镜像制作 、镜像文件迁移到腾讯云COS对象存储、使用【迁移服务平台】。

【迁移价值】体系全,成本低、【存储】无上限、弹性【服务器】、【数据】多冗余、【网络】自由调度、【安全】专业服务。

【迁移步骤】

镜像迁移概述图

二、方案实践

1.Windows 镜像制作 1.1 准备工作

制作系统盘镜像导出时需要做以下检查,数据盘镜像导出可以忽略。

  • 检查 OS 分区,目前服务迁移不支持 GPT 分区。 检查分区的方法: 依次打开【控制面板】>【磁盘管理】,在磁盘右键选择【属性】,如下图可以看到磁盘分区形式。
计算机属性,检查系统盘是否为GPT格式
  • 检查启动方式,目前服务迁移不支持 EFI 启动。 如果 path 中有 efi,则说明目前操作系统是以 EFI 方式启动。 以管理员身份打开命令提示符(CMD),然后执行:
bcdedit /enum {current}

运行示例:

C:\WINDOWS\system32>bcdedit /enum {current}

Windows 启动加载器
-------------------
标识符                  {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.exe
description             Windows 10
locale                  zh-CN
inherit                 {bootloadersettings}
recoverysequence        {f9dbeba1-1935-11e8-88dd-ff37cca2625c}
displaymessageoverride  Recovery
recoveryenabled         Yes
flightsigning           Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {1bcd0c6f-1935-11e8-8d3e-3464a915af28}
nx                      OptIn
bootmenupolicy          Standard
  • 检查网络配置,目前服务迁移不支持 IPv6,不支持多网卡。依赖于 IPv6 和多网卡的服务都无法正常工作。
  • 卸载会产生冲突的驱动和软件(包括 VMware tools,Xen tools, Virtualbox GuestAdditions 以及一些自带底层驱动的软件)。
  • 安装 cloud-base:请参考 cloud-base 安装文档
  • 检查或安装 virtio 驱动 在【控制面板】>【程序和功能】中搜索到 virtio,如下图示,则说明已安装 virtio:
底层驱动

Windows 操作系统安装 cloudbase-init

下载 cloudbase-init 工具安装包

请根据实际使用的操作系统位数,下载对应版本的 cloudbase-init 工具安装包进行安装。具体详情请参见 Cloudbase-Init 官网

Cloudbase-init 分为以下版本:

  • 稳定版本:推荐使用该版本安装包进行安装。 获取路径如下:
    • Windows 64位 操作系统:https://www.cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi
    • Windwos 32位 操作系统:https://www.cloudbase.it/downloads/CloudbaseInitSetup_Stable_x86.msi
  • Beta 版本

安装 cloudbase-init

安装 cloudbase-init 的过程中,请注意以下两点:

  • 在 “Configuration options” 窗口中,请按照下图的内容进行配置。即将 “Serial port for logging” 设置为 “COM1”。
  • 在安装完成的最后一步时,请勿勾选任何复选框,不运行 Sysprep。如下图所示:

修改 cloudbase-init 配置文件

  1. 打开 cloudbase-init 配置文件(配置文件的路径为:\PATH\TO\Cloudbase Solutions\Cloubase-Init\conf\cloudbase-init.conf)。
  2. 将 cloudbase-init 配置文件替换为以下内容:
[DEFAULT]
username=Administrator
groups=Administrators
inject_user_password=true
config_drive_raw_hhd=true
config_drive_cdrom=true
config_drive_vfat=true
bsdtar_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\bsdtar.exe
mtools_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\
metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService
plugins=cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,cloudbaseinit.plugins.common.networkconfig.NetworkConfigPlugin,cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin,cloudbaseinit.plugins.common.userdata.UserDataPlugin
verbose=true
debug=true
logdir=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\
logfile=cloudbase-init.log
default_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=WARN
logging_serial_port_settings=COM1,115200,N,8
mtu_use_dhcp_config=true
ntp_use_dhcp_config=true
first_logon_behaviour=no
netbios_host_name_compatibility=false
allow_reboot=false
activate_windows=true
kms_host="kms.tencentyun.com"
local_scripts_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\
C:\powershell
PS C:\Set-ExecutionPolicy Unrestricted

TencentCloudRun.ps1 脚本拷贝到 C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\ 路径下。

  • 以下系统版本,驱动下载:腾讯云定制版virtio Microsoft Windows Server 2008 R2(标准版、数据中心版、企业版),Microsoft Windows Server 2012 R2(标准版)
  • 其它系统版本,请下载 社区版本 virtio

  • 检查其它硬件相关的配置,上云之后的硬件变化包括但可能不限于:
    • 显卡更换为 cirrus vga;
    • 磁盘更换为 virtio disk;
    • 网卡更换为 virtio nic,默认为本地连接。

使用 disk2vhd 导出镜像

如果待导出系统是在物理机,或者不想使用平台工具导出,那么可以选择 disk2vhd 工具。 下载 disk2vhd

安装后界面如下图:

使用工具导出镜像

注:这里注意,我在导出时需要勾选100MB的保留分区,否则会导入云机时会失败。

实践截图

镜像检查

如上所述,当不停服制作镜像或者其它原因,可能导致制作出的镜像文件系统有误,因此建议在制作镜像后检查是否无误。

当镜像格式和当前平台支持的格式一致时,可以直接打开镜像检查文件系统。 例如 Windows 平台可以直接附加 vhd 格式镜像,Linux 可以使用 qemu-nbd 打开 qcow2 格式镜像,Xen 平台可以直接启用 vhd 文件。 以 Linux 平台为例:

modprobe nbd
qemu-nbd -c /dev/nbd0 xxxx.qcow2
mount /dev/nbd0p1 /mnt

如果 qcow2 镜像的第一个分区导出时文件系统被破坏,mount 时将会报错。

此外还可以在上传镜像前,先启动虚拟机测试镜像文件是否可以使用。

镜像导出结果

2将镜像上传到COS对象存储

2.1我这里使用cos迁移工具之一:COSBrowser 工具

将9.7GB镜像上传到COS,速度基本上是13M/s,半个多小时就OK

3.使用腾讯云【迁移服务平台】导入COS镜像到云服务器

控制台界面

3.1使用迁移镜像服务

导入镜像功能
文件迁移进度查看
这里自己是自己的操作界面,前面失败一次是因为没勾选系统盘保留分区

4.云机重启运行检查结果如下:

导入成功!并且保存了本地的配置和文件在桌面,完全一致,并且不受云机规格影响

总结:

首先非常感谢架构师飞哥的项目指导,他做了linux上云的解决方案实践,我根据他的思路做了一份windows上云的技术实践,并且非常感谢【腾讯云迁移服务产品团队】大力支持和指导,下面就介绍下本次实践的经验,谢谢。

1.制作windows镜像时,需要提前安装两个软件,一个是virt驱动和cloud-ini软件(另外注意安装一个更新模块)。

CloudbaseInitSetup_0_9_11_x64、InstallQCloud、Windows6.1-KB2533623-x64.msu

2.使用disk2vhd-tmp导出系统镜像时注意,不要勾选use vhdx格式;导出时一定要勾选保留的分区。

这两处一定要注意

3.cos上传后,有客户想要直接强制导入镜像的方式创建云机,但产品团队给我提示,哪样的方式会存在受限制,“系统的虚拟内存,不是实际的内存”。

这个目前是有限制的 类似你系统盘df -h 看到实际大小2G,但是实际上文件系统大小可以达到200G一样。如果使用镜像导入方式迁移,则会失败,因为镜像导入最大只支持50GB限制。

4.导入后的系统是没有激活,还有很多云安全软件需要自己去安装,这是我自己发现的,比如云镜基础防护agent,和系统激活服务。

最后忠诚的感谢腾讯云迁移服务产品团队大力指导和支持,感谢!本实践只是迁移服务平台的功能的一部分,有兴趣的同学可以可以尝试实践,欢迎广大用户使用腾讯云【迁移服务平台( M S P)】 谢谢。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券